From 3e8eaca361c71d5896b71c03b20ab7ba225c309b Mon Sep 17 00:00:00 2001 From: Jesus de Gregorio Date: Wed, 22 Nov 2023 12:58:51 +0100 Subject: [PATCH] Clone --- README.md | 1073 +- TS24558_Eecs_ServiceProvisioning.yaml | 559 + TS24558_Eees_ACREvents.yaml | 414 + TS24558_Eees_AppContextRelocation.yaml | 255 + TS24558_Eees_EASDiscovery.yaml | 723 + TS24558_Eees_EECRegistration.yaml | 424 + TS26512_CommonData.yaml | 272 + TS26512_EventExposure.yaml | 300 + TS26512_M5_DynamicPolicies.yaml | 45 + TS26512_M5_NetworkAssistance.yaml | 45 + TS26512_R2_DataReporting.yaml | 26 + TS26512_R4_DataReporting.yaml | 26 + TS26517_MBSObjectManifest.yaml | 56 + TS26517_MBSUserServiceAnnouncement.yaml | 313 + TS26532_CommonData.yaml | 61 + TS26532_Ndcaf_DataReporting.yaml | 504 + TS26532_Ndcaf_DataReportingProvisioning.yaml | 543 + TS28104_MdaNrm.yaml | 225 + TS28104_MdaReport.yaml | 66 + TS28105_AiMlNrm.yaml | 323 + TS28312_IntentExpectations.yaml | 925 ++ TS28312_IntentNrm.yaml | 420 + TS28532_FaultMnS.yaml | 1058 ++ TS28532_FileDataReportingMnS.yaml | 229 + TS28532_HeartbeatNtf.yaml | 25 + TS28532_PerfMnS.yaml | 76 + TS28532_ProvMnS.yaml | 515 + TS28532_StreamingDataMnS.yaml | 447 + TS28536_CoslaNrm.yaml | 254 + TS28538_EdgeNrm.yaml | 326 + TS28541_5GcNrm.yaml | 4813 +++++++ TS28541_NrNrm.yaml | 2226 ++++ TS28541_SliceNrm.yaml | 951 ++ TS28550_PerfMeasJobCtrlMnS.yaml | 277 + TS28623_ComDefs.yaml | 245 + TS28623_GenericNrm.yaml | 2301 ++++ TS29122_AsSessionWithQoS.yaml | 1204 ++ TS29122_ChargeableParty.yaml | 453 + TS29122_CommonData.yaml | 679 + TS29122_CpProvisioning.yaml | 821 ++ TS29122_DeviceTriggering.yaml | 532 + TS29122_ECRControl.yaml | 194 + TS29122_GMDviaMBMSbyMB2.yaml | 867 ++ TS29122_GMDviaMBMSbyxMB.yaml | 788 ++ TS29122_MonitoringEvent.yaml | 1448 ++ TS29122_MsisdnLessMoSms.yaml | 102 + TS29122_NIDD.yaml | 1312 ++ TS29122_NpConfiguration.yaml | 475 + TS29122_PfdManagement.yaml | 825 ++ TS29122_RacsParameterProvisioning.yaml | 469 + TS29122_ReportingNetworkStatus.yaml | 455 + TS29122_ResourceManagementOfBdt.yaml | 441 + TS29175_Nimsas_MediaControl.yaml | 216 + TS29175_Nimsas_SessionEventControl.yaml | 268 + TS29176_Nmf_MRM.yaml | 349 + TS29222_AEF_Security_API.yaml | 154 + TS29222_CAPIF_API_Invoker_Management_API.yaml | 394 + ...222_CAPIF_API_Provider_Management_API.yaml | 338 + TS29222_CAPIF_Access_Control_Policy_API.yaml | 127 + TS29222_CAPIF_Auditing_API.yaml | 158 + TS29222_CAPIF_Discover_Service_API.yaml | 146 + TS29222_CAPIF_Events_API.yaml | 468 + TS29222_CAPIF_Logging_API_Invocation_API.yaml | 179 + TS29222_CAPIF_Publish_Service_API.yaml | 718 + TS29222_CAPIF_Routing_Info_API.yaml | 120 + TS29222_CAPIF_Security_API.yaml | 531 + TS29255_Naf_Authentication.yaml | 308 + TS29256_Nnef_Authentication.yaml | 243 + TS29257_UAE_C2OperationModeManagement.yaml | 501 + TS29257_UAE_ChangeUSSManagement.yaml | 402 + TS29257_UAE_DAASupport.yaml | 552 + TS29257_UAE_RealtimeUAVStatus.yaml | 373 + TS29309_Nbsp_GBA.yaml | 461 + TS29486_VAE_ApplicationRequirement.yaml | 281 + TS29486_VAE_DynamicGroup.yaml | 249 + TS29486_VAE_FileDistribution.yaml | 262 + TS29486_VAE_HDMapDynamicInfo.yaml | 256 + TS29486_VAE_MessageDelivery.yaml | 484 + TS29486_VAE_PC5ProvisioningRequirement.yaml | 297 + TS29486_VAE_ServiceAndQoSControlInfo.yaml | 423 + TS29486_VAE_ServiceContinuity.yaml | 104 + TS29486_VAE_SessionOrientedService.yaml | 330 + TS29486_VAE_V2PApplicationRequirement.yaml | 306 + TS29486_VAE_V2VConfigRequirement.yaml | 232 + TS29486_VAE_VRUZoneManagement.yaml | 511 + TS29500_CustomHeaders.abnf | 763 ++ TS29502_CustomHeaders.abnf | 72 + TS29502_Nsmf_PDUSession.yaml | 5335 ++++++++ TS29503_Nudm_EE.yaml | 1048 ++ TS29503_Nudm_MT.yaml | 230 + TS29503_Nudm_NIDDAU.yaml | 235 + TS29503_Nudm_PP.yaml | 1266 ++ TS29503_Nudm_RSDS.yaml | 107 + TS29503_Nudm_SDM.yaml | 5406 ++++++++ TS29503_Nudm_SSAU.yaml | 323 + TS29503_Nudm_UEAU.yaml | 1033 ++ TS29503_Nudm_UECM.yaml | 3589 +++++ TS29503_Nudm_UEID.yaml | 98 + TS29504_CustomHeaders.abnf | 109 + TS29504_Nudr_DR.yaml | 419 + TS29504_Nudr_GroupIDmap.yaml | 173 + TS29505_Subscription_Data.yaml | 11126 ++++++++++++++++ TS29507_Npcf_AMPolicyControl.yaml | 1021 ++ TS29508_Nsmf_EventExposure.yaml | 990 ++ TS29509_Nausf_SoRProtection.yaml | 198 + TS29509_Nausf_UEAuthentication.yaml | 969 ++ TS29509_Nausf_UPUProtection.yaml | 169 + TS29510_Nnrf_AccessToken.yaml | 309 + TS29510_Nnrf_Bootstrapping.yaml | 123 + TS29510_Nnrf_NFDiscovery.yaml | 2481 ++++ TS29510_Nnrf_NFManagement.yaml | 5292 ++++++++ TS29511_N5g-eir_EquipmentIdentityCheck.yaml | 120 + TS29512_Npcf_SMPolicyControl.yaml | 3164 +++++ TS29514_Npcf_PolicyAuthorization.yaml | 2719 ++++ TS29515_Ngmlc_Location.yaml | 959 ++ TS29517_Naf_EventExposure.yaml | 1049 ++ TS29518_Namf_Communication.yaml | 4293 ++++++ TS29518_Namf_EventExposure.yaml | 1132 ++ TS29518_Namf_Location.yaml | 660 + TS29518_Namf_MBSBroadcast.yaml | 901 ++ TS29518_Namf_MBSCommunication.yaml | 267 + TS29518_Namf_MT.yaml | 429 + TS29519_Application_Data.yaml | 4150 ++++++ TS29519_Exposure_Data.yaml | 876 ++ TS29519_Policy_Data.yaml | 3192 +++++ TS29520_Nnwdaf_AnalyticsInfo.yaml | 898 ++ TS29520_Nnwdaf_DataManagement.yaml | 399 + TS29520_Nnwdaf_EventsSubscription.yaml | 4015 ++++++ TS29520_Nnwdaf_MLModelProvision.yaml | 558 + TS29520_Nnwdaf_MLModelTraining.yaml | 612 + TS29521_Nbsf_Management.yaml | 1364 ++ TS29522_5GLANParameterProvision.yaml | 704 + TS29522_ACSParameterProvision.yaml | 379 + TS29522_AKMA.yaml | 123 + TS29522_AMInfluence.yaml | 481 + TS29522_AMPolicyAuthorization.yaml | 526 + TS29522_ASTI.yaml | 450 + TS29522_AnalyticsExposure.yaml | 1245 ++ TS29522_ApplyingBdtPolicy.yaml | 280 + TS29522_DNAIMapping.yaml | 329 + TS29522_DataReporting.yaml | 270 + TS29522_DataReportingProvisioning.yaml | 411 + TS29522_EASDeployment.yaml | 416 + TS29522_EcsAddressProvision.yaml | 309 + TS29522_GroupParametersProvisioning.yaml | 407 + TS29522_IPTVConfiguration.yaml | 435 + TS29522_LpiParameterProvision.yaml | 389 + TS29522_MBSGroupMsgDelivery.yaml | 379 + TS29522_MBSSession.yaml | 759 ++ TS29522_MBSTMGI.yaml | 237 + TS29522_MBSUserDataIngestSession.yaml | 649 + TS29522_MBSUserService.yaml | 321 + TS29522_MSEventExposure.yaml | 314 + TS29522_MemberUESelectionAssistance.yaml | 381 + TS29522_MoLcsNotify.yaml | 108 + TS29522_NIDDConfigurationTrigger.yaml | 101 + TS29522_PDTQPolicyNegotiation.yaml | 414 + TS29522_ServiceParameter.yaml | 890 ++ TS29522_SliceParamProvision.yaml | 375 + TS29522_TimeSyncExposure.yaml | 1124 ++ TS29522_TrafficInfluence.yaml | 793 ++ TS29522_UEAddress.yaml | 103 + TS29522_UEId.yaml | 113 + TS29523_Npcf_EventExposure.yaml | 524 + TS29525_Npcf_UEPolicyControl.yaml | 1009 ++ TS29526_Nnssaaf_AIW.yaml | 228 + TS29526_Nnssaaf_NSSAA.yaml | 422 + TS29531_Nnssf_NSSAIAvailability.yaml | 758 ++ TS29531_Nnssf_NSSelection.yaml | 427 + TS29532_Nmbsmf_MBSSession.yaml | 1175 ++ TS29532_Nmbsmf_TMGI.yaml | 175 + TS29534_Npcf_AMPolicyAuthorization.yaml | 767 ++ TS29535_Naanf_AKMA.yaml | 238 + TS29536_Nnsacf_NSAC.yaml | 631 + TS29536_Nnsacf_SliceEventExposure.yaml | 445 + TS29537_Npcf_MBSPolicyAuthorization.yaml | 285 + TS29537_Npcf_MBSPolicyControl.yaml | 510 + TS29538_MSGG_BGDelivery.yaml | 100 + TS29538_MSGG_L3GDelivery.yaml | 187 + TS29538_MSGG_N3GDelivery.yaml | 141 + TS29538_MSGS_ASRegistration.yaml | 179 + TS29538_MSGS_MSGDelivery.yaml | 346 + TS29540_Nsmsf_SMService.yaml | 534 + TS29541_Nnef_SMContext.yaml | 560 + TS29541_Nnef_SMService.yaml | 129 + TS29542_Nsmf_NIDD.yaml | 140 + TS29543_Npcf_PDTQPolicyControl.yaml | 417 + TS29544_Nspaf_SecuredPacket.yaml | 126 + TS29548_SDD_DDContext.yaml | 249 + TS29548_SDD_DataStorage.yaml | 983 ++ TS29548_SDD_PolicyConfiguration.yaml | 397 + TS29548_SDD_Transmission.yaml | 413 + ...48_SDD_TransmissionQualityMeasurement.yaml | 678 + TS29549_SS_Events.yaml | 850 ++ TS29549_SS_GroupManagement.yaml | 421 + TS29549_SS_KeyInfoRetrieval.yaml | 109 + TS29549_SS_LocationAreaInfoRetrieval.yaml | 100 + TS29549_SS_LocationReporting.yaml | 404 + TS29549_SS_NetworkResourceAdaptation.yaml | 1343 ++ TS29549_SS_NetworkResourceMonitoring.yaml | 631 + TS29549_SS_NetworkSliceAdaptation.yaml | 101 + TS29549_SS_UserProfileRetrieval.yaml | 116 + TS29549_SS_VALServiceAreaConfiguration.yaml | 527 + TS29549_SS_VALServiceData.yaml | 133 + TS29550_Nsoraf_SOR.yaml | 240 + TS29551_Nnef_PFDmanagement.yaml | 624 + TS29553_Npanf_ProseKey.yaml | 191 + TS29553_Npanf_ResolveRemoteUserId.yaml | 110 + TS29554_Npcf_BDTPolicyControl.yaml | 441 + TS29555_N5g-ddnmf_Discovery.yaml | 1131 ++ TS29556_Neasdf_BaselineDNSPattern.yaml | 348 + TS29556_Neasdf_DNSContext.yaml | 720 + TS29557_Naf_ProSe.yaml | 430 + TS29558_Ecas_SelectedEES.yaml | 105 + TS29558_Eecs_EESRegistration.yaml | 488 + TS29558_Eecs_TargetEESDiscovery.yaml | 145 + TS29558_Eees_ACRManagementEvent.yaml | 844 ++ TS29558_Eees_ACRParameterInformation.yaml | 118 + TS29558_Eees_ACRStatusUpdate.yaml | 197 + TS29558_Eees_AppClientInformation.yaml | 442 + TS29558_Eees_CommonEASAnnouncement.yaml | 104 + TS29558_Eees_EASRegistration.yaml | 624 + TS29558_Eees_EECContextRelocation.yaml | 274 + TS29558_Eees_EELManagedACR.yaml | 319 + TS29558_Eees_SessionWithQoS.yaml | 509 + TS29558_Eees_UEIdentifier.yaml | 216 + TS29558_Eees_UELocation.yaml | 556 + TS29559_Npkmf_Discovery.yaml | 374 + TS29559_Npkmf_PKMFKeyRequest.yaml | 148 + TS29559_Npkmf_UserId.yaml | 118 + TS29562_Nhss_gbaSDM.yaml | 441 + TS29562_Nhss_gbaUEAU.yaml | 196 + TS29562_Nhss_imsSDM.yaml | 4156 ++++++ TS29562_Nhss_imsUEAU.yaml | 259 + TS29562_Nhss_imsUECM.yaml | 732 + TS29563_Nhss_EE.yaml | 562 + TS29563_Nhss_SDM.yaml | 361 + TS29563_Nhss_UEAU.yaml | 133 + TS29563_Nhss_UECM.yaml | 268 + TS29564_Nupf_EventExposure.yaml | 671 + TS29564_Nupf_GetPrivateUEIPaddr.yaml | 155 + TS29565_Ntsctsf_ASTI.yaml | 458 + TS29565_Ntsctsf_QoSandTSCAssistance.yaml | 874 ++ TS29565_Ntsctsf_TimeSynchronization.yaml | 834 ++ TS29571_CommonData.yaml | 6274 +++++++++ TS29572_Nlmf_Broadcast.yaml | 249 + TS29572_Nlmf_Location.yaml | 2210 +++ TS29573_JOSEProtectedMessageForwarding.yaml | 337 + TS29573_N32_Handshake.yaml | 596 + TS29573_SeppTelescopicFqdnMapping.yaml | 77 + TS29574_Ndccf_ContextManagement.yaml | 217 + TS29574_Ndccf_DataManagement.yaml | 1081 ++ TS29575_Nadrf_DataManagement.yaml | 927 ++ TS29575_Nadrf_MLModelManagement.yaml | 347 + TS29576_Nmfaf_3caDataManagement.yaml | 200 + TS29576_Nmfaf_3daDataManagement.yaml | 246 + TS29577_Nipsmgw_SMService.yaml | 259 + TS29577_Nrouter_SMService.yaml | 224 + TS29578_Nmnpf_NPStatus.yaml | 96 + TS29579_Niwmsc_SMService.yaml | 155 + TS29580_Nmbsf_MBSUserDataIngestSession.yaml | 1115 ++ TS29580_Nmbsf_MBSUserService.yaml | 439 + TS29581_Nmbstf_DistSession.yaml | 767 ++ TS29583_PIN_ASRegistration.yaml | 329 + TS29583_PIN_ASServiceContinuity.yaml | 400 + TS29583_PIN_ASServiceSwitch.yaml | 394 + TS29591_Nnef_DNAIMapping.yaml | 207 + TS29591_Nnef_EASDeployment.yaml | 330 + TS29591_Nnef_ECSAddress.yaml | 321 + TS29591_Nnef_EventExposure.yaml | 652 + TS29591_Nnef_TrafficInfluenceData.yaml | 402 + TS29591_Nnef_UEId.yaml | 99 + TS29594_Nchf_SpendingLimitControl.yaml | 371 + TS29598_Nudsf_DataRepository.yaml | 2632 ++++ TS29598_Nudsf_Timer.yaml | 568 + TS29673_Nucmf_UERCM.yaml | 672 + TS29675_Nucmf_Provisioning.yaml | 331 + TS32291_Nchf_ConvergedCharging.yaml | 2723 ++++ TS32291_Nchf_OfflineOnlyCharging.yaml | 703 + YamlExtract_1_24.zip | Bin 15638447 -> 0 bytes apis-rel15.txt | 43 - apis-rel16.txt | 67 - apis-rel17.txt | 103 - apis-rel18.txt | 108 - 284 files changed, 196685 insertions(+), 413 deletions(-) create mode 100644 TS24558_Eecs_ServiceProvisioning.yaml create mode 100644 TS24558_Eees_ACREvents.yaml create mode 100644 TS24558_Eees_AppContextRelocation.yaml create mode 100644 TS24558_Eees_EASDiscovery.yaml create mode 100644 TS24558_Eees_EECRegistration.yaml create mode 100644 TS26512_CommonData.yaml create mode 100644 TS26512_EventExposure.yaml create mode 100644 TS26512_M5_DynamicPolicies.yaml create mode 100644 TS26512_M5_NetworkAssistance.yaml create mode 100644 TS26512_R2_DataReporting.yaml create mode 100644 TS26512_R4_DataReporting.yaml create mode 100644 TS26517_MBSObjectManifest.yaml create mode 100644 TS26517_MBSUserServiceAnnouncement.yaml create mode 100644 TS26532_CommonData.yaml create mode 100644 TS26532_Ndcaf_DataReporting.yaml create mode 100644 TS26532_Ndcaf_DataReportingProvisioning.yaml create mode 100644 TS28104_MdaNrm.yaml create mode 100644 TS28104_MdaReport.yaml create mode 100644 TS28105_AiMlNrm.yaml create mode 100644 TS28312_IntentExpectations.yaml create mode 100644 TS28312_IntentNrm.yaml create mode 100644 TS28532_FaultMnS.yaml create mode 100644 TS28532_FileDataReportingMnS.yaml create mode 100644 TS28532_HeartbeatNtf.yaml create mode 100644 TS28532_PerfMnS.yaml create mode 100644 TS28532_ProvMnS.yaml create mode 100644 TS28532_StreamingDataMnS.yaml create mode 100644 TS28536_CoslaNrm.yaml create mode 100644 TS28538_EdgeNrm.yaml create mode 100644 TS28541_5GcNrm.yaml create mode 100644 TS28541_NrNrm.yaml create mode 100644 TS28541_SliceNrm.yaml create mode 100644 TS28550_PerfMeasJobCtrlMnS.yaml create mode 100644 TS28623_ComDefs.yaml create mode 100644 TS28623_GenericNrm.yaml create mode 100644 TS29122_AsSessionWithQoS.yaml create mode 100644 TS29122_ChargeableParty.yaml create mode 100644 TS29122_CommonData.yaml create mode 100644 TS29122_CpProvisioning.yaml create mode 100644 TS29122_DeviceTriggering.yaml create mode 100644 TS29122_ECRControl.yaml create mode 100644 TS29122_GMDviaMBMSbyMB2.yaml create mode 100644 TS29122_GMDviaMBMSbyxMB.yaml create mode 100644 TS29122_MonitoringEvent.yaml create mode 100644 TS29122_MsisdnLessMoSms.yaml create mode 100644 TS29122_NIDD.yaml create mode 100644 TS29122_NpConfiguration.yaml create mode 100644 TS29122_PfdManagement.yaml create mode 100644 TS29122_RacsParameterProvisioning.yaml create mode 100644 TS29122_ReportingNetworkStatus.yaml create mode 100644 TS29122_ResourceManagementOfBdt.yaml create mode 100644 TS29175_Nimsas_MediaControl.yaml create mode 100644 TS29175_Nimsas_SessionEventControl.yaml create mode 100644 TS29176_Nmf_MRM.yaml create mode 100644 TS29222_AEF_Security_API.yaml create mode 100644 TS29222_CAPIF_API_Invoker_Management_API.yaml create mode 100644 TS29222_CAPIF_API_Provider_Management_API.yaml create mode 100644 TS29222_CAPIF_Access_Control_Policy_API.yaml create mode 100644 TS29222_CAPIF_Auditing_API.yaml create mode 100644 TS29222_CAPIF_Discover_Service_API.yaml create mode 100644 TS29222_CAPIF_Events_API.yaml create mode 100644 TS29222_CAPIF_Logging_API_Invocation_API.yaml create mode 100644 TS29222_CAPIF_Publish_Service_API.yaml create mode 100644 TS29222_CAPIF_Routing_Info_API.yaml create mode 100644 TS29222_CAPIF_Security_API.yaml create mode 100644 TS29255_Naf_Authentication.yaml create mode 100644 TS29256_Nnef_Authentication.yaml create mode 100644 TS29257_UAE_C2OperationModeManagement.yaml create mode 100644 TS29257_UAE_ChangeUSSManagement.yaml create mode 100644 TS29257_UAE_DAASupport.yaml create mode 100644 TS29257_UAE_RealtimeUAVStatus.yaml create mode 100644 TS29309_Nbsp_GBA.yaml create mode 100644 TS29486_VAE_ApplicationRequirement.yaml create mode 100644 TS29486_VAE_DynamicGroup.yaml create mode 100644 TS29486_VAE_FileDistribution.yaml create mode 100644 TS29486_VAE_HDMapDynamicInfo.yaml create mode 100644 TS29486_VAE_MessageDelivery.yaml create mode 100644 TS29486_VAE_PC5ProvisioningRequirement.yaml create mode 100644 TS29486_VAE_ServiceAndQoSControlInfo.yaml create mode 100644 TS29486_VAE_ServiceContinuity.yaml create mode 100644 TS29486_VAE_SessionOrientedService.yaml create mode 100644 TS29486_VAE_V2PApplicationRequirement.yaml create mode 100644 TS29486_VAE_V2VConfigRequirement.yaml create mode 100644 TS29486_VAE_VRUZoneManagement.yaml create mode 100644 TS29500_CustomHeaders.abnf create mode 100644 TS29502_CustomHeaders.abnf create mode 100644 TS29502_Nsmf_PDUSession.yaml create mode 100644 TS29503_Nudm_EE.yaml create mode 100644 TS29503_Nudm_MT.yaml create mode 100644 TS29503_Nudm_NIDDAU.yaml create mode 100644 TS29503_Nudm_PP.yaml create mode 100644 TS29503_Nudm_RSDS.yaml create mode 100644 TS29503_Nudm_SDM.yaml create mode 100644 TS29503_Nudm_SSAU.yaml create mode 100644 TS29503_Nudm_UEAU.yaml create mode 100644 TS29503_Nudm_UECM.yaml create mode 100644 TS29503_Nudm_UEID.yaml create mode 100644 TS29504_CustomHeaders.abnf create mode 100644 TS29504_Nudr_DR.yaml create mode 100644 TS29504_Nudr_GroupIDmap.yaml create mode 100644 TS29505_Subscription_Data.yaml create mode 100644 TS29507_Npcf_AMPolicyControl.yaml create mode 100644 TS29508_Nsmf_EventExposure.yaml create mode 100644 TS29509_Nausf_SoRProtection.yaml create mode 100644 TS29509_Nausf_UEAuthentication.yaml create mode 100644 TS29509_Nausf_UPUProtection.yaml create mode 100644 TS29510_Nnrf_AccessToken.yaml create mode 100644 TS29510_Nnrf_Bootstrapping.yaml create mode 100644 TS29510_Nnrf_NFDiscovery.yaml create mode 100644 TS29510_Nnrf_NFManagement.yaml create mode 100644 TS29511_N5g-eir_EquipmentIdentityCheck.yaml create mode 100644 TS29512_Npcf_SMPolicyControl.yaml create mode 100644 TS29514_Npcf_PolicyAuthorization.yaml create mode 100644 TS29515_Ngmlc_Location.yaml create mode 100644 TS29517_Naf_EventExposure.yaml create mode 100644 TS29518_Namf_Communication.yaml create mode 100644 TS29518_Namf_EventExposure.yaml create mode 100644 TS29518_Namf_Location.yaml create mode 100644 TS29518_Namf_MBSBroadcast.yaml create mode 100644 TS29518_Namf_MBSCommunication.yaml create mode 100644 TS29518_Namf_MT.yaml create mode 100644 TS29519_Application_Data.yaml create mode 100644 TS29519_Exposure_Data.yaml create mode 100644 TS29519_Policy_Data.yaml create mode 100644 TS29520_Nnwdaf_AnalyticsInfo.yaml create mode 100644 TS29520_Nnwdaf_DataManagement.yaml create mode 100644 TS29520_Nnwdaf_EventsSubscription.yaml create mode 100644 TS29520_Nnwdaf_MLModelProvision.yaml create mode 100644 TS29520_Nnwdaf_MLModelTraining.yaml create mode 100644 TS29521_Nbsf_Management.yaml create mode 100644 TS29522_5GLANParameterProvision.yaml create mode 100644 TS29522_ACSParameterProvision.yaml create mode 100644 TS29522_AKMA.yaml create mode 100644 TS29522_AMInfluence.yaml create mode 100644 TS29522_AMPolicyAuthorization.yaml create mode 100644 TS29522_ASTI.yaml create mode 100644 TS29522_AnalyticsExposure.yaml create mode 100644 TS29522_ApplyingBdtPolicy.yaml create mode 100644 TS29522_DNAIMapping.yaml create mode 100644 TS29522_DataReporting.yaml create mode 100644 TS29522_DataReportingProvisioning.yaml create mode 100644 TS29522_EASDeployment.yaml create mode 100644 TS29522_EcsAddressProvision.yaml create mode 100644 TS29522_GroupParametersProvisioning.yaml create mode 100644 TS29522_IPTVConfiguration.yaml create mode 100644 TS29522_LpiParameterProvision.yaml create mode 100644 TS29522_MBSGroupMsgDelivery.yaml create mode 100644 TS29522_MBSSession.yaml create mode 100644 TS29522_MBSTMGI.yaml create mode 100644 TS29522_MBSUserDataIngestSession.yaml create mode 100644 TS29522_MBSUserService.yaml create mode 100644 TS29522_MSEventExposure.yaml create mode 100644 TS29522_MemberUESelectionAssistance.yaml create mode 100644 TS29522_MoLcsNotify.yaml create mode 100644 TS29522_NIDDConfigurationTrigger.yaml create mode 100644 TS29522_PDTQPolicyNegotiation.yaml create mode 100644 TS29522_ServiceParameter.yaml create mode 100644 TS29522_SliceParamProvision.yaml create mode 100644 TS29522_TimeSyncExposure.yaml create mode 100644 TS29522_TrafficInfluence.yaml create mode 100644 TS29522_UEAddress.yaml create mode 100644 TS29522_UEId.yaml create mode 100644 TS29523_Npcf_EventExposure.yaml create mode 100644 TS29525_Npcf_UEPolicyControl.yaml create mode 100644 TS29526_Nnssaaf_AIW.yaml create mode 100644 TS29526_Nnssaaf_NSSAA.yaml create mode 100644 TS29531_Nnssf_NSSAIAvailability.yaml create mode 100644 TS29531_Nnssf_NSSelection.yaml create mode 100644 TS29532_Nmbsmf_MBSSession.yaml create mode 100644 TS29532_Nmbsmf_TMGI.yaml create mode 100644 TS29534_Npcf_AMPolicyAuthorization.yaml create mode 100644 TS29535_Naanf_AKMA.yaml create mode 100644 TS29536_Nnsacf_NSAC.yaml create mode 100644 TS29536_Nnsacf_SliceEventExposure.yaml create mode 100644 TS29537_Npcf_MBSPolicyAuthorization.yaml create mode 100644 TS29537_Npcf_MBSPolicyControl.yaml create mode 100644 TS29538_MSGG_BGDelivery.yaml create mode 100644 TS29538_MSGG_L3GDelivery.yaml create mode 100644 TS29538_MSGG_N3GDelivery.yaml create mode 100644 TS29538_MSGS_ASRegistration.yaml create mode 100644 TS29538_MSGS_MSGDelivery.yaml create mode 100644 TS29540_Nsmsf_SMService.yaml create mode 100644 TS29541_Nnef_SMContext.yaml create mode 100644 TS29541_Nnef_SMService.yaml create mode 100644 TS29542_Nsmf_NIDD.yaml create mode 100644 TS29543_Npcf_PDTQPolicyControl.yaml create mode 100644 TS29544_Nspaf_SecuredPacket.yaml create mode 100644 TS29548_SDD_DDContext.yaml create mode 100644 TS29548_SDD_DataStorage.yaml create mode 100644 TS29548_SDD_PolicyConfiguration.yaml create mode 100644 TS29548_SDD_Transmission.yaml create mode 100644 TS29548_SDD_TransmissionQualityMeasurement.yaml create mode 100644 TS29549_SS_Events.yaml create mode 100644 TS29549_SS_GroupManagement.yaml create mode 100644 TS29549_SS_KeyInfoRetrieval.yaml create mode 100644 TS29549_SS_LocationAreaInfoRetrieval.yaml create mode 100644 TS29549_SS_LocationReporting.yaml create mode 100644 TS29549_SS_NetworkResourceAdaptation.yaml create mode 100644 TS29549_SS_NetworkResourceMonitoring.yaml create mode 100644 TS29549_SS_NetworkSliceAdaptation.yaml create mode 100644 TS29549_SS_UserProfileRetrieval.yaml create mode 100644 TS29549_SS_VALServiceAreaConfiguration.yaml create mode 100644 TS29549_SS_VALServiceData.yaml create mode 100644 TS29550_Nsoraf_SOR.yaml create mode 100644 TS29551_Nnef_PFDmanagement.yaml create mode 100644 TS29553_Npanf_ProseKey.yaml create mode 100644 TS29553_Npanf_ResolveRemoteUserId.yaml create mode 100644 TS29554_Npcf_BDTPolicyControl.yaml create mode 100644 TS29555_N5g-ddnmf_Discovery.yaml create mode 100644 TS29556_Neasdf_BaselineDNSPattern.yaml create mode 100644 TS29556_Neasdf_DNSContext.yaml create mode 100644 TS29557_Naf_ProSe.yaml create mode 100644 TS29558_Ecas_SelectedEES.yaml create mode 100644 TS29558_Eecs_EESRegistration.yaml create mode 100644 TS29558_Eecs_TargetEESDiscovery.yaml create mode 100644 TS29558_Eees_ACRManagementEvent.yaml create mode 100644 TS29558_Eees_ACRParameterInformation.yaml create mode 100644 TS29558_Eees_ACRStatusUpdate.yaml create mode 100644 TS29558_Eees_AppClientInformation.yaml create mode 100644 TS29558_Eees_CommonEASAnnouncement.yaml create mode 100644 TS29558_Eees_EASRegistration.yaml create mode 100644 TS29558_Eees_EECContextRelocation.yaml create mode 100644 TS29558_Eees_EELManagedACR.yaml create mode 100644 TS29558_Eees_SessionWithQoS.yaml create mode 100644 TS29558_Eees_UEIdentifier.yaml create mode 100644 TS29558_Eees_UELocation.yaml create mode 100644 TS29559_Npkmf_Discovery.yaml create mode 100644 TS29559_Npkmf_PKMFKeyRequest.yaml create mode 100644 TS29559_Npkmf_UserId.yaml create mode 100644 TS29562_Nhss_gbaSDM.yaml create mode 100644 TS29562_Nhss_gbaUEAU.yaml create mode 100644 TS29562_Nhss_imsSDM.yaml create mode 100644 TS29562_Nhss_imsUEAU.yaml create mode 100644 TS29562_Nhss_imsUECM.yaml create mode 100644 TS29563_Nhss_EE.yaml create mode 100644 TS29563_Nhss_SDM.yaml create mode 100644 TS29563_Nhss_UEAU.yaml create mode 100644 TS29563_Nhss_UECM.yaml create mode 100644 TS29564_Nupf_EventExposure.yaml create mode 100644 TS29564_Nupf_GetPrivateUEIPaddr.yaml create mode 100644 TS29565_Ntsctsf_ASTI.yaml create mode 100644 TS29565_Ntsctsf_QoSandTSCAssistance.yaml create mode 100644 TS29565_Ntsctsf_TimeSynchronization.yaml create mode 100644 TS29571_CommonData.yaml create mode 100644 TS29572_Nlmf_Broadcast.yaml create mode 100644 TS29572_Nlmf_Location.yaml create mode 100644 TS29573_JOSEProtectedMessageForwarding.yaml create mode 100644 TS29573_N32_Handshake.yaml create mode 100644 TS29573_SeppTelescopicFqdnMapping.yaml create mode 100644 TS29574_Ndccf_ContextManagement.yaml create mode 100644 TS29574_Ndccf_DataManagement.yaml create mode 100644 TS29575_Nadrf_DataManagement.yaml create mode 100644 TS29575_Nadrf_MLModelManagement.yaml create mode 100644 TS29576_Nmfaf_3caDataManagement.yaml create mode 100644 TS29576_Nmfaf_3daDataManagement.yaml create mode 100644 TS29577_Nipsmgw_SMService.yaml create mode 100644 TS29577_Nrouter_SMService.yaml create mode 100644 TS29578_Nmnpf_NPStatus.yaml create mode 100644 TS29579_Niwmsc_SMService.yaml create mode 100644 TS29580_Nmbsf_MBSUserDataIngestSession.yaml create mode 100644 TS29580_Nmbsf_MBSUserService.yaml create mode 100644 TS29581_Nmbstf_DistSession.yaml create mode 100644 TS29583_PIN_ASRegistration.yaml create mode 100644 TS29583_PIN_ASServiceContinuity.yaml create mode 100644 TS29583_PIN_ASServiceSwitch.yaml create mode 100644 TS29591_Nnef_DNAIMapping.yaml create mode 100644 TS29591_Nnef_EASDeployment.yaml create mode 100644 TS29591_Nnef_ECSAddress.yaml create mode 100644 TS29591_Nnef_EventExposure.yaml create mode 100644 TS29591_Nnef_TrafficInfluenceData.yaml create mode 100644 TS29591_Nnef_UEId.yaml create mode 100644 TS29594_Nchf_SpendingLimitControl.yaml create mode 100644 TS29598_Nudsf_DataRepository.yaml create mode 100644 TS29598_Nudsf_Timer.yaml create mode 100644 TS29673_Nucmf_UERCM.yaml create mode 100644 TS29675_Nucmf_Provisioning.yaml create mode 100644 TS32291_Nchf_ConvergedCharging.yaml create mode 100644 TS32291_Nchf_OfflineOnlyCharging.yaml delete mode 100644 YamlExtract_1_24.zip delete mode 100644 apis-rel15.txt delete mode 100644 apis-rel16.txt delete mode 100644 apis-rel17.txt delete mode 100644 apis-rel18.txt diff --git a/README.md b/README.md index fcbd6d9..36bff17 100644 --- a/README.md +++ b/README.md @@ -1,92 +1,981 @@ -# 5G_APIs - - - -## Getting started - -To make it easy for you to get started with GitLab, here's a list of recommended next steps. - -Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)! - -## Add your files - -- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files -- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command: - -``` -cd existing_repo -git remote add origin https://forge.3gpp.org/rep/degregorioj/5g_apis.git -git branch -M main -git push -uf origin main -``` - -## Integrate with your tools - -- [ ] [Set up project integrations](https://forge.3gpp.org/rep/degregorioj/5g_apis/-/settings/integrations) - -## Collaborate with your team - -- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/) -- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html) -- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically) -- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/) -- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html) - -## Test and Deploy - -Use the built-in continuous integration in GitLab. - -- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html) -- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/) -- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html) -- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/) -- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html) - -*** - -# Editing this README - -When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template. - -## Suggestions for a good README -Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information. - -## Name -Choose a self-explaining name for your project. - -## Description -Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors. - -## Badges -On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge. - -## Visuals -Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method. - -## Installation -Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection. - -## Usage -Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README. - -## Support -Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc. - -## Roadmap -If you have ideas for releases in the future, it is a good idea to list them in the README. - -## Contributing -State if you are open to contributions and what your requirements are for accepting them. - -For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self. - -You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser. - -## Authors and acknowledgment -Show your appreciation to those who have contributed to the project. - -## License -For open source projects, say how it is licensed. - -## Project status -If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers. +# {-[DRAFT]-} OpenAPI Specification Files for 3GPP 5G Core Network (Release 18) + +© 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). All rights reserved. + +API version: **October/November 2023** +Release status: **{+ Open +}** +Other releases: [Rel-17 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-17), [Rel-16 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-16), [Rel-15 (Frozen)](https://forge.3gpp.org/rep/all/5G_APIs/tree/REL-15) + + +OpenAPI validation status: +[![pipeline status](https://forge.3gpp.org/rep/all/5G_APIs/badges/Rel18-draft-TSG102/pipeline.svg)](https://forge.3gpp.org/rep/all/5G_APIs/commits/Rel18-draft-TSG102) + +#### Tools +* API Parser/Linter to parse OpenAPI files with APIDevTools Swagger Parser/Validator and run a number of lint rules to improve API quality +* Data Type Finder to find the impacted APIs due to a change on a given data type +* API Versions Overview to show a comprehensive report of the versions of all APIs in the repository +* ABNF checker of 3GPP HTTP headers + +The links below will open the Swagger Editor/UI and auto-load the OpenAPI YAML file of each Network Function (NF) API: + + + + +## NRF (NF Repository Function) +* NF Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29510_Nnrf_NFManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29510_Nnrf_NFManagement.yaml)) +* NF Discovery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29510_Nnrf_NFDiscovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29510_Nnrf_NFDiscovery.yaml)) +* Oauth2 Access Token Request +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29510_Nnrf_AccessToken.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29510_Nnrf_AccessToken.yaml)) +* Bootstrapping +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29510_Nnrf_Bootstrapping.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29510_Nnrf_Bootstrapping.yaml)) + +## LMF (Location Management Function) +* Location +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29572_Nlmf_Location.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29572_Nlmf_Location.yaml)) +* Broadcast +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29572_Nlmf_Broadcast.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29572_Nlmf_Broadcast.yaml)) + +## AMF (Access and Mobility Management Function) +* Communication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_Communication.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_Communication.yaml)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_EventExposure.yaml)) +* Location +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_Location.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_Location.yaml)) +* MT (Mobile-Terminated) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_MT.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_MT.yaml)) +* MBS Communication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_MBSCommunication.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_MBSCommunication.yaml)) +* MBS Broadcast +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29518_Namf_MBSBroadcast.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29518_Namf_MBSBroadcast.yaml)) + +## SMF (Session Management Function) +* PDU Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29502_Nsmf_PDUSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29502_Nsmf_PDUSession.yaml)) +([ABNF](https://forge.3gpp.org/swagger/tools/headers.html?abnf=TS29502_CustomHeaders.abnf)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29508_Nsmf_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29508_Nsmf_EventExposure.yaml)) +* NIDD (Non-IP Data Delivery) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29542_Nsmf_NIDD.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29542_Nsmf_NIDD.yaml)) + +## MB-SMF (Multicast/Broadcast Session Management Function) +* MBS Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29532_Nmbsmf_MBSSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29532_Nsmf_MBSSession.yaml)) +* MBS TMGI +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29532_Nmbsmf_TMGI.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29532_Nsmf_TMG.yaml)) + +## MBSF (Multicast/Broadcast Service Function) +* MBS User Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29580_Nmbsf_MBSUserService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29580_Nmbsf_MBSUserService.yaml)) +* MBS User Data Ingest Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29580_Nmbsf_MBSUserDataIngestSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29580_Nmbsf_MBSUserDataIngestSession.yaml)) + +## MBSTF (Multicast/Broadcast Service Transport Function) +* MBS Distribution Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29581_Nmbstf_DistSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29581_Nmbstf_DistSession.yaml)) + +## MB (Multicast/Broadcast) User Services +* MBS User Service Announcement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26517_MBSUserServiceAnnouncement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26517_MBSUserServiceAnnouncement.yaml)) +* MBS Object Manifest +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26517_MBSObjectManifest.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26517_MBSObjectManifest.yaml)) + +## UDM (Unified Data Management) +* Subscriber Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_SDM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_SDM.yaml)) +* UE Context Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_UECM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_UECM.yaml)) +* UE Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_UEAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_UEAU.yaml)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_EE.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_EE.yaml)) +* Parameter Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_PP.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_PP.yaml)) +* NIDD (Non-IP Data Delivery) Authorization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_NIDDAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_NIDDAU.yaml)) +* MT (Mobile-Terminated) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_MT.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_MT.yaml)) +* SSAU (Service Specific Authorization) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_SSAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_SSAU.yaml)) +* RSDS (Report SM Delivery Status) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_RSDS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_RSDS.yaml)) +* UEID (UE Identifier) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29503_Nudm_UEID.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29503_Nudm_UEID.yaml)) + +## UDR (Unified Data Repository) +* Data Repository +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29504_Nudr_DR.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29504_Nudr_DR.yaml)) +([ABNF](https://forge.3gpp.org/swagger/tools/headers.html?abnf=TS29504_CustomHeaders.abnf)) + * Subscription Data + ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29505_Subscription_Data.yaml)) + ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29505_Subscription_Data.yaml)) + * Policy Data + ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29519_Policy_Data.yaml)) + ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29519_Policy_Data.yaml)) + * Exposure Data + ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29519_Exposure_Data.yaml)) + ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29519_Exposure_Data.yaml)) + * Application Data + ([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29519_Application_Data.yaml)) + ([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29519_Application_Data.yaml)) +* Group ID Map +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29504_Nudr_GroupIDmap.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29504_Nudr_GroupIDmap.yaml)) + +## UDSF (Unstructured Data Storage Function) +* Data Repository +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29598_Nudsf_DataRepository.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29598_Nudsf_DataRepository.yaml)) +* Timer +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29598_Nudsf_Timer.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29598_Nudsf_Timer.yaml)) + +## AUSF (Authentication Server Function) +* UE Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29509_Nausf_UEAuthentication.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29509_Nausf_UEAuthentication.yaml)) +* SoR (Steering of Roaming) Protection +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29509_Nausf_SoRProtection.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29509_Nausf_SoRProtection.yaml)) +* UPU (UE Parameter Update) Protection +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29509_Nausf_UPUProtection.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29509_Nausf_UPUProtection.yaml)) + +## NSSAAF (Network Slice-Specific and SNPN Authentication and Authorization Function) +* NSSAA +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29526_Nnssaaf_NSSAA.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29526_Nnssaaf_NSSAA.yaml)) +* AIW +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29526_Nnssaaf_AIW.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29526_Nnssaaf_AIW.yaml)) + +## NSACF (Network Slice Admission Control) +* NSAC +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29536_Nnsacf_NSAC.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29536_Nnsacf_NSAC.yaml)) +* SliceEventExposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29536_Nnsacf_SliceEventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29536_Nnsacf_SliceEventExposure.yaml)) + +## NSSF (Network Slice Selection Function) +* NSSAI Availability +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29531_Nnssf_NSSAIAvailability.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29531_Nnssf_NSSAIAvailability.yaml)) +* NS Selection +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29531_Nnssf_NSSelection.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29531_Nnssf_NSSelection.yaml)) + +## SMSF (SMS Function) +* SM Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29540_Nsmsf_SMService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29540_Nsmsf_SMService.yaml)) + +## 5G-EIR (5G Equipment Identity Register) +* Equipment Identity Check +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29511_N5g-eir_EquipmentIdentityCheck.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29511_N5g-eir_EquipmentIdentityCheck.yaml)) + +## NEF (Network Exposure Function) +* Packet Flow Description (PFD) Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29551_Nnef_PFDmanagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29551_Nnef_PFDmanagement.yaml)) +* Session Management (SM) Context +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29541_Nnef_SMContext.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29541_Nnef_SMContext.yaml)) +* Short Message (SM) Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29541_Nnef_SMService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29541_Nnef_SMService.yaml)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_EventExposure.yaml)) +* Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29256_Nnef_Authentication.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29256_Nnef_Authentication.yaml)) +* EAS Deployment +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_EASDeployment.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_EASDeployment.yaml)) +* Traffic Influence Data +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_TrafficInfluenceData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_TrafficInfluenceData.yaml)) +* ECS Address +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_ECSAddress.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_ECSAddress.yaml)) +* DNAI Mapping +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_DNAIMapping.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_DNAIMapping.yaml)) +* UE ID +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29591_Nnef_UEId.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29591_Nnef_UEId.yaml)) + +## PCF (Policy Control Function) +* Policy Authorization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29514_Npcf_PolicyAuthorization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29514_Npcf_PolicyAuthorization.yaml)) +* Access and Mobility (AM) Policy Authorization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29534_Npcf_AMPolicyAuthorization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29534_Npcf_AMPolicyAuthorization.yaml)) +* Access and Mobility (AM) Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29507_Npcf_AMPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29507_Npcf_AMPolicyControl.yaml)) +* Session Management (SM) Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29512_Npcf_SMPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29512_Npcf_SMPolicyControl.yaml)) +* Background Data Transfer (BDT) Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29554_Npcf_BDTPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29554_Npcf_BDTPolicyControl.yaml)) +* Policy Control Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29523_Npcf_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29523_Npcf_EventExposure.yaml)) +* UE Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29525_Npcf_UEPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29525_Npcf_UEPolicyControl.yaml)) +* Multicast/Broadcast Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29537_Npcf_MBSPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29537_Npcf_MBSPolicyControl.yaml)) +* Multicast/Broadcast Policy Authorization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29537_Npcf_MBSPolicyAuthorization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29537_Npcf_MBSPolicyAuthorization.yaml)) +* Planned Data Transfer with QoS (PDTQ) Policy Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29543_Npcf_PDTQPolicyControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&&yaml=TS29543_Npcf_PDTQPolicyControl.yaml)) + +## BSF (Binding Support Function) +* Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29521_Nbsf_Management.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29521_Nbsf_Management.yaml)) + +## NWDAF (Network Data Analytics Function) +* Events Subscription +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29520_Nnwdaf_EventsSubscription.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29520_Nnwdaf_EventsSubscription.yaml)) +* Analytics Info +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29520_Nnwdaf_AnalyticsInfo.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29520_Nnwdaf_AnalyticsInfo.yaml)) +* Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29520_Nnwdaf_DataManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29520_Nnwdaf_DataManagement.yaml)) +* MLModel Provision +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29520_Nnwdaf_MLModelProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29520_Nnwdaf_MLModelProvision.yaml)) +* MLModel Training +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29520_Nnwdaf_MLModelTraining.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29520_Nnwdaf_MLModelTraining.yaml)) + +## UPF (User Plane Function) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29564_Nupf_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29564_Nupf_EventExposure.yaml)) +* Get Private UE IP Address +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29564_Nupf_GetPrivateUEIPaddr.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29564_Nupf_GetPrivateUEIPaddr.yaml)) + +## HSS (Home Subscriber Server) +* UE Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29563_Nhss_UEAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29563_Nhss_UEAU.yaml)) +* Subscriber Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29563_Nhss_SDM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29563_Nhss_SDM.yaml)) +* UE Context Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29563_Nhss_UECM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29563_Nhss_UECM.yaml)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29563_Nhss_EE.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29563_Nhss_EE.yaml)) +* IMS UE Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29562_Nhss_imsUEAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29562_Nhss_imsUEAU.yaml)) +* IMS Subscriber Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29562_Nhss_imsSDM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29562_Nhss_imsSDM.yaml)) +* IMS UE Context Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29562_Nhss_imsUECM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29562_Nhss_imsUECM.yaml)) +* GBA Subscriber Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29562_Nhss_gbaSDM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29562_Nhss_gbaSDM.yaml)) +* GBA UE Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29562_Nhss_gbaUEAU.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29562_Nhss_gbaUEAU.yaml)) + +## GBA BSF (GBA Bootstrapping Server Function) +* GBA Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29309_Nbsp_GBA.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29309_Nbsp_GBA.yaml)) + +## SOR-AF (Steering of Roaming Application Function) +* Steering of Roaming +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29550_Nsoraf_SOR.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29550_Nsoraf_SOR.yaml)) + +## SP-AF (Secured Packet Application Function) +* Secured Packet +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29544_Nspaf_SecuredPacket.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29544_Nspaf_SecuredPacket.yaml)) + +## AF (Application Function) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29517_Naf_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29517_Naf_EventExposure.yaml)) +* ProSe +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29557_Naf_ProSe.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29557_Naf_ProSe.yaml)) +* Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29255_Naf_Authentication.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29255_Naf_Authentication.yaml)) + +## CHF (Charging Function) +* Spending Limit Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29594_Nchf_SpendingLimitControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29594_Nchf_SpendingLimitControl.yaml)) +* Converged Charging +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS32291_Nchf_ConvergedCharging.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS32291_Nchf_ConvergedCharging.yaml)) +* Offline-Only Charging +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS32291_Nchf_OfflineOnlyCharging.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS32291_Nchf_OfflineOnlyCharging.yaml)) + +## Common Data Types +* Common Data +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29571_CommonData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29571_CommonData.yaml)) + +## SEPP N32 APIs +* Handshake (N32-c) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29573_N32_Handshake.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29573_N32_Handshake.yaml)) +* Forwarding (N32-f) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29573_JOSEProtectedMessageForwarding.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29573_JOSEProtectedMessageForwarding.yaml)) +* Telescopic FQDN Mapping +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29573_SeppTelescopicFqdnMapping.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29573_SeppTelescopicFqdnMapping.yaml)) + +## UCMF (UE Radio Capability Management Function) +* UE Radio Capability Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29673_Nucmf_UERCM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29673_Nucmf_UERCM.yaml)) +* Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29675_Nucmf_Provisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29675_Nucmf_Provisioning.yaml)) + +## MNPF (Mobile Number Portability Function) +* Number Portability Status +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29578_Nmnpf_NPStatus.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29578_Nmnpf_NPStatus.yaml)) + +## GMLC (Gateway Mobile Location Center) +* Location +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29515_Ngmlc_Location.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29515_Ngmlc_Location.yaml)) + +## EASDF (Edge Application Server Discovery Function) +* DNS Context +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29556_Neasdf_DNSContext.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29556_Neasdf_DNSContext.yaml)) +* Baseline DNS Pattern +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29556_Neasdf_BaselineDNSPattern.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29556_Neasdf_BaselineDNSPattern.yaml)) + +## AAnF (AKMA Anchor Function) +* AKMA Anchor Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29535_Naanf_AKMA.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29535_Naanf_AKMA.yaml)) + +## 5G DDNMF (Inter-5G Direct Discovery Name Management Function) +* Discovery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29555_N5g-ddnmf_Discovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29555_N5g-ddnmf_Discovery.yaml)) + +## TSCTSF (Time Sensitive Communication and Time Synchronization Function) +* Time Synchronization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29565_Ntsctsf_TimeSynchronization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29565_Ntsctsf_TimeSynchronization.yaml)) +* QoS and TSC Assistance +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29565_Ntsctsf_QoSandTSCAssistance.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29565_Ntsctsf_QoSandTSCAssistance.yaml)) +* ASTI +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29565_Ntsctsf_ASTI.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29565_Ntsctsf_ASTI.yaml)) + +## ADRF (Analytics Data Repository Function) +* Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29575_Nadrf_DataManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29575_Nadrf_DataManagement.yaml)) +* ML Model Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29575_Nadrf_MLModelManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29575_Nadrf_MLModelManagement.yaml)) + +## MFAF (Messaging Framework Adaptor Function) +* 3GPP DCCF Adaptor (3DA) Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29576_Nmfaf_3daDataManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29576_Nmfaf_3daDataManagement.yaml)) +* 3GPP Consumer Adaptor (3CA) Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29576_Nmfaf_3caDataManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29576_Nmfaf_3caDataManagement.yaml)) + +## Data Collection Application Function +* Common Data Types +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26532_CommonData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26532_CommonData.yaml)) +* Application Service Provider provisioning (R1) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26532_Ndcaf_DataReportingProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26532_Ndcaf_DataReportingProvisioning.yaml)) +* Data collection client configuration and reporting (R2, R3, R4) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26532_Ndcaf_DataReporting.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26532_Ndcaf_DataReporting.yaml)) + +## Data Collection Coordination Function (DCCF) +* Data Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29574_Ndccf_DataManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29574_Ndccf_DataManagement.yaml)) +* Context Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29574_Ndccf_ContextManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29574_Ndccf_ContextManagement.yaml)) + +## IP-SM-GW (IP Short Message Gateway) +* SM Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29577_Nipsmgw_SMService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29577_Nipsmgw_SMService.yaml)) + +## SMS Router +* SM Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29577_Nrouter_SMService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29577_Nrouter_SMService.yaml)) + +## SMS-IWMSC (Interworking MSC for Short Message Service) +* SM Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29579_Niwmsc_SMService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29579_Niwmsc_SMService.yaml)) + +## PKMF (ProSe Key Management Service) +* Key Request Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29559_Npkmf_PKMFKeyRequest.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29559_Npkmf_PKMFKeyRequest.yaml)) +* Resolve Remote User Id +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29559_Npkmf_UserId.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29559_Npkmf_UserId.yaml)) +* Discovery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29559_Npkmf_Discovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29559_Npkmf_Discovery.yaml)) + +## PANF (ProSe Anchor Function) +* Prose Key Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29553_Npanf_ProseKey.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29553_Npanf_ProseKey.yaml)) +* Resolve Remote User Id +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29553_Npanf_ResolveRemoteUserId.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29553_Npanf_ResolveRemoteUserId.yaml)) + +## IMS AS (IP Multimedia Subsystem Application Server) +* Session Event Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29175_Nimsas_SessionEventControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29175_Nimsas_SessionEventControl.yaml)) +* Media Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29175_Nimsas_MediaControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29175_Nimsas_MediaControl.yaml)) + +## MF (Media Function) +* Media Resource Management Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29176_Nmf_MRM.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29176_Nmf_MRM.yaml)) + +# Northbound and Application Layer APIs +## CAPIF (Common API Framework) +* Discover Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Discover_Service_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Discover_Service_API.yaml)) +* Publish Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Publish_Service_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Publish_Service_API.yaml)) +* Events +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Events_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Events_API.yaml)) +* API Invoker Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_API_Invoker_Management_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_API_Invoker_Management_API.yaml)) +* Security +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Security_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Security_API.yaml)) +* Access Control Policy +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Access_Control_Policy_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Access_Control_Policy_API.yaml)) +* Logging API Invocation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Logging_API_Invocation_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Logging_API_Invocation_API.yaml)) +* Auditing +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Auditing_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Auditing_API.yaml)) +* AEF Authentication +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_AEF_Security_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_AEF_Security_API.yaml)) +* API Provider Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_API_Provider_Management_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_API_Provider_Management_API.yaml)) +* Routing Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29222_CAPIF_Routing_Info_API.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29222_CAPIF_Routing_Info_API.yaml)) + +## SCEF (Service Capability Exposure Function) +>**Note:** +These APIs are not part of the 5G Core Network; these APIs are exposed by the 4G SCEF to the SCS/AS +* Event Monitoring +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_MonitoringEvent.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_MonitoringEvent.yaml)) +* Resource Management of Background Data Transfer (BDT) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_ResourceManagementOfBdt.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_ResourceManagementOfBdt.yaml)) +* Chargeable Party +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_ChargeableParty.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_ChargeableParty.yaml)) +* Non-IP Data Delivery (NIDD) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_NIDD.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_NIDD.yaml)) +* Device Triggering +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_DeviceTriggering.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_DeviceTriggering.yaml)) +* Group Message Delivery via MBMS by MB2 +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_GMDviaMBMSbyMB2.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_GMDviaMBMSbyMB2.yaml)) +* Group Message Delivery via MBMS by xMB +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_GMDviaMBMSbyxMB.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_GMDviaMBMSbyxMB.yaml)) +* Network Status Reporting +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_ReportingNetworkStatus.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_ReportingNetworkStatus.yaml)) +* Communication Patterns (CP) Parameters Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_CpProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_CpProvisioning.yaml)) +* Packet Flow Description (PFD) Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_PfdManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_PfdManagement.yaml)) +* Enhanced Coverage Restriction Control +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_ECRControl.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_ECRControl.yaml)) +* Network Parameter Configuration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_NpConfiguration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_NpConfiguration.yaml)) +* Application Server (AS) Session with QoS +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_AsSessionWithQoS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_AsSessionWithQoS.yaml)) +* MSISDN-less Mobile-Originated SMS +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_MsisdnLessMoSms.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_MsisdnLessMoSms.yaml)) +* RACS (Radio Capability Signaling) Parameter Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_RacsParameterProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_RacsParameterProvisioning.yaml)) +* Common Data +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29122_CommonData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29122_CommonData.yaml)) + +## NEF (Network Exposure Function) +* Traffic Influence +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_TrafficInfluence.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_TrafficInfluence.yaml)) +* NIDD (Non-IP Data Delivery) Configuration Trigger +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_NIDDConfigurationTrigger.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_NIDDConfigurationTrigger.yaml)) +* 5G LAN Parameter Provision +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_5GLANParameterProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_5GLANParameterProvision.yaml)) +* Applying BDT Policy +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_ApplyingBdtPolicy.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_ApplyingBdtPolicy.yaml)) +* IPTV Configuration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_IPTVConfiguration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_IPTVConfiguration.yaml)) +* Analytics Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_AnalyticsExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_AnalyticsExposure.yaml)) +* LPI (Location Privacy Indicator) Parameter Provision +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_LpiParameterProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_LpiParameterProvision.yaml)) +* Service Parameter +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_ServiceParameter.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_ServiceParameter.yaml)) +* ACS Parameter Provision +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_ACSParameterProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_ACSParameterProvision.yaml)) +* MO LCS Notify +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MoLcsNotify.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MoLcsNotify.yaml)) +* AKMA +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_AKMA.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_AKMA.yaml)) +* Time Sync Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_TimeSyncExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_TimeSyncExposure.yaml)) +* ECS Address Provision +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_EcsAddressProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_EcsAddressProvision.yaml)) +* AM Policy Authorization +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_AMPolicyAuthorization.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_AMPolicyAuthorization.yaml)) +* AM Influence +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_AMInfluence.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_AMInfluence.yaml)) +* MBS TMGI +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MBSTMGI.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MBSTMGI.yaml)) +* MBS Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MBSSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MBSSession.yaml)) +* EAS Deployment +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_EASDeployment.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_EASDeployment.yaml)) +* ASTI +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_ASTI.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_ASTI.yaml)) +* Data Reporting +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_DataReporting.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_DataReporting.yaml)) +* Data Reporing Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_DataReportingProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_DataReportingProvisioning.yaml)) +* UE Identifier +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_UEId.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_UEId.yaml)) +* MBS User Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MBSUserService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MBSUserService.yaml)) +* MBS User Data Ingest Session +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MBSUserDataIngestSession.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MBSUserDataIngestSession.yaml)) +* Media Streaming Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MSEventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MSEventExposure.yaml)) +* MBS Group Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MBSGroupMsgDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MBSGroupMsgDelivery.yaml)) +* DNAI Mapping +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_DNAIMapping.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_DNAIMapping.yaml)) +* PDTQ Policy Negotiation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_PDTQPolicyNegotiation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_PDTQPolicyNegotiation.yaml)) +* Member UE Selection Assistance +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_MemberUESelectionAssistance.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_MemberUESelectionAssistance.yaml)) +* Group Parameters Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_GroupParametersProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_GroupParametersProvisioning.yaml)) +* Slice Parameters Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_SliceParamProvision.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_SliceParamProvision.yaml)) +* UE Address +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29522_UEAddress.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29522_UEAddress.yaml)) + +## VAE (V2X Application Enabler) +* V2X Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_MessageDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_MessageDelivery.yaml)) +* File Distribution +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_FileDistribution.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_FileDistribution.yaml)) +* Application Requirement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_ApplicationRequirement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_ApplicationRequirement.yaml)) +* Dynamic Group +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_DynamicGroup.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_DynamicGroup.yaml)) +* Service Continuity +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_ServiceContinuity.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_ServiceContinuity.yaml)) +* HD Map Dynamic Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_HDMapDynamicInfo.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_HDMapDynamicInfo.yaml)) +* Session Oriented Service +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_SessionOrientedService.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_SessionOrientedService.yaml)) +* V2V Config Requirement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_V2VConfigRequirement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_V2VConfigRequirement.yaml)) +* PC5 Provisioning Requirement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_PC5ProvisioningRequirement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_PC5ProvisioningRequirement.yaml)) +* Service And QoS Control Info +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_ServiceAndQoSControlInfo.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_ServiceAndQoSControlInfo.yaml)) +* VRU Zone Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_VRUZoneManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_VRUZoneManagement.yaml)) +* V2P Application Requirement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29486_VAE_V2PApplicationRequirement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29486_VAE_V2PApplicationRequirement.yaml)) + +## SEAL (Service Enabler Architecture Layer) +* Network Resource Adaptation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_NetworkResourceAdaptation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_NetworkResourceAdaptation.yaml)) +* Network Resource Monitoring +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_NetworkResourceMonitoring.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_NetworkResourceMonitoring.yaml)) +* Network Slice Adaptation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_NetworkSliceAdaptation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_NetworkSliceAdaptation.yaml)) +* User Profile Retrieval +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_UserProfileRetrieval.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_UserProfileRetrieval.yaml)) +* Events +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_Events.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_Events.yaml)) +* Group Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_GroupManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_GroupManagement.yaml)) +* Location Reporting +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_LocationReporting.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_LocationReporting.yaml)) +* Location Area Information Retrieval +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_LocationAreaInfoRetrieval.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_LocationAreaInfoRetrieval.yaml)) +* Key Information Retrieval +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_KeyInfoRetrieval.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_KeyInfoRetrieval.yaml)) +* VAL Service Data Retrieval +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_VALServiceData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_VALServiceData.yaml)) +* VAL Service Area Configuration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29549_SS_VALServiceAreaConfiguration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29549_SS_VALServiceAreaConfiguration.yaml)) +* SEALDD Data Transmission +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29548_SDD_Transmission.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29548_SDD_Transmission.yaml)) +* SEALDD Data Storage +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29548_SDD_DataStorage.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29548_SDD_DataStorage.yaml)) +* SEALDD Context Relocation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29548_SDD_DDContext.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29548_SDD_DDContext.yaml)) +* SEALDD Transmission Quality Measurement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29548_SDD_TransmissionQualityMeasurement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29548_SDD_TransmissionQualityMeasurement.yaml)) +* SEALDD Policy Configuration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29548_SDD_PolicyConfiguration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29548_SDD_PolicyConfiguration.yaml)) + +## EDGEAPP (Enabling Edge Applications) +* EAS Registration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_EASRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_EASRegistration.yaml)) +* UE Location +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_UELocation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_UELocation.yaml)) +* UE Identifier +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_UEIdentifier.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_UEIdentifier.yaml)) +* Application Client Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_AppClientInformation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_AppClientInformation.yaml)) +* ACR Management Event +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_ACRManagementEvent.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_ACRManagementEvent.yaml)) +* Session with QoS +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_SessionWithQoS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_SessionWithQoS.yaml)) +* EEC Context Relocation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_EECContextRelocation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_EECContextRelocation.yaml)) +* EEL Managed ACR +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_EELManagedACR.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_EELManagedACR.yaml)) +* ACR Status Update +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_ACRStatusUpdate.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_ACRStatusUpdate.yaml)) +* EES Registration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eecs_EESRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eecs_EESRegistration.yaml)) +* Target EES Discovery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eecs_TargetEESDiscovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eecs_TargetEESDiscovery.yaml)) +* EEC Registration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24558_Eees_EECRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24558_Eees_EECRegistration.yaml)) +* ECS Service Provisioning +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24558_Eecs_ServiceProvisioning.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24558_Eecs_ServiceProvisioning.yaml)) +* EAS Discovery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24558_Eees_EASDiscovery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24558_Eees_EASDiscovery.yaml)) +* EES ACR Events +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24558_Eees_ACREvents.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24558_Eees_ACREvents.yaml)) +* EES App Context Relocation +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS24558_Eees_AppContextRelocation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS24558_Eees_AppContextRelocation.yaml)) +* EES ACR Parameters Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_ACRParameterInformation.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_ACRParameterInformation.yaml)) +* EES Common EAS Announcement +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Eees_CommonEASAnnouncement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Eees_CommonEASAnnouncement.yaml)) +* CAS Selected EES +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29558_Ecas_SelectedEES.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29558_Ecas_SelectedEES.yaml)) + +## UAS Application Enabler (UAE) Server +* C2 Operation Mode Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29257_UAE_C2OperationModeManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29257_UAE_C2OperationModeManagement.yaml)) +* Real-time UAV Status +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29257_UAE_RealtimeUAVStatus.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29257_UAE_RealtimeUAVStatus.yaml)) +* USS Change Management +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29257_UAE_ChangeUSSManagement.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29257_UAE_ChangeUSSManagement.yaml)) +* DAA Support +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29257_UAE_DAASupport.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29257_UAE_DAASupport.yaml)) + +## 5GMARCH (Enabling MSGin5G Service) +* AS Registration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29538_MSGS_ASRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29538_MSGS_ASRegistration.yaml)) +* MSGin5G Server Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29538_MSGS_MSGDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29538_MSGS_MSGDelivery.yaml)) +* L3G Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29538_MSGG_L3GDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29538_MSGG_L3GDelivery.yaml)) +* N3G Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29538_MSGG_N3GDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29538_MSGG_N3GDelivery.yaml)) +* Broadcast Message Delivery +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29538_MSGG_BGDelivery.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29538_MSGG_BGDelivery.yaml)) + +## PINAPP (Personal IoT Network Application) +* PINServer PAS Registration +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29583_PIN_ASRegistration.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29583_PIN_ASRegistration.yaml)) +* PINServer Service Switch Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29583_PIN_ASServiceSwitch.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29583_PIN_ASServiceSwitch.yaml)) +* PINServer Service Continuity Information +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS29583_PIN_ASServiceContinuity.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS29583_PIN_ASServiceContinuity.yaml)) + +# 5G Media Streaming (5GMS) TS 26.512 +>**Note:** +The APIs at reference point M5 are exposed by the 5GMS AF. + +* Common Data Types +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_CommonData.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_CommonData.yaml)) +* Event Exposure +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_EventExposure.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_EventExposure.yaml)) + +## Media Session Handling (M5) +* Dynamic Policies +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_M5_DynamicPolicies.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_M5_DynamicPolicies.yaml)) +* Network Assistance +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_M5_NetworkAssistance.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_M5_NetworkAssistance.yaml)) + +## Data Reporting +* 5GMS Client (R2) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_R2_DataReporting.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_R2_DataReporting.yaml)) +* 5GMS AS (R4) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS26512_R4_DataReporting.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS26512_R4_DataReporting.yaml)) + + +# 3GPP SA5 models and MnS OpenAPI definitions +## Network Resource Models (NRM) +* Generic NRM (TS 28.623) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28623_GenericNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28623_GenericNrm.yaml)) +* Common NRM definitions (TS 28.623) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28623_ComDefs.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28623_ComDefs.yaml)) +* NR NRM (TS 28.541) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28541_NrNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28541_NrNrm.yaml)) +* 5GC NRM (TS 28.541) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28541_5GcNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28541_5GcNrm.yaml)) +* Slice NRM (TS 28.541) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28541_SliceNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28541_SliceNrm.yaml)) +* Communication Service Assurance NRM (TS 28.536) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28536_CoslaNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28536_CoslaNrm.yaml)) +* MDA NRM (TS 28.104) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28104_MdaNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28104_MdaNrn.yaml)) +* MDA Report NRM (TS 28.104) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28104_MdaReport.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28104_MdaReport.yaml)) +* AI/ML NRM (TS 28.105) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28105_AiMlNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28105_AiMlNrm.yaml)) +* Intent NRM (TS 28.312) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28312_IntentNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28312_IntentNrm.yaml)) +* Intent Expectations (TS 28.312) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28312_IntentExpectations.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28312_IntentExpectations.yaml)) +* Edge NRM (TS 28.538) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28538_EdgeNrm.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28538_EdgeNrm.yaml)) + +## Management Services (MnS) +* Provisioning MnS (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_ProvMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_ProvMnS.yaml)) +* Fault Supervision MnS (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_FaultMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_FaultMnS.yaml)) +* Performance Measurement Job Control MnS (28.550) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28550_PerfMeasJobCtrlMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28550_PerfMeasJobCtrlMnS.yaml)) +* File Data Reporting MnS (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_FileDataReportingMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_FileDataReportingMnS.yaml)) +* Performance Threshold Monitoring MnS (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_PerfMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_PerfMnS.yaml)) +* Heartbeat Notifications (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_HeartbeatNtf.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_HeartbeatNtf.yaml)) +* Streaming Data Reporting MnS (TS 28.532) +([Editor](https://forge.3gpp.org/swagger/tools/loader.html?yaml=TS28532_StreamingDataMnS.yaml)) +([UI](https://forge.3gpp.org/swagger/tools/loader.html?action=ui&yaml=TS28532_StreamingDataMnS.yaml)) diff --git a/TS24558_Eecs_ServiceProvisioning.yaml b/TS24558_Eecs_ServiceProvisioning.yaml new file mode 100644 index 0000000..fb5f006 --- /dev/null +++ b/TS24558_Eecs_ServiceProvisioning.yaml @@ -0,0 +1,559 @@ +openapi: 3.0.0 + +info: + title: Eecs_ServiceProvisioning + version: "1.1.0-alpha.3" + description: | + API for ECS Service Provisioning. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 24.558 V18.2.0 Enabling Edge Applications; Protocol specification. + url: https://www.3gpp.org/ftp/Specs/archive/24_series/24.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eecs-serviceprovisioning/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558 + +paths: + + /subscriptions: + post: + description: > + Creates a new subscription in ECS in order to be notified of provisioning data + changes of interest. + operationId: CreateServProvSub + tags: + - Service Provisioning Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServProvNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: > + Individual ECS Service Provisioning Subscription resource created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + put: + description: > + Updates an existing individual service provisioning subscription identified + by the subscriptionId. + operationId: UpdateIndServProvSub + tags: + - Individual Service Provisioning Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual service provisioning subscription. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvSubscription' + responses: + '200': + description: > + OK (The individual service provisioning subscription matching the subscriptionId + was modified successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvSubscription' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + description: > + Deletes an existing individual service provisioning subscription identified by + the subscriptionId. + operationId: DeleteIndServProvSub + tags: + - Individual Service Provisioning Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual service provisioning subscription. + required: true + schema: + type: string + responses: + '204': + description: > + The individual service provisioning subscription matching the subscriptionId is + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + description: > + Partially updates an existing individual service provisioning subscription identified + by the subscriptionId. + operationId: ModifyIndServProvSub + tags: + - Individual Service Provisioning Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual service provisioning subscription. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ECSServProvSubscriptionPatch' + responses: + '200': + description: > + OK (The individual service provisioning subscription matching the subscriptionId + was modified successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvSubscription' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /request: + post: + summary: Request service provisioning information. + operationId: RequestServProv + tags: + - Request Service Provisioning + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvReq' + responses: + '200': + description: > + OK (The requested service provisioning information was returned successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ECSServProvResp' + '204': + description: > + No Content (The requested service provisioning information does not exist). + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + ECSServProvReq: + description: ECS service provisioning request information. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acProfs: + type: array + items: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + description: Information about services the EEC wants to connect to. + eecSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which + ACR scenarios are supported by the EEC. + connInfo: + type: array + items: + $ref: '#/components/schemas/ConnectivityInfo' + description: List of connectivity information for the UE. + locInf: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + ecspIds: + type: array + items: + type: string + minItems: 1 + description: Indicates to the ECS which EES providers are preferred by the EEC. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eecId + + ECSServProvResp: + description: ECS service provisioning response information. + type: object + properties: + ednCnfgInfo: + type: array + items: + $ref: '#/components/schemas/EDNConfigInfo' + minItems: 1 + description: List of EDN configuration information. + required: + - ednCnfgInfo + + ECSServProvSubscription: + description: Represents an individual service provisioning subscription resource. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acProfs: + type: array + items: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + description: Information about services the EEC wants to connect to. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + eecSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which + ACR scenarios are supported by the EEC. + connInfo: + type: array + items: + $ref: '#/components/schemas/ConnectivityInfo' + description: List of connectivity information for the UE. + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the ECS to send a test notification. Set to + false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + ecspIds: + type: array + items: + type: string + minItems: 1 + description: Indicates to the ECS which EES providers are preferred by the EEC. + eecTriggerRequest: + type: boolean + description: > + Indicates to the ECS, whether the application triggering is required by the EEC. + Default value false indicates the application triggering is not required. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eecId + + ServProvNotification: + description: Represents notification information of a service provisioning Event. + type: object + properties: + subId: + type: string + description: > + Identifier of the individual service provisioning subscription for which the service + provisioning notification is delivered. + ednCnfgInfo: + type: array + items: + $ref: '#/components/schemas/EDNConfigInfo' + minItems: 1 + description: List of EDN configuration information. + required: + - subId + - ednCnfgInfo + + ConnectivityInfo: + description: Represents the connectivity information for the UE. + type: object + properties: + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + ssId: + type: string + description: Identifies the SSID of the access point to which the UE is attached. + + EDNConfigInfo: + description: Represents the EDN configuration information. + type: object + properties: + ednConInfo: + $ref: '#/components/schemas/EDNConInfo' + eess: + type: array + items: + $ref: '#/components/schemas/EESInfo' + minItems: 1 + description: Contains the list of EESs of the EDN. + lifeTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - ednConInfo + - eess + + EDNConInfo: + description: Represents an EDN connection information. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ednTopoSrvArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + + EESInfo: + description: Represents EES information. + type: object + properties: + eesId: + type: string + description: Identity of the EES. + endPt: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + easIds: + type: array + items: + type: string + description: > + Application identities of the Edge Application Servers registered + with the EES. + ecspInfo: + type: string + description: Represents an ECSP Information. + svcArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + description: Represents list of Data network access identifiers. + eesSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EES supports service continuity or not, also indicates which ACR + scenarios are supported by the EES. + eecRegConf: + type: boolean + description: > + Indicates whether the EEC is required to register on the EES to use edge services + or not. + easInstInfos: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/EASInstantiationInfo' + minItems: 1 + description: > + The EAS instantiation status per EASID (e.g. instantiated, instantiable but not be + instantiated yet). + required: + - eesId + - eecRegConf + + ECSServProvSubscriptionPatch: + description: > + Represents modifications to an individual service provisioning subscription resource. + type: object + properties: + acProfs: + type: array + items: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + description: Information about services the EEC wants to connect to. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + eecSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + connInfo: + type: array + items: + $ref: '#/components/schemas/ConnectivityInfo' + description: List of connectivity information for the UE. diff --git a/TS24558_Eees_ACREvents.yaml b/TS24558_Eees_ACREvents.yaml new file mode 100644 index 0000000..256a94c --- /dev/null +++ b/TS24558_Eees_ACREvents.yaml @@ -0,0 +1,414 @@ +openapi: 3.0.0 + +info: + title: Eees_ACREvents + version: "1.1.0-alpha.1" + description: | + API for ACR events subscription and notification. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 24.558 V18.1.0 Enabling Edge Applications; Protocol specification. + url: 'https://www.3gpp.org/ftp/Specs/archive/24_series/24.558/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-acrevents/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.1 of 3GPP TS 24.558 + +paths: + + /subscriptions: + post: + description: Creates a new individual ACR events subscription. + operationId: CreateACREventsSubscripton + tags: + - ACR events subscription (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACREventsSubscription' + responses: + '201': + description: Individual ACR events subscription resource created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ACREventsSubscription' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # Contents of the callback message. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACRInfoNotification' + responses: + '204': + description: No Content (The receipt of the Notification is acknowledged). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + put: + description: > + Updates an existing individual ACR events subscription identified by the subscriptionId. + operationId: UpdateACREventsSubscription + tags: + - Individual ACR Events Subscription + parameters: + - name: subscriptionId + in: path + description: Identifies an individual ACR Events subscription resource. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACREventsSubscription' + responses: + '200': + description: > + OK (An individual ACR Events subscription resource updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ACREventsSubscription' + '204': + description: No Content (updated successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + description: > + Deletes an existing individual ACR events subscription identified by the subscriptionId. + operationId: DeleteACREventsSubscription + tags: + - Individual ACR Events Subscription + parameters: + - name: subscriptionId + in: path + description: Identifies an individual ACR Events subscription resource. + required: true + schema: + type: string + responses: + '204': + description: An individual ACR Events subscription resource deleted successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + description: > + Partially modifies an existing individual ACR events subscription identified by + the subscriptionId. + operationId: ModifyACREventsSubscription + tags: + - Individual ACR Events Subscription + parameters: + - name: subscriptionId + in: path + description: Identifies an individual ACR Events subscription resource. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ACREventsSubscriptionPatch' + responses: + '200': + description: > + OK (An individual ACR Events subscription resource updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ACREventsSubscription' + '204': + description: No Content (successful notification). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + ACREventsSubscription: + description: ACE Events subscription request. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + easIds: + type: array + items: + type: string + minItems: 1 + description: The list of application identifiers of the EASs. + acIds: + type: array + items: + type: string + description: List of AC identities. + eventIds: + $ref: '#/components/schemas/ACREventIDs' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the ECS to send a test notification. Set to + false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eecId + - easIds + - eventIds + - notificationDestination + + ACRInfoNotification: + description: Notification of ACR events information. + type: object + properties: + subId: + type: string + description: > + String identifying the Individual ACR events subscription for which the ACT + Information notification is delivered. + easId: + type: string + description: Application identifier of the EAS. + acId: + type: string + description: Identity of the AC. + eventId: + $ref: '#/components/schemas/ACREventIDs' + trgtInfo: + $ref: '#/components/schemas/TargetInfo' + acrStatus: + $ref: '#/components/schemas/ACRCompleteEventInfo' + eecCtxtReloc: + $ref: '#/components/schemas/EecCtxtRelocStatus' + required: + - subId + - easId + - eventId + + TargetInfo: + description: Details of the selected T-EAS and the T-EES. + type: object + properties: + trgetEASInfo: + $ref: 'TS24558_Eees_EASDiscovery.yaml#/components/schemas/DiscoveredEas' + trgetEESInfo: + $ref: 'TS24558_Eecs_ServiceProvisioning.yaml#/components/schemas/EDNConfigInfo' + + ACREventsSubscriptionPatch: + description: An individual ACR events subscription resource to be updated. + type: object + properties: + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + easIds: + type: array + items: + type: string + minItems: 1 + description: The list of application identifiers of the EASs. + eventIds: + $ref: '#/components/schemas/ACREventIDs' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + ACREventIDs: + anyOf: + - type: string + enum: + - TARGET_INFORMATION + - ACR_COMPLETE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the ACR events. + Possible values are: + - TARGET_INFORMATION: Represents the target information event. + - ACR_COMPLETE: Represents the ACR complete event. + + EecCtxtRelocStatus: + description: Indicates the registration id and expiry time of the registration. + type: object + properties: + implReg: + $ref: 'TS29558_Eees_EECContextRelocation.yaml#/components/schemas/ImplicitRegDetails' + + ACRCompleteEventInfo: + description: Indicates the completed ACR result and target EAS endpoint info. + type: object + properties: + acrRes: + type: boolean + description: Indicates whether the ACR is successful or failure. + tEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + failReason: + type: string + description: Indicates the cause information for the failure. + required: + - acrRes + - tEasEndpoint diff --git a/TS24558_Eees_AppContextRelocation.yaml b/TS24558_Eees_AppContextRelocation.yaml new file mode 100644 index 0000000..6049eb0 --- /dev/null +++ b/TS24558_Eees_AppContextRelocation.yaml @@ -0,0 +1,255 @@ +openapi: 3.0.0 +info: + title: Eees Application Context Relocation Service + version: "1.1.0-alpha.2" + description: | + Eees Application Context Relocation Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 24.558 V18.1.0; Enabling Edge Applications; Protocol specification; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/24.558/' + +servers: + - url: '{apiRoot}/eees-appctxtreloc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: + - eees-appctxtreloc + +paths: + /determine: + post: + summary: Request ACR determination. + operationId: Determine + tags: + - Determine ACR + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrDetermReq' + responses: + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /initiate: + post: + summary: Request the initiation of ACR. + operationId: Initiate + tags: + - Initiate ACR + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrInitReq' + responses: + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /declare: + post: + summary: Informs about the selected target EAS and provides the associated information. + operationId: Declare + tags: + - Declare selected target EAS + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrDecReq' + responses: + '204': + description: > + No Content. The selected target EAS information is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + eees-appctxtreloc: Access to the Eees_AppContextRelocation API + + schemas: + AcrDetermReq: + description: Represents the parameters to request ACR with action determination. + type: object + properties: + requestorId: + type: string + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acId: + type: string + easId: + type: string + sEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + required: + - requestorId + - sEasEndpoint + + AcrInitReq: + description: Represents the parameters to request ACR with action initiation. + type: object + properties: + requestorId: + type: string + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acId: + type: string + easId: + type: string + tEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + sEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + prevTEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + routeReq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + simInactTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + easNotifInd: + type: boolean + default: false + prevEasNotifInd: + type: boolean + default: false + eecCtxtReloc: + $ref: '#/components/schemas/EecCtxtReloc' + predictExpTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - requestorId + - tEasEndpoint + - easNotifInd + + AcrDecReq: + description: > + Represents the parameters to inform about the selected target EAS and provide the + associated information. + type: object + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acId: + type: string + tEasId: + type: string + tEasEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + required: + - ueId + - tEasId + - tEasEndpoint + + EecCtxtReloc: + description: Represents EEC Context relocation information. + type: object + properties: + eecCtxtId: + type: string + sEesId: + type: string + sEecEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + tEesId: + type: string + tEecEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + required: + - eecCtxtId diff --git a/TS24558_Eees_EASDiscovery.yaml b/TS24558_Eees_EASDiscovery.yaml new file mode 100644 index 0000000..439fbde --- /dev/null +++ b/TS24558_Eees_EASDiscovery.yaml @@ -0,0 +1,723 @@ +openapi: 3.0.0 + +info: + title: Eees_EASDiscovery + description: | + API for EAS Discovery. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.1.0-alpha.3" + +externalDocs: + description: > + 3GPP TS 24.558 V18.2.0 Enabling Edge Applications; Protocol specification. + url: https://www.3gpp.org/ftp/Specs/archive/24_series/24.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-easdiscovery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.1 of 3GPP TS 24.558 + +paths: + + /subscriptions: + post: + description: Creates a new individual EAS discovery subscription. + operationId: CreateEASDiscSub + tags: + - EAS Discovery Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscription' + responses: + '201': + description: > + Created. A new Individual EAS Discovery Subscription resource was successfully + created. + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscription' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoveryNotification' + responses: + '204': + description: No Content (The receipt of the Notification is acknowledged). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + put: + description: > + Updates an existing individual EAS discovery subscription identified by the subscriptionId. + operationId: UpdateIndEASDiscSub + tags: + - Individual EAS Discovery Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual EAS discovery subscription resource. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscription' + responses: + '200': + description: > + OK. The individual EAS discovery subscription resource was updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscription' + '204': + description: No Content (updated successfully). + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + description: > + Deletes an existing individual EAS discovery subscription identified by the subscriptionId. + operationId: DeleteIndEASDiscSub + tags: + - Individual EAS Discovery Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual EAS discovery subscription resource. + required: true + schema: + type: string + responses: + '204': + description: > + An individual EAS discovery subscription resource deleted successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + description: > + Partial update an existing EAS Discovery Subscription resource identified by a + subscriptionId. + operationId: ModifyIndEASDiscSub + tags: + - Individual EAS Discovery Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifies an individual EAS discovery subscription resource. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscriptionPatch' + responses: + '200': + description: > + OK (An individual EAS discovery subscription resource updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoverySubscription' + '204': + description: No Content (modified successfully). + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /eas-profiles/request-discovery: + post: + description: > + Provides EAS information requested by the service consumer (i.e. EEC, EAS or EES). + operationId: GetEASDiscInfo + tags: + - EAS Profiles (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoveryReq' + responses: + '200': + description: > + OK (The requested EAS discovery information was returned successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EasDiscoveryResp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + EasDiscoveryReq: + description: EAS discovery request information. + type: object + properties: + requestorId: + $ref: '#/components/schemas/RequestorId' + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + easDiscoveryFilter: + $ref: '#/components/schemas/EasDiscoveryFilter' + eecSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + eesSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EES supports service continuity or not, also indicates which ACR + scenarios are supported by the EES. + easSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EAS supports service continuity or not, also indicates which ACR + scenarios are supported by the EAS. + locInf: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + easTDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + easSelSupInd: + type: boolean + description: > + Indicates if the EEC requires the EAS selection support from the EES (e.g., for + constrained device). The default value false indicates the EAS selection is not + required from the EES. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + easIntTrigSup: + type: boolean + description: > + Indicates to the EES whether the EAS instantiation triggering should be performed for + the current request. The default value false indicates the EAS instantiation triggering + should not be performed. The true value indicate the EAS instantiation triggering should + be performed. + predictExpTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - requestorId + + EasDiscoveryResp: + description: EAS discovery response. + type: object + properties: + discoveredEas: + type: array + items: + $ref: '#/components/schemas/DiscoveredEas' + description: List of EAS discovery information. + easInstInfos: + type: object + additionalProperties: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/EASInstantiationInfo' + minProperties: 1 + description: > + Contains the EAS instantiation information for each discovered EAS returned within + the discoveredEas attribute. + edgeLoadAnalytics: + type: object + additionalProperties: + $ref: '#/components/schemas/EdgeLoadAnalytic' + minProperties: 1 + description: > + Contains the statistical analytics data and predictive analytics data for each + discovered application server. The key of the map shall be the EAS ID to which + the provided analytics data within the map value relates. + required: + - discoveredEas + + EasDiscoverySubscription: + description: Represents an Individual EAS Discovery Subscription resource. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + easEventType: + $ref: '#/components/schemas/EASDiscEventIDs' + easDiscoveryFilter: + $ref: '#/components/schemas/EasDiscoveryFilter' + easDynInfoFilter: + $ref: '#/components/schemas/EasDynamicInfoFilter' + easSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the EES to send a test notification. Set to false + or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + easIntTrigSup: + type: boolean + description: > + Indicates to the EES whether the EAS instantiation triggering should be performed for + the current request. The default value false indicates the EAS instantiation triggering + should not be performed. The true value indicate the EAS instantiation triggering should + be performed. + eecTriggerRequest: + type: boolean + description: > + Indicates to the EES whether the application triggering is required by the EEC. + Default value false indicates the application triggering is not required. + required: + - eecId + - easEventType + + EasDiscoveryNotification: + description: Notification of EAS discovery information. + type: object + properties: + subId: + type: string + description: > + Identifier of the individual service provisioning subscription for which the service + provisioning notification is delivered. + eventType: + $ref: '#/components/schemas/EASDiscEventIDs' + discoveredEas: + type: array + items: + $ref: '#/components/schemas/DiscoveredEas' + minItems: 1 + description: List of EAS discovery information. + easInstInfos: + type: object + additionalProperties: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/EASInstantiationInfo' + minProperties: 1 + description: > + Contains the EAS instantiation information for each discovered EAS returned within + the "discoveredEas" attribute. + edgeLoadAnalytics: + type: object + additionalProperties: + $ref: '#/components/schemas/EdgeLoadAnalytic' + minProperties: 1 + description: > + Contains the statistical analytics data and predictive analytics data for each + discovered application server. The key of the map shall be the EAS ID to which + the provided analytics data within the map value relates. + required: + - subId + - eventType + - discoveredEas + + EasDiscoveryFilter: + description: Represents the EAS characteristics. + type: object + properties: + acChars: + type: array + items: + $ref: '#/components/schemas/ACCharacteristics' + minItems: 1 + description: AC description for which an EAS is needed. + easChars: + type: array + items: + $ref: '#/components/schemas/EasCharacteristics' + minItems: 1 + description: Required EAS chararcteristics. + + EasCharacteristics: + description: Represents the EAS chararcteristics. + type: object + properties: + easId: + type: string + description: EAS application identifier. + appGrpId: + type: string + description: > + Application group identifier, identifying a group of UEs using the same + application service. + easSyncInd: + type: boolean + description: > + Indicates whether the synchronization between the EASs is required. The + default value false indicates the EAS synchronization is not required. + easProvId: + type: string + description: EAS provider identifier. + stdEasType: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASCategory' + easType: + type: string + description: EAS type with the flexible value set. + easSched: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + svcArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + easSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + svcPermLevel: + type: string + description: Service permissions level. + svcFeats: + type: array + items: + type: string + minItems: 1 + description: Service features. + not: + required: [stdEasType, easType] + + DiscoveredEas: + description: Represents an EAS discovery information. + type: object + properties: + eas: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASProfile' + lifeTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - eas + + EasDynamicInfoFilter: + description: Represents EAS dynamic information changes filter. + type: object + properties: + dynInfoFilter: + type: array + items: + $ref: '#/components/schemas/EasDynamicInfoFilterData' + minItems: 1 + description: List of EAS dynamic information required by the EEC per EAS. + required: + - dynInfoFilter + + EasDynamicInfoFilterData: + description: Represents an EAS dynamic information. + type: object + properties: + eecId: + type: string + description: The application identifier of the EAS, e.g. FQDN, URI. + easStatus: + type: boolean + description: Notify if EAS status changed. + easAcIds: + type: boolean + description: Notify if list of AC identifiers changed. + easDesc: + type: boolean + description: Notify if EAS description changed. + easPt: + type: boolean + description: Notify if EAS endpoint changed. + easEndPoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + easFeature: + type: boolean + description: Notify if EAS feature changed. + easSchedule: + type: boolean + description: Notify if EAS schedule changed. + svcArea: + type: boolean + description: Notify if EAS service area changed. + svcKpi: + type: boolean + description: Notify if EAS KPIs changed. + svcCont: + type: boolean + description: Notify if EAS supported ACR changed. + required: + - eecId + + ACCharacteristics: + description: Represents EAS dynamic information changes filter. + type: object + properties: + acProf: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + required: + - acProf + + EASDiscEventIDs: + anyOf: + - type: string + enum: + - EAS_AVAILABILITY_CHANGE + - EAS_DYNAMIC_INFO_CHANGE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Possible values are + - EAS_AVAILABILITY_CHANGE: Represents the EAS availability change event. + - EAS_DYNAMIC_INFO_CHANGE: Represents the EAS dynamic information change event. + + EasDiscoverySubscriptionPatch: + description: Represents an Individual EAS Discovery Subscription resource. + type: object + properties: + easDiscoveryFilter: + $ref: '#/components/schemas/EasDiscoveryFilter' + easDynInfoFilter: + $ref: '#/components/schemas/EasDynamicInfoFilter' + easSvcContinuity: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: > + Indicates if the EEC supports service continuity or not, also indicates which ACR + scenarios are supported by the EEC. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + easEventType: + $ref: '#/components/schemas/EASDiscEventIDs' + + RequestorId: + description: Represents identifier of the requestor. + type: object + properties: + eesId: + type: string + description: The identifier of the EES (e.g. S-EES). + easId: + type: string + description: The application identifier of the EAS (e.g. S-EAS), e.g. FQDN, URI. + eecId: + type: string + description: The identifier of the EEC. + oneOf: + - required: [eesId] + - required: [easId] + - required: [eecId] + + EdgeLoadAnalytic: + description: > + Contains the statistical analytics data and predictive analytics data for each + discovered application server. + type: object + properties: + easId: + type: string + description: The application identifier of the EAS, e.g. FQDN, URI. + predictData: + $ref: '#/components/schemas/PredictiveData' + statisticData: + $ref: '#/components/schemas/StatisticalData' + required: + - easId + + PredictiveData: + description: > + Contains the predictive analytics data for each discovered EAS service status + (e.g. EAS schedule, EAS status) change. + type: object + properties: + scheds: + type: array + items: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + minItems: 1 + status: + type: string + description: Indicates the EAS status (e.g. Enabled, Disabled etc.). + + StatisticalData: + description: > + Contains the statistical analytics data (e.g. number of times the client received + expected performance from the EAS). + type: object + properties: + numRecPerf: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' diff --git a/TS24558_Eees_EECRegistration.yaml b/TS24558_Eees_EECRegistration.yaml new file mode 100644 index 0000000..d6b4be5 --- /dev/null +++ b/TS24558_Eees_EECRegistration.yaml @@ -0,0 +1,424 @@ +openapi: 3.0.0 + +info: + title: Eees_EECRegistration + version: "1.1.0-alpha.3" + description: | + API for EEC registration. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 24.558 V18.2.0 Enabling Edge Applications; Protocol specification. + url: 'https://www.3gpp.org/ftp/Specs/archive/24_series/24.558/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-eecregistration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.1 of 3GPP TS 24.558 + +paths: + + /registrations: + post: + operationId: CreateEECReg + tags: + - EEC Registrations (Collection) + description: Create a new EEC registration at the EES. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EECRegistration' + responses: + '201': + description: Created (EEC information is registered successfully at EES). + content: + application/json: + schema: + $ref: '#/components/schemas/EECRegistration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + put: + operationId: UpdateIndEECReg + tags: + - Individual EEC registration (Document) + description: Update an existing EEC registration a the EES. + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing registration. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EECRegistration' + responses: + '200': + description: OK (An individual EEC registration resource updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EECRegistration' + '204': + description: > + No Content (An individual EEC registration resource updated successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + operationId: DeleteIndEECReg + tags: + - Individual EEC registration (Document) + description: Remove an existing EEC registration at EES. + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + responses: + '204': + description: > + No Content (An individual EEC registration resource deleted successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + operationId: ModifyIndEECReg + tags: + - Individual EEC registration (Document) + description: Partially update an existing EEC registration a the EES. + parameters: + - name: registrationId + in: path + description: Identifies an individual EEC registration. + required: true + schema: + type: string + requestBody: + description: Parameters to replace the existing registration. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/EECRegistrationPatch' + responses: + '200': + description: OK (An individual EEC registration resource updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EECRegistration' + '204': + description: > + No Content (An individual EEC registration resource updated successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + EECRegistration: + description: Describes the parameters to perform EEC Registration related operations. + type: object + properties: + eecId: + type: string + description: Represents a unique identifier of the EEC. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acProfs: + type: array + items: + $ref: '#/components/schemas/ACProfile' + description: Profiles of ACs for which the EEC provides edge enabling services. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + eecSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: Profiles of ACs for which the EEC provides edge enabling services. + eecCntxId: + type: string + description: Identifier of the EEC context obtained from a previous registration. + srcEesId: + type: string + description: Identifier of the EES that provided EEC context ID. + endPt: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + ueMobilityReq: + type: boolean + description: > + Set to true to indicate that UE Mobility support is required. + Set to false to indicate that UE mobility support is not required. + The default value when omitted is false. + ueType: + $ref: '#/components/schemas/DeviceType' + unfulfillAcProfs: + type: array + items: + $ref: '#/components/schemas/UnfulfilledAcProfile' + minItems: 1 + description: > + A list of ACIDs of the AC Profile(s) sent from EES, for which the requirements + indicated in the AC profile(s) cannot be fulfilled. + unfulfilledAcProfs: + $ref: '#/components/schemas/UnfulfilledAcProfile' + not: + required: [ unfulfilledAcProfs, unfulfillAcProfs ] + required: + - eecId + + ACProfile: + description: AC information indicating required services and service characteristics. + type: object + properties: + acId: + type: string + description: Identity of the AC. + acType: + type: string + description: The category or type of AC. + prefEcsps: + type: array + items: + type: string + description: Indicates to the ECS which ECSPs are preferred for the AC. + acSchedule: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + expAcGeoServArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + acSvcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + description: The ACR scenarios supported by the AC for service continuity. + simInactTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + eass: + type: array + items: + $ref: '#/components/schemas/EasDetail' + minItems: 1 + description: List of EAS information. + easBundleInfo: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASBundleInfo' + required: + - acId + + EasDetail: + description: EAS details. + type: object + properties: + easId: + type: string + description: Application identifier of the EAS. + expectedSvcKPIs: + $ref: '#/components/schemas/ACServiceKPIs' + minimumReqSvcKPIs: + $ref: '#/components/schemas/ACServiceKPIs' + required: + - easId + + ACServiceKPIs: + description: Describes the KPIs required by the AC in order to receive required services. + type: object + properties: + connBand: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + reqRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + respTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + avail: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + reqComp: + type: string + description: The compute resources required by the AC. + reqGrapComp: + type: string + description: The graphical compute resources required by the AC. + reqMem: + type: string + description: The memory resources required by the AC. + reqStrg: + type: string + description: The storage resources required by the AC. + + EECRegistrationPatch: + description: Describes the parameters to perform EEC Registration update. + type: object + properties: + acProfs: + type: array + items: + $ref: '#/components/schemas/ACProfile' + description: Profiles of ACs for which the EEC provides edge enabling services. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + ueMobilityReq: + type: boolean + description: Indicates whether UE requires mobility support or not. + ueType: + $ref: '#/components/schemas/DeviceType' + + UnfulfilledAcProfile: + description: Describes AC Profile ID and reason sent by EES in EEC Register response. + type: object + properties: + acId: + type: string + description: The AC ID of a AC profile. + reason: + $ref: '#/components/schemas/UnfulfillACProfRsn' + + UnfulfillACProfRsn: + anyOf: + - type: string + enum: + - EAS_NOT_AVAILABLE + - REQ_UNFULFILLED + - type: string + description: > + This string provides forward-compatibility with future extensions to the + enumeration and is not used to encode content defined in the present version + of this API. + description: | + Represents reason for unfulfilled AC profile requirements. + Possible values are: + - EAS_NOT_AVAILABLE: EAS is not available. + - REQ_UNFULFILLED: Requirements cannot be fulfilled. + + DeviceType: + anyOf: + - type: string + enum: + - CONSTRAINED_UE + - NORMAL_UE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: > + Represents the UE type. + Possible values are: + - CONSTRAINED_UE: Indicates UE is constrained with resources like power, processor etc. + - NORMAL_UE: Indicates UE is not constrained with resources. diff --git a/TS26512_CommonData.yaml b/TS26512_CommonData.yaml new file mode 100644 index 0000000..8b32891 --- /dev/null +++ b/TS26512_CommonData.yaml @@ -0,0 +1,272 @@ +openapi: 3.0.0 +info: + title: 5GMS Common Data Types + version: 3.0.0 + description: | + 5GMS Common Data Types + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: 5GMS Common Data Types + description: '5G Media Streaming: Common Data Types' +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' +paths: {} +components: + schemas: + ################################# + # Clause 6.4.2: Simple data types + ################################# + ResourceId: + type: string + description: String chosen by the 5GMS AF to serve as an identifier in a resource URI. + Percentage: + type: number + minimum: 0.0 + maximum: 100.0 + Duration: + type: string + format: duration + description: 'String with format "duration" as defined by JSON Schema (referencing IETF RFC 3339, appendix A and, ultimately, ISO 8601).' + #Uri is defined in TS29571_CommonData + Url: + type: string + format: uri-reference + description: 'Uniform Resource Locator, conforming with the "URI-reference" production specified in IETF RFC 3986, section 4.1.' + AbsoluteUrl: + type: string + format: uri + description: 'Absolute Uniform Resource Locator, conforming with the "absolute-URI" production specified in IETF RFC 3986, section 4.3 in which the scheme part is "http" or "https". Note that the "query" suffix is permitted by this production but the "fragment" suffix is not.' + MediaDeliverySessionId: + type: string + description: 'A unique identifier for a media delivery session.' + + ##################################### + # Clause 6.4.3: Structured data types + ##################################### + IpPacketFilterSet: + type: object + required: + - direction + properties: + srcIp: + type: string + dstIp: + type: string + protocol: + type: integer + srcPort: + type: integer + dstPort: + type: integer + toSTc: + type: string + flowLabel: + type: integer + spi: + type: integer + direction: + type: string + + ServiceDataFlowDescription: + type: object + properties: + flowDescription: + $ref: '#/components/schemas/IpPacketFilterSet' + domainName: + type: string + + M5QoSSpecification: + type: object + required: + - marBwDlBitRate + - marBwUlBitRate + - mirBwDlBitRate + - mirBwUlBitRate + properties: + marBwDlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minDesBwDlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minDesBwUlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwDlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwUlBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + desLatency: + type: integer + minimum: 0 + desLoss: + type: integer + minimum: 0 + + EndpointAddress: + type: object + required: + - portNumber + properties: + hostname: + type: string + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + + MediaStreamingSessionIdentification: + type: object + required: + - sessionId + properties: + sessionId: + $ref: '#/components/schemas/MediaDeliverySessionId' + + MediaStreamingAccess: + type: object + description: Common properties of a single media access by the Media Stream Handler. + required: + - mediaStreamHandlerEndpointAddress + - applicationServerEndpointAddress + - requestMessage + - responseMessage + - processingLatency + properties: + mediaStreamHandlerEndpointAddress: + $ref: '#/components/schemas/EndpointAddress' + applicationServerEndpointAddress: + $ref: '#/components/schemas/EndpointAddress' + requestMessage: + type: object + required: + - method + - url + - protocolVersion + - size + - bodySize + properties: + method: + type: string + url: + $ref: '#/components/schemas/AbsoluteUrl' + protocolVersion: + type: string + range: + type: string + size: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + bodySize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + contentType: + type: string + userAgent: + type: string + userIdentity: + type: string + referer: + $ref: '#/components/schemas/AbsoluteUrl' + cacheStatus: + $ref: '#/components/schemas/CacheStatus' + responseMessage: + type: object + required: + - responseCode + - size + - bodySize + properties: + responseCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + size: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + bodySize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + contentType: + type: string + processingLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + connectionMetrics: + type: object + required: + - meanNetworkRoundTripTime + - networkRoundTripTimeVariation + - congestionWindowSize + properties: + meanNetworkRoundTripTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + networkRoundTripTimeVariation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + congestionWindowSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + NetworkAssistanceInvocation: + description: Common properties of a single Network Assistance invocation. + type: object + properties: + policyTemplateId: + $ref: '#/components/schemas/ResourceId' + serviceDataFlowDescriptions: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/ServiceDataFlowDescription' + requestedQoS: + $ref: '#/components/schemas/UnidirectionalQoSSpecification' + # The network QoS parameters (if any) requested by the Media Session Handler. + recommendedQoS: + type: object + description: The network QoS parameters (if any) recommended to the Media Session Handler. + required: + - maximumBitRate + - minimumBitRate + properties: + maximumBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minimumBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + UnidirectionalQoSSpecification: + type: object + description: A specification for network Quality of Service in either the downlink or uplink direction. + required: + - maximumRequestedBitRate + - minimumRequestedBitRate + properties: + maximumRequestedBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minimumDesiredBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minimumRequestedBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + desiredPacketLatency: + type: integer + minimum: 0 + desiredPacketLossRate: + type: integer + minimum: 0 + + ##################################### + # Clause 6.4.4: Enumerated data types + ##################################### + ProvisioningSessionType: + anyOf: + - type: string + enum: [DOWNLINK, UPLINK] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + CacheStatus: + anyOf: + - type: string + enum: [HIT, MISS, EXPIRED] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. diff --git a/TS26512_EventExposure.yaml b/TS26512_EventExposure.yaml new file mode 100644 index 0000000..d64ca29 --- /dev/null +++ b/TS26512_EventExposure.yaml @@ -0,0 +1,300 @@ +openapi: 3.0.0 +info: + title: 5GMS Event Exposure + version: 1.0.0 + description: | + 5GMS Event Exposure syntax + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: 5GMS Event Exposure + description: '5G Media Streaming: Event Exposure' +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' +paths: {} +components: + schemas: + BaseEventCollection: + type: object + description: Abstract base data type describing a collection of event records + required: + - collectionTimestamp + - startTimestamp + - endTimestamp + - sampleCount + - streamingDirection + - summarisations + - records + properties: + collectionTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + # The date–time at which this collection was exposed by the Data Collection AF as an event to its subscribed event consumers. + startTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + # Date–time of earliest data sample included in or summarised by this collection. + endTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + # Date–time of latest data sample included in or summarised by this collection. + sampleCount: + type: integer + minimum: 1 + description: The number of data samples included in or summarised by this collection. + streamingDirection: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ProvisioningSessionType' + summarisations: + type: array + minItems: 1 + items: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataAggregationFunctionType' + description: One or more data aggregation functions that have been applied to the UE data to produce summary records present in this collection. + records: + type: array + minItems: 0 + items: {} + description: Type of record is defined by concrete data type. + + BaseEventRecord: + type: object + description: Abstract base data type describing a single UE data record or summarising a set of UE data records. + required: + - recordType + - recordTimestamp + properties: + recordType: + $ref: '#/components/schemas/EventRecordType' + recordTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + # The date–time at which the UE data carried in this record was sampled or summarised. + provisioningSessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + # The identifier of the Provisioning Session to which this record pertains. Present only for individual data sample record type. + sessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/MediaDeliverySessionId' + # A value synthesised by the 5GMS System that uniquely identifies the media streaming session to which this record pertains. Present only for individual data sample record type. + ueIdentification: + type: string + description: GPSI of the requesting UE or a stable globally unique string identifying the requesting Media Session Handler. Present only for individual data sample record type and only when exposure is permitted by the data exposure restrictions in force for the event type in question. + dataNetworkName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + # Identifying the Data Network of the M4 media streaming session. Present only for individual data sample record type. + sliceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + # The S-NSSAI identifying the Network Slice of the M4 media streaming session. Present only for individual data sample record type. + ueLocations: + type: array + minItems: 0 + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + description: The location of the UE when the data described by this record was sampled. Present only for individual data sample record type and only when exposure is permitted by the data exposure restrictions in force for the event in question. + + EventRecordType: + description: Enumeration of event record types. + anyOf: + - type: string + enum: [INDIVIDUAL_SAMPLE, SUMMARY_MEAN, SUMMARY_MINIMUM, SUMMARY_MAXIMUM, SUMMARY_SUM] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + QoEMetricsCollection: + description: A collection of QoE Metrics Event records. + allOf: + - $ref: '#/components/schemas/BaseEventCollection' + - type: object + required: + - records + properties: + records: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/QoEMetricsEvent' + description: A set of QoE Metrics Event records, each one describing a QoE metrics report or summarising a set of QoE metrics reports. + + QoEMetricsEvent: + description: A QoE Metrics Event record. + allOf: + - $ref: '#/components/schemas/BaseEventRecord' + - type: object + required: + - metricType + properties: + metricType: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + # A fully-qualified term identifier that uniquely identifies the QoE metrics reporting scheme and the type of QoE metric included in this record, as specified in clause E.2, up to but excluding the first hierarchical separator. + samples: + type: array + minItems: 1 + items: + type: object + required: + - metrics + properties: + sampleTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + # The moment in time at which this QoE metric was sampled. + sampleDuration: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Duration' + # The time duration over which this QoE metric was sampled. + mediaTimestamp: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Duration' + # The time point in the media at which this QoE metric was sampled. + metrics: + type: array + minItems: 1 + description: A set of key–value pairs for the samples metrics associated with this QoE metric sample. + items: + type: object + description: A name and optional value for a QoE metric within a QoE metric sample. + required: + - key + properties: + key: + type: string + description: A token that uniquely identifies the type of metric within the scope of the event type. + value: {} + + ConsumptionReportingUnitsCollection: + description: A collection of Consumption Reporting Event records. + allOf: + - $ref: '#/components/schemas/BaseEventCollection' + - type: object + required: + - records + properties: + records: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/ConsumptionReportingEvent' + description: A set of records, each one describing a Consumption Reporting Unit. + + ConsumptionReportingEvent: + description: A Consumption Reporting Event record, corresponding to a Consumption Reporting Unit. + allOf: + - $ref: '#/components/schemas/BaseEventRecord' + - type: object + required: + - unitDuration + - mediaPlayerEntryUrl + - mediaComponentIdentifier + properties: + unitDuration: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Duration' + # The duration of this consumption reporting unit. + clientEndpointAddress: + $ref: 'TS26512_CommonData.yaml#/components/schemas/EndpointAddress' + # The endpoint address of the UE that consumed media. + serverEndpointAddress: + $ref: 'TS26512_CommonData.yaml#/components/schemas/EndpointAddress' + # The endpoint address of the 5GMS AS from which media was consumed. + mediaPlayerEntryUrl: + $ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl' + # The Media Player Entry URL to which this consumption reporting unit pertains. + mediaComponentIdentifier: + type: string + description: A token (e.g., an MPEG DASH representation identifier) identifying the media component of the Media Player Entry that was consumed during this consumption reporting unit. + + NetworkAssistanceInvocationsCollection: + description: A collection of Network Assistance Invocation Event records. + allOf: + - $ref: '#/components/schemas/BaseEventCollection' + - type: object + required: + - records + properties: + records: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/NetworkAssistanceInvocationEvent' + description: A set of records, each one describing a Network Assistance invocation or summarising a set of Network Assistance invocations. + + NetworkAssistanceInvocationEvent: + description: A Network Assistance Invocation Event record. + allOf: + - $ref: '#/components/schemas/BaseEventRecord' + - type: object + required: + - networkAssistanceType + properties: + networkAssistanceType: + $ref: '#/components/schemas/NetworkAssistanceType' + # The type of Network Assistance solicited by the Media Session Handler. + - $ref: 'TS26512_CommonData.yaml#/components/schemas/NetworkAssistanceInvocation' + + NetworkAssistanceType: + description: The type of network assistance sought by the Media Session Handler. + anyOf: + - type: string + enum: [AF_THROUGHPUT_ESTIMATION, AF_DELIVERY_BOOST, ANBR_THROUGHPUT_ESTIMATION, ANBR_DELIVERY_BOOST] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + DynamicPolicyInvocationsCollection: + description: A collection of Dynamic Policy Invocation Event records. + allOf: + - $ref: '#/components/schemas/BaseEventCollection' + - type: object + required: + - records + properties: + records: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/DynamicPolicyInvocationEvent' + description: A set of records, each one describing a dynamic policy invocation. + + DynamicPolicyInvocationEvent: + description: A Dynamic Policy Invocation Event record. + allOf: + - $ref: '#/components/schemas/BaseEventRecord' + - type: object + required: + - policyTemplateId + properties: + policyTemplateId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + serviceDataFlowDescriptions: + type: array + minItems: 1 + items: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription' + description: The set of Service Data Flows to which the Media Session Handler requested that the Policy Template be applied. At least a domain name or one packet filter shall be present. + requestedQoS: + $ref: 'TS26512_CommonData.yaml#/components/schemas/UnidirectionalQoSSpecification' + # The network QoS parameters (if any) requested by the Media Session Handler. + enforcementMethod: + type: string + description: The policy enforcement method chosen by the 5GMS AF. + enforcementBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + # The enforcement bit rate (if any) selected by the 5GMS AF. + + MediaStreamingAccessesCollection: + description: A collection of Media Streaming Access Event records. + allOf: + - $ref: '#/components/schemas/BaseEventCollection' + - type: object + required: + - records + properties: + records: + type: array + minItems: 0 + items: + $ref: '#/components/schemas/MediaStreamingAccessEvent' + description: A set of records, each one describing one media streaming access. + + MediaStreamingAccessEvent: + description: A Media Streaming Access Event record. + allOf: + - $ref: '#/components/schemas/BaseEventRecord' + - $ref: 'TS26512_CommonData.yaml#/components/schemas/MediaStreamingAccess' diff --git a/TS26512_M5_DynamicPolicies.yaml b/TS26512_M5_DynamicPolicies.yaml new file mode 100644 index 0000000..e46e099 --- /dev/null +++ b/TS26512_M5_DynamicPolicies.yaml @@ -0,0 +1,45 @@ +openapi: 3.0.0 +info: + title: M5_DynamicPolicies + version: 3.0.0 + description: | + 5GMS AF M5 Dynamic Policy API + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: M5_DynamicPolicies + description: '5G Media Streaming: Media Session Handling (M5) APIs: Dynamic Policies' +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' +paths: {} +components: + schemas: + DynamicPolicy: + deprecated: true + description: "A representation of a Dynamic Policy resource." + type: object + required: + - dynamicPolicyId + - policyTemplateId + - serviceDataFlowDescriptions + - provisioningSessionId + properties: + dynamicPolicyId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + policyTemplateId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + serviceDataFlowDescriptions: + type: array + items: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription' + mediaType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType' + provisioningSessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + qosSpecification: + $ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification' + enforcementMethod: + type: string + enforcementBitRate: + type: integer diff --git a/TS26512_M5_NetworkAssistance.yaml b/TS26512_M5_NetworkAssistance.yaml new file mode 100644 index 0000000..2ddec59 --- /dev/null +++ b/TS26512_M5_NetworkAssistance.yaml @@ -0,0 +1,45 @@ +openapi: 3.0.0 +info: + title: M5_NetworkAssistance + version: 3.0.0 + description: | + 5GMS AF M5 Network Assistance API + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: M5_NetworkAssistance + description: '5G Media Streaming: Media Session Handling (M5) APIs: Network Assistance' +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' +paths: {} +components: + schemas: + NetworkAssistanceSession: + deprecated: true + description: "A representation of a Network Assistance Session resource." + type: object + required: + - naSessionId + - provisioningSessionId + - serviceDataFlowDescriptions + properties: + naSessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + provisioningSessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + serviceDataFlowDescriptions: + type: array + items: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ServiceDataFlowDescription' + minItems: 1 + mediaType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType' + policyTemplateId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + requestedQoS: + $ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification' + recommendedQoS: + $ref: 'TS26512_CommonData.yaml#/components/schemas/M5QoSSpecification' + notficationURL: + $ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl' diff --git a/TS26512_R2_DataReporting.yaml b/TS26512_R2_DataReporting.yaml new file mode 100644 index 0000000..9507c03 --- /dev/null +++ b/TS26512_R2_DataReporting.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.0 +info: + title: 5GMS Data Reporting data types + version: 1.0.0 + description: | + 5GMS Data Reporting data types + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: 5GMS Data Reporting data types + description: '5G Media Streaming: Data Reporting data types' + +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' + +paths: {} + +components: + schemas: + ANBRNetworkAssistanceInvocationRecord: + description: "An R2 data reporting record describing a single ANBR-based Network Assistance invocation by the Media Stream Handler." + allOf: + - $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/BaseRecord' + - $ref: 'TS26512_CommonData.yaml#/components/schemas/MediaStreamingSessionIdentification' + - $ref: 'TS26512_CommonData.yaml#/components/schemas/NetworkAssistanceInvocation' diff --git a/TS26512_R4_DataReporting.yaml b/TS26512_R4_DataReporting.yaml new file mode 100644 index 0000000..c930477 --- /dev/null +++ b/TS26512_R4_DataReporting.yaml @@ -0,0 +1,26 @@ +openapi: 3.0.0 +info: + title: 5GMS R4 Data Reporting data types + version: 2.0.0 + description: | + 5GMS R4 Data Reporting data types + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: 5GMS R4 Data Reporting data types + description: '5G Media Streaming: R4 Data Reporting data types' + +externalDocs: + description: 'TS 26.512 V18.0.0; 5G Media Streaming (5GMS); Protocols' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.512/' + +paths: {} + +components: + schemas: + MediaStreamingAccessRecord: + description: "An R4 data reporting record describing a single media access by the Media Stream Handler." + allOf: + - $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/BaseRecord' + - $ref: 'TS26512_CommonData.yaml#/components/schemas/MediaStreamingSessionIdentification' + - $ref: 'TS26512_CommonData.yaml#/components/schemas/MediaStreamingAccess' diff --git a/TS26517_MBSObjectManifest.yaml b/TS26517_MBSObjectManifest.yaml new file mode 100644 index 0000000..ce71390 --- /dev/null +++ b/TS26517_MBSObjectManifest.yaml @@ -0,0 +1,56 @@ +openapi: 3.0.0 +info: + title: MBS User Services Object Manifest + version: 1.0.0 + description: | + MBS User Services Object Manifest syntax + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: MBS User Services Object Manifest + description: '5G Media Streaming: Common Data Types' +externalDocs: + description: 'TS 26.517 V17.3.0; 5G Multicast-Broadcast User Services; Protocols and Formats' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.517/' +paths: {} +components: + schemas: + ObjectManifest: + type: object + description: A manifest describing a set of binary objects to be transmitted by the MBSTF as part of the MBS Distribution Session. + required: + - objects + properties: + updateInterval: + type: integer + format: int32 + description: The time period (in seconds) after which the MBSTF attempts to re-acquire the object manfiest when pull-based object acquisition is provisioned. + objects: + type: array + description: The list of binary objects to be carouselled from the MBSTF to the MBSTF Client. + items: + $ref: '#/components/schemas/Object' + Object: + type: object + description: A binary object to be transmitted by the MBSTF as part of the MBS Distribution Session. + required: + - locator + properties: + locator: + $ref: 'TS26512_CommonData.yaml#/components/schemas/AbsoluteUrl' + repetitionInterval: + type: integer + format: int32 + description: The MBSTF sends the object repeatedly to the MBSTF Client with the given interval (in milliseconds). This parameter is ignored in the case of Object Collection operating mode. + keepUpdatedInterval: + type: integer + format: int32 + description: The MBSTF checks for changes to the object with the given interval (in seconds). This parameter is ignored in the case of Object Collection operating mode. + earliestFetchTime: + type: string + format: date-time + description: The MBSTF shall pull each object from its origin location no sooner than this time or, if this parameter is omitted, at a time of its choosing. + latestFetchTime: + type: string + format: date-time + description: The MBSTF shall pull each object from its origin location no later than this time, or, if this parameter is omitted, at a time of its choosing. diff --git a/TS26517_MBSUserServiceAnnouncement.yaml b/TS26517_MBSUserServiceAnnouncement.yaml new file mode 100644 index 0000000..6ae4cde --- /dev/null +++ b/TS26517_MBSUserServiceAnnouncement.yaml @@ -0,0 +1,313 @@ +openapi: 3.0.0 + +info: + title: 'MBS User Service Announcement' + version: 1.2.0 + description: | + MBS User Service Announcement Element units. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 26.517 V17.4.0; 5G Multicast-Broadcast User Services; Protocols and Formats + url: http://www.3gpp.org/ftp/Specs/archive/26_series/26.517/ +paths: + /user-service-descriptions: + get: + operationId: discoverUserServiceDescriptions + summary: 'Discover User Service Descriptions' + description: 'Discover User Service Descriptions that match the supplied query filter(s). At least one filter query parameter must be included in the request URL.' + parameters: + - in: query + name: service-class + schema: + type: string + required: true + description: 'Filter for User Service Descriptions tagged with the supplied service class term identifier expressed as a fully-qualified URI string from a controlled vocabulary' + responses: + '200': + # OK + description: "Success" + content: + application/json: + schema: + $ref: '#/components/schemas/UserServiceDescriptions' + '204': + # No Content (no matching User Service Descriptions) + description: "No Matches Found" + '500': + # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /user-service-descriptions/{externalServiceId}: + get: + operationId: retrieveUserServiceDescription + summary: 'Retrieve User Service Description' + description: 'Retrieve the User Service Description of a single service by supplying its external service identifier.' + parameters: + - name: externalServiceId + in: path + required: true + schema: + type: string + description: 'The external service identifier of a User Service provisioned in the MBSF.' + responses: + '200': + # OK + description: "Success" + content: + application/json: + schema: + $ref: '#/components/schemas/UserServiceDescription' + '404': + # Not Found + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '500': + # Internal Server Error + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + # Service Unavailable + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + UserServiceDescriptions: + type: array + items: + $ref: '#/components/schemas/UserServiceDescription' + minItems: 1 + + UserServiceDescription: + type: object + properties: + name: + type: array + items: + type: string + serviceLanguage: + type: array + items: + type: string + serviceId: + type: string + distributionSessionDescription: + $ref: '#/components/schemas/DistributionSessionDescription' + appServiceDescription: + $ref: '#/components/schemas/AppServiceDescription' + scheduleDescription: + $ref: '#/components/schemas/ScheduleDescription' + availabilityInfo: + $ref: '#/components/schemas/AvailabilityInformation' + required: + - serviceId + + DistributionSessionDescription: + type: object + properties: + distributionMethod: + $ref: '#/components/schemas/DistributionMethod' + conformanceProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + sessionDescriptionLocator: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objectRepairParameters: + $ref: '#/components/schemas/AssociatedProcedureDescription' + dataNetworkName: + type: string + mbsAppService: + type: array + items: + $ref: '#/components/schemas/ApplicationService' + unicastAppServices: + type: array + items: + type: object + properties: + unicastAppService: + type: array + items: + $ref: '#/components/schemas/ApplicationService' + required: + - distributionMethod + - sessionDescriptionLocator + + DistributionMethod: + anyOf: + - type: string + enum: [OBJECT, PACKET] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AppServiceDescription: + type: object + properties: + mediaEntryPointLocator: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mimeType: + type: string + identicalContents: + type: array + items: + type: object + properties: + unicastAppService: + type: array + items: + $ref: '#/components/schemas/ApplicationService' + minItems: 2 + alternativeContents: + type: array + items: + type: array + items: + $ref: '#/components/schemas/ApplicationService' + + ApplicationService: + type: object + properties: + basePattern: + type: string + required: + - basePattern + + AvailabilityInformation: + type: array + items: + $ref: '#/components/schemas/AvailabilityInformationBinding' + + AvailabilityInformationBinding: + type: object + properties: + mbsServiceArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + mbsFSAId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsFsaId' + radioFrequency: + type: array + items: + type: integer + minimum: 0 + + AssociatedProcedureDescription: + type: object + properties: + postObjectRepair: + $ref: '#/components/schemas/PostObjectRepair' + mbsObjectRepair: + $ref: '#/components/schemas/MbsObjectRepair' + + PostObjectRepair: + type: object + properties: + serviceLocators: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + offsetTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + randomTimePeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + MbsObjectRepair: + type: object + properties: + sessionDescriptionURI: + type: string + + ScheduleDescription: + type: array + items: + $ref: '#/components/schemas/ServiceSchedule' + + ServiceSchedule: + type: object + properties: + sessionSchedule: + $ref: '#/components/schemas/SessionSchedule' + sessionScheduleOverride: + $ref: '#/components/schemas/SessionScheduleOverride' + objectSchedule: + $ref: '#/components/schemas/ObjectSchedule' + serviceId: + type: string + serviceClass: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - sessionSchedule + - serviceId + - serviceClass + + SessionSchedule: + type: array + items: + type: object + properties: + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stop: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reoccurencePattern: + type: string + numberOfTimes: + type: integer + minimum: 1 + reoccurenceStopTime: + type: string + index: + type: integer + fDTInstanceLocator: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - start + - stop + + SessionScheduleOverride: + type: array + items: + type: object + properties: + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stop: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + index: + type: integer + cancelled: + type: boolean + sessionDescriptionLocator: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + ObjectSchedule: + type: array + items: + type: object + properties: + objectLocator: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + sessionId: + type: string + objectEtag: + type: string + unicastOnly: + type: boolean + deliveryInfo: + type: array + items: + type: object + properties: + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stop: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' diff --git a/TS26532_CommonData.yaml b/TS26532_CommonData.yaml new file mode 100644 index 0000000..1b04911 --- /dev/null +++ b/TS26532_CommonData.yaml @@ -0,0 +1,61 @@ +openapi: 3.0.0 +info: + title: Data Collection and Reporting Common Data Types + version: 1.0.1 + description: | + Data Collection and Reporting Common Data Types + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +tags: + - name: Data Collection and Reporting Common Data Types + description: 'Data Collection and Reporting: Common Data Types' +externalDocs: + description: 'TS 26.532 V17.2.0; Data Collection and Reporting; Protocols and Formats' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.532/' +paths: {} +components: + schemas: + ################################# + # Clause 5.4.1: Simple data types + ################################# + + ##################################### + # Clause 5.4.2: Structured data types + ##################################### + + DataSamplingRule: + description: "Instructions on how UE data is to be sampled by the data collection client." + type: object + properties: + samplingPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + locationFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + + DataReportingRule: + description: "Instructions on how collected UE data is to be reported by the data collection client to the Data Collection AF." + type: object + properties: + reportingProbability: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Percentage' + reportingFormat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + dataPackagingStrategy: + type: string + required: + - reportingFormat + + ##################################### + # Clause 5.4.3: Enumerated data types + ##################################### + + DataCollectionClientType: + description: "Indicating a type of data collection client that reports UE data to the Data Collection AF." + anyOf: + - type: string + enum: [DIRECT, INDIRECT, APPLICATION_SERVER] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. diff --git a/TS26532_Ndcaf_DataReporting.yaml b/TS26532_Ndcaf_DataReporting.yaml new file mode 100644 index 0000000..18f641a --- /dev/null +++ b/TS26532_Ndcaf_DataReporting.yaml @@ -0,0 +1,504 @@ +openapi: 3.0.0 +info: + title: Ndcaf_DataReporting + version: 1.2.1 + description: | + Data Collection AF: Data Collection and Reporting Configuration API and Data Reporting API + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Ndcaf_DataReporting + description: 'Data Collection and Reporting: Client Configuration and Data Reporting (R2/R3/R4) APIs' + +externalDocs: + description: 'TS 26.532 V18.0.0; Data Collection and Reporting; Protocols and Formats' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.532/' + +servers: + - url: '{apiRoot}/3gpp-ndcaf_data-reporting/v1' + variables: + apiRoot: + default: https://example.com + description: See 3GPP TS 29.532 clause 5.2. + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /sessions: + post: + operationId: CreateSession + summary: 'Create a new Data Reporting Session' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingSession' + responses: + '201': + description: 'Data Reporting Session successfully created' + headers: + Location: + description: 'URL including the resource identifier of the newly created Data Reporting Session.' + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingSession' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Data Reporting Session.' + get: + operationId: RetrieveSession + summary: 'Retrieve an existing Data Reporting Session' + responses: + '200': + description: 'Representation of Data Reporting Session is returned' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingSession' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DestroySession + summary: 'Destroy an existing Data Reporting Session' + responses: + '204': + description: 'Data Reporting Session resource successfully destroyed' + # No Content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sessions/{sessionId}/report: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Data Reporting Session.' + post: + operationId: Report + summary: 'Report UE data in the context of an existing Data Reporting Session' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataReport' + responses: + '200': + description: 'Data Report accepted and updated Data Reporting Session is returned' + headers: + Location: + description: 'URL including the resource identifier of the returned Data Reporting Session.' + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingSession' + '204': + description: 'Data Report accepted' + # No Content + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUri}' + scopes: {} + description: > + For a trusted data collection client, 'ndcaf-datareporting' shall be used + as 'scopes' and '{nrfApiRoot}/oauth2/token' shall be used as 'tokenUri'. + + schemas: + DataReportingSession: + description: "A representation of a Data Reporting Session." + type: object + properties: + sessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + validUntil: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + externalApplicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + supportedDomains: + type: array + items: + $ref: '#/components/schemas/DataDomain' + minItems: 0 + samplingRules: + type: array + items: + type: object + required: + - dataDomain + - rules + properties: + dataDomain: + $ref: '#/components/schemas/DataDomain' + rules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataSamplingRule' + minItems: 0 + reportingConditions: + type: array + items: + type: object + required: + - dataDomain + - conditions + properties: + dataDomain: + $ref: '#/components/schemas/DataDomain' + conditions: + type: array + items: + $ref: '#/components/schemas/ReportingCondition' + minItems: 0 + reportingRules: + type: array + items: + type: object + required: + - dataDomain + - rules + properties: + dataDomain: + $ref: '#/components/schemas/DataDomain' + rules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataReportingRule' + minItems: 0 + required: + - externalApplicationId + - supportedDomains + - reportingConditions + + ReportingCondition: + description: "A condition that triggers data reporting by a data collection client to the Data Collection AF." + type: object + properties: + type: + $ref: '#/components/schemas/ReportingConditionType' + period: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + parameter: + type: string + threshold: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Double' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Int32' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Int64' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + reportWhenBelow: + type: boolean + eventTrigger: + $ref: '#/components/schemas/ReportingEventTrigger' + required: + - type + + DataReport: + description: "A data report sent by a data collection client to the Data Collection AF." + type: object + properties: + externalApplicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + expedite: + type: boolean + serviceExperienceRecords: + type: array + items: + $ref: '#/components/schemas/ServiceExperienceRecord' + minItems: 1 + locationRecords: + type: array + items: + $ref: '#/components/schemas/LocationRecord' + minItems: 1 + communicationRecords: + type: array + items: + $ref: '#/components/schemas/CommunicationRecord' + minItems: 1 + performanceDataRecords: + type: array + items: + $ref: '#/components/schemas/PerformanceDataRecord' + minItems: 1 + applicationSpecificRecords: + type: array + items: + $ref: '#/components/schemas/ApplicationSpecificRecord' + minItems: 1 + tripPlanRecords: + type: array + items: + $ref: '#/components/schemas/TripPlanRecord' + minItems: 1 + mediaStreamingAccessRecords: + type: array + items: + $ref: 'TS26512_R4_DataReporting.yaml#/components/schemas/MediaStreamingAccessRecord' + minItems: 1 + required: + - externalApplicationId + + DataDomain: + description: "A data reporting domain." + anyOf: + - type: string + enum: [SERVICE_EXPERIENCE, LOCATION, COMMUNICATION, PERFORMANCE, APPLICATION_SPECIFIC, MS_ACCESS_ACTIVITY, PLANNED_TRIPS] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ReportingConditionType: + description: "The type of condition that triggers reporting by a data collection client to the Data Collection AF." + anyOf: + - type: string + enum: [INTERVAL, THRESHOLD, EVENT] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ReportingEventTrigger: + description: "The type of event that triggers reporting by a data collection client to the Data Collection AF." + anyOf: + - type: string + enum: [LOCATION, DESTINATION] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + BaseRecord: + description: "Abstract base data type for UE data reporting records." + type: object + properties: + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - timestamp + + ServiceExperienceRecord: + description: "A data reporting record for UE service experience." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + serviceExperienceInfos: + type: array + items: + $ref: '#/components/schemas/PerFlowServiceExperienceInfo' + required: + - serviceExperienceInfos + + PerFlowServiceExperienceInfo: + description: "Information about the service experience of a single flow." + type: object + properties: + serviceExperience: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/SvcExperience' + timeInterval: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + remoteEndpoint: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + required: + - serviceExperience + - timeInterval + - remoteEndpoint + + LocationRecord: + description: "A data reporting record for UE location." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + location: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationData' + required: + - location + + CommunicationRecord: + description: "A data reporting record for UE communication." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + timeInterval: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + uplinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + downlinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + required: + - timeInterval + + PerformanceDataRecord: + description: "A data reporting record for UE performance." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + timeInterval: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + location: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + remoteEndpoint: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + uplinkThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + downlinkThrougput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + required: + - timeInterval + + ApplicationSpecificRecord: + description: "A typed application-specific UE data reporting record." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + recordType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + recordContainer: + {} + # (Syntax determined by recordType.) + required: + - recordType + - recordContainer + + TripPlanRecord: + description: "A data reporting record for UE performance." + allOf: + - $ref: '#/components/schemas/BaseRecord' + - type: object + properties: + startingPoint: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationData' + waypoints: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationData' + minItems: 1 + destination: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationData' + estimatedAverageSpeed: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/HorizontalSpeed' + estimatedArrivalTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - startingPoint + - destination diff --git a/TS26532_Ndcaf_DataReportingProvisioning.yaml b/TS26532_Ndcaf_DataReportingProvisioning.yaml new file mode 100644 index 0000000..350f81e --- /dev/null +++ b/TS26532_Ndcaf_DataReportingProvisioning.yaml @@ -0,0 +1,543 @@ +openapi: 3.0.0 +info: + title: Ndcaf_DataReportingProvisioning + version: 1.2.0 + description: | + Data Collection AF: Provisioning Sessions API + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +tags: + - name: Ndcaf_DataReportingProvisioning + description: 'Data Collection and Reporting: Application Service Provider Provisioning (R1) APIs' + +externalDocs: + description: 'TS 26.532 V17.2.0; Data Collection and Reporting; Protocols and Formats' + url: 'https://www.3gpp.org/ftp/Specs/archive/26_series/26.532/' + +servers: + - url: '{apiRoot}/3gpp-ndcaf_data-reporting-provisioning/v1' + variables: + apiRoot: + default: https://example.com + description: See 3GPP TS 29.532 clause 5.2. + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /sessions: + post: + operationId: CreateSession + summary: 'Create a new Data Reporting Provisioning Session' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingProvisioningSession' + responses: + '201': + description: 'Data Reporting Provisioning Session successfully created' + headers: + Location: + description: 'URL including the resource identifier of the newly created Data Reporting Provisioning Session.' + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingProvisioningSession' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Data Reporting Provisioning Session.' + get: + operationId: RetrieveSession + summary: 'Retrieve an existing Data Reporting Provisioning Session' + responses: + '200': + description: 'Representation of Data Reporting Provisioning Session is returned' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingProvisioningSession' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DestroySession + summary: 'Destroy an existing Data Reporting Provisioning Session' + responses: + '204': + description: 'Data Reporting Provisioning Session resource successfully destroyed' + # No Content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sessions/{sessionId}/configurations/{configurationId}: + parameters: + - name: sessionId + in: path + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Data Reporting Provisioning Session.' + - name: configurationId + in: path + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + description: 'The resource identifier of an existing Data Reporting Configuration.' + post: + operationId: CreateConfiguration + summary: 'Create a new Data Reporting Configuration subresource within the scope of an existing Data Reporting Provisioning Session' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + responses: + '201': + description: 'Data Reporting Configuration successfully created' + headers: + Location: + description: 'URL including the resource identifier of the newly created Data Reporting Configuration.' + required: true + schema: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + operationId: RetrieveConfiguration + summary: 'Retrieve an existing Data Reporting Configuration' + responses: + '200': + description: 'Representation of Data Reporting Configuration is returned' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + operationId: UpdateConfiguration + summary: 'Replace an existing Data Reporting Configuration subresource' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + responses: + '200': + description: 'Data Reporting Configuration successfully replaced and updated resource representation is returned' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + '204': + description: 'Data Reporting Configuration successfully replaced' + # No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + operationId: ModifyConfiguration + summary: 'Modify an existing Data Reporting Configuration subresource' + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/DataReportingConfigurationPatch' + responses: + '200': + description: 'Data Reporting Configuration successfully replaced and updated resource representation is returned' + content: + application/json: + schema: + $ref: '#/components/schemas/DataReportingConfiguration' + '204': + description: 'Data Reporting Configuration successfully replaced' + # No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DestroyConfiguration + summary: 'Destroy an existing Data Reporting Configuration' + responses: + '204': + description: 'Data Reporting Configuration resource successfully destroyed' + # No Content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUri}' + scopes: {} + description: > + For a trusted Provisioning AF, 'ndcaf-datareportingprovisioning' shall be used + as 'scopes' and '{nrfApiRoot}/oauth2/token' shall be used as 'tokenUri'. + + schemas: + DataReportingProvisioningSession: + description: "A representation of a Data Reporting Provisioning Session." + type: object + properties: + provisioningSessionId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + aspId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId' + externalApplicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + internalApplicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + eventId: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent' + dataReportingConfigurationIds: + type: array + items: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + minItems: 0 + required: + - provisioningSessionId + - aspId + - externalApplicationId + - eventId + - dataReportingConfigurationIds + + DataReportingConfiguration: + description: "A Data Reporting Configuration subresource." + type: object + properties: + dataReportingConfigurationId: + $ref: 'TS26512_CommonData.yaml#/components/schemas/ResourceId' + dataCollectionClientType: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataCollectionClientType' + authorizationURL: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + dataSamplingRules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataSamplingRule' + minItems: 0 + dataReportingRules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataReportingRule' + minItems: 0 + dataAccessProfiles: + type: array + items: + $ref: '#/components/schemas/DataAccessProfile' + minItems: 1 + required: + - dataReportingConfigurationId + - dataCollectionClientType + - dataAccessProfiles + + DataReportingConfigurationPatch: + description: "A JSON patch for a Data Reporting Configuration." + type: object + properties: + authorizationURL: + $ref: 'TS26512_CommonData.yaml#/components/schemas/Url' + dataSamplingRules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataSamplingRule' + minItems: 0 + dataReportingRules: + type: array + items: + $ref: 'TS26532_CommonData.yaml#/components/schemas/DataReportingRule' + minItems: 0 + dataAccessProfiles: + type: array + items: + $ref: '#/components/schemas/DataAccessProfile' + minItems: 1 + + DataAccessProfile: + description: "A data access profile." + type: object + properties: + dataAccessProfileId: + type: string + targetEventConsumerTypes: + type: array + items: + $ref: '#/components/schemas/EventConsumerType' + minItems: 0 + uniqueItems: true + parameters: + type: array + items: + type: string + minItems: 0 + uniqueItems: true + timeAccessRestrictions: + type: object + properties: + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + aggregationFunctions: + type: array + items: + $ref: '#/components/schemas/DataAggregationFunctionType' + minItems: 0 + uniqueItems: true + required: + - duration + - aggregationFunctions + userAccessRestrictions: + type: object + properties: + groupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 0 + uniqueItems: true + userIds: + type: array + items: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 0 + uniqueItems: true + aggregationFunctions: + type: array + items: + $ref: '#/components/schemas/DataAggregationFunctionType' + minItems: 0 + uniqueItems: true + required: + - groupIds + - userIds + - aggregationFunctions + locationAccessRestrictions: + type: object + properties: + locationAreas: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + minItems: 1 + uniqueItems: true + aggregationFunctions: + type: array + items: + $ref: '#/components/schemas/DataAggregationFunctionType' + minItems: 0 + uniqueItems: true + required: + - locationAreas + - aggregationFunctions + required: + - dataAccessProfileId + - targetEventConsumerTypes + - parameters + + EventConsumerType: + description: "The type of event consumer." + anyOf: + - type: string + enum: [NWDAF, EVENT_CONSUMER_AF, NEF] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + DataAggregationFunctionType: + description: "The type of data aggregation function." + anyOf: + - type: string + enum: ["NULL", COUNT, MEAN, MAXIMUM, MINIMUM, SUM] + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. diff --git a/TS28104_MdaNrm.yaml b/TS28104_MdaNrm.yaml new file mode 100644 index 0000000..758a190 --- /dev/null +++ b/TS28104_MdaNrm.yaml @@ -0,0 +1,225 @@ +openapi: 3.0.1 +info: + title: MDA NRM + version: 18.0.0 + description: >- + OAS 3.0.1 specification of the MDA NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.104; MDA + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.104/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + + MDATypes: + type: array + items: + type: string + + MDAOutputs: + type: array + items: + $ref: '#/components/schemas/MDAOutputPerMDAType' + + MDAOutputPerMDAType: + type: object + properties: + mDAType: + type: string + mDAOutputIEFilters: + type: array + items: + $ref: '#/components/schemas/MDAOutputIEFilter' + + MDAOutputIEFilter: + type: object + properties: + mDAOutputIEName: + type: string + filterValue: + type: string + threshold: + $ref: '#/components/schemas/ThresholdInfo' + analyticsPeriod: + $ref: '#/components/schemas/AnalyticsSchedule' + timeOut: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + + ReportingMethod: + type: string + enum: + - FILE + - STREAMING + - NOTIFICATION + + ReportingTarget: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + + AnalyticsScopeType: + oneOf: + - type: object + properties: + managedEntitiesScope: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + - type: object + properties: + areaScope: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea' + + AnalyticsSchedule: + oneOf: + - type: object + properties: + timeDurations: + type: array + items: + $ref: 'TS28104_MdaReport.yaml#/components/schemas/TimeWindow' + - type: object + properties: + granularityPeriod: + type: integer + + ThresholdInfo: + type: object + properties: + monitoredMDAOutputIE: + type: string + thresholdDirection: + type: string + enum: + - UP + - DOWN + - UP_AND_DOWN + thresholdValue: + oneOf: + - type: integer + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float' + hysteresis: + oneOf: + - type: integer + minimum: 0 + - type: number + format: float + minimum: 0 + +#-------- Definition of abstract IOCs -------------------------------------------- + + + +#-------- Definition of concrete IOCs -------------------------------------------- + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + MDAFunction: + $ref: '#/components/schemas/MDAFunction-Multiple' + MDAReport: + $ref: '#/components/schemas/MDAReport-Multiple' + + + ManagedElement-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-ncO' + - type: object + properties: + MDAFunction: + $ref: '#/components/schemas/MDAFunction-Multiple' + + MDAFunction-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: + supportedMDACapabilities: + $ref: '#/components/schemas/MDATypes' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + MDARequest: + $ref: '#/components/schemas/MDARequest-Multiple' + + MDARequest-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + requestedMDAOutputs: + $ref: '#/components/schemas/MDAOutputs' + reportingMethod: + $ref: '#/components/schemas/ReportingMethod' + reportingTarget: + $ref: '#/components/schemas/ReportingTarget' + analyticsScope: + $ref: '#/components/schemas/AnalyticsScopeType' + startTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + + MDAReport-Single: + $ref: 'TS28104_MdaReport.yaml#/components/schemas/MDAReport' + + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + ManagedElement-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedElement-Single' + MDAFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/MDAFunction-Single' + MDARequest-Multiple: + type: array + items: + $ref: '#/components/schemas/MDARequest-Single' + + MDAReport-Multiple: + type: array + items: + $ref: '#/components/schemas/MDAReport-Single' + +#-------- Definitions in TS 28.104 for TS 28.532 --------------------------------- + + resources-mdaNrm: + oneOf: + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/ManagedElement-Single' + + - $ref: '#/components/schemas/MDAFunction-Single' + - $ref: '#/components/schemas/MDARequest-Single' + - $ref: '#/components/schemas/MDAReport-Single' diff --git a/TS28104_MdaReport.yaml b/TS28104_MdaReport.yaml new file mode 100644 index 0000000..670f57a --- /dev/null +++ b/TS28104_MdaReport.yaml @@ -0,0 +1,66 @@ +openapi: 3.0.1 +info: + title: MDA Report + version: 18.0.0 + description: >- + OAS 3.0.1 specification of the MDA Report + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.104; MDA Report + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.104/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + + MDAOutputs: + type: object + properties: + mDAType: + type: string + mdaOutputList: + type: array + items: + $ref: '#/components/schemas/MDAOutputEntry' + mDARequestRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + analyticsWindow: + $ref: '#/components/schemas/TimeWindow' + confidenceDegree: + type: number + format: float + + MDAOutputEntry: + type: object + properties: + mDAOutputIEName: + type: string + mdaOutputIEValue: {} + + + TimeWindow: + type: object + properties: + mDAOutputStartTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + mDAOutputEndTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + + +#-------- Definition of MDA Report -------------------------------------------- + + MDAReport: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + mDAReportID: + type: string + mDAOutputs: + $ref: '#/components/schemas/MDAOutputs' diff --git a/TS28105_AiMlNrm.yaml b/TS28105_AiMlNrm.yaml new file mode 100644 index 0000000..943f6ae --- /dev/null +++ b/TS28105_AiMlNrm.yaml @@ -0,0 +1,323 @@ +openapi: 3.0.1 +info: + title: AI/ML NRM + version: 18.1.0 + description: >- + OAS 3.0.1 specification of the AI/ML NRM + © 2023, 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/DnList' + dataProviderRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + RequestStatus: + type: string + enum: + - NOT_STARTED + - TRAINING_IN_PROGRESS + - SUSPENDED + - FINISHED + - CANCELLED + + PerformanceRequirements: + type: array + items: + $ref: '#/components/schemas/ModelPerformance' + + ModelPerformance: + type: object + properties: + inferenceOutputName: + type: string + performanceMetric: + type: string + performanceScore: + type: number + format: float + decisionConfidenceScore: + type: number + format: float + + TrainingProcessMonitor: + description: >- + This data type is the "ProcessMonitor" data type defined in “genericNrm.yaml” with specialisations for usage in the "MLTrainingProcess". + type: object + properties: + mLTrainingProcessId: + type: string + status: + type: string + enum: + - RUNNING + - CANCELLING + - CANCELLED + - SUSPENDED + - FINSHED + progressPercentage: + type: integer + minimum: 0 + maximum: 100 + progressStateInfo: + type: string + enum: + - COLLECTING_DATA + - PREPARING_TRAINING_DATA + - TRAINING + resultStateInfo: + type: string + +#-------- Definition of abstract IOCs -------------------------------------------- + + + +#-------- Definition of concrete IOCs -------------------------------------------- + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + MLTrainingFunction: + $ref: '#/components/schemas/MLTrainingFunction-Multiple' + MLEntityRepository: + $ref: '#/components/schemas/MLEntityRepository-Multiple' + + ManagedElement-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-ncO' + - type: object + properties: + MLTrainingFunction: + $ref: '#/components/schemas/MLTrainingFunction-Multiple' + MLEntityRepository: + $ref: '#/components/schemas/MLEntityRepository-Multiple' + + 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: + mLEntityRepositoryRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + - $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' + + MLTrainingRequest-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + mLEntityId: + type: string + inferenceType: + type: string + candidateTrainingDataSource: + type: array + items: + type: string + trainingDataQualityScore: + type: number + format: float + trainingRequestSource: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + requestStatus: + $ref: '#/components/schemas/RequestStatus' + expectedRuntimeContext: + $ref: '#/components/schemas/MLContext' + performanceRequirements: + $ref: '#/components/schemas/PerformanceRequirements' + cancelRequest: + type: boolean + suspendRequest: + type: boolean + mLEntityToTrainRef: + $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: + mLTrainingProcessId: + type: string + priority: + type: integer + terminationConditions: + type: string + progressStatus: + $ref: '#/components/schemas/TrainingProcessMonitor' + cancelProcess: + type: boolean + suspendProcess: + type: boolean + trainingRequestRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + trainingReportRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + + MLTrainingReport-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + mLEntityId: + type: string + areConsumerTrainingDataUsed: + type: boolean + usedConsumerTrainingData: + type: array + items: + type: string + confidenceIndication: + type: integer + modelPerformanceTraining: + type: array + items: + $ref: '#/components/schemas/ModelPerformance' + areNewTrainingDataUsed: + type: boolean + trainingRequestRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + trainingProcessRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + trainingReportRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + lastTrainingRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + mLEnityGeneratedRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + MLEntity-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + mLEntityId: + type: string + inferenceType: + type: string + mLEntityVersion: + type: string + expectedRunTimeContext: + $ref: '#/components/schemas/MLContext' + trainingContext: + $ref: '#/components/schemas/MLContext' + runTimeContext: + $ref: '#/components/schemas/MLContext' + + MLEntityRepository-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + mLRepositoryId: + type: string + MLEntity: + $ref: '#/components/schemas/MLEntity-Multiple' + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + ManagedElement-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedElement-Single' + MLTrainingFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/MLTrainingFunction-Single' + MLTrainingRequest-Multiple: + type: array + items: + $ref: '#/components/schemas/MLTrainingRequest-Single' + MLTrainingProcess-Multiple: + type: array + items: + $ref: '#/components/schemas/MLTrainingProcess-Single' + MLTrainingReport-Multiple: + type: array + items: + $ref: '#/components/schemas/MLTrainingReport-Single' + MLEntity-Multiple: + type: array + items: + $ref: '#/components/schemas/MLEntity-Single' + MLEntityRepository-Multiple: + type: array + items: + $ref: '#/components/schemas/MLEntityRepository-Single' + +#-------- Definitions in TS 28.104 for TS 28.532 --------------------------------- + + resources-AiMlNrm: + oneOf: + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/ManagedElement-Single' + + - $ref: '#/components/schemas/MLTrainingFunction-Single' + - $ref: '#/components/schemas/MLTrainingRequest-Single' + - $ref: '#/components/schemas/MLTrainingProcess-Single' + - $ref: '#/components/schemas/MLTrainingReport-Single' + - $ref: '#/components/schemas/MLEntity-Single' + - $ref: '#/components/schemas/MLEntityRepository-Single' diff --git a/TS28312_IntentExpectations.yaml b/TS28312_IntentExpectations.yaml new file mode 100644 index 0000000..5423a87 --- /dev/null +++ b/TS28312_IntentExpectations.yaml @@ -0,0 +1,925 @@ +openapi: 3.0.1 +info: + title: Scenario specific Intent Expectations + version: 18.1.0 + description: >- + OAS 3.0.1 definition of scenario specific Intent Expectations + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.312; Intent driven management services for mobile networks + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.312/ +paths: {} +components: + schemas: + + #-------Definition of the Scenario specific IntentExpectation dataType ----------# + RadioNetworkExpectation: + description: >- + This data type is the "IntentExpectation" data type with specialisations to represent MnS consumer's expectations for radio network delivering and performance assurance + type: object + properties: + expectationId: + type: string + expectationVerb: + $ref: "TS28312_IntentNrm.yaml#/components/schemas/ExpectationVerb" + expectationObject: + $ref: "#/components/schemas/RadioNetworkExpectationObject" + expectationTargets: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/WeakRSRPRatioTarget' + - $ref: '#/components/schemas/LowSINRRatioTarget' + - $ref: '#/components/schemas/AveULRANUEThptTarget' + - $ref: '#/components/schemas/AveDLRANUEThptTarget' + - $ref: '#/components/schemas/LowULRANUEThptRatioTarget' + - $ref: '#/components/schemas/LowDLRANUEThptRatioTarget' + - $ref: '#/components/schemas/HighULPrbLoadRatioTarget' + - $ref: '#/components/schemas/HighDLPrbLoadRatioTarget' + - $ref: '#/components/schemas/AveULPrbLoadTarget' + - $ref: '#/components/schemas/AveDLPrbLoadTarget' + - $ref: "#/components/schemas/RANEnergyConsumptionTarget" + - $ref: "#/components/schemas/RANEnergyEfficiencyTarget" + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ExpectationTarget' + expectationContexts: + type: array + items: + $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ExpectationContext' + required: + - expectationId + EdgeServiceSupportExpectation: + description: >- + This data type is the "IntentExpectation" data type with specialisations to represent MnS consumer's expectations for service deployment + type: object + properties: + expectationId: + type: string + expectationVerb: + $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ExpectationVerb' + expectationObject: + $ref: '#/components/schemas/ServiceSupportExpectationObject' + expectationTargets: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/DLThptPerUETarget' + - $ref: '#/components/schemas/ULThptPerUETarget' + - $ref: '#/components/schemas/DLLatencyTarget' + - $ref: '#/components/schemas/ULLatencyTarget' + - $ref: '#/components/schemas/MaxNumberofUEsTarget' + - $ref: '#/components/schemas/ActivityFactorTarget' + - $ref: '#/components/schemas/UESpeedTarget' + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ExpectationTarget' + expectationContexts: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/ServiceStartTimeContext' + - $ref: '#/components/schemas/ServiceEndTimeContext' + - $ref: '#/components/schemas/UEMobilityLevelContext' + - $ref: '#/components/schemas/ResourceSharingLevelContext' + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ExpectationContext' + required: + - expectationId + 5GCNetworkExpectation: + description: >- + This data type is the "IntentExpectation" data type with specialisations to represent MnS consumer's expectations for 5GC network delivering + type: object + properties: + expectationId: + type: string + expectationVerb: + $ref: "TS28312_IntentNrm.yaml#/components/schemas/ExpectationVerb" + expectationObjects: + type: array + items: + $ref: "#/components/schemas/5GCNetworkExpectationObject" + expectationTargets: + type: array + items: + type: object + oneOf: + - $ref: "#/components/schemas/MaxNumberofPDUsessionsTarget" + - $ref: "#/components/schemas/MaxNumberofRegisteredsubscribersTarget" + - $ref: "TS28312_IntentNrm.yaml#/components/schemas/ExpectationTarget" + expectationContexts: + type: array + items: + $ref: "TS28312_IntentNrm.yaml#/components/schemas/ExpectationContext" + expectationfulfilmentInfo: + $ref: "TS28312_IntentNrm.yaml#/components/schemas/FulfilmentInfo" + required: + - expectationId + #-------Definition of the IntentExpectation dataType ----------# + + #-------Definition of the scenario specific ExpectationObject dataType ----------# + RadioNetworkExpectationObject: + description: >- + This data type is the "ExpectationObject" data type with specialisations for RadioNetworkExpectation + type: object + properties: + objectType: + type: string + enum: + - RAN_SubNetwork + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + objectContexts: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/CoverageAreaPolygonContext' + - $ref: '#/components/schemas/CoverageTACContext' + - $ref: '#/components/schemas/PLMNContext' + - $ref: '#/components/schemas/NRFqBandContext' + - $ref: '#/components/schemas/RATContext' + - $ref: "#/components/schemas/UEGroupContext" + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ObjectContext' + ServiceSupportExpectationObject: + description: >- + This data type is the "ExpectationObject" data type with specialisations for EdgeServiceSupportExpectation + type: object + properties: + objectType: + type: string + enum: + - EdgeService_Support #value for Edge Service Support Expectation--# + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + objectContexts: + type: array + items: + type: object + oneOf: + - $ref: '#/components/schemas/EdgeIdenfiticationIdContext' + - $ref: '#/components/schemas/EdgeIdentificationLocContext' + - $ref: '#/components/schemas/CoverageAreaTAContext' + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/ObjectContext' + 5GCNetworkExpectationObject: + description: >- + This data type is the "ExpectationObject" data type with specialisations for 5GCNetworkExpectation + type: object + properties: + objectType: + type: string + enum: + - 5GC_SubNetwork #value for 5GC Network Expectation--# + objectInstance: + $ref: "TS28623_ComDefs.yaml#/components/schemas/Dn" + objectContexts: + type: array + items: + type: object + oneOf: + - $ref: "#/components/schemas/NfTypeContext" + - $ref: "#/components/schemas/NfInstanceLocationContext" + - $ref: "#/components/schemas/PLMNContext" + - $ref: "#/components/schemas/TaiContext" + - $ref: "#/components/schemas/ObjectContext" + #-------Definition of the ExpectationObject dataType ----------# + + + #-------Definition of the Scenario specific ExpectationTarget dataType----------# + WeakRSRPRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for WeakRSRPRatioTarget + type: object + properties: + targetName: + type: string + enum: + - WeakRSRPRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/WeakRSRPContext' + WeakRSRPContext: + description: >- + This data type is the "TargetContext" data type with specialisations for WeakRSRPContext + type: object + properties: + contextAttribute: + type: string + enum: + - WeakRSRPThreshold + contextCondition: + type: string + enum: + - IS_LESS_THAN + contextValueRange: + type: number + LowSINRRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for LowSINRatioTarget + type: object + properties: + targetName: + type: string + enum: + - LowSINRRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/LowSINRContext' + LowSINRContext: + description: >- + This data type is the "TargetContext" data type with specialisations for LowSINRContext + type: object + properties: + contextAttribute: + type: string + enum: + - LowSINRThreshold + contextCondition: + type: string + enum: + - IS_LESS_THAN + contextValueRange: + type: integer + AveULRANUEThptTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for AveULRANUEThptTarget + type: object + properties: + targetName: + type: string + enum: + - AveULRANUEThpt + targetCondition: + type: string + enum: + - IS_GREATER_THAN + targetValueRange: + type: integer + AveDLRANUEThptTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for AveDLRANUEThptTarget + type: object + properties: + targetName: + type: string + enum: + - AveDLRANUEThpt + targetCondition: + type: string + enum: + - IS_GREATER_THAN + targetValueRange: + type: integer + LowULRANUEThptRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for LowULRANUEThptRatioTarget + type: object + properties: + targetName: + type: string + enum: + - LowULRANUEThptRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/LowULRANUEThptContext' + LowULRANUEThptContext: + description: >- + This data type is the "TargetContext" data type with specialisations for LowULRANUEThptContext + type: object + properties: + contextAttribute: + type: string + enum: + - LowULRANUEThptThreshold + contextCondition: + type: string + enum: + - Is_less_than + contextValueRange: + type: number + LowDLRANUEThptRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for LowDLRANUEThptRatioTarget + type: object + properties: + targetName: + type: string + enum: + - LowDLRANUEThptRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/LowDLRANUEThptContext' + LowDLRANUEThptContext: + description: >- + This data type is the "TargetContext" data type with specialisations for LowDLRANUEThptContext + type: object + properties: + contextAttribute: + type: string + enum: + - LowDLRANUEThptThreshold + contextCondition: + type: string + enum: + - IS_LESS_THAN + contextValueRange: + type: number + HighULPrbLoadRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for HighULPrbLoadRatioTarget + type: object + properties: + targetName: + type: string + enum: + - HighULPrbLoadRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/HighULPrbLoadContext' + HighULPrbLoadContext: + description: >- + This data type is the "TargetContext" data type with specialisations for HighULPrbLoadContext + type: object + properties: + contextAttribute: + type: string + enum: + - HighULPrbLoadThreshold + contextCondition: + type: string + enum: + - IS_LESS_THAN + contextValueRange: + type: integer + minimum: 0 + maximum: 100 + HighDLPrbLoadRatioTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for HighDLPrbLoadRatioTarget + type: object + properties: + targetName: + type: string + enum: + - HighDLPrbLoadRatio + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + targetContexts: + $ref: '#/components/schemas/HighDLPrbLoadContext' + HighDLPrbLoadContext: + description: >- + This data type is the "TargetContext" data type with specialisations for HighDLPrbLoadContext + type: object + properties: + contextAttribute: + type: string + enum: + - HighDLPrbLoadThreshold + contextCondition: + type: string + enum: + - IS_LESS_THAN + contextValueRange: + type: integer + minimum: 0 + maximum: 100 + AveULPrbLoadTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for AveULPrbLoadTarget + type: object + properties: + targetName: + type: string + enum: + - AveULPrbLoad + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + AveDLPrbLoadTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for AveDLPrbLoadTarget + type: object + properties: + targetName: + type: string + enum: + - AveDLPrbLoad + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + minimum: 0 + maximum: 100 + RANEnergyConsumptionTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for RANEnergyConsumptionTarget + type: object + properties: + targetName: + type: string + enum: + - RANEnergyConsumption + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + RANEnergyEfficiencyTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for RANEnergyEfficiencyTarget + type: object + properties: + targetName: + type: string + enum: + - RANEnergyEfficiency + targetCondition: + type: string + enum: + - IS_GREATER_THAN + targetValueRange: + type: integer + DLThptPerUETarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for DLThptPerUETarget + type: object + properties: + targetName: + type: string + enum: + - DlThptPerUE + targetCondition: + type: string + enum: + - IS_GREATER_THAN + targetValueRange: + $ref: 'TS28541_SliceNrm.yaml#/components/schemas/XLThpt' + ULThptPerUETarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for ULThptPerUETarget + type: object + properties: + targetName: + type: string + enum: + - UlThptPerUE + targetCondition: + type: string + enum: + - IS_GREATER_THAN + targetValueRange: + $ref: 'TS28541_SliceNrm.yaml#/components/schemas/XLThpt' + DLLatencyTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for DLLatencyTarget + type: object + properties: + targetName: + type: string + enum: + - DlLatency + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + ULLatencyTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for ULLatencyTarget + type: object + properties: + targetName: + type: string + enum: + - UlLatency + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + MaxNumberofUEsTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for MaxNumberofUEsTarget + type: object + properties: + targetName: + type: string + enum: + - maxNumberofUEs + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + ActivityFactorTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for ActivityFactorTarget + type: object + properties: + targetName: + type: string + enum: + - activityFactor + targetCondition: + type: string + enum: + - IS_EQUAL_TO + targetValueRange: + type: integer + UESpeedTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for UESpeedTarget + type: object + properties: + targetName: + type: string + enum: + - uESpeed + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + MaxNumberofPDUsessionsTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for MaxNumberofPDUsessionsTarget + type: object + properties: + targetName: + type: string + enum: + - MaxNumberofPDUsessions + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + MaxNumberofRegisteredsubscribersTarget: + description: >- + This data type is the "ExpectationTarget" data type with specialisations for MaxNumberofRegisteredsubscribersTarget + type: object + properties: + targetName: + type: string + enum: + - MaxNumberofRegisteredsubscribers + targetCondition: + type: string + enum: + - IS_LESS_THAN + targetValueRange: + type: integer + + #-------Definition of the concrete ExpectationTarget dataType----------# + + #-------Definition of the concrete ObjectTarget dataType----------------# + ObjectContext: + description: >- + This data type is the "ObjectContext" data type without specialisations + type: object + properties: + contextAttribute: + type: string + contextCondition: + $ref: 'TS28312_IntentNrm.yaml#/components/schemas/Condition' + contextValueRange: + type: array + items: + type: number + CoverageAreaPolygonContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for CoverageAreaPolygonContext + type: object + properties: + contextAttribute: + type: string + enum: + - CoverageAreaPolygon + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: '#/components/schemas/CoverageArea' + CoverageArea: + type: string + CoverageTACContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for CoverageTACContext + type: object + properties: + contextAttribute: + type: string + enum: + - CoverageAreaTac + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/NrTac' + PLMNContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for PLMNContext + type: object + properties: + contextAttribute: + type: string + enum: + - PLMN + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + NRFqBandContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for NRFqBandContext + type: object + properties: + contextAttribute: + type: string + enum: + - NRFqBand + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + type: string + RATContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for RATContext + type: object + properties: + contextAttribute: + type: string + enum: + - RAT + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + type: string + enum: + - UTRAN + - EUTRAN + - NR + UEGroupContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for UEGroup([5QI, SNSSAI]) + type: object + properties: + contextAttribute: + type: string + enum: + - UEGroup + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: "#/components/schemas/UEGroup" + UEGroup: + type: object + properties: + fiveQI: + type: integer + sNssai: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + EdgeIdenfiticationIdContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for EdgeIdentificationIdContext + type: object + properties: + contextAttribute: + type: string + enum: + - edgeIdentificationId + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + type: array + items: + type: string + EdgeIdentificationLocContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for EdgeIdentificationLocContext + type: object + properties: + contextAttribute: + type: string + enum: + - edgeIdentificationTarget + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + type: array + items: + type: string + CoverageAreaTAContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for CoverageAreaTAContext + type: object + properties: + contextAttribute: + type: string + enum: + - coverageAreaTA + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: '#/components/schemas/CoverageAreaTAList' + CoverageAreaTAList: + type: integer + NfTypeContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for NfTypeContext + type: object + properties: + contextAttribute: + type: string + enum: + - NfType + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: "TS28623_GenericNrm.yaml#/components/schemas/NFType" + NfInstanceLocationContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for NfInstanceLocationContext + type: object + properties: + contextAttribute: + type: string + enum: + - NfInstanceLocation + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + type: string + TaiContext: + description: >- + This data type is the "ObjectContext" data type with specialisations for TaiContext + type: object + properties: + contextAttribute: + type: string + enum: + - Tai + contextCondition: + type: string + enum: + - IS_ALL_OF + contextValueRange: + type: array + items: + $ref: "TS28623_GenericNrm.yaml#/components/schemas/Tai" + + #-------Definition of the scenario specific ObjectTarget dataType----------------# + + #-------Definition of the concrete ExpectationContext dataType----------------# + ServiceStartTimeContext: + description: >- + This data type is the "ExpectationContext" data type with specialisations for ServiceStartTimeContext + type: object + properties: + contextAttribute: + type: string + enum: + - ServiceStartTime + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + ServiceEndTimeContext: + description: >- + This data type is the "ExpectationContext" data type with specialisations for ServiceEndTimeContext + type: object + properties: + contextAttribute: + type: string + enum: + - ServiceEndTime + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + UEMobilityLevelContext: + description: >- + This data type is the "ExpectationContext" data type with specialisations for UEMobilityLevelContext + type: object + properties: + contextAttribute: + type: string + enum: + - UEMobilityLevel + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + $ref: "TS28541_SliceNrm.yaml#/components/schemas/MobilityLevel" + ResourceSharingLevelContext: + description: >- + This data type is the "ExpectationContext" data type with specialisations for ResourceSharingLevelContext + type: object + properties: + contextAttribute: + type: string + enum: + - ResourceSharingLevel + contextCondition: + type: string + enum: + - IS_EQUAL_TO + contextValueRange: + $ref: "TS28541_SliceNrm.yaml#/components/schemas/SharingLevel" + #-------Definition of the concrete ExpectionContext dataType----------------# diff --git a/TS28312_IntentNrm.yaml b/TS28312_IntentNrm.yaml new file mode 100644 index 0000000..9001674 --- /dev/null +++ b/TS28312_IntentNrm.yaml @@ -0,0 +1,420 @@ +openapi: 3.0.1 +info: + title: Intent NRM + version: 18.1.0 + description: >- + OAS 3.0.1 definition of the Intent NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.312; Intent driven management services for mobile networks + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.312/ +paths: {} +components: + schemas: + + #-------Definition of generic IOCs ----------# + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + IntentHandlingFunction: + $ref: '#/components/schemas/IntentHandlingFunction-Multiple' + + Intent-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + userLabel: + type: string + intentExpectations: + type: array + items: + type: object + oneOf: + - $ref: "#/components/schemas/IntentExpectation" + - $ref: "TS28312_IntentExpectations.yaml#/components/schemas/RadioNetworkExpectation" + - $ref: "TS28312_IntentExpectations.yaml#/components/schemas/EdgeServiceSupportExpectation" + intentContexts: + type: array + items: + $ref: '#/components/schemas/IntentContext' + intentAdminState: + type: string + enum: + - ACTIVATED + - DEACTIVATED + intentPriority: + type: integer + observationPeriod: + type: integer + intentReportReference: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + IntentReport-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + intentFulfilmentReport: + type: array + items: + $ref: '#/components/schemas/IntentFulfilmentReport' + intentConflictReports: + type: array + items: + $ref: '#/components/schemas/IntentConflictReport' + intentFeasibilityCheckReport: + type: array + items: + $ref: '#/components/schemas/IntentFeasibilityCheckReport' + intentReference: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + IntentHandlingFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + intentHandlingCapabilityList: + type: array + items: + $ref: '#/components/schemas/IntentHandlingCapability' + Intent: + $ref: '#/components/schemas/Intent-Multiple' + IntentReport: + $ref: '#/components/schemas/IntentReport-Multiple' + + #-------Definition of generic IOCs ----------# + + #-------Definition of the generic IntentExpectation dataType ----------# + IntentExpectation: + description: >- + This data type is the "IntentExpectation" data type without specialisations + type: object + properties: + expectationId: + type: string + expectationVerb: + $ref: "#/components/schemas/ExpectationVerb" + expectationObject: + $ref: "#/components/schemas/ExpectationObject" + expectationTargets: + type: array + items: + $ref: '#/components/schemas/ExpectationTarget' + expectationContexts: + type: array + items: + $ref: '#/components/schemas/ExpectationContext' + required: + - expectationId + #-------Definition of the generic IntentExpectation dataType ----------# + + #-------Definition of the generic ExpectationObject dataType ----------# + ExpectationObject: + description: >- + This data type is the "ExpectationObject" data type without specialisations + type: object + properties: + objectType: + type: string + enum: + - RAN_SubNetwork #value for Radio Network Expectation--# + - Edge_Service_Support #value for Edge Service Support Expectation--# + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + objectContexts: + type: array + items: + $ref: '#/components/schemas/ObjectContext' + + #-------Definition of the generic ExpectationObject dataType ----------# + + #-------Definition of the generic dataType --------------# + Condition: + type: string + enum: + - IS_EQUAL_TO + - IS_LESS_THAN + - IS_GREATER_THAN + - IS_WITHIN_RANGE + - IS_OUTSIDE_RANGE + - IS_ONE_OF + - IS_NOT_ONE_OF + - IS_EQUAL_TO_OR_LESS_THAN + - IS_EQUAL_TO_OR_GREATER_THAN + - IS_ALL_OF + FulfilStatus: + type: string + readOnly: true + enum: + - FULFILLED + - NOT_FULFILLED + NotFulfilledState: + type: string + readOnly: true + enum: + - ACKNOWLEDGED + - COMPLIANT + - DEGRADED + - SUSPENDED + - TERMINATED + - FULFILMENTFAILED + FulfilmentInfo: + type: object + properties: + fulfilStatus: + $ref: '#/components/schemas/FulfilStatus' + notFullfilledState: + description: -> + An attribute which is used when FulfilmentInfo is implemented for IntentFulfilmentInfo + $ref: "#/components/schemas/NotFulfilledState" + notFulfilledReasons: + description: -> + An attribute which is used when FulfilmentInfo is implemented for IntentFulfilmentInfo + type: string + readOnly: true + ExpectationVerb: + type: string + enum: + - DELIVER + - ENSURE + ValueRangeType: + oneOf: + - type: number + - type: string + - type: boolean + - type: integer + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoCoordinate' + #-------Definition of the generic dataType --------------# + + #-------Definition of the generic IntentContext dataType --------------# + IntentContext: + description: >- + This data type is the "IntentContext" data type without specialisations + type: object + properties: + contextAttribute: + type: string + contextCondition: + $ref: '#/components/schemas/Condition' + contextValueRange: + oneOf: + - type: array + items: + $ref: "#/components/schemas/ValueRangeType" + - $ref: "#/components/schemas/ValueRangeType" + #-------Definition of the generic IntentContext dataType --------------# + + #-------Definition of the generic ExpectationTarget dataType----------# + ExpectationTarget: + description: >- + This data type is the "ExpectationTarget" data type without specialisations + type: object + properties: + targetName: + type: string + targetCondition: + $ref: '#/components/schemas/Condition' + targetValueRange: + oneOf: + - type: array + items: + $ref: "#/components/schemas/ValueRangeType" + - $ref: "#/components/schemas/ValueRangeType" + targetContexts: + type: array + items: + $ref: '#/components/schemas/TargetContext' + TargetContext: + description: >- + This data type is the "TargetContext" data type without specialisations + type: object + properties: + contextAttribute: + type: string + contextCondition: + $ref: '#/components/schemas/Condition' + contextValueRange: + oneOf: + - type: array + items: + $ref: "#/components/schemas/ValueRangeType" + - $ref: "#/components/schemas/ValueRangeType" + #-------Definition of the generic ExpectationTarget dataType----------# + + #-------Definition of the generic ObjectContext dataType----------------# + ObjectContext: + description: >- + This data type is the "ObjectContext" data type without specialisations + type: object + properties: + contextAttribute: + type: string + contextCondition: + $ref: '#/components/schemas/Condition' + contextValueRange: + oneOf: + - type: array + items: + $ref: "#/components/schemas/ValueRangeType" + - $ref: "#/components/schemas/ValueRangeType" + #-------Definition of the generic ObjectContext dataType----------------# + + #-------Definition of the generic ExpectionContext dataType----------------# + ExpectationContext: + description: >- + This data type is the "ExpectationContext" data type without specialisations + type: object + properties: + contextAttribute: + type: string + contextCondition: + $ref: '#/components/schemas/Condition' + contextValueRange: + oneOf: + - type: array + items: + $ref: "#/components/schemas/ValueRangeType" + - $ref: "#/components/schemas/ValueRangeType" + #-------Definition of the concrete ExpectionContext dataType----------------# + #-------Definition of the generic IntentFulfilmentReport dataType----------------# + IntentFulfilmentReport: + description: >- + This data type is the "IntentFulfilmentReport" data type without specialisations + type: object + properties: + intentFulfilmentInfo: + $ref: '#/components/schemas/FulfilmentInfo' + expectationFulfilmentResult: + type: array + items: + $ref: '#/components/schemas/ExpectationFulfilmentResult' + #-------Definition of the concrete IntentFulfilmentReport dataType----------------# + + #-------Definition of the generic ExpectationFulfilmentResult dataType----------------# + ExpectationFulfilmentResult: + description: >- + This data type is the "ExpectationFulfilmentResult" data type without specialisations + type: object + properties: + expectaitonId: + type: string + expectationFulfilmentInfo: + $ref: '#/components/schemas/FulfilmentInfo' + targetFulfilmentResult: + type: array + items: + $ref: '#/components/schemas/TargetFulfilmentResult' + #-------Definition of the concrete ExpectationFulfilmentResult dataType----------------# + + #-------Definition of the generic TargetFulfilmentResult dataType----------------# + TargetFulfilmentResult: + description: >- + This data type is the "TargetFulfilmentResult" data type without specialisations + type: object + properties: + targetName: + type: string + targetFulfilmentInfo: + $ref: '#/components/schemas/FulfilmentInfo' + targetAchievedValue: + type: number + #-------Definition of the concrete TargetFulfilmentResult dataType----------------# + + #-------Definition of the generic IntentConflictReport dataType----------------# + IntentConflictReport: + description: >- + This data type is the "IntentConflictReport" data type without specialisations + type: object + properties: + conflictType: + type: string + enum: + - INTENT_CONFLICT + - EXPECTATION_CONFLICT + - TARGET_CONFLICT + conflictField: + type: string + #-------Definition of the concrete IntentConflictReport dataType----------------# + + #-------Definition of the generic IntentFeasibilityCheckReport dataType----------------# + IntentFeasibilityCheckReport: + description: >- + This data type is the "IntentFeasibilityCheckReport" data type without specialisations + type: object + properties: + feasibilityCheckResult: + type: string + enum: + - FEASIBLE + - INFEASIBLE + infeasibilityReason: + description: -> + An attribute which is used when feasibilityCheckResult is INFEASIBLE + type: string + #-------Definition of the concrete IntentFeasibilityCheckReport dataType----------------# + + #-------Definition of the generic IntentHandlingCapability dataType----------------# + IntentHandlingCapability: + type: object + properties: + intentHandlingCapabilityId: + type: string + supportedExpectationObjectType: + type: string + enum: + - RAN_SUBNETWORK + - EDGE_SERVICE_SUPPORT + supportedExpectationTargetType: + type: array + items: + $ref: "#/components/schemas/ExpectationTarget" + #-------Definition of the concrete IntentHandlingCapability dataType----------------# + + #------Definition of JSON arrays for name-contained IOCs ---------------# + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + + Intent-Multiple: + type: array + items: + $ref: '#/components/schemas/Intent-Single' + + IntentReport-Multiple: + type: array + items: + $ref: '#/components/schemas/IntentReport-Single' + + IntentHandlingFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/IntentHandlingFunction-Single' + + + #------Definition of JSON arrays for name-contained IOCs ---------------# + + #----- Definitions in TS 28.312 for TS 28.532 --------------------------# + resources-intentNrm: + oneOf: + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/Intent-Single' + #----- Definitions in TS 28.312 for TS 28.532 --------------------------# + diff --git a/TS28532_FaultMnS.yaml b/TS28532_FaultMnS.yaml new file mode 100644 index 0000000..2891cb2 --- /dev/null +++ b/TS28532_FaultMnS.yaml @@ -0,0 +1,1058 @@ +openapi: 3.0.1 +info: + title: Fault Supervision MnS + version: 17.3.0 + description: >- + OAS 3.0.1 definition of the Fault Supervision MnS + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/FaultSupervisionMnS/{MnSversion}' + variables: + MnSRoot: + description: See subclause 4.4.3 of TS 32.158 + default: http://example.com/3GPPManagement + MnSversion: + description: Version number of the OpenAPI definition + default: XXX +paths: + /alarms: + get: + summary: Retrieve multiple alarms + description: >- + Retrieves the alarms identified by alarmAckState, baseObjectInstance + and filter. + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: baseObjectInstance + in: query + required: false + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - name: filter + in: query + required: false + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Filter' + responses: + '200': + description: >- + Success case ("200 OK"). + Returns the alarms identified in the request. The alarmId is the key + of the map. + content: + application/json: + schema: + type: object + additionalProperties: + type: object + allOf: + - type: object + properties: + lastNotificationHeader: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - $ref: '#/components/schemas/AlarmRecord' + - type: object + properties: + comments: + $ref: '#/components/schemas/Comments' + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + patch: + summary: 'Clear, acknowledge or unacknowledge multiple alarms' + description: >- + Clears, acknowledges or unacknowledges multiple alarms using patch. Depending + on which action is to be performed, different merge patch documents need + to be used. + requestBody: + description: >- + Patch documents for acknowledging and unacknowledging, or clearing multiple + alarms. The keys in the map are the alarmIds to be patched. + content: + application/merge-patch+json: + schema: + oneOf: + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - type: object + additionalProperties: + $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case ("204 No content"). + The response message body is empty. + default: + description: Response in case of error. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FailedAlarm' + /alarms/alarmCount: + get: + summary: Get the alarm count per perceived severity + parameters: + - name: alarmAckState + in: query + required: false + schema: + $ref: '#/components/schemas/AlarmAckState' + - name: filter + in: query + required: false + schema: + type: string + responses: + '200': + description: >- + Success case ("200 OK"). + The alarm count per perceived severity is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AlarmCount' + default: + description: Response in case of error. The error case needs rework. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}: + patch: + summary: 'Clear, acknowledge or unacknowledge a single alarm' + description: >- + Clears, acknowledges or unacknowldeges a single alarm by patching the alarm + information. A conditional acknowledge request based on the perceived + severity is not supported. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to be patched. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + oneOf: + - $ref: '#/components/schemas/MergePatchAcknowledgeAlarm' + - $ref: '#/components/schemas/MergePatchClearAlarm' + responses: + '204': + description: >- + Success case (204 No content). + The response message body is absent. + default: + description: Response in case of error. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + /alarms/{alarmId}/comments: + post: + summary: Add a comment to a single alarm + description: >- + Adds a comment to an alarm identified by alarmId. The id of the new comment + is allocated by the producer. + parameters: + - name: alarmId + in: path + description: Identifies the alarm to which the comment shall be added. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + responses: + '201': + description: >- + Success case (201 Created). + The representation of the newly created comment resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Comment' + headers: + Location: + description: URI of the newly created comment resource. + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + + /subscriptions: + post: + summary: Create a subscription + description: >- + To create a subscription the representation of the subscription is + POSTed on the /subscriptions collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + responses: + '201': + description: >- + Success case ("201 Created"). + The representation of the newly created subscription resource shall + be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Subscription' + headers: + Location: + description: URI of the newly created subscription resource + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyNewAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyNewAlarm' + - $ref: '#/components/schemas/NotifyNewSecAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyClearedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyClearedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarm: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyChangedAlarm' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyChangedAlarmGeneral: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NotifyChangedAlarmGeneral' + - $ref: '#/components/schemas/NotifyChangedSecAlarmGeneral' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyCorrelatedNotificationChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyCorrelatedNotificationChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyAckStateChanged: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAckStateChanged' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyComments: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyComments' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyPotentialFaultyAlarmList: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyPotentialFaultyAlarmList' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyAlarmListRebuilt: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyAlarmListRebuilt' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions/{subscriptionId}: + delete: + summary: Delete a subscription + description: >- + The subscription is deleted by deleting the corresponding subscription + resource. The resource to be deleted is identified with the path + component of the URI. + parameters: + - name: subscriptionId + in: path + description: Identifies the subscription to be deleted. + required: true + schema: + type: string + responses: + '204': + description: >- + Success case ("204 No Content"). + The subscription resource has been deleted. The response message body + is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + +components: + schemas: + + #---- Definition of AlarmRecord ----------------------------------------------------# + + AlarmId: + type: string + AlarmType: + type: string + enum: + - COMMUNICATIONS_ALARM + - QUALITY_OF_SERVICE_ALARM + - PROCESSING_ERROR_ALARM + - EQUIPMENT_ALARM + - ENVIRONMENTAL_ALARM + - INTEGRITY_VIOLATION + - OPERATIONAL_VIOLATION + - PHYSICAL_VIOLATION + - SECURITY_SERVICE_OR_MECHANISM_VIOLATION + - TIME_DOMAIN_VIOLATION + ProbableCause: + description: >- + The value of the probable cause may be a specific standardized string, or any + vendor provided string. Probable cause strings are not standardized in the + present document. They may be added in a future version. Up to then the + mapping of the generic probable cause strings "PROBABLE_CAUSE_001" to + "PROBABLE_CAUSE_005" is vendor specific. + The value of the probable cause may also be an integer. The mapping of integer + values to probable causes is vendor specific. + oneOf: + - anyOf: + - type: string + enum: + - PROBABLE_CAUSE_001 + - PROBABLE_CAUSE_002 + - PROBABLE_CAUSE_003 + - PROBABLE_CAUSE_004 + - PROBABLE_CAUSE_005 + - type: string + - type: integer + SpecificProblem: + oneOf: + - type: string + - type: integer + PerceivedSeverity: + type: string + enum: + - INDETERMINATE + - CRITICAL + - MAJOR + - MINOR + - WARNING + - CLEARED + TrendIndication: + type: string + enum: + - MORE_SEVERE + - NO_CHANGE + - LESS_SEVERE + ThresholdHysteresis: + type: object + required: + - high + properties: + high: + oneOf: + - type: integer + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float' + low: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float' + ThresholdLevelInd: + oneOf: + - type: object + properties: + up: + $ref: '#/components/schemas/ThresholdHysteresis' + - type: object + properties: + down: + $ref: '#/components/schemas/ThresholdHysteresis' + ThresholdInfo: + type: object + properties: + observedMeasurement: + type: string + observedValue: + type: number + thresholdLevel: + $ref: '#/components/schemas/ThresholdLevelInd' + armTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + required: + - observedMeasurement + - observedValue + CorrelatedNotification: + type: object + properties: + sourceObjectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + notificationIds: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationId' + required: + - sourceObjectInstance + - notificationIds + CorrelatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + AckState: + type: string + enum: + - ACKNOWLEDGED + - UNACKNOWLEDGED + + AlarmRecord: + description: >- + The alarmId is not a property of an alarm record. It is used as key + in the map of alarm records instead. + type: object + properties: + # alarmId: + # $ref: '#/components/schemas/AlarmId' + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + notificationId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationId' + alarmRaisedTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + alarmChangedTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + alarmClearedTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdinfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + + rootCauseIndicator: + type: boolean + + ackTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + + clearUserId: + type: string + clearSystemId: + type: string + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + + #---- Definition of alarm notifications --------------------------------------------# + + AlarmNotificationTypes: + type: string + enum: + - notifyNewAlarm + - notifyChangedAlarm + - notifyChangedAlarmGeneral + - notifyAckStateChanged + - notifyCorrelatedNotificationChanged + - notifyComments + - notifyClearedAlarm + - notifyAlarmListRebuilt + - notifyPotentialFaultyAlarmList + AlarmListAlignmentRequirement: + type: string + enum: + - ALIGNMENT_REQUIRED + - ALIGNMENT_NOT_REQUIRED + + NotifyNewAlarm: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + stateChangeDefinition: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + NotifyNewSecAlarm: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - serviceUser + - serviceProvider + - securityAlarmDetector + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + NotifyClearedAlarm: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + clearUserId: + type: string + clearSystemId: + type: string + NotifyChangedAlarm: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + NotifyChangedAlarmGeneral: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + specificProblem: + $ref: '#/components/schemas/SpecificProblem' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + backedUpStatus: + type: boolean + backUpObject: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + trendIndication: + $ref: '#/components/schemas/TrendIndication' + thresholdInfo: + $ref: '#/components/schemas/ThresholdInfo' + stateChangeDefinition: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeValueChangeSet' + monitoredAttributes: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + proposedRepairActions: + type: string + additionalText: + type: string + additionalInformation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + changedAlarmAttributes: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyChangedSecAlarmGeneral: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - serviceUser + - serviceProvider + - securityAlarmDetector + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + additionalText: + type: string + additionalInformation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + rootCauseIndicator: + type: boolean + serviceUser: + type: string + serviceProvider: + type: string + securityAlarmDetector: + type: string + changedAlarmAttributes: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyCorrelatedNotificationChanged: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - correlatedNotifications + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + correlatedNotifications: + $ref: '#/components/schemas/CorrelatedNotifications' + rootCauseIndicator: + type: boolean + NotifyAckStateChanged: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - ackState + - ackUserId + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + ackState: + $ref: '#/components/schemas/AckState' + ackUserId: + type: string + ackSystemId: + type: string + NotifyComments: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - alarmId + - alarmType + - probableCause + - perceivedSeverity + - comments + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + alarmType: + $ref: '#/components/schemas/AlarmType' + probableCause: + $ref: '#/components/schemas/ProbableCause' + perceivedSeverity: + $ref: '#/components/schemas/PerceivedSeverity' + comments: + $ref: '#/components/schemas/Comments' + NotifyPotentialFaultyAlarmList: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + NotifyAlarmListRebuilt: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + required: + - reason + properties: + reason: + type: string + alarmListAlignmentRequirement: + $ref: '#/components/schemas/AlarmListAlignmentRequirement' + + #---- Definition of query parameters -----------------------------------------------# + + AlarmAckState: + type: string + enum: + - ALL_ALARMS + - ALL_ACTIVE_ALARMS + - ALL_ACTIVE_AND_ACKNOWLEDGED_ALARMS + - ALL_ACTIVE_AND_UNACKNOWLEDGED_ALARMS + - ALL_CLEARED_AND_UNACKNOWLEDGED_ALARMS + - ALL_UNACKNOWLEDGED_ALARMS + + #---- Definition of patch documents ------------------------------------------------# + + MergePatchAcknowledgeAlarm: + description: >- + Patch document acknowledging or unacknowledging a single alarm. For + acknowledging an alarm the value of ackState is ACKNOWLEDGED, for unacknowledging + an alarm the value of ackState is UNACKNOWLEDGED. + type: object + required: + - ackUserId + - ackState + properties: + ackUserId: + type: string + ackSystemId: + type: string + ackState: + $ref: '#/components/schemas/AckState' + MergePatchClearAlarm: + description: Patch document for clearing a single alarm + type: object + required: + - clearUserId + - perceivedSeverity + properties: + clearUserId: + type: string + clearSystemId: + type: string + perceivedSeverity: + type: string + enum: + - CLEARED + + #---- Definition of method responses -----------------------------------------------# + + FailedAlarm: + type: object + required: + - alarmId + - failureReason + properties: + alarmId: + $ref: '#/components/schemas/AlarmId' + failureReason: + type: string + + #---- Definition of resources ------------------------------------------------------# + + AlarmCount: + type: object + required: + - criticalCount + - majorCount + - minorCount + - warningCount + - indeterminateCount + - clearedCount + properties: + criticalCount: + type: integer + majorCount: + type: integer + minorCount: + type: integer + warningCount: + type: integer + indeterminateCount: + type: integer + clearedCount: + type: integer + Comment: + type: object + properties: + commentTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + commentUserId: + type: string + commentSystemId: + type: string + commentText: + type: string + Comments: + description: >- + Collection of comments. The comment identifiers are allocated by the + MnS producer and used as key in the map. + type: object + additionalProperties: + $ref: '#/components/schemas/Comment' + Subscription: + type: object + properties: + consumerReference: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + timeTick: + type: integer + filter: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Filter' diff --git a/TS28532_FileDataReportingMnS.yaml b/TS28532_FileDataReportingMnS.yaml new file mode 100644 index 0000000..27c5a23 --- /dev/null +++ b/TS28532_FileDataReportingMnS.yaml @@ -0,0 +1,229 @@ +openapi: 3.0.1 +info: + title: File Data Reporting MnS + version: 17.3.0 + description: >- + OAS 3.0.1 definition of the File Data Reporting MnS + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/fileDataReportingMnS/{MnSVersion}' + variables: + MnSRoot: + description: See clause 4.4.3 of TS 32.158 + default: http://example.com/3GPPManagement + MnSVersion: + description: Version number of the OpenAPI definition + default: XXX +paths: + /files: + get: + summary: Read information about available files + description: >- + Information about available files is read with HTTP GET. The files for + which information shall be returned are identified with the path + component (base resource) and the query component (fileDataType, beginTime, + endTime) of the URI. + parameters: + - name: fileDataType + in: query + description: >- + This parameter selects files based on the file data type. + required: true + schema: + $ref: '#/components/schemas/FileDataType' + - name: beginTime + in: query + description: >- + This parameter selects files based on the earliest time they + became available + required: false + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + - name: endTime + in: query + description: >- + This parameter selects files based on the latest time they + became available + required: false + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + responses: + '200': + description: >- + 'Success case ("200 OK"). + The resources identified in the request for retrieval are returned + in the response message body.' + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/FileInfo' + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions: + post: + summary: Create a subscription + description: >- + To create a subscription the representation of the subscription is + POSTed on the /subscriptions collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS28532_FaultMnS.yaml#/components/schemas/Subscription' + responses: + '201': + description: >- + Success case ("201 Created"). + The representation of the newly created subscription resource shall + be returned. + content: + application/json: + schema: + $ref: 'TS28532_FaultMnS.yaml#/components/schemas/Subscription' + headers: + Location: + description: URI of the newly created subscription resource + required: true + schema: + type: string + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyFileReady: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyFileReady' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyFilePreparationError: + '{request.body#/consumerReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyFilePreparationError' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response message + body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + /subscriptions/{subscriptionId}: + delete: + summary: Delete a subscription + description: >- + The subscription is deleted by deleting the corresponding subscription + resource. The resource to be deleted is identified with the path + component of the URI. + parameters: + - name: subscriptionId + in: path + description: Identifies the subscription to be deleted. + required: true + schema: + type: string + responses: + '204': + description: >- + Success case ("204 No Content"). + The subscription resource has been deleted. The response message body + is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' +components: + schemas: + FileDataType: + type: string + enum: + - Performance + - Trace + - Analytics + - Proprietary + FileNotificationTypes: + type: string + enum: + - notifyFileReady + - notifyFilePreparationError + FileInfo: + type: object + properties: + fileLocation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + fileSize: + type: integer + fileReadyTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + fileExpirationTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + fileCompression: + type: string + fileFormat: + type: string + fileDataType: + $ref: '#/components/schemas/FileDataType' + NotifyFileReady: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + fileInfoList: + type: array + items: + $ref: '#/components/schemas/FileInfo' + additionalText: + type: string + NotifyFilePreparationError: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + fileInfoList: + type: array + items: + $ref: '#/components/schemas/FileInfo' + reason: + type: string + additionalText: + type: string diff --git a/TS28532_HeartbeatNtf.yaml b/TS28532_HeartbeatNtf.yaml new file mode 100644 index 0000000..4d10cac --- /dev/null +++ b/TS28532_HeartbeatNtf.yaml @@ -0,0 +1,25 @@ +openapi: 3.0.1 +info: + title: Heartbeat notification + version: 17.1.0 + description: >- + OAS 3.0.1 definition of the heartbeat notification + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.6532/ +paths: {} +components: + schemas: + HeartbeatNotificationTypes: + type: string + enum: + - notifyHeartbeat + NotifyHeartbeat: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + heartbeatNtfPeriod: + type: integer diff --git a/TS28532_PerfMnS.yaml b/TS28532_PerfMnS.yaml new file mode 100644 index 0000000..c2eabb5 --- /dev/null +++ b/TS28532_PerfMnS.yaml @@ -0,0 +1,76 @@ +openapi: 3.0.1 +info: + title: TS 28.532 Performance Threshold Monitoring MnS + version: 17.1.0 + description: >- + OAS 3.0.1 definition of the Performance Threshold Monitoring MnS + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{root}' + variables: + root: + description: >- + The open API server of the performance threshold monitoring service is + located in the consumer side, see monitoringNotifTarget attribute of + the IOC ThresholdMonitor defined in 3GPP TS 28.622 [11]. + default: http://example.com/3GPPManagement +paths: + /notificationSink: + post: + summary: Send notifications about performance threshold crossing + description: To send a notifyThresholdCrossing notification + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyThresholdCrossing' + responses: + '204': + description: >- + Success case ("204 No Content"). The notification is successfully + delivered. The response message body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' +components: + schemas: + PerfNotificationTypes: + type: string + enum: + - notifyThresholdCrossing + PerfMetricValue: + oneOf: + - type: integer + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float' + PerfMetricDirection: + type: string + enum: + - UP + - DOWN + NotifyThresholdCrossing: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + observedPerfMetricName: + type: string + observedPerfMetricValue: + $ref: '#/components/schemas/PerfMetricValue' + observedPerfMetricDirection: + $ref: '#/components/schemas/PerfMetricDirection' + thresholdValue: + $ref: '#/components/schemas/PerfMetricValue' + hysteresis: + $ref: '#/components/schemas/PerfMetricValue' + monitorGranularityPeriod: + type: integer + additionalText: + type: string diff --git a/TS28532_ProvMnS.yaml b/TS28532_ProvMnS.yaml new file mode 100644 index 0000000..7b734bc --- /dev/null +++ b/TS28532_ProvMnS.yaml @@ -0,0 +1,515 @@ +openapi: 3.0.1 +info: + title: Provisioning MnS + version: 17.6.0 + description: >- + OAS 3.0.1 definition of the Provisioning MnS + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.532; Generic management services + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.532/ +servers: + - url: '{MnSRoot}/ProvMnS/{MnSVersion}/{URI-LDN-first-part}' + variables: + MnSRoot: + description: See clause 4.4.2 of TS 32.158 + default: http://example.com/3GPPManagement + MnSVersion: + description: Version number of the OpenAPI definition + default: XXX + URI-LDN-first-part: + description: See clause 4.4.2 of TS 32.158 + default: '' +paths: + '/{className}={id}': + parameters: + - name: className + in: path + required: true + schema: + type: string + - name: id + in: path + required: true + schema: + type: string + put: + summary: Replaces a complete single resource or creates it if it does not exist + description: >- + With HTTP PUT a complete resource is replaced or created if it does not + exist. The target resource is identified by the target URI. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Resource' + responses: + '200': + description: >- + Success case ("200 OK"). + This status code shall be returned when the resource is replaced, and + when the replaced resource representation is not identical to the resource + representation in the request. + This status code may be returned when the resource is updated and when the + updated resource representation is identical to the resource representation + in the request. + The representation of the updated resource is returned in the response + message body. + content: + application/json: + schema: + $ref: '#/components/schemas/Resource' + '201': + description: >- + Success case ("201 Created"). + This status code shall be returned when the resource is created. + The representation of the created resource is returned in the response + message body. + content: + application/json: + schema: + $ref: '#/components/schemas/Resource' + '204': + description: >- + Success case ("204 No Content"). + This status code may be returned only when the replaced resource + representation is identical to the representation in the request. + The response has no message body. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + callbacks: + notifyMOICreation: + '{request.body#/notificationRecipientAddress}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyMoiCreation' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response + has no message body. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyMOIDeletion: + '{request.body#/notificationRecipientAddress}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyMoiDeletion' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response + has no message body. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyMOIAttributeValueChanges: + '{request.body#/notificationRecipientAddress}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyMoiAttributeValueChanges' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response + has no message body. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + notifyMOIChanges: + '{request.body#/notificationRecipientAddress}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotifyMoiChanges' + application/yang-data+json: + schema: + $ref: '#/components/schemas/NotifyMoiChanges' + responses: + '204': + description: >- + Success case ("204 No Content"). + The notification is successfully delivered. The response + has no message body. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + get: + summary: Reads one or multiple resources + description: >- + With HTTP GET resources are read. The resources to be retrieved are + identified with the target URI. The attributes and fields parameter + of the query components allow to select the resource properties to be returned. + parameters: + - name: scope + in: query + description: >- + This parameter extends the set of targeted resources beyond the base + resource identified with the path component of the URI. No scoping + mechanism is specified in the present document. + required: false + schema: + $ref: '#/components/schemas/Scope' + style: form + explode: true + - name: filter + in: query + description: >- + This parameter reduces the targeted set of resources by applying a + filter to the scoped set of resource representations. Only resource + representations for which the filter construct evaluates to "true" + are targeted. No filter language is specified in the present + document. + required: false + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Filter' + - name: attributes + in: query + description: >- + This parameter specifies the attributes of the scoped resources that + are returned. + required: false + schema: + type: array + items: + type: string + style: form + explode: false + - name: fields + in: query + description: >- + This parameter specifies the attribute field of the scoped resources + that are returned. + required: false + schema: + type: array + items: + type: string + style: form + explode: false + responses: + '200': + description: >- + Success case ("200 OK"). + The resources identified in the request for retrieval are returned + in the response message body. In case the attributes or fields query + parameters are used, only the selected attributes or sub-attributes are + returned. The response message body is constructed according to the + hierarchical response construction method (TS 32.158 [15]). + content: + application/json: + schema: + $ref: '#/components/schemas/Resource' + application/vnd.3gpp.object-tree-hierarchical+json: + schema: + $ref: '#/components/schemas/Resource' + application/vnd.3gpp.object-tree-flat+json: + schema: + type: array + items: + $ref: '#/components/schemas/Resource' + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + patch: + summary: Patches one or multiple resources + description: >- + With HTTP PATCH resources are created, updated or deleted. The resources + to be modified are identified with the target URI (base resource) and + the patch document included in the request message body. + requestBody: + description: >- + The request body describes changes to be made to the target resources. + The following patch media types are available + - "application/merge-patch+json" (RFC 7396) + - "application/3gpp-merge-patch+json" (TS 32.158) + - "application/json-patch+json" (RFC 6902) + - "application/3gpp-json-patch+json" (TS 32.158) + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Resource' + application/3gpp-merge-patch+json: + schema: + $ref: '#/components/schemas/Resource' + application/json-patch+json: + schema: + type: array + items: + $ref: '#/components/schemas/PatchItem' + application/3gpp-json-patch+json: + schema: + type: array + items: + $ref: '#/components/schemas/PatchItem' + responses: + '200': + description: >- + Success case ("200 OK"). + This status code is returned when the updated the resource representations + shall be returned for some reason. + The resource representations are returned in the response message body. The + response message body is constructed according to the hierarchical response + construction method (TS 32.158 [15]) + content: + application/json: + schema: + $ref: '#/components/schemas/Resource' + '204': + description: >- + Success case ("204 No Content"). + This status code is returned when there is no need to return the updated + resource representations. + The response message body is empty. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' + delete: + summary: Deletes one resource + description: >- + With HTTP DELETE one resource is deleted. The resources to be deleted is + identified with the target URI. + responses: + '200': + description: >- + Success case ("200 OK"). + This status code is returned, when the resource has been successfully deleted. + The response body is empty. + default: + description: Error case. + content: + application/json: + schema: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/ErrorResponse' +components: + schemas: + CmNotificationTypes: + type: string + enum: + - notifyMOICreation + - notifyMOIDeletion + - notifyMOIAttributeValueChanges + - notifyMOIChanges + SourceIndicator: + type: string + enum: + - RESOURCE_OPERATION + - MANAGEMENT_OPERATION + - SON_OPERATION + - UNKNOWN + ScopeType: + type: string + enum: + - BASE_ONLY + - BASE_NTH_LEVEL + - BASE_SUBTREE + - BASE_ALL + Operation: + type: string + enum: + - add + - remove + - replace + Insert: + type: string + enum: + - before + - after + PatchOperation: + type: string + enum: + - add + - replace + - remove + - copy + - move + - test + + Resource: + oneOf: + - type: object + properties: + id: + type: string + objectClass: + type: string + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + attributes: + type: object + additionalProperties: + type: array + items: + type: object + required: + - id + - anyOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/resources-genericNrm' + - $ref: 'TS28541_NrNrm.yaml#/components/schemas/resources-nrNrm' + - $ref: 'TS28541_5GcNrm.yaml#/components/schemas/resources-5gcNrm' + - $ref: 'TS28541_SliceNrm.yaml#/components/schemas/resources-sliceNrm' + - $ref: 'TS28536_CoslaNrm.yaml#/components/schemas/resources-coslaNrm' + - $ref: 'TS28312_IntentNrm.yaml#/components/schemas/resources-intentNrm' + - $ref: 'TS28104_MdaNrm.yaml#/components/schemas/resources-mdaNrm' + - $ref: 'TS28105_AiMlNrm.yaml#/components/schemas/resources-AiMlNrm' + - $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/resources-edgeNrm' + Scope: + type: object + properties: + scopeType: + $ref: '#/components/schemas/ScopeType' + scopeLevel: + type: integer + CorrelatedNotification: + type: object + properties: + source: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + notificationIds: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationId' + required: + - source + - notificationIds + MoiChange: + type: object + properties: + notificationId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationId' + correlatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + additionalText: + type: string + sourceIndicator: + $ref: '#/components/schemas/SourceIndicator' + op: + $ref: '#/components/schemas/Operation' + path: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + insert: + $ref: '#/components/schemas/Insert' + value: {} + oldValue: {} + required: + - notificationId + - op + - path + NotifyMoiCreation: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + correlatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + additionalText: + type: string + sourceIndicator: + $ref: '#/components/schemas/SourceIndicator' + attributeList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyMoiDeletion: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + correlatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + additionalText: + type: string + sourceIndicator: + $ref: '#/components/schemas/SourceIndicator' + attributeList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeNameValuePairSet' + NotifyMoiAttributeValueChanges: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + correlatedNotifications: + type: array + items: + $ref: '#/components/schemas/CorrelatedNotification' + additionalText: + type: string + sourceIndicator: + $ref: '#/components/schemas/SourceIndicator' + attributeListValueChanges: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AttributeValueChangeSet' + required: + - attributeListValueChanges + NotifyMoiChanges: + allOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationHeader' + - type: object + properties: + moiChanges: + type: array + items: + $ref: '#/components/schemas/MoiChange' + required: + - moiChanges + PatchItem: + type: object + properties: + op: + $ref: '#/components/schemas/PatchOperation' + from: + type: string + path: + type: string + value: + nullable: true + required: + - op + - path diff --git a/TS28532_StreamingDataMnS.yaml b/TS28532_StreamingDataMnS.yaml new file mode 100644 index 0000000..ef587da --- /dev/null +++ b/TS28532_StreamingDataMnS.yaml @@ -0,0 +1,447 @@ +openapi: 3.0.1 +info: + title: TS 28.532 Streaming data reporting service + version: 17.1.0 + description: >- + OAS 3.0.1 specification for the Streaming data reporting service (Streaming MnS) + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +servers: + - url: '{MnSRoot}/StreamingDataReportingMnS/{MnSVersion}' + variables: + MnSRoot: + description: See clause 4.4.3 of TS 32.158. + default: https://example.com/3GPPManagement + MnSVersion: + description: See clause 4.4.3 of TS 32.158. + default: '' +paths: + '/connections': + post: + summary: Inform consumer about reporting streams to be carried by the new connection and receive a new connection id. + description: Exchange of meta-data (producer informs consumer about its own identity and the nature of the data to be reported via streaming) phase of the connection establishement by streaming data reporting producer to the streaming data reporting consumer (i.e. streaming target). + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/connectionRequest-Type' + responses: + '201': + description: Success case (201 Created). + headers: + Location: + description: Location of the created connection resource. + schema: + $ref: '#/components/schemas/connectionId-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/failedConnectionResponse-Type' + get: + summary: Obtain information about connections. + description: Enables the streaming data reporting service producer to obtain information about one or more streaming connections. + parameters: + - name: connectionIdList + in: query + description: The list of connectionId for which the connection information is to be returned. + required: false + schema: + type: array + items: + $ref: '#/components/schemas/connectionId-Type' + responses: + '200': + description: Success case (200 OK). The resources identified in the request for retrieval are returned in the response message body. In case the fields query parameter is used, the selected resources are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/connectionInfo-Type' + '202': + description: Partial success case (202 Partially retrieved). Subset of the resources identified in the request for retrieval are returned in the response message body. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/connectionInfo-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' + '/connections/{connectionId}': + get: + summary: Obtain information about a connection. + description: Enables the streaming data reporting service producer to obtain information about one streaming connection. + parameters: + - name: connectionId + in: path + description: Indicate the ID (URI) of the connection for which the information is being retrieved + required: true + schema: + $ref: '#/components/schemas/connectionId-Type' + - name: Connection + in: header + schema: + $ref: '#/components/schemas/websocketHeaderConnection-Type' + - name: Sec-WebSocket-Extensions + in: header + schema: + $ref: '#/components/schemas/websocketHeader-Sec-WebSocket-Extensions-Type' + - name: Sec-WebSocket-Key + in: header + schema: + $ref: '#/components/schemas/websocketHeader-Sec-WebSocket-Key-Type' + - name: Sec-WebSocket-Protocol + in: header + schema: + $ref: '#/components/schemas/websocketHeader-Sec-WebSocket-Protocol-Type' + - name: Sec-WebSocket-Version + in: header + schema: + $ref: '#/components/schemas/websocketHeader-Sec-WebSocket-Version-Type' + responses: + '101': + description: Success case (101 Switching Protocols). The connection has been successfully switched to WebSocket. The response message body is absent. + headers: + Upgrade: + schema: + $ref: '#/components/schemas/websocketHeaderUpgrade-Type' + Connection: + schema: + $ref: '#/components/schemas/websocketHeaderConnection-Type' + Sec-WebSocket-Accept: + schema: + $ref: '#/components/schemas/websocketHeader-Sec-WebSocket-Accept-Type' + '200': + description: Success case (200 OK). The resource identified in the request for retrieval returned in the response message body. + content: + application/json: + schema: + $ref: '#/components/schemas/connectionInfo-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' + '/connections/{connectionId}/streams': + post: + summary: Inform consumer about new reporting streams on an existing connection. + description: Allows the producer to add one or more reporting streams to an already established streaming connection. + parameters: + - name: connectionId + in: path + description: Indicate the ID (URI) of the connection for which the reporting stream information is being added. + required: true + schema: + $ref: '#/components/schemas/connectionId-Type' + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/streamInfo-Type' + responses: + '201': + description: Success case (201 Posted). + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/streamInfo-Type' + '202': + description: Partial success case (202 Posted). + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/streamInfo-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' + delete: + summary: Remove reporting streams from an existing connection + description: Allows the producer to remove one or more reporting streams from an already established streaming connection. + parameters: + - name: connectionId + in: path + description: Indicate the ID (URI) of the connection for which the reporting stream information is being removed. + required: true + schema: + $ref: '#/components/schemas/connectionId-Type' + - name: streamIds + in: query + description: The list of streamId for the stream(s) to be deleted. + required: true + schema: + type: array + items: + $ref: '#/components/schemas/streamId-Type' + responses: + '204': + description: Success case (204 No Content). The stream information resource has been deleted. The response message body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' + get: + summary: Obtain information about streams. + description: Enables the streaming data reporting service producer to obtain information about one or more reporting streams. + parameters: + - name: connectionId + in: path + description: Indicate the ID (URI) of the connection for which the information is being retrieved + required: true + schema: + $ref: '#/components/schemas/connectionId-Type' + - name: streamIds + in: query + description: The list of streamId for which the stream information is to be retrieved. + required: true + schema: + type: array + items: + $ref: '#/components/schemas/streamId-Type' + responses: + '200': + description: Success case (200 OK). + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/streamInfoWithReporters-Type' + '202': + description: Partial success case (202 Partially retrieved). + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/streamInfoWithReporters-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' + '/connections/{connectionId}/streams/{streamId}': + get: + summary: Obtain information about stream + description: Enables the streaming data reporting service producer to obtain information about a reporting stream. + parameters: + - name: connectionId + in: path + description: Indicate the ID (URI) of the connection for which the information is being retrieved + required: true + schema: + $ref: '#/components/schemas/connectionId-Type' + - name: streamId + in: path + description: Indicate the ID of the reporting stream for which the information is being retrieved + required: true + schema: + $ref: '#/components/schemas/streamId-Type' + responses: + '200': + description: Success case (200 OK). + content: + application/json: + schema: + $ref: '#/components/schemas/streamInfoWithReporters-Type' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/errorResponse-Type' +components: + schemas: + analyticsInfo-Type: + description: Information specific to analytics reporting. + type: object + properties: + activityDetails: + type: string + connectionId-Type: + $ref: '#/components/schemas/uri-Type' + connectionInfo-Type: + type: object + properties: + connection: + $ref: '#/components/schemas/connectionId-Type' + producer: + $ref: '#/components/schemas/producerId-Type' + streams: + type: array + items: + $ref: '#/components/schemas/streamId-Type' + connectionRequest-Type: + type: object + properties: + producer: + $ref: '#/components/schemas/producerId-Type' + streams: + type: array + items: + $ref: '#/components/schemas/streamInfo-Type' + errorResponse-Type: + type: object + properties: + error: + type: object + properties: + errorInfo: + type: string + failedConnectionResponse-Type: + type: object + properties: + error: + type: array + items: + type: object + properties: + streamId: + $ref: '#/components/schemas/streamId-Type' + errorReason: + type: string + measObjDn-Type: + description: DN of the measured object instance (see 3GPP TS 28.550) + allOf: + - $ref: '#/components/schemas/systemDN-Type' + performanceMetrics-Type: + description: an ordered list of performance metric names (see clause 4.4.1 of 3GPP TS 28.622[11]) whose values are to be reported by the Performance Data Stream Units (see Annex C of TS 28.550 [42]) via this stream. Performance metrics include measurement and KPI + type: array + items: + type: string + performanceInfo-Type: + description: Information specific to performance data reporting + type: object + properties: + measObjDn: + $ref: '#/components/schemas/measObjDn-Type' + performanceMetrics: + $ref: '#/components/schemas/performanceMetrics-Type' + jobId: + type: string + required: + - measObjDn + - performanceMetrics + producerId-Type: + description: DN of the streaming data reporting MnS producer. + allOf: + - $ref: '#/components/schemas/systemDN-Type' + serializationFormat-Type: + type: string + enum: + - GPB + - ASN1 + streamId-Type: + description: globally unique stream identifier + type: string + example: '26F452550021' + streamInfo-Type: + description: Reporting stream meta-data. + type: object + properties: + streamType: + $ref: '#/components/schemas/streamType-Type' + serializationFormat: + $ref: '#/components/schemas/serializationFormat-Type' + streamId: + oneOf: + - $ref: '#/components/schemas/streamId-Type' + - $ref: '#/components/schemas/traceReference-Type' + additionalInfo: + oneOf: + - $ref: '#/components/schemas/traceInfo-Type' + - $ref: '#/components/schemas/performanceInfo-Type' + - $ref: '#/components/schemas/analyticsInfo-Type' + - $ref: '#/components/schemas/vsDataContainer-Type' + required: + - streamType + - serializationFormat + - streamId + streamInfoWithReporters-Type: + description: Reporting stream meta-data with added information about reporters. + type: object + properties: + streamInfo: + $ref: '#/components/schemas/streamInfo-Type' + reporters: + type: array + items: + $ref: '#/components/schemas/producerId-Type' + systemDN-Type: + description: See 3GPP TS 32.300 for details + type: string + example: 'SubNetwork=ABCNetwork,SubNetwork=MUC01,GNBDUFunction=XYZ0100' + streamType-Type: + type: string + enum: + - TRACE + - PERFORMANCE + - ANALYTICS + - PROPRIETARY + traceInfo-Type: + description: Information specific to trace data reporting + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/TraceJob-Attr' + traceReference-Type: + description: Trace Reference (see clause 5.6 of 3GPP TS 32.422) as stream identifier for streaming trace data reporting + type: string + example: '4358070034D7' + uri-Type: + description: Resource URI + type: string + vsDataContainer-Type: + description: container for vendor specific data (see 3GPP TS 28.622) + type: object + properties: + vsDataType: + type: string + vsData: + type: string + vsDataFormatVersion: + type: string + websocketHeaderConnection-Type: + description: Header value for the upgrade request and response. + type: string + enum: + - Upgrade + websocketHeaderUpgrade-Type: + description: Header value for the upgrade to WebSocket request and response. + type: string + enum: + - websocket + websocketHeader-Sec-WebSocket-Accept-Type: + description: Header value for secure WebSocket response. Carries hash. + type: string + websocketHeader-Sec-WebSocket-Extensions-Type: + description: Header value for secure WebSocket request. Carries protocol extensions. + type: string + websocketHeader-Sec-WebSocket-Key-Type: + description: Header value for secure WebSocket request. Provides information to the server which is needed in order to confirm that the client is entitled to request an upgrade to WebSocket. + type: string + websocketHeader-Sec-WebSocket-Protocol-Type: + description: Header value for secure WebSocket request. Carries a comma-separated list of subprotocol names, in the order of preference. + type: string + websocketHeader-Sec-WebSocket-Version-Type: + description: Header value for secure WebSocket request and response. Carries the WebSocket protocol version to be used. + type: string diff --git a/TS28536_CoslaNrm.yaml b/TS28536_CoslaNrm.yaml new file mode 100644 index 0000000..3ae269c --- /dev/null +++ b/TS28536_CoslaNrm.yaml @@ -0,0 +1,254 @@ +openapi: 3.0.1 + +info: + title: coslaNrm + version: 17.3.0 + description: >- + OAS 3.0.1 specification of the Cosla NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 28.536 V17.3.0; Cosla NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.536/ + +paths: {} + +components: + + schemas: + +#------------ Type definitions --------------------------------------------------- + + ControlLoopLifeCyclePhase: + type: string + enum: + - PREPARATION + - COMMISSIONING + - OPERATION + - DECOMMISSIONING + + ObservationTime: + type: integer + + AssuranceGoalStatusObserved: + type: string + enum: + - FULFILLED + - NOT_FULFILLED + + AssuranceGoalStatusPredicted: + type: string + enum: + - FULFILLED + - NOT_FULFILLED + + AssuranceTargetStatusObserved: + type: string + enum: + - FULFILLED + - NOT_FULFILLED + + AssuranceTargetStatusPredicted: + type: string + enum: + - FULFILLED + - NOT_FULFILLED + + AssuranceTargetName: + type: string + + AssuranceTarget: + type: object + properties: + assuranceTargetName: + $ref: '#/components/schemas/AssuranceTargetName' + assuranceTargetValue: + type: string + + AssuranceTargetList: + type: array + items: + $ref: '#/components/schemas/AssuranceTarget' + + AssuranceGoalStatus: + type: object + properties: + assuranceGoalStatusId: + type: string + assuranceGoalId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + assuranceGoalStatusObserved: + $ref: '#/components/schemas/AssuranceGoalStatusObserved' + assuranceGoalStatusPredicted: + $ref: '#/components/schemas/AssuranceGoalStatusPredicted' + assuranceGoalRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + AssuranceGoalStatusList: + type: array + items: + $ref: '#/components/schemas/AssuranceGoalStatus' + + AssuranceTargetStatus: + type: object + properties: + assuranceTargetStatusId: + type: string + assuranceTargetName: + $ref: '#/components/schemas/AssuranceTargetName' + assuranceTargetStatusObserved: + $ref: '#/components/schemas/AssuranceTargetStatusObserved' + assuranceTargetStatusPredicted: + $ref: '#/components/schemas/AssuranceTargetStatusPredicted' + + AssuranceTargetStatusList: + type: array + items: + $ref: '#/components/schemas/AssuranceTargetStatus' + + AttributeNameList: + type: array + items: + type: string + + ACCLDisallowedAttributes: + type: object + properties: + managedEntityIdentifier: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + attributeNameList: + $ref: '#/components/schemas/AttributeNameList' + + AssuranceScope: + type: object + properties: + taiList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + +#-------- Definition of concrete IOCs -------------------------------------------- + MnS: + oneOf: + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + - type: object + properties: + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + AssuranceClosedControlLoop: + $ref: '#/components/schemas/AssuranceClosedControlLoop-Multiple' + + ManagedElement-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-ncO' + - type: object + properties: + AssuranceClosedControlLoop: + $ref: '#/components/schemas/AssuranceClosedControlLoop-Multiple' + + AssuranceClosedControlLoop-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + controlLoopLifeCyclePhase: + $ref: '#/components/schemas/ControlLoopLifeCyclePhase' + aCCLDisallowedList: + $ref: '#/components/schemas/ACCLDisallowedAttributes' + AssuranceGoal: + $ref: '#/components/schemas/AssuranceGoal-Multiple' + networkSliceRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + networkSliceSubnetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + AssuranceGoal-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + observationTime: + $ref: '#/components/schemas/ObservationTime' + assuranceTargetList: + $ref: '#/components/schemas/AssuranceTargetList' + assuranceScope: + $ref: '#/components/schemas/AssuranceScope' + serviceProfileId: + type: string + sliceProfileId: + type: string + + AssuranceReport-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + assuranceGoalStatusList: + $ref: '#/components/schemas/AssuranceGoalStatusList' + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + + ManagedElement-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedElement-Single' + + AssuranceClosedControlLoop-Multiple: + type: array + items: + $ref: '#/components/schemas/AssuranceClosedControlLoop-Single' + + AssuranceGoal-Multiple: + type: array + items: + $ref: '#/components/schemas/AssuranceGoal-Single' + +#------------ Definitions in TS 28.536 for TS 28.623 ----------------------------- + + resources-coslaNrm: + oneOf: + - $ref: '#/components/schemas/MnS' + - $ref: '#/components/schemas/AssuranceClosedControlLoop-Single' + - $ref: '#/components/schemas/AssuranceGoal-Single' + - $ref: '#/components/schemas/AssuranceReport-Single' + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/ManagedElement-Single' diff --git a/TS28538_EdgeNrm.yaml b/TS28538_EdgeNrm.yaml new file mode 100644 index 0000000..8500267 --- /dev/null +++ b/TS28538_EdgeNrm.yaml @@ -0,0 +1,326 @@ +openapi: 3.0.1 +info: + title: 3GPP Edge NRM + version: 18.3.0 + description: >- + OAS 3.0.1 specification of the Edge NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.538; Edge NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.538/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + ServingLocation: + type: object + properties: + geographicalLocation: + $ref: '#/components/schemas/GeoLoc' + topologicalLocation: + $ref: '#/components/schemas/TopologicalServiceArea' + TopologicalServiceArea: + type: object + properties: + cellIdList: + type: array + items: + type: integer + trackingAreaIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + servingPLMN: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + GeoLoc: + type: object + properties: + geographicalCoordinates: + $ref: '#/components/schemas/GeographicalCoordinates' + civicLocation: + type: string + GeographicalCoordinates: + type: object + properties: + lattitude: + type: integer + longitude: + type: integer + EDNConnectionInfo: + type: object + properties: + dNN: + type: string + eDNServiceArea: + $ref: '#/components/schemas/ServingLocation' + AffinityAntiAffinity: + type: object + properties: + affinityEAS: + type: array + items: + type: string + antiAffinityEAS: + type: array + items: + type: string + VirtualResource: + type: object + properties: + virtualMemory: + type: integer + virtualDisk: + type: integer + virutalCPU: + type: string + SoftwareImageInfo: + type: object + properties: + minimumDisk: + type: integer + minimumRAM: + type: integer + discFormat: + type: string + operatingSystem: + type: string + swImageRef: + type: string + Duration: + type: object + properties: + startTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + EASServicePermission: + type: string + description: any of enumrated value + enum: + - TRIAL + - SILVER + - GOLD + EASFeature: + type: string + description: any of enumrated value + enum: + - SINGLE + - MULTIPLE + EASStatus: + type: string + description: any of enumrated value + enum: + - ENABLED + - DISABLED + + +#-------- Definition of concrete IOCs -------------------------------------------- + MnS: + oneOf: + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - type: object + properties: + Subnetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + ECSFunction: + $ref: '#/components/schemas/ECSFunction-Multiple' + EdgeDataNetwork: + $ref: '#/components/schemas/EdgeDataNetwork-Multiple' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + + EdgeDataNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + ednIdentifier: + type: string + eDNConnectionInfo: + $ref: '#/components/schemas/EDNConnectionInfo' + - type: object + properties: + EASFunction: + $ref: '#/components/schemas/EASFunction-Multiple' + EESFunction: + $ref: '#/components/schemas/EESFunction-Multiple' + + EASFunction-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: + eASIdentifier: + type: string + eESAddress: + type: array + items: + type: string + eASRequirementsRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + eASAddress: + type: array + items: + type: string + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + EASProfile-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + aCID: + type: string + eASProvider: + type: string + eASdescription: + type: string + eASSchedule: + $ref: '#/components/schemas/Duration' + eASGeographicalServiceArea: + $ref: '#/components/schemas/GeoLoc' + eASTopologicalServiceArea: + $ref: '#/components/schemas/TopologicalServiceArea' + eASServicePermissionLevel: + $ref: '#/components/schemas/EASServicePermission' + eASFeature: + $ref: '#/components/schemas/EASFeature' + eASServiceContinuitySupport: + type: boolean + eASDNAI: + type: string + eASAvailabilityReportingPeriod: + type: integer + eASStatus: + $ref: '#/components/schemas/EASStatus' + EESFunction-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: + eESIdentifier: + type: string + eESServingLocation: + type: array + items: + $ref: '#/components/schemas/ServingLocation' + eESAddress: + type: array + items: + type: string + softwareImageInfo: + $ref: '#/components/schemas/SoftwareImageInfo' + serviceContinuitySupport: + type: boolean + eASFunctonRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + ECSFunction-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: + eCSAddress: + type: string + providerIdentifier: + type: string + edgeDataNetworkRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + eESFuncitonRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + softwareImageInfo: + $ref: '#/components/schemas/SoftwareImageInfo' + trackingAreaIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + geographicalLocation: + $ref: '#/components/schemas/GeoLoc' + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + EASRequirements-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + requiredEASservingLocation: + $ref: '#/components/schemas/ServingLocation' + affinityAntiAffinity: + $ref: '#/components/schemas/AffinityAntiAffinity' + serviceContinuity: + type: boolean + virtualResource: + $ref: '#/components/schemas/VirtualResource' + softwareImageInfo: + $ref: '#/components/schemas/SoftwareImageInfo' + eASSchedule: + $ref: '#/components/schemas/Duration' + eASFeature: + $ref: '#/components/schemas/EASFeature' + + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + EASFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/EASFunction-Single' + ECSFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ECSFunction-Single' + EESFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/EESFunction-Single' + EdgeDataNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/EdgeDataNetwork-Single' + EASProfile-Multiple: + type: array + items: + $ref: '#/components/schemas/EASProfile-Single' + +#--------------------------------- Definition ------------------------------------ + + resources-edgeNrm: + oneOf: + - $ref: '#/components/schemas/MnS' + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/EASFunction-Single' + - $ref: '#/components/schemas/ECSFunction-Single' + - $ref: '#/components/schemas/EESFunction-Single' + - $ref: '#/components/schemas/EdgeDataNetwork-Single' + - $ref: '#/components/schemas/EASRequirements-Single' + - $ref: '#/components/schemas/EASProfile-Single' diff --git a/TS28541_5GcNrm.yaml b/TS28541_5GcNrm.yaml new file mode 100644 index 0000000..4cf5ec9 --- /dev/null +++ b/TS28541_5GcNrm.yaml @@ -0,0 +1,4813 @@ +openapi: 3.0.1 +info: + title: 3GPP 5GC NRM + version: 18.5.0 + description: >- + OAS 3.0.1 specification of the 5GC NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.541; 5G NRM, 5GC NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.541/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + + AmfIdentifier: + type: object + description: 'AmfIdentifier comprise of amfRegionId, amfSetId and amfPointer' + properties: + amfRegionId: + $ref: '#/components/schemas/AmfRegionId' + amfSetId: + $ref: '#/components/schemas/AmfSetId' + amfPointer: + $ref: '#/components/schemas/AmfPointer' + AmfRegionId: + type: integer + description: AmfRegionId is defined in TS 23.003 + maximum: 255 + AmfSetId: + type: string + description: AmfSetId is defined in TS 23.003 + maximum: 1023 + AmfPointer: + type: integer + description: AmfPointer is defined in TS 23.003 + maximum: 63 + IpEndPoint: + type: object + properties: + ipv4Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + ipv6Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + ipv6Prefix: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Prefix' + transport: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/TransportProtocol' + port: + type: integer + NFProfileList: + type: array + description: List of NF profile + items: + $ref: '#/components/schemas/NFProfile' + NFProfile: + type: object + description: 'NF profile stored in NRF, defined in TS 29.510' + properties: + nFInstanceId: + type: string + description: uuid of NF instance + nFType: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + nFStatus: + $ref: '#/components/schemas/NFStatus' + plmn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + sNssais: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + interPlmnFqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + nfServices: + type: array + items: + $ref: '#/components/schemas/NFService' + NFService: + type: object + description: NF Service is defined in TS 29.510 + properties: + serviceInstanceId: + type: string + serviceName: + type: string + version: + type: string + schema: + type: string + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + interPlmnFqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + ipEndPoints: + type: array + items: + $ref: '#/components/schemas/IpEndPoint' + apiPrfix: + type: string + allowedPlmns: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + allowedNfTypes: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + allowedNssais: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + NFStatus: + type: string + description: any of enumerated value + enum: + - REGISTERED + - SUSPENDED + CNSIIdList: + type: array + items: + $ref: '#/components/schemas/CNSIId' + CNSIId: + type: string + description: CNSI Id is defined in TS 29.531, only for Core Network + TACList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tac' + WeightFactor: + type: integer + AusfInfo: + type: object + properties: + nFSrvGroupId: + type: string + 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 + SupportedDataSet: + type: string + description: any of enumerated value + 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 + NotificationType: + type: string + enum: + - N1_MESSAGES + - N2_INFORMATION + - LOCATION_NOTIFICATION + - DATA_REMOVAL_NOTIFICATION + - DATA_CHANGE_NOTIFICATION + - LOCATION_UPDATE_NOTIFICATION + - NSSAA_REAUTH_NOTIFICATION + - NSSAA_REVOC_NOTIFICATION + DefaultNotificationSubscription: + type: object + properties: + notificationType: + $ref: '#/components/schemas/NotificationType' + callbackURI: + type: string + n1MessageClass: + type: boolean + n2InformationClass: + type: boolean + versions: + type: string + binding: + type: string + ManagedNFProfile: + type: object + properties: + nfInstanceID: + type: string + nfType: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + heartbeatTimer: + type: integer + authzInfo: + type: string + hostAddr: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/HostAddr' + allowedPLMNs: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + allowedSNPNs: + type: array + items: + $ref: '#/components/schemas/SnpnInfo' + allowedNfTypes: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + allowedNfDomains: + type: array + items: + type: string + allowedNSSAIs: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + locality: + type: string + capacity: + type: integer + nfSetIdList: + type: array + items: + type: string + servingScope: + type: array + items: + type: string + lcHSupportInd: + type: boolean + olcHSupportInd: + type: boolean + nfSetRecoveryTimeList: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + scpDomains: + type: array + items: + type: string + recoveryTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + nfServicePersistence: + type: boolean + nfProfileChangesSupportInd: + type: boolean + defaultNotificationSubscriptions: + type: array + items: + $ref: '#/components/schemas/DefaultNotificationSubscription' + minItems: 1 + serviceSetRecoveryTimeList: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + minItems: 1 + vendorId: + type: string + SEPPType: + type: string + description: any of enumerated value + enum: + - CSEPP + - PSEPP + SupportedFunc: + type: object + properties: + function: + type: string + policy: + type: string + SupportedFuncList: + type: array + items: + $ref: '#/components/schemas/SupportedFunc' + CommModelType: + type: string + description: any of enumerated value + enum: + - DIRECT_COMMUNICATION_WO_NRF + - DIRECT_COMMUNICATION_WITH_NRF + - INDIRECT_COMMUNICATION_WO_DEDICATED_DISCOVERY + - INDIRECT_COMMUNICATION_WITH_DEDICATED_DISCOVERY + CommModel: + type: object + properties: + groupId: + type: integer + commModelType: + $ref: '#/components/schemas/CommModelType' + targetNFServiceList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + commModelConfiguration: + type: string + CommModelList: + type: array + items: + $ref: '#/components/schemas/CommModel' + CapabilityList: + type: array + items: + type: string + FiveQiDscpMapping: + type: object + properties: + fiveQIValues: + type: array + items: + type: integer + dscp: + type: integer + NetworkSliceInfo: + type: object + properties: + sNSSAI: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + cNSIId: + $ref: '#/components/schemas/CNSIId' + networkSliceRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + NetworkSliceInfoList: + type: array + items: + $ref: '#/components/schemas/NetworkSliceInfo' + + PacketErrorRate: + type: object + properties: + scalar: + type: integer + exponent: + type: integer + + GtpUPathDelayThresholdsType: + type: object + properties: + n3AveragePacketDelayThreshold: + type: integer + n3MinPacketDelayThreshold: + type: integer + n3MaxPacketDelayThreshold: + type: integer + n9AveragePacketDelayThreshold: + type: integer + n9MinPacketDelayThreshold: + type: integer + n9MaxPacketDelayThreshold: + type: integer + QFPacketDelayThresholdsType: + type: object + properties: + thresholdDl: + type: integer + thresholdUl: + type: integer + thresholdRtt: + type: integer + + QosData: + type: object + properties: + qosId: + type: string + fiveQIValue: + type: integer + maxbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + qosNotificationControl: + type: boolean + reflectiveQos: + type: boolean + sharingKeyDl: + type: string + sharingKeyUl: + type: string + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxPacketLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + extMaxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVolRm' + + QosDataList: + type: array + items: + $ref: '#/components/schemas/QosData' + + SteeringMode: + type: object + properties: + steerModeValue: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteerModeValue' + active: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + standby: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessTypeRm' + threeGLoad: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + prioAcc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + + TrafficControlData: + type: object + properties: + tcId: + type: string + flowStatus: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowStatus' + redirectInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RedirectInformation' + addRedirectInfo: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RedirectInformation' + minItems: 1 + muteNotif: + type: boolean + trafficSteeringPolIdDl: + type: string + nullable: true + trafficSteeringPolIdUl: + type: string + nullable: true + routeToLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + traffCorreInd: + type: boolean + upPathChgEvent: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UpPathChgEvent' + steerFun: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteeringFunctionality' + steerModeDl: + $ref: '#/components/schemas/SteeringMode' + steerModeUl: + $ref: '#/components/schemas/SteeringMode' + mulAccCtrl: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/MulticastAccessControl' + snssaiList: + $ref: '#/components/schemas/SnssaiList' + + TrafficControlDataList: + type: array + items: + $ref: '#/components/schemas/TrafficControlData' + + PccRule: + type: object + properties: + pccRuleId: + type: string + description: Univocally identifies the PCC rule within a PDU session. + flowInfoList: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowInformation' + applicationId: + type: string + appDescriptor: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ApplicationDescriptor' + contentVersion: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ContentVersion' + precedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + afSigProtocol: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AfSigProtocol' + isAppRelocatable: + type: boolean + isUeAddrPreserved: + type: boolean + qosData: + type: array + items: + $ref: '#/components/schemas/QosDataList' + altQosParams: + type: array + items: + $ref: '#/components/schemas/QosDataList' + trafficControlData: + type: array + items: + $ref: '#/components/schemas/TrafficControlDataList' + conditionData: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ConditionData' + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + + SnssaiInfo: + type: object + properties: + plmnInfo: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfo' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + + NsacfInfoSnssai: + type: object + properties: + SnssaiInfo: + $ref: '#/components/schemas/SnssaiInfo' + isSubjectToNsac: + type: boolean + maxNumberofUEs: + type: integer + eACMode: + type: string + enum: + - INACTIVE + - ACTIVE + activeEacThreshold: + type: integer + deactiveEacThreshold: + type: integer + numberofUEs: + type: integer + uEIdList: + type: array + items: + type: string + maxNumberofPDUSessions: + type: integer + + NRTACRange: + type: object + properties: + nRTACstart: + type: string + nRTACend: + type: string + nRTACpattern: + type: string + + TaiRange: + type: object + properties: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + nRTACRangelist: + type: array + items: + $ref: '#/components/schemas/NRTACRange' + + GUAMInfo: + type: object + properties: + pLMNId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + aMFIdentifier: + type: integer + + SupportedBMOList: + type: array + items: + type: string + + ECSAddrConfigInfo: + type: array + items: + type: string + + DnnSmfInfoItem: + type: object + properties: + dnn: + type: string + dnaiList: + type: array + items: + type: string + + SnssaiSmfInfoItem: + type: object + properties: + sNSSAI: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + dnnSmfInfoList: + type: array + items: + $ref: '#/components/schemas/DnnSmfInfoItem' + + 5GCNfConnEcmInfoList: + type: array + items: + $ref: '#/components/schemas/5GCNfConnEcmInfo' + 5GCNfConnEcmInfo: + type: object + description: 'Store the 5GC NF connection information' + properties: + 5GCNFType: + type: string + enum: + - PCF + - NEF + - SCEF + 5GCNFIpAddress: + type: string + 5GCNFRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + UPFConnectionInfo: + type: object + properties: + uPFIpAddress: + type: string + uPFRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + SnssaiList: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + SnpnId: + type: object + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + nid: + type: string + SnpnInfo: + type: object + properties: + snpnId: + $ref: '#/components/schemas/SnpnId' + snssai: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + TaiList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tai' + SupiRange: + type: object + properties: + start: + type: string + end: + type: string + pattern: + type: string + IdentityRange: + type: object + properties: + start: + type: string + end: + type: string + pattern: + type: string + ProseCapability: + type: object + properties: + proseDirectDiscovery: + type: boolean + proseDirectCommunication: + type: boolean + proseL2UetoNetworkRelay: + type: boolean + proseL3UetoNetworkRelay: + type: boolean + proseL2RemoteUe: + type: boolean + proseL3RemoteUe: + type: boolean + V2xCapability: + type: object + properties: + lteV2x: + type: boolean + nrV2x: + type: boolean + InternalGroupIdRange: + type: object + properties: + start: + type: string + end: + type: string + pattern: + type: string + SuciInfo: + type: object + properties: + routingInds: + type: array + items: + type: string + hNwPubKeyIds: + type: array + items: + type: integer + SuciInfoList: + type: array + items: + $ref: '#/components/schemas/SuciInfo' + SharedDataIdRange: + type: object + properties: + pattern: + type: string + SupiRangeList: + type: array + items: + $ref: '#/components/schemas/SupiRange' + IdentityRangeList: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + InternalGroupIdRangeList: + type: array + items: + $ref: '#/components/schemas/InternalGroupIdRange' + SupportedDataSetList: + type: array + items: + $ref: '#/components/schemas/SupportedDataSet' + SharedDataIdRangeList: + type: array + items: + $ref: '#/components/schemas/SharedDataIdRange' + InterfaceUpfInfoItem: + type: object + properties: + interfaceType: + type: string + enum: + - IPV4ENDPOINTADDRESSES + - IPV6ENDPOINTADDRESSES + - FQDN + ipv4EndpointAddresses: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + ipv6EndpointAddresses: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + networkInstance: + type: string + + AtsssCapability: + type: object + properties: + atsssLL: + type: boolean + mptcp: + type: boolean + rttWithoutPmf: + type: boolean + + IpInterface: + type: object + properties: + ipv4EndpointAddresses: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + ipv6EndpointAddresses: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + + Ipv4AddressRange: + description: Range of IPv4 addresses + type: object + properties: + start: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + end: + $ref: 'TS28623_ComDefs.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' + Nid: + type: string + pattern: '^[A-Fa-f0-9]{11}$' + PlmnIdNid: + type: object + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + nid: + $ref: '#/components/schemas/Nid' + ScpCapability: + type: string + enum: + - INDIRECT_COM_WITH_DELEG_DISC + IpReachability: + description: Indicates the type(s) of IP addresses reachable via an SCP + anyOf: + - type: string + enum: + - IPV4 + - IPV6 + - IPV4V6 + - type: string + + ScpDomainInfo: + description: SCP Domain specific information + type: object + properties: + scpFqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + scpIpEndPoints: + type: array + items: + $ref: 'TS28541_5GcNrm.yaml#/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 + + SeppInfo: + description: Information of a SEPP Instance + type: object + properties: + seppPrefix: + type: string + 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: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + minItems: 1 + remoteSnpnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + + 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 + + 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 + + NsacfInfo: + description: Information of a NSACF NF Instance + type: object + required: + - nsacfCapability + properties: + nsacfCapability: + $ref: '#/components/schemas/NsacfCapability' + taiList: + $ref: '#/components/schemas/TaiList' + 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 + 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: + $ref: '#/components/schemas/SnssaiList' + trackingAreaList: + $ref: '#/components/schemas/TaiList' + + 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: + $ref: '#/components/schemas/TaiList' + 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: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + minItems: 1 + mlAnalyticsList: + type: array + items: + $ref: '#/components/schemas/MlAnalyticsInfo' + minItems: 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: '#/components/schemas/PlmnIdNid' + minItems: 1 + ipReachability: + $ref: '#/components/schemas/IpReachability' + scpCapabilities: + type: array + items: + $ref: '#/components/schemas/ScpCapability' + + 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 + AfEvent: + description: Represents Application Events. + anyOf: + - type: string + enum: + - SVC_EXPERIENCE + - UE_MOBILITY + - UE_COMM + - EXCEPTIONS + - USER_DATA_CONGESTION + - PERF_DATA + - DISPERSION + - COLLECTIVE_BEHAVIOUR + - MS_QOE_METRICS + - MS_CONSUMPTION + - MS_NET_ASSIST_INVOCATION + - MS_DYN_POLICY_INVOCATION + - MS_ACCESS_ACTIVITY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + AfEventExposureData: + description: AF Event Exposure data managed by a given NEF Instance + type: object + required: + - afEvents + properties: + afEvents: + type: array + items: + $ref: '#/components/schemas/AfEvent' + minItems: 1 + afIds: + type: array + items: + type: string + minItems: 1 + appIds: + type: array + items: + type: string + minItems: 1 + 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 + 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' + 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: 'TS28623_ComDefs.yaml#/components/schemas/IpAddr' + minItems: 1 + upfN6IpAddressList: + type: array + items: + $ref: 'TS28623_ComDefs.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 + 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 + 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: '#/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 + ExternalClientType: + description: Indicates types of External Clients. + anyOf: + - type: string + enum: + - EMERGENCY_SERVICES + - VALUE_ADDED_SERVICES + - PLMN_OPERATOR_SERVICES + - LAWFUL_INTERCEPT_SERVICES + - PLMN_OPERATOR_BROADCAST_SERVICES + - PLMN_OPERATOR_OM + - PLMN_OPERATOR_ANONYMOUS_STATISTICS + - PLMN_OPERATOR_TARGET_MS_SERVICE_SUPPORT + - type: string + SupportedGADShapes: + description: Indicates supported GAD shapes. + anyOf: + - type: string + enum: + - POINT + - POINT_UNCERTAINTY_CIRCLE + - POINT_UNCERTAINTY_ELLIPSE + - POLYGON + - POINT_ALTITUDE + - POINT_ALTITUDE_UNCERTAINTY + - ELLIPSOID_ARC + - LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE + - LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID + - type: string + AnNodeType: + description: Access Network Node Type (gNB, ng-eNB...) + anyOf: + - type: string + enum: + - GNB + - NG_ENB + - type: string + + LmfInfo: + description: Information of an LMF NF Instance + type: object + properties: + servingClientTypes: + type: array + items: + $ref: '#/components/schemas/ExternalClientType' + minItems: 1 + lmfId: + type: string + 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: '#/components/schemas/SupportedGADShapes' + 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: + $ref: '#/components/schemas/IdentityRangeList' + supportedDataSets: + $ref: '#/components/schemas/SupportedDataSetList' + sharedDataIdRanges: + $ref: '#/components/schemas/SharedDataIdRangeList' + 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 + PlmnRange: + description: Range of PLMN IDs + type: object + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + + SmsfInfo: + description: Specific Data for SMSF + type: object + properties: + roamingUeInd: + type: boolean + remotePlmnRangeList: + type: array + items: + $ref: '#/components/schemas/PlmnRange' + minItems: 1 + + DccfInfo: + description: Specific Data for DCCF + type: object + properties: + servingNfTypeList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + minItems: 1 + servingNfSetIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + taiList: + $ref: '#/components/schemas/TaiList' + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + minItems: 1 + + MfafInfo: + description: Information of a MFAF NF Instance + type: object + properties: + servingNfTypeList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/NFType' + servingNfSetIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + taiList: + $ref: '#/components/schemas/TaiList' + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + + ChfInfo: + description: Information of a CHF NF Instance + type: object + not: + required: [ primaryChfInstance, secondaryChfInstance ] + properties: + supiRangeList: + type: array + items: + $ref: '#/components/schemas/SupiRange' + minItems: 0 + gpsiRangeList: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + minItems: 0 + plmnRangeList: + type: array + items: + $ref: '#/components/schemas/PlmnRange' + minItems: 0 + groupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + primaryChfInstance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + secondaryChfInstance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + 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 + # highLatencyCom: + # type: boolean + + 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: 'TS28623_ComDefs.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 + # deprecated: true + # ismfSupportInd: + # type: boolean + # smfUPRPCapability: + # type: boolean + # default: false + + 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 + # sxaInd: + # type: boolean + 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' + $ref: '#/components/schemas/IpInterface' + tngfInfo: + # $ref: '#/components/schemas/TngfInfo' + $ref: '#/components/schemas/IpInterface' + twifInfo: + # $ref: '#/components/schemas/TwifInfo' + $ref: '#/components/schemas/IpInterface' + 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 + # upfEvents: + # type: array + # items: + # $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/EventType' + # minItems: 1 + + 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' + + NefInfo: + description: Information of an NEF NF Instance + type: object + properties: + nefId: + # $ref: '#/components/schemas/NefId' + type: string + 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: + $ref: '#/components/schemas/TaiList' + 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 + + 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 + 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 + NTNPLMNRestrictionsInfo: + description: restrictions per PLMN that relates to non-terrestrial network access + type: object + properties: + pLMNId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + blockedLocationInfoList: + type: array + items: + $ref: '#/components/schemas/BlockedLocationInfoList' + minItems: 1 + BlockedLocationInfoList: + description: location for which the PLMN access restrictions are to be applied in case of NTN + type: object + properties: + blockedLocation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + blockedDur: + $ref: '#/components/schemas/TimeDuration' + blockedSlice: + type: string + TimeDuration: + description: location for which the PLMN access restrictions are to be applied in case of NTN + type: object + properties: + blockedDurStartTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + blockedDurEndTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + + GmlcInfo: + description: Information of a GMLC NF Instance + type: object + properties: + servingClientTypes: + type: array + items: + $ref: '#/components/schemas/ExternalClientType' + gmlcNumbers: + type: array + items: + type: string + pattern: '^[0-9]{5,15}$' + + 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' + 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: 0 + externalGroupIdentifiersRanges: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + supiRanges: + type: array + items: + $ref: '#/components/schemas/SupiRange' + gpsiRanges: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + internalGroupIdentifiersRanges: + type: array + items: + $ref: '#/components/schemas/InternalGroupIdRange' + + BsfInfo: + description: Information of a BSF NF Instance + type: object + properties: + dnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 0 + ipDomainList: + type: array + items: + type: string + minItems: 0 + ipv4AddressRanges: + type: array + items: + $ref: '#/components/schemas/Ipv4AddressRange' + minItems: 0 + ipv6PrefixRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6PrefixRange' + minItems: 0 + 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: 0 + gpsiRanges: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + minItems: 0 + + 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}$' + +#-------- Definition of concrete IOCs -------------------------------------------- + ProvMnS: + oneOf: + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + - type: object + properties: + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + ExternalAmfFunction: + $ref: '#/components/schemas/ExternalAmfFunction-Multiple' + ExternalNrfFunction: + $ref: '#/components/schemas/ExternalNrfFunction-Multiple' + ExternalNssfFunction: + $ref: '#/components/schemas/ExternalNssfFunction-Multiple' + AmfSet: + $ref: '#/components/schemas/AmfSet-Multiple' + AmfRegion: + $ref: '#/components/schemas/AmfRegion-Multiple' + Configurable5QISet: + $ref: '#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: '#/components/schemas/Dynamic5QISet-Multiple' + EcmConnectionInfo: + $ref: '#/components/schemas/EcmConnectionInfo-Multiple' + + ManagedElement-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-ncO' + - type: object + properties: + AmfFunction: + $ref: '#/components/schemas/AmfFunction-Multiple' + SmfFunction: + $ref: '#/components/schemas/SmfFunction-Multiple' + UpfFunction: + $ref: '#/components/schemas/UpfFunction-Multiple' + N3iwfFunction: + $ref: '#/components/schemas/N3iwfFunction-Multiple' + PcfFunction: + $ref: '#/components/schemas/PcfFunction-Multiple' + AusfFunction: + $ref: '#/components/schemas/AusfFunction-Multiple' + UdmFunction: + $ref: '#/components/schemas/UdmFunction-Multiple' + UdrFunction: + $ref: '#/components/schemas/UdrFunction-Multiple' + UdsfFunction: + $ref: '#/components/schemas/UdsfFunction-Multiple' + NrfFunction: + $ref: '#/components/schemas/NrfFunction-Multiple' + NssfFunction: + $ref: '#/components/schemas/NssfFunction-Multiple' + SmsfFunction: + $ref: '#/components/schemas/SmsfFunction-Multiple' + LmfFunction: + $ref: '#/components/schemas/LmfFunction-Multiple' + NgeirFunction: + $ref: '#/components/schemas/NgeirFunction-Multiple' + SeppFunction: + $ref: '#/components/schemas/SeppFunction-Multiple' + NwdafFunction: + $ref: '#/components/schemas/NwdafFunction-Multiple' + ScpFunction: + $ref: '#/components/schemas/ScpFunction-Multiple' + NefFunction: + $ref: '#/components/schemas/NefFunction-Multiple' + Configurable5QISet: + $ref: '#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: '#/components/schemas/Dynamic5QISet-Multiple' + EcmConnectionInfo: + $ref: '#/components/schemas/EcmConnectionInfo-Multiple' + EASDFFunction: + $ref: '#/components/schemas/EASDFFunction-Multiple' + NSSAAFFunction: + $ref: '#/components/schemas/NssaafFunction-Multiple' + AFFunction: + $ref: '#/components/schemas/AfFunction-Multiple' + DCCFFunction: + $ref: '#/components/schemas/DccfFunction-Multiple' + ChfFunction: + $ref: '#/components/schemas/ChfFunction-Multiple' + MFAFFunction: + $ref: '#/components/schemas/MfafFunction-Multiple' + GMLCFunction: + $ref: '#/components/schemas/GmlcFunction-Multiple' + TSCTSFFunction: + $ref: '#/components/schemas/TsctsfFunction-Multiple' + AANFFunction: + $ref: '#/components/schemas/AanfFunction-Multiple' + BSFFunction: + $ref: '#/components/schemas/BsfFunction-Multiple' + + AmfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + amfIdentifier: + $ref: '#/components/schemas/AmfIdentifier' + sBIFqdn: + type: string + interPlmnFQDN: + type: string + weightFactor: + $ref: '#/components/schemas/WeightFactor' + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + amfSetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + nTNPLMNInfoList: + $ref: '#/components/schemas/NTNPLMNRestrictionsInfo' + amfInfo: + $ref: '#/components/schemas/AmfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N2: + $ref: '#/components/schemas/EP_N2-Multiple' + EP_N8: + $ref: '#/components/schemas/EP_N8-Multiple' + EP_N11: + $ref: '#/components/schemas/EP_N11-Multiple' + EP_N12: + $ref: '#/components/schemas/EP_N12-Multiple' + EP_N14: + $ref: '#/components/schemas/EP_N14-Multiple' + EP_N15: + $ref: '#/components/schemas/EP_N15-Multiple' + EP_N17: + $ref: '#/components/schemas/EP_N17-Multiple' + EP_N20: + $ref: '#/components/schemas/EP_N20-Multiple' + EP_N22: + $ref: '#/components/schemas/EP_N22-Multiple' + EP_N26: + $ref: '#/components/schemas/EP_N26-Multiple' + EP_NLS: + $ref: '#/components/schemas/EP_NLS-Multiple' + EP_NL2: + $ref: '#/components/schemas/EP_NL2-Multiple' + EP_N58: + $ref: '#/components/schemas/EP_N58-Multiple' + EP_N41: + $ref: '#/components/schemas/EP_N41-Multiple' + EP_N42: + $ref: '#/components/schemas/EP_N42-Multiple' + EP_N89: + $ref: '#/components/schemas/EP_N89-Multiple' + AmfSet-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + nRTACList: + $ref: '#/components/schemas/TACList' + amfSetId: + $ref: '#/components/schemas/AmfSetId' + snssaiList: + $ref: '#/components/schemas/SnssaiList' + aMFRegionRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + aMFSetMemberList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + AmfRegion-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + nRTACList: + $ref: '#/components/schemas/TACList' + amfRegionId: + $ref: '#/components/schemas/AmfRegionId' + snssaiList: + $ref: '#/components/schemas/SnssaiList' + aMFSetListRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + SmfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + nRTACList: + $ref: '#/components/schemas/TACList' + sBIFqdn: + type: string + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + SmfInfo: + $ref: '#/components/schemas/SmfInfo' + configurable5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dynamic5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N4: + $ref: '#/components/schemas/EP_N4-Multiple' + EP_N7: + $ref: '#/components/schemas/EP_N7-Multiple' + EP_N10: + $ref: '#/components/schemas/EP_N10-Multiple' + EP_N11: + $ref: '#/components/schemas/EP_N11-Multiple' + EP_N16: + $ref: '#/components/schemas/EP_N16-Multiple' + EP_S5C: + $ref: '#/components/schemas/EP_S5C-Multiple' + EP_N40: + $ref: '#/components/schemas/EP_N40-Multiple' + EP_N88: + $ref: '#/components/schemas/EP_N88-Multiple' + FiveQiDscpMappingSet: + $ref: '#/components/schemas/FiveQiDscpMappingSet-Single' + GtpUPathQoSMonitoringControl: + $ref: '#/components/schemas/GtpUPathQoSMonitoringControl-Single' + QFQoSMonitoringControl: + $ref: '#/components/schemas/QFQoSMonitoringControl-Single' + PredefinedPccRuleSet: + $ref: '#/components/schemas/PredefinedPccRuleSet-Single' + + UpfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + nRTACList: + $ref: '#/components/schemas/TACList' + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + supportedBMOList: + $ref: '#/components/schemas/SupportedBMOList' + upfInfo: + $ref: '#/components/schemas/UpfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N3: + $ref: '#/components/schemas/EP_N3-Multiple' + EP_N4: + $ref: '#/components/schemas/EP_N4-Multiple' + EP_N6: + $ref: '#/components/schemas/EP_N6-Multiple' + EP_N9: + $ref: '#/components/schemas/EP_N9-Multiple' + EP_S5U: + $ref: '#/components/schemas/EP_S5U-Multiple' + N3iwfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + commModelList: + $ref: '#/components/schemas/CommModelList' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N3: + $ref: '#/components/schemas/EP_N3-Multiple' + EP_N4: + $ref: '#/components/schemas/EP_N4-Multiple' + PcfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + supportedBMOList: + $ref: '#/components/schemas/SupportedBMOList' + PcfInfo: + $ref: '#/components/schemas/PcfInfo' + configurable5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dynamic5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N5: + $ref: '#/components/schemas/EP_N5-Multiple' + EP_N7: + $ref: '#/components/schemas/EP_N7-Multiple' + EP_N15: + $ref: '#/components/schemas/EP_N15-Multiple' + EP_N16: + $ref: '#/components/schemas/EP_N16-Multiple' + EP_N28: + $ref: '#/components/schemas/EP_N28-Multiple' + EP_Rx: + $ref: '#/components/schemas/EP_Rx-Multiple' + EP_N84: + $ref: '#/components/schemas/EP_N84-Multiple' + PredefinedPccRuleSet: + $ref: '#/components/schemas/PredefinedPccRuleSet-Single' + + AusfFunction-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: + plmnInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + ausfInfo: + $ref: '#/components/schemas/AusfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N12: + $ref: '#/components/schemas/EP_N12-Multiple' + EP_N13: + $ref: '#/components/schemas/EP_N13-Multiple' + EP_N61: + $ref: '#/components/schemas/EP_N61-Multiple' + UdmFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + eCSAddrConfigInfo: + $ref: '#/components/schemas/ECSAddrConfigInfo' + udmInfo: + $ref: '#/components/schemas/UdmInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N8: + $ref: '#/components/schemas/EP_N8-Multiple' + EP_N10: + $ref: '#/components/schemas/EP_N10-Multiple' + EP_N13: + $ref: '#/components/schemas/EP_N13-Multiple' + EP_N59: + $ref: '#/components/schemas/EP_N13-Multiple' + EP_NL6: + $ref: '#/components/schemas/EP_NL6-Multiple' + EP_N87: + $ref: '#/components/schemas/EP_N87-Multiple' + UdrFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + udrInfo: + $ref: '#/components/schemas/UdrInfo' + + UdsfFunction-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: + plmnInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + udsfInfo: + $ref: '#/components/schemas/UdsfInfo' + + NrfFunction-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: + plmnInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + nFProfileList: + $ref: '#/components/schemas/NFProfileList' + nrfInfo: + $ref: '#/components/schemas/NrfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N27: + $ref: '#/components/schemas/EP_N27-Multiple' + EP_N96: + $ref: '#/components/schemas/EP_N96-Multiple' + NssfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + nFProfileList: + $ref: '#/components/schemas/NFProfileList' + commModelList: + $ref: '#/components/schemas/CommModelList' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N22: + $ref: '#/components/schemas/EP_N22-Multiple' + EP_N31: + $ref: '#/components/schemas/EP_N31-Multiple' + SmsfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + smsfInfo: + $ref: '#/components/schemas/SmsfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N20: + $ref: '#/components/schemas/EP_N20-Multiple' + EP_N21: + $ref: '#/components/schemas/EP_N21-Multiple' + EP_MAP_SMSC: + $ref: '#/components/schemas/EP_MAP_SMSC-Multiple' + LmfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + lmfInfo: + $ref: '#/components/schemas/LmfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_NLS: + $ref: '#/components/schemas/EP_NLS-Multiple' + NgeirFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + sBIFqdn: + type: string + snssaiList: + $ref: '#/components/schemas/SnssaiList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N17: + $ref: '#/components/schemas/EP_N17-Multiple' + SeppFunction-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: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + sEPPType: + $ref: '#/components/schemas/SEPPType' + sEPPId: + type: integer + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + seppInfo: + $ref: '#/components/schemas/SeppInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N32: + $ref: '#/components/schemas/EP_N32-Multiple' + NwdafFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + sBIFqdn: + type: string + snssaiList: + $ref: '#/components/schemas/SnssaiList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + networkSliceInfoList: + $ref: '#/components/schemas/NetworkSliceInfoList' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + nwdafInfo: + $ref: '#/components/schemas/NwdafInfo' + nwdafLogicalFuncSupported: + type: string + enum: + - NWDAF_WITH_ANLF + - NWDAF_WITH_MTLF + - NWDAF_WITH_ANLF_MTLF + - type: object + properties: + EP_NL3: + $ref: '#/components/schemas/EP_NL3-Multiple' + + ScpFunction-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: + supportedFuncList: + $ref: '#/components/schemas/SupportedFuncList' + address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/HostAddr' + scpInfo: + $ref: '#/components/schemas/ScpInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + NefFunction-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: + sBIFqdn: + type: string + snssaiList: + $ref: '#/components/schemas/SnssaiList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + capabilityList: + $ref: '#/components/schemas/CapabilityList' + isCAPIFSup: + type: boolean + nefInfo: + $ref: '#/components/schemas/NefInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N33: + $ref: '#/components/schemas/EP_N33-Multiple' + EP_NL5: + $ref: '#/components/schemas/EP_NL5-Multiple' + EP_N85: + $ref: '#/components/schemas/EP_N85-Multiple' + EP_N62: + $ref: '#/components/schemas/EP_N62-Multiple' + EP_N63: + $ref: '#/components/schemas/EP_N63-Multiple' + + NsacfFunction-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: + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + nsacfInfoSnssai: + type: array + items: + $ref: '#/components/schemas/NsacfInfoSnssai' + nsacfInfo: + $ref: '#/components/schemas/NsacfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N60: + $ref: '#/components/schemas/EP_N60-Multiple' + + DDNMFFunction-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: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_Npc4: + $ref: '#/components/schemas/EP_Npc4-Multiple' + EP_Npc6: + $ref: '#/components/schemas/EP_Npc6-Multiple' + EP_Npc7: + $ref: '#/components/schemas/EP_Npc7-Multiple' + EP_Npc8: + $ref: '#/components/schemas/EP_Npc8-Multiple' + + EASDFFunction-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: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + serverAddr: + type: string + easdfInfo: + $ref: '#/components/schemas/EasdfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N88: + $ref: '#/components/schemas/EP_N88-Multiple' + + EcmConnectionInfo-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + eASServiceArea: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/ServingLocation' + eESServiceArea: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/ServingLocation' + eDNServiceArea: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/ServingLocation' + eASIpAddress: + type: string + eESIpAddress: + type: string + eCSIpAddress: + type: string + ednIdentifier: + type: string + ecmConnectionType: + type: string + enum: + - USERPLANE + - CONTROLPLANE + - BOTH + 5GCNfConnEcmInfoList: + $ref: '#/components/schemas/5GCNfConnEcmInfoList' + uPFConnectionInfo: + $ref: '#/components/schemas/UPFConnectionInfo' + + + ExternalAmfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + amfIdentifier: + $ref: '#/components/schemas/AmfIdentifier' + ExternalNrfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + ExternalNssfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + ExternalSeppFunction-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: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + sEPPId: + type: integer + fqdn: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Fqdn' + + + EP_N2-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N3-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + epTransportRefs: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + EP_N4-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N5-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N6-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N7-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N8-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N9-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N10-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N11-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N12-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N13-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N14-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N15-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N16-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N17-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N20-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N21-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N22-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N26-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N27-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + + EP_N31-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N32-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + remotePlmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + remoteSeppAddress: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/HostAddr' + remoteSeppId: + type: integer + n32cParas: + type: string + n32fPolicy: + type: string + withIPX: + type: boolean + EP_N33-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_S5C-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_S5U-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_Rx-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_MAP_SMSC-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NLS-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NL2-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NL3-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NL5-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NL6-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_NL9-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N60-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_Npc4-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_Npc6-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_Npc7-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_Npc8-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N88-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + FiveQiDscpMappingSet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + FiveQiDscpMappingList: + type: array + items: + $ref: '#/components/schemas/FiveQiDscpMapping' + + FiveQICharacteristics-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + fiveQIValue: + type: integer + resourceType: + type: string + enum: + - GBR + - NonGBR + priorityLevel: + type: integer + packetDelayBudget: + type: integer + packetErrorRate: + $ref: '#/components/schemas/PacketErrorRate' + averagingWindow: + type: integer + maximumDataBurstVolume: + type: integer + FiveQICharacteristics-Multiple: + type: array + items: + $ref: '#/components/schemas/FiveQICharacteristics-Single' + Configurable5QISet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + configurable5QIs: + $ref: '#/components/schemas/FiveQICharacteristics-Multiple' + + Dynamic5QISet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + dynamic5QIs: + $ref: '#/components/schemas/FiveQICharacteristics-Multiple' + + GtpUPathQoSMonitoringControl-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + gtpUPathQoSMonitoringState: + type: string + enum: + - ENABLED + - DISABLED + gtpUPathMonitoredSNSSAIs: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + monitoredDSCPs: + type: array + items: + type: integer + minimum: 0 + maximum: 255 + isEventTriggeredGtpUPathMonitoringSupported: + type: boolean + isPeriodicGtpUMonitoringSupported: + type: boolean + isImmediateGtpUMonitoringSupported: + type: boolean + gtpUPathDelayThresholds: + $ref: '#/components/schemas/GtpUPathDelayThresholdsType' + gtpUPathMinimumWaitTime: + type: integer + gtpUPathMeasurementPeriod: + type: integer + + QFQoSMonitoringControl-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + qFQoSMonitoringState: + type: string + enum: + - ENABLED + - DISABLED + qFMonitoredSNSSAIs: + type: array + items: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Snssai' + qFMonitored5QIs: + type: array + items: + type: integer + minimum: 0 + maximum: 255 + isEventTriggeredQFMonitoringSupported: + type: boolean + isPeriodicQFMonitoringSupported: + type: boolean + isSessionReleasedQFMonitoringSupported: + type: boolean + qFPacketDelayThresholds: + $ref: '#/components/schemas/QFPacketDelayThresholdsType' + qFMinimumWaitTime: + type: integer + qFMeasurementPeriod: + type: integer + + PredefinedPccRuleSet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + predefinedPccRules: + type: array + items: + $ref: '#/components/schemas/PccRule' + + AfFunction-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: + plmnIdList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnIdList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + trustAfInfo: + $ref: '#/components/schemas/TrustAfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N5: + $ref: '#/components/schemas/EP_N5-Multiple' + EP_N86: + $ref: '#/components/schemas/EP_N86-Multiple' + EP_N63: + $ref: '#/components/schemas/EP_N63-Multiple' + EP_N62: + $ref: '#/components/schemas/EP_N62-Multiple' + + NssaafFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + nFProfileList: + $ref: '#/components/schemas/NFProfileList' + commModelList: + $ref: '#/components/schemas/CommModelList' + nssafInfo: + $ref: '#/components/schemas/NssaafInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + EP_N58-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + EP_N59-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + DccfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + dccfInfo: + $ref: '#/components/schemas/DccfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + MfafFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + mfafInfo: + $ref: '#/components/schemas/MfafInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + ChfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + chfInfo: + $ref: '#/components/schemas/ChfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N28: + $ref: '#/components/schemas/EP_N28-Multiple' + EP_N40: + $ref: '#/components/schemas/EP_N40-Multiple' + EP_N41: + $ref: '#/components/schemas/EP_N41-Multiple' + EP_N42: + $ref: '#/components/schemas/EP_N42-Multiple' + + EP_N28-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N40-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N41-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N42-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + AanfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + aanfInfo: + $ref: '#/components/schemas/AanfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N61: + $ref: '#/components/schemas/EP_N61-Multiple' + EP_N62: + $ref: '#/components/schemas/EP_N62-Multiple' + EP_N63: + $ref: '#/components/schemas/EP_N63-Multiple' + EP_N61-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N62-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N63-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + + GmlcFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + gmlcInfo: + $ref: '#/components/schemas/GmlcInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_NL2: + $ref: '#/components/schemas/EP_NL2-Multiple' + EP_NL3: + $ref: '#/components/schemas/EP_NL3-Multiple' + EP_NL5: + $ref: '#/components/schemas/EP_NL5-Multiple' + EP_NL6: + $ref: '#/components/schemas/EP_NL6-Multiple' + EP_NL9: + $ref: '#/components/schemas/EP_NL9-Multiple' + TsctsfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + tsctsfInfo: + $ref: '#/components/schemas/TsctsfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_N84: + $ref: '#/components/schemas/EP_N84-Multiple' + EP_N85: + $ref: '#/components/schemas/EP_N85-Multiple' + EP_N86: + $ref: '#/components/schemas/EP_N86-Multiple' + EP_N87: + $ref: '#/components/schemas/EP_N87-Multiple' + EP_N89: + $ref: '#/components/schemas/EP_N89-Multiple' + EP_N96: + $ref: '#/components/schemas/EP_N96-Multiple' + + EP_N84-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N85-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N86-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N87-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N89-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + EP_N96-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/LocalAddress' + remoteAddress: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/RemoteAddress' + + BsfFunction-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: + pLMNInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + sBIFqdn: + type: string + cNSIIdList: + $ref: '#/components/schemas/CNSIIdList' + managedNFProfile: + $ref: '#/components/schemas/ManagedNFProfile' + commModelList: + $ref: '#/components/schemas/CommModelList' + bsfInfo: + $ref: '#/components/schemas/BsfInfo' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + ManagedElement-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedElement-Single' + AmfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/AmfFunction-Single' + SmfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/SmfFunction-Single' + UpfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/UpfFunction-Single' + N3iwfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/N3iwfFunction-Single' + PcfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/PcfFunction-Single' + AusfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/AusfFunction-Single' + UdmFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/UdmFunction-Single' + UdrFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/UdrFunction-Single' + UdsfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/UdsfFunction-Single' + NrfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NrfFunction-Single' + NssfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NssfFunction-Single' + SmsfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/SmsfFunction-Single' + LmfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/LmfFunction-Single' + NgeirFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NgeirFunction-Single' + SeppFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/SeppFunction-Single' + NwdafFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NwdafFunction-Single' + ScpFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ScpFunction-Single' + NefFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NefFunction-Single' + + NsacfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NsacfFunction-Single' + + ExternalAmfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalAmfFunction-Single' + ExternalNrfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalNrfFunction-Single' + ExternalNssfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalNssfFunction-Single' + ExternalSeppFunction-Nultiple: + type: array + items: + $ref: '#/components/schemas/ExternalSeppFunction-Single' + + AmfSet-Multiple: + type: array + items: + $ref: '#/components/schemas/AmfSet-Single' + AmfRegion-Multiple: + type: array + items: + $ref: '#/components/schemas/AmfRegion-Single' + + EASDFFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/EASDFFunction-Single' + + EP_N2-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N2-Single' + EP_N3-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N3-Single' + EP_N4-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N4-Single' + EP_N5-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N5-Single' + EP_N6-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N6-Single' + EP_N7-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N7-Single' + EP_N8-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N8-Single' + EP_N9-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N9-Single' + EP_N10-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N10-Single' + EP_N11-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N11-Single' + EP_N12-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N12-Single' + EP_N13-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N13-Single' + EP_N14-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N14-Single' + EP_N15-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N15-Single' + EP_N16-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N16-Single' + EP_N17-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N17-Single' + + EP_N20-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N20-Single' + EP_N21-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N21-Single' + EP_N22-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N22-Single' + + EP_N26-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N26-Single' + EP_N27-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N27-Single' + EP_N28-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N28-Single' + + EP_N31-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N31-Single' + EP_N32-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N32-Single' + EP_N33-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N33-Single' + EP_N40-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N40-Single' + EP_N41-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N41-Single' + EP_N42-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N42-Single' + + EP_S5C-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_S5C-Single' + EP_S5U-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_S5U-Single' + EP_Rx-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Rx-Single' + EP_MAP_SMSC-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_MAP_SMSC-Single' + EP_NLS-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NLS-Single' + EP_NL2-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NL2-Single' + EP_NL3-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NL3-Single' + EP_NL5-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NL5-Single' + EP_NL6-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NL6-Single' + EP_NL9-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NL9-Single' + EP_N60-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N60-Single' + EP_N61-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N61-Single' + EP_N62-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N62-Single' + EP_N63-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N63-Single' + EP_Npc4-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Npc4-Single' + EP_Npc6-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Npc6-Single' + EP_Npc7-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Npc7-Single' + EP_Npc8-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Npc8-Single' + EP_N84-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N84-Single' + EP_N85-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N85-Single' + EP_N86-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N86-Single' + EP_N87-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N87-Single' + EP_N88-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N88-Single' + EP_N89-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N89-Single' + EP_N96-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N96-Single' + Configurable5QISet-Multiple: + type: array + items: + $ref: '#/components/schemas/Configurable5QISet-Single' + Dynamic5QISet-Multiple: + type: array + items: + $ref: '#/components/schemas/Dynamic5QISet-Single' + EcmConnectionInfo-Multiple: + type: array + items: + $ref: '#/components/schemas/EcmConnectionInfo-Single' + NssaafFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/NssaafFunction-Single' + EP_N58-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N58-Single' + EP_N59-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_N59-Single' + AfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/AfFunction-Single' + DccfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/DccfFunction-Single' + ChfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ChfFunction-Single' + MfafFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/MfafFunction-Single' + GmlcFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/GmlcFunction-Single' + TsctsfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/TsctsfFunction-Single' + AanfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/AanfFunction-Single' + BsfFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/BsfFunction-Single' + +#------------ Definitions in TS 28.541 for TS 28.532 ----------------------------- + + resources-5gcNrm: + oneOf: + - $ref: '#/components/schemas/ProvMnS' + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/ManagedElement-Single' + - $ref: '#/components/schemas/AmfFunction-Single' + - $ref: '#/components/schemas/SmfFunction-Single' + - $ref: '#/components/schemas/UpfFunction-Single' + - $ref: '#/components/schemas/N3iwfFunction-Single' + - $ref: '#/components/schemas/PcfFunction-Single' + - $ref: '#/components/schemas/AusfFunction-Single' + - $ref: '#/components/schemas/UdmFunction-Single' + - $ref: '#/components/schemas/UdrFunction-Single' + - $ref: '#/components/schemas/UdsfFunction-Single' + - $ref: '#/components/schemas/NrfFunction-Single' + - $ref: '#/components/schemas/NssfFunction-Single' + - $ref: '#/components/schemas/SmsfFunction-Single' + - $ref: '#/components/schemas/LmfFunction-Single' + - $ref: '#/components/schemas/NgeirFunction-Single' + - $ref: '#/components/schemas/SeppFunction-Single' + - $ref: '#/components/schemas/NwdafFunction-Single' + - $ref: '#/components/schemas/ScpFunction-Single' + - $ref: '#/components/schemas/NefFunction-Single' + - $ref: '#/components/schemas/NsacfFunction-Single' + - $ref: '#/components/schemas/DDNMFFunction-Single' + + - $ref: '#/components/schemas/ExternalAmfFunction-Single' + - $ref: '#/components/schemas/ExternalNrfFunction-Single' + - $ref: '#/components/schemas/ExternalNssfFunction-Single' + - $ref: '#/components/schemas/ExternalSeppFunction-Single' + + - $ref: '#/components/schemas/AmfSet-Single' + - $ref: '#/components/schemas/AmfRegion-Single' + - $ref: '#/components/schemas/QFQoSMonitoringControl-Single' + - $ref: '#/components/schemas/GtpUPathQoSMonitoringControl-Single' + + - $ref: '#/components/schemas/EP_N2-Single' + - $ref: '#/components/schemas/EP_N3-Single' + - $ref: '#/components/schemas/EP_N4-Single' + - $ref: '#/components/schemas/EP_N5-Single' + - $ref: '#/components/schemas/EP_N6-Single' + - $ref: '#/components/schemas/EP_N7-Single' + - $ref: '#/components/schemas/EP_N8-Single' + - $ref: '#/components/schemas/EP_N9-Single' + - $ref: '#/components/schemas/EP_N10-Single' + - $ref: '#/components/schemas/EP_N11-Single' + - $ref: '#/components/schemas/EP_N12-Single' + - $ref: '#/components/schemas/EP_N13-Single' + - $ref: '#/components/schemas/EP_N14-Single' + - $ref: '#/components/schemas/EP_N15-Single' + - $ref: '#/components/schemas/EP_N16-Single' + - $ref: '#/components/schemas/EP_N17-Single' + + - $ref: '#/components/schemas/EP_N20-Single' + - $ref: '#/components/schemas/EP_N21-Single' + - $ref: '#/components/schemas/EP_N22-Single' + + - $ref: '#/components/schemas/EP_N26-Single' + - $ref: '#/components/schemas/EP_N27-Single' + - $ref: '#/components/schemas/EP_N28-Single' + + - $ref: '#/components/schemas/EP_N31-Single' + - $ref: '#/components/schemas/EP_N32-Single' + - $ref: '#/components/schemas/EP_N33-Single' + - $ref: '#/components/schemas/EP_N40-Single' + - $ref: '#/components/schemas/EP_N41-Single' + - $ref: '#/components/schemas/EP_N42-Single' + + - $ref: '#/components/schemas/EP_N58-Single' + - $ref: '#/components/schemas/EP_N59-Single' + - $ref: '#/components/schemas/EP_N60-Single' + - $ref: '#/components/schemas/EP_N61-Single' + - $ref: '#/components/schemas/EP_N62-Single' + - $ref: '#/components/schemas/EP_N63-Single' + - $ref: '#/components/schemas/EP_N84-Single' + - $ref: '#/components/schemas/EP_N85-Single' + - $ref: '#/components/schemas/EP_N86-Single' + - $ref: '#/components/schemas/EP_N87-Single' + - $ref: '#/components/schemas/EP_N88-Single' + - $ref: '#/components/schemas/EP_N89-Single' + - $ref: '#/components/schemas/EP_N96-Single' + + - $ref: '#/components/schemas/EP_Npc4-Single' + - $ref: '#/components/schemas/EP_Npc6-Single' + - $ref: '#/components/schemas/EP_Npc7-Single' + - $ref: '#/components/schemas/EP_Npc8-Single' + + - $ref: '#/components/schemas/EP_S5C-Single' + - $ref: '#/components/schemas/EP_S5U-Single' + - $ref: '#/components/schemas/EP_Rx-Single' + - $ref: '#/components/schemas/EP_MAP_SMSC-Single' + - $ref: '#/components/schemas/EP_NLS-Single' + - $ref: '#/components/schemas/EP_NL2-Single' + - $ref: '#/components/schemas/EP_NL3-Single' + - $ref: '#/components/schemas/EP_NL5-Single' + - $ref: '#/components/schemas/EP_NL6-Single' + - $ref: '#/components/schemas/EP_NL9-Single' + + - $ref: '#/components/schemas/Configurable5QISet-Single' + - $ref: '#/components/schemas/FiveQiDscpMappingSet-Single' + - $ref: '#/components/schemas/PredefinedPccRuleSet-Single' + - $ref: '#/components/schemas/Dynamic5QISet-Single' + - $ref: '#/components/schemas/EASDFFunction-Single' + - $ref: '#/components/schemas/EcmConnectionInfo-Single' + - $ref: '#/components/schemas/NssaafFunction-Single' + - $ref: '#/components/schemas/AfFunction-Single' + - $ref: '#/components/schemas/DccfFunction-Single' + - $ref: '#/components/schemas/ChfFunction-Single' + - $ref: '#/components/schemas/MfafFunction-Single' + - $ref: '#/components/schemas/GmlcFunction-Single' + - $ref: '#/components/schemas/TsctsfFunction-Single' + - $ref: '#/components/schemas/AanfFunction-Single' + - $ref: '#/components/schemas/BsfFunction-Single' diff --git a/TS28541_NrNrm.yaml b/TS28541_NrNrm.yaml new file mode 100644 index 0000000..0a50997 --- /dev/null +++ b/TS28541_NrNrm.yaml @@ -0,0 +1,2226 @@ +openapi: 3.0.1 +info: + title: NR NRM + version: 18.5.0 + description: >- + OAS 3.0.1 specification of the NR NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.541; 5G NRM, NR NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.541/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + + GnbId: + type: string + GnbIdLength: + type: integer + minimum: 22 + maximum: 32 + GnbName: + type: string + maxLength: 150 + GnbDuId: + type: number + minimum: 0 + maximum: 68719476735 + GnbCuUpId: + type: number + minimum: 0 + maximum: 68719476735 + + Sst: + type: integer + maximum: 255 + Snssai: + type: object + properties: + sst: + $ref: '#/components/schemas/Sst' + sd: + type: string + + PlmnIdList: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + PlmnInfo: + type: object + properties: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + snssai: + $ref: '#/components/schemas/Snssai' + PlmnInfoList: + type: array + items: + $ref: '#/components/schemas/PlmnInfo' + cagId: + type: string + nid: + type: string + NpnIdentity: + type: object + properties: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + cagidList: + $ref: '#/components/schemas/cagId' + nidList: + $ref: '#/components/schemas/nid' + NpnIdentityList: + type: array + items: + $ref: '#/components/schemas/NpnIdentity' + GGnbId: + type: string + pattern: '^[0-9]{3}[0-9]{2,3}-(22|23|24|25|26|27|28|29|30|31|32)-[0-9]{1,10}' + GEnbId: + type: string + pattern: '^[0-9]{3}[0-9]{2,3}-(18|20|21|22)-[0-9]{1,7}' + + GGnbIdList: + type: array + items: + $ref: '#/components/schemas/GGnbId' + + GEnbIdList: + type: array + items: + $ref: '#/components/schemas/GEnbId' + + NrPci: + type: integer + maximum: 503 + NrTac: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tac' + NrTacList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tac' + TaiList: + type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tai' + BackhaulAddress: + type: object + properties: + gnbId: + $ref: '#/components/schemas/GnbId' + tai: + $ref: "TS28623_GenericNrm.yaml#/components/schemas/Tai" + MappingSetIDBackhaulAddress: + type: object + properties: + setID: + type: integer + backhaulAddress: + $ref: '#/components/schemas/BackhaulAddress' + IntraRatEsActivationOriginalCellLoadParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + IntraRatEsActivationCandidateCellsLoadParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + IntraRatEsDeactivationCandidateCellsLoadParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + EsNotAllowedTimePeriod: + type: object + properties: + startTimeandendTime: + type: string + periodOfDay: + type: string + daysOfWeekList: + type: string + listoftimeperiods: + type: string + InterRatEsActivationOriginalCellParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + InterRatEsActivationCandidateCellParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + InterRatEsDeactivationCandidateCellParameters: + type: object + properties: + loadThreshold: + type: integer + timeDuration: + type: integer + + UeAccProbabilityDist: + type: object + properties: + targetProbability: + type: integer + numberofpreamblessent: + type: integer + + UeAccDelayProbabilityDist: + type: object + properties: + targetProbability: + type: integer + accessdelay: + type: integer + + NRPciList: + type: array + items: + $ref: '#/components/schemas/NrPci' + minItems: 0 + maxItems: 1007 + + CSonPciList: + type: array + items: + $ref: '#/components/schemas/NrPci' + minItems: 1 + maxItems: 100 + + MaximumDeviationHoTrigger: + type: integer + minimum: -20 + maximum: 20 + + MaximumDeviationHoTriggerLow: + type: integer + minimum: -20 + maximum: 20 + + MaximumDeviationHoTriggerHigh: + type: integer + minimum: -20 + maximum: 20 + + MinimumTimeBetweenHoTriggerChange: + type: integer + minimum: 0 + maximum: 604800 + + TstoreUEcntxt: + type: integer + minimum: 0 + maximum: 1023 + + CellState: + type: string + enum: + - IDLE + - INACTIVE + - ACTIVE + CyclicPrefix: + type: string + enum: + - '15' + - '30' + - '60' + - '120' + TxDirection: + type: string + enum: + - DL + - UL + - DL and UL + BwpContext: + type: string + enum: + - DL + - UL + - SUL + IsInitialBwp: + type: string + enum: + - INITIAL + - OTHER + - SUL + + IsESCoveredBy: + type: string + enum: + - NO + - PARTIAL + - FULL + RrmPolicyMember: + type: object + properties: + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + snssai: + $ref: '#/components/schemas/Snssai' + RrmPolicyMemberList: + type: array + items: + $ref: '#/components/schemas/RrmPolicyMember' + AddressWithVlan: + type: object + properties: + ipv4Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + ipv6Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + vlanId: + type: integer + minimum: 0 + maximum: 4096 + LocalAddress: + type: object + properties: + addressWithVlan: + $ref: '#/components/schemas/AddressWithVlan' + port: + type: integer + minimum: 0 + maximum: 65535 + RemoteAddress: + type: object + properties: + ipv4Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + ipv6Address: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + + CellIndividualOffset: + type: object + properties: + rsrpOffsetSSB: + type: integer + rsrqOffsetSSB: + type: integer + sinrOffsetSSB: + type: integer + rsrpOffsetCSI-RS: + type: integer + rsrqOffsetCSI-RS: + type: integer + sinrOffsetCSI-RS: + type: integer + QOffsetRange: + type: integer + enum: + - -24 + - -22 + - -20 + - -18 + - -16 + - -14 + - -12 + - -10 + - -8 + - -6 + - -5 + - -4 + - -3 + - -2 + - -1 + - 0 + - 24 + - 22 + - 20 + - 18 + - 16 + - 14 + - 12 + - 10 + - 8 + - 6 + - 5 + - 4 + - 3 + - 2 + - 1 + QOffsetRangeList: + type: object + properties: + rsrpOffsetSSB: + $ref: '#/components/schemas/QOffsetRange' + rsrqOffsetSSB: + $ref: '#/components/schemas/QOffsetRange' + sinrOffsetSSB: + $ref: '#/components/schemas/QOffsetRange' + rsrpOffsetCSI-RS: + $ref: '#/components/schemas/QOffsetRange' + rsrqOffsetCSI-RS: + $ref: '#/components/schemas/QOffsetRange' + sinrOffsetCSI-RS: + $ref: '#/components/schemas/QOffsetRange' + QOffsetFreq: + type: number + TReselectionNRSf: + type: integer + enum: + - 25 + - 50 + - 75 + - 100 + SsbPeriodicity: + type: integer + enum: + - 5 + - 10 + - 20 + - 40 + - 80 + - 160 + SsbDuration: + type: integer + enum: + - 1 + - 2 + - 3 + - 4 + - 5 + SsbSubCarrierSpacing: + type: integer + enum: + - 15 + - 30 + - 120 + - 240 + CoverageShape: + type: integer + maximum: 65535 + DigitalTilt: + type: integer + minimum: -900 + maximum: 900 + DigitalAzimuth: + type: integer + minimum: -1800 + maximum: 1800 + + RSSetId: + type: integer + maximum: 4194303 + + RSSetType: + type: string + enum: + - RS1 + - RS2 + + FrequencyDomainPara: + type: object + properties: + rimRSSubcarrierSpacing: + type: integer + rIMRSBandwidth: + type: integer + nrofGlobalRIMRSFrequencyCandidates: + type: integer + rimRSCommonCarrierReferencePoint: + type: integer + rimRSStartingFrequencyOffsetIdList: + type: array + items: + type: integer + + SequenceDomainPara: + type: object + properties: + nrofRIMRSSequenceCandidatesofRS1: + type: integer + rimRSScrambleIdListofRS1: + type: array + items: + type: integer + nrofRIMRSSequenceCandidatesofRS2: + type: integer + rimRSScrambleIdListofRS2: + type: array + items: + type: integer + enableEnoughNotEnoughIndication: + type: string + enum: + - ENABLE + - DISABLE + RIMRSScrambleTimerMultiplier: + type: integer + RIMRSScrambleTimerOffset: + type: integer + + TimeDomainPara: + type: object + properties: + dlULSwitchingPeriod1: + type: string + enum: + - MS0P5 + - MS0P625 + - MS1 + - MS1P25 + - MS2 + - MS2P5 + - MS3 + - MS4 + - MS5 + - MS10 + - MS20 + symbolOffsetOfReferencePoint1: + type: integer + dlULSwitchingPeriod2: + type: string + enum: + - MS0P5 + - MS0P625 + - MS1 + - MS1P25 + - MS2 + - MS2P5 + - MS3 + - MS4 + - MS5 + - MS10 + - MS20 + symbolOffsetOfReferencePoint2: + type: integer + totalnrofSetIdofRS1: + type: integer + totalnrofSetIdofRS2: + type: integer + nrofConsecutiveRIMRS1: + type: integer + nrofConsecutiveRIMRS2: + type: integer + consecutiveRIMRS1List: + type: array + items: + type: integer + consecutiveRIMRS2List: + type: array + items: + type: integer + enablenearfarIndicationRS1: + type: string + enum: + - ENABLE + - DISABLE + enablenearfarIndicationRS2: + type: string + enum: + - ENABLE + - DISABLE + + RimRSReportInfo: + type: object + properties: + detectedSetID: + type: integer + propagationDelay: + type: integer + functionalityOfRIMRS: + type: string + enum: + - RS1 + - RS2 + - RS1forEnoughMitigation + - RS1forNotEnoughMitigation + + RimRSReportConf: + type: object + properties: + reportIndicator: + type: string + enum: + - ENABLE + - DISABLE + reportInterval: + type: integer + nrofRIMRSReportInfo: + type: integer + maxPropagationDelay: + type: integer + rimRSReportInfoList: + type: array + items: + $ref: '#/components/schemas/RimRSReportInfo' + TceMappingInfo: + type: object + properties: + TceIPAddress: + oneOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + TceID: + type: integer + PlmnTarget: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + TceMappingInfoList: + type: array + items: + $ref: '#/components/schemas/TceMappingInfo' + ResourceType: + type: string + enum: + - PRB + - PRB_UL + - PRB_DL + - RRC + - DRB + ParameterRange: + type: object + properties: + maxValue: + type: integer + minValue: + type: integer + NTNTAClist: + type: array + items: + $ref: '#/components/schemas/NrTac' + Ephemeris: + type: object + oneOf: + - $ref: '#/components/schemas/PositionVelocity' + - $ref: '#/components/schemas/Orbital' + properties: + satelliteId: + type: integer + + PositionVelocity: + type: object + properties: + positionX: + type: integer + minimum: 0 + maximum: 604800 + positionY: + type: integer + minimum: 0 + maximum: 604800 + positionZ: + type: integer + minimum: 0 + maximum: 604800 + velocityVX: + type: integer + minimum: -131072 + maximum: 131071 + velocityVY: + type: integer + minimum: -131072 + maximum: 131071 + velocityVZ: + type: integer + minimum: -131072 + maximum: 131071 + + Orbital: + type: object + properties: + semiMajorAxis: + type: integer + minimum: 0 + maximum: 8589934591 + eccentricity: + type: integer + minimum: -524288 + maximum: 524287 + periapsis: + type: integer + minimum: 0 + maximum: 16777215 + longitude: + type: integer + minimum: 0 + maximum: 2097151 + inclination: + type: integer + minimum: -524288 + maximum: 524287 + meanAnomaly: + type: integer + minimum: 0 + maximum: 16777215 + +#-------- Definition of abstract IOCs -------------------------------------------- + + RrmPolicy_-Attr: + type: object + properties: + resourceType: + $ref: '#/components/schemas/ResourceType' + rRMPolicyMemberList: + $ref: '#/components/schemas/RrmPolicyMemberList' + + +#-------- Definition of concrete IOCs -------------------------------------------- + + MnS: + oneOf: + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + - type: object + properties: + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + ManagedElement: + $ref: '#/components/schemas/ManagedElement-Multiple' + NRFrequency: + $ref: '#/components/schemas/NRFrequency-Multiple' + ExternalGnbCuCpFunction: + $ref: '#/components/schemas/ExternalGnbCuCpFunction-Multiple' + ExternalENBFunction: + $ref: '#/components/schemas/ExternalENBFunction-Multiple' + EUtranFrequency: + $ref: '#/components/schemas/EUtranFrequency-Multiple' + DESManagementFunction: + $ref: '#/components/schemas/DESManagementFunction-Single' + DRACHOptimizationFunction: + $ref: '#/components/schemas/DRACHOptimizationFunction-Single' + DMROFunction: + $ref: '#/components/schemas/DMROFunction-Single' + DLBOFunction: + $ref: '#/components/schemas/DLBOFunction-Single' + DPCIConfigurationFunction: + $ref: '#/components/schemas/DPCIConfigurationFunction-Single' + CPCIConfigurationFunction: + $ref: '#/components/schemas/CPCIConfigurationFunction-Single' + CESManagementFunction: + $ref: '#/components/schemas/CESManagementFunction-Single' + Configurable5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Configurable5QISet-Multiple' + RimRSGlobal: + $ref: '#/components/schemas/RimRSGlobal-Single' + Dynamic5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Dynamic5QISet-Multiple' + CCOFunction: + $ref: '#/components/schemas/CCOFunction-Single' + ManagedElement-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedElement-ncO' + - type: object + properties: + GnbDuFunction: + $ref: '#/components/schemas/GnbDuFunction-Multiple' + GnbCuUpFunction: + $ref: '#/components/schemas/GnbCuUpFunction-Multiple' + GnbCuCpFunction: + $ref: '#/components/schemas/GnbCuCpFunction-Multiple' + DESManagementFunction: + $ref: '#/components/schemas/DESManagementFunction-Single' + DRACHOptimizationFunction: + $ref: '#/components/schemas/DRACHOptimizationFunction-Single' + DMROFunction: + $ref: '#/components/schemas/DMROFunction-Single' + DLBOFunction: + $ref: '#/components/schemas/DLBOFunction-Single' + DPCIConfigurationFunction: + $ref: '#/components/schemas/DPCIConfigurationFunction-Single' + CPCIConfigurationFunction: + $ref: '#/components/schemas/CPCIConfigurationFunction-Single' + CESManagementFunction: + $ref: '#/components/schemas/CESManagementFunction-Single' + Configurable5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Dynamic5QISet-Multiple' + + GnbDuFunction-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: + gnbDuId: + $ref: '#/components/schemas/GnbDuId' + gnbDuName: + $ref: '#/components/schemas/GnbName' + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + rimRSReportConf: + $ref: '#/components/schemas/RimRSReportConf' + configurable5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dynamic5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + RRMPolicyRatio: + $ref: '#/components/schemas/RRMPolicyRatio-Multiple' + NrCellDu: + $ref: '#/components/schemas/NrCellDu-Multiple' + Bwp-Multiple: + $ref: '#/components/schemas/Bwp-Multiple' + NrSectorCarrier-Multiple: + $ref: '#/components/schemas/NrSectorCarrier-Multiple' + EP_F1C: + $ref: '#/components/schemas/EP_F1C-Single' + EP_F1U: + $ref: '#/components/schemas/EP_F1U-Multiple' + DRACHOptimizationFunction: + $ref: '#/components/schemas/DRACHOptimizationFunction-Single' + OperatorDU: + $ref: '#/components/schemas/OperatorDu-Multiple' + BWPSet: + $ref: '#/components/schemas/BWPSet-Multiple' + Configurable5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Dynamic5QISet-Multiple' + + OperatorDu-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + - type: object + properties: + EP_F1C: + $ref: '#/components/schemas/EP_F1C-Single' + EP_F1U: + $ref: '#/components/schemas/EP_F1U-Multiple' + + GnbCuUpFunction-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: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + gnbCuUpId: + $ref: '#/components/schemas/GnbCuUpId' + plmnInfoList: + $ref: '#/components/schemas/PlmnInfoList' + configurable5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dynamic5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + RRMPolicyRatio: + $ref: '#/components/schemas/RRMPolicyRatio-Multiple' + EP_E1: + $ref: '#/components/schemas/EP_E1-Single' + EP_XnU: + $ref: '#/components/schemas/EP_XnU-Multiple' + EP_F1U: + $ref: '#/components/schemas/EP_F1U-Multiple' + EP_NgU: + $ref: '#/components/schemas/EP_NgU-Multiple' + EP_X2U: + $ref: '#/components/schemas/EP_X2U-Multiple' + EP_S1U: + $ref: '#/components/schemas/EP_S1U-Multiple' + Configurable5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Dynamic5QISet-Multiple' + + GnbCuCpFunction-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: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + gnbCuName: + $ref: '#/components/schemas/GnbName' + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + x2BlockList: + $ref: '#/components/schemas/GGnbIdList' + xnBlockList: + $ref: '#/components/schemas/GGnbIdList' + x2AllowList: + $ref: '#/components/schemas/GGnbIdList' + xnAllowList: + $ref: '#/components/schemas/GGnbIdList' + x2HOBlockList: + $ref: '#/components/schemas/GEnbIdList' + xnHOBlackList: + $ref: '#/components/schemas/GGnbIdList' + mappingSetIDBackhaulAddress: + $ref: '#/components/schemas/MappingSetIDBackhaulAddress' + tceMappingInfoList: + $ref: '#/components/schemas/TceMappingInfoList' + configurable5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dynamic5QISetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + dCHOControl: + type: boolean + dDAPSHOControl: + type: boolean + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + RRMPolicyRatio: + $ref: '#/components/schemas/RRMPolicyRatio-Multiple' + NrCellCu: + $ref: '#/components/schemas/NrCellCu-Multiple' + EP_XnC: + $ref: '#/components/schemas/EP_XnC-Multiple' + EP_E1: + $ref: '#/components/schemas/EP_E1-Multiple' + EP_F1C: + $ref: '#/components/schemas/EP_F1C-Multiple' + EP_NgC: + $ref: '#/components/schemas/EP_NgC-Multiple' + EP_X2C: + $ref: '#/components/schemas/EP_X2C-Multiple' + DANRManagementFunction: + $ref: '#/components/schemas/DANRManagementFunction-Single' + DESManagementFunction: + $ref: '#/components/schemas/DESManagementFunction-Single' + DMROFunction: + $ref: '#/components/schemas/DMROFunction-Single' + DLBOFunction: + $ref: '#/components/schemas/DLBOFunction-Single' + Configurable5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Configurable5QISet-Multiple' + Dynamic5QISet: + $ref: 'TS28541_5GcNrm.yaml#/components/schemas/Dynamic5QISet-Multiple' + + NrCellCu-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: + cellLocalId: + type: integer + plmnInfoList: + $ref: '#/components/schemas/PlmnInfoList' + nRFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + RRMPolicyRatio: + $ref: '#/components/schemas/RRMPolicyRatio-Multiple' + NRCellRelation: + $ref: '#/components/schemas/NRCellRelation-Multiple' + EUtranCellRelation: + $ref: '#/components/schemas/EUtranCellRelation-Multiple' + NRFreqRelation: + $ref: '#/components/schemas/NRFreqRelation-Multiple' + EUtranFreqRelation: + $ref: '#/components/schemas/EUtranFreqRelation-Multiple' + DESManagementFunction: + $ref: '#/components/schemas/DESManagementFunction-Single' + DMROFunction: + $ref: '#/components/schemas/DMROFunction-Single' + DLBOFunction: + $ref: '#/components/schemas/DLBOFunction-Single' + CESManagementFunction: + $ref: '#/components/schemas/CESManagementFunction-Single' + DPCIConfigurationFunction: + $ref: '#/components/schemas/DPCIConfigurationFunction-Single' + + NrCellDu-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: + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + cellLocalId: + type: integer + cellState: + $ref: '#/components/schemas/CellState' + plmnInfoList: + $ref: '#/components/schemas/PlmnInfoList' + npnIdentityList: + $ref: '#/components/schemas/NpnIdentityList' + nrPci: + $ref: '#/components/schemas/NrPci' + nrTac: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tac' + arfcnDL: + type: integer + arfcnUL: + type: integer + arfcnSUL: + type: integer + bSChannelBwDL: + type: integer + bSChannelBwUL: + type: integer + bSChannelBwSUL: + type: integer + ssbFrequency: + type: integer + minimum: 0 + maximum: 3279165 + ssbPeriodicity: + $ref: '#/components/schemas/SsbPeriodicity' + ssbSubCarrierSpacing: + $ref: '#/components/schemas/SsbSubCarrierSpacing' + ssbOffset: + type: integer + minimum: 0 + maximum: 159 + ssbDuration: + $ref: '#/components/schemas/SsbDuration' + nrSectorCarrierRef: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + bwpRef: + description: "Condition is BWP sets are not supported" + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + bwpSetRef: + description: "Condition is BWP sets are supported" + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + rimRSMonitoringStartTime: + type: string + rimRSMonitoringStopTime: + type: string + rimRSMonitoringWindowDuration: + type: integer + rimRSMonitoringWindowStartingOffset: + type: integer + rimRSMonitoringWindowPeriodicity: + type: integer + rimRSMonitoringOccasionInterval: + type: integer + rimRSMonitoringOccasionStartingOffset: + type: integer + nRFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + victimSetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + aggressorSetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + RRMPolicyRatio: + $ref: '#/components/schemas/RRMPolicyRatio-Multiple' + CPCIConfigurationFunction: + $ref: '#/components/schemas/CPCIConfigurationFunction-Single' + DRACHOptimizationFunction: + $ref: '#/components/schemas/DRACHOptimizationFunction-Single' + NrOperatorCellDu: + $ref: '#/components/schemas/NrOperatorCellDu-Multiple' + BWPSet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + bWPlist: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + maxItems: 12 + + + NrOperatorCellDu-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + cellLocalId: + type: integer + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + plmnInfoList: + $ref: '#/components/schemas/PlmnInfoList' + nrTac: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tac' + + NRFrequency-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + absoluteFrequencySSB: + type: integer + minimum: 0 + maximum: 3279165 + ssbSubCarrierSpacing: + $ref: '#/components/schemas/SsbSubCarrierSpacing' + multiFrequencyBandListNR: + type: integer + minimum: 1 + maximum: 256 + EUtranFrequency-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + earfcnDL: + type: integer + minimum: 0 + maximum: 262143 + multiBandInfoListEutra: + type: integer + minimum: 1 + maximum: 256 + + NrSectorCarrier-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: + txDirection: + $ref: '#/components/schemas/TxDirection' + configuredMaxTxPower: + type: integer + arfcnDL: + type: integer + arfcnUL: + type: integer + bSChannelBwDL: + type: integer + bSChannelBwUL: + type: integer + sectorEquipmentFunctionRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + CommonBeamformingFunction: + $ref: '#/components/schemas/CommonBeamformingFunction-Single' + Bwp-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: + bwpContext: + $ref: '#/components/schemas/BwpContext' + isInitialBwp: + $ref: '#/components/schemas/IsInitialBwp' + subCarrierSpacing: + type: integer + cyclicPrefix: + $ref: '#/components/schemas/CyclicPrefix' + startRB: + type: integer + numberOfRBs: + type: integer + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + CommonBeamformingFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + coverageShape: + $ref: '#/components/schemas/CoverageShape' + digitalAzimuth: + $ref: '#/components/schemas/DigitalAzimuth' + digitalTilt: + $ref: '#/components/schemas/DigitalTilt' + - type: object + properties: + Beam: + $ref: '#/components/schemas/Beam-Multiple' + Beam-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + beamIndex: + type: integer + beamType: + type: string + enum: + - SSB-BEAM + beamAzimuth: + type: integer + minimum: -1800 + maximum: 1800 + beamTilt: + type: integer + minimum: -900 + maximum: 900 + beamHorizWidth: + type: integer + minimum: 0 + maximum: 3599 + beamVertWidth: + type: integer + minimum: 0 + maximum: 1800 + RRMPolicyRatio-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: '#/components/schemas/RrmPolicy_-Attr' + - type: object + properties: + rRMPolicyMaxRatio: + type: integer + default: 100 + minimum: 0 + maximum: 100 + rRMPolicyMinRatio: + type: integer + default: 0 + minimum: 0 + maximum: 100 + rRMPolicyDedicatedRatio: + type: integer + default: 0 + minimum: 0 + maximum: 100 + + NRCellRelation-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + nRTCI: + type: integer + cellIndividualOffset: + $ref: '#/components/schemas/CellIndividualOffset' + adjacentNRCellRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + nRFreqRelationRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + isRemoveAllowed: + type: boolean + isHOAllowed: + type: boolean + isESCoveredBy: + $ref: '#/components/schemas/IsESCoveredBy' + isENDCAllowed: + type: boolean + isMLBAllowed: + type: boolean + EUtranCellRelation-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: + adjacentEUtranCellRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + NRFreqRelation-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + offsetMO: + $ref: '#/components/schemas/QOffsetRangeList' + blockListEntry: + type: array + items: + type: integer + minimum: 0 + maximum: 1007 + blockListEntryIdleMode: + type: integer + cellReselectionPriority: + type: integer + cellReselectionSubPriority: + type: number + minimum: 0.2 + maximum: 0.8 + multipleOf: 0.2 + pMax: + type: integer + minimum: -30 + maximum: 33 + qOffsetFreq: + $ref: '#/components/schemas/QOffsetFreq' + qQualMin: + type: number + qRxLevMin: + type: integer + minimum: -140 + maximum: -44 + threshXHighP: + type: integer + minimum: 0 + maximum: 62 + threshXHighQ: + type: integer + minimum: 0 + maximum: 31 + threshXLowP: + type: integer + minimum: 0 + maximum: 62 + threshXLowQ: + type: integer + minimum: 0 + maximum: 31 + tReselectionNr: + type: integer + minimum: 0 + maximum: 7 + tReselectionNRSfHigh: + $ref: '#/components/schemas/TReselectionNRSf' + tReselectionNRSfMedium: + $ref: '#/components/schemas/TReselectionNRSf' + nRFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + EUtranFreqRelation-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + cellIndividualOffset: + $ref: '#/components/schemas/CellIndividualOffset' + blackListEntry: + type: array + items: + type: integer + minimum: 0 + maximum: 1007 + blackListEntryIdleMode: + type: integer + cellReselectionPriority: + type: integer + cellReselectionSubPriority: + type: number + minimum: 0.2 + maximum: 0.8 + multipleOf: 0.2 + pMax: + type: integer + minimum: -30 + maximum: 33 + qOffsetFreq: + $ref: '#/components/schemas/QOffsetFreq' + qQualMin: + type: number + qRxLevMin: + type: integer + minimum: -140 + maximum: -44 + threshXHighP: + type: integer + minimum: 0 + maximum: 62 + threshXHighQ: + type: integer + minimum: 0 + maximum: 31 + threshXLowP: + type: integer + minimum: 0 + maximum: 62 + threshXLowQ: + type: integer + minimum: 0 + maximum: 31 + tReselectionEutran: + type: integer + minimum: 0 + maximum: 7 + tReselectionNRSfHigh: + $ref: '#/components/schemas/TReselectionNRSf' + tReselectionNRSfMedium: + $ref: '#/components/schemas/TReselectionNRSf' + eUTranFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + DANRManagementFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + intrasystemANRManagementSwitch: + type: boolean + intersystemANRManagementSwitch: + type: boolean + + DESManagementFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + desSwitch: + type: boolean + intraRatEsActivationOriginalCellLoadParameters: + $ref: "#/components/schemas/IntraRatEsActivationOriginalCellLoadParameters" + intraRatEsActivationCandidateCellsLoadParameters: + $ref: "#/components/schemas/IntraRatEsActivationCandidateCellsLoadParameters" + intraRatEsDeactivationCandidateCellsLoadParameters: + $ref: "#/components/schemas/IntraRatEsDeactivationCandidateCellsLoadParameters" + esNotAllowedTimePeriod: + $ref: "#/components/schemas/EsNotAllowedTimePeriod" + interRatEsActivationOriginalCellParameters: + $ref: "#/components/schemas/InterRatEsActivationOriginalCellParameters" + interRatEsActivationCandidateCellParameters: + $ref: "#/components/schemas/InterRatEsActivationCandidateCellParameters" + interRatEsDeactivationCandidateCellParameters: + $ref: "#/components/schemas/InterRatEsDeactivationCandidateCellParameters" + isProbingCapable: + type: string + enum: + - yes + - no + energySavingState: + type: string + enum: + - isNotEnergySaving + - isEnergySaving + + DRACHOptimizationFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + drachOptimizationControl: + type: boolean + ueAccProbabilityDist: + $ref: "#/components/schemas/UeAccProbabilityDist" + ueAccDelayProbabilityDist: + $ref: "#/components/schemas/UeAccDelayProbabilityDist" + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + DMROFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + dmroControl: + type: boolean + maximumDeviationHoTriggerLow: + $ref: '#/components/schemas/MaximumDeviationHoTriggerLow' + maximumDeviationHoTriggerHigh: + $ref: '#/components/schemas/MaximumDeviationHoTriggerHigh' + minimumTimeBetweenHoTriggerChange: + $ref: '#/components/schemas/MinimumTimeBetweenHoTriggerChange' + tstoreUEcntxt: + $ref: '#/components/schemas/TstoreUEcntxt' + DLBOFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + dlboControl: + type: boolean + maximumDeviationHoTrigger: + $ref: '#/components/schemas/MaximumDeviationHoTrigger' + minimumTimeBetweenHoTriggerChange: + $ref: '#/components/schemas/MinimumTimeBetweenHoTriggerChange' + + DPCIConfigurationFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + dPciConfigurationControl: + type: boolean + nRPciList: + $ref: "#/components/schemas/NRPciList" + + CPCIConfigurationFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + cPciConfigurationControl: + type: boolean + cSonPciList: + $ref: "#/components/schemas/CSonPciList" + + CESManagementFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + cesSwitch: + type: boolean + intraRatEsActivationOriginalCellLoadParameters: + $ref: "#/components/schemas/IntraRatEsActivationOriginalCellLoadParameters" + intraRatEsActivationCandidateCellsLoadParameters: + $ref: "#/components/schemas/IntraRatEsActivationCandidateCellsLoadParameters" + intraRatEsDeactivationCandidateCellsLoadParameters: + $ref: "#/components/schemas/IntraRatEsDeactivationCandidateCellsLoadParameters" + esNotAllowedTimePeriod: + $ref: "#/components/schemas/EsNotAllowedTimePeriod" + interRatEsActivationOriginalCellParameters: + $ref: "#/components/schemas/IntraRatEsActivationOriginalCellLoadParameters" + interRatEsActivationCandidateCellParameters: + $ref: "#/components/schemas/IntraRatEsActivationOriginalCellLoadParameters" + interRatEsDeactivationCandidateCellParameters: + $ref: "#/components/schemas/IntraRatEsActivationOriginalCellLoadParameters" + energySavingControl: + type: string + enum: + - toBeEnergySaving + - toBeNotEnergySaving + energySavingState: + type: string + enum: + - isNotEnergySaving + - isEnergySaving + + RimRSGlobal-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + frequencyDomainPara: + $ref: '#/components/schemas/FrequencyDomainPara' + sequenceDomainPara: + $ref: '#/components/schemas/SequenceDomainPara' + timeDomainPara: + $ref: '#/components/schemas/TimeDomainPara' + RimRSSet: + $ref: '#/components/schemas/RimRSSet-Multiple' + + RimRSSet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + setId: + $ref: '#/components/schemas/RSSetId' + setType: + $ref: '#/components/schemas/RSSetType' + nRCellDURefs: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + ExternalGnbDuFunction-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: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_F1C: + $ref: '#/components/schemas/EP_F1C-Multiple' + EP_F1U: + $ref: '#/components/schemas/EP_F1U-Multiple' + ExternalGnbCuUpFunction-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: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + EP_E1: + $ref: '#/components/schemas/EP_E1-Multiple' + EP_F1U: + $ref: '#/components/schemas/EP_F1U-Multiple' + EP_XnU: + $ref: '#/components/schemas/EP_XnU-Multiple' + ExternalGnbCuCpFunction-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: + gnbId: + $ref: '#/components/schemas/GnbId' + gnbIdLength: + $ref: '#/components/schemas/GnbIdLength' + plmnId: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/PlmnId' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + ExternalNrCellCu: + $ref: '#/components/schemas/ExternalNrCellCu-Multiple' + EP_XnC: + $ref: '#/components/schemas/EP_XnC-Multiple' + EP_E1: + $ref: '#/components/schemas/EP_E1-Multiple' + EP_F1C: + $ref: '#/components/schemas/EP_F1C-Multiple' + ExternalNrCellCu-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: + cellLocalId: + type: integer + nrPci: + $ref: '#/components/schemas/NrPci' + plmnIdList: + $ref: '#/components/schemas/PlmnIdList' + nRFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + ExternalENBFunction-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: + eNBId: + type: integer + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + - type: object + properties: + ExternalEUTranCell: + $ref: '#/components/schemas/ExternalEUTranCell-Multiple' + ExternalEUTranCell-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: + EUtranFrequencyRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ManagedFunction-ncO' + + EP_XnC-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_E1-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_F1C-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_NgC-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_X2C-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_XnU-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_F1U-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + epTransportRefs: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + EP_NgU-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + epTransportRefs: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + EP_X2U-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + EP_S1U-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/EP_RP-Attr' + - type: object + properties: + localAddress: + $ref: '#/components/schemas/LocalAddress' + remoteAddress: + $ref: '#/components/schemas/RemoteAddress' + CCOFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + cCOControl: + type: boolean + cCOWeakCoverageParameters: + $ref: '#/components/schemas/CCOWeakCoverageParameters-Single' + cCOPilotPollutionParameters: + $ref: '#/components/schemas/CCOPilotPollutionParameters-Single' + cCOOvershootCoverageParameters-Single: + $ref: '#/components/schemas/CCOOvershootCoverageParameters-Single' + CCOParameters-Attr: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + coverageShapeList: + type: integer + downlinkTransmitPowerRange: + $ref: '#/components/schemas/ParameterRange' + antennaTiltRange: + $ref: '#/components/schemas/ParameterRange' + antennaAzimuthRange: + $ref: '#/components/schemas/ParameterRange' + digitalTiltRange: + $ref: '#/components/schemas/ParameterRange' + digitalAzimuthRange: + $ref: '#/components/schemas/ParameterRange' + + CCOWeakCoverageParameters-Single: + allOf: + - $ref: '#/components/schemas/CCOParameters-Attr' + - type: object + + CCOPilotPollutionParameters-Single: + allOf: + - $ref: '#/components/schemas/CCOParameters-Attr' + - type: object + + CCOOvershootCoverageParameters-Single: + allOf: + - $ref: '#/components/schemas/CCOParameters-Attr' + - type: object + + NTNFunction-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + nTNpLMNInfoList: + $ref: '#/components/schemas/PlmnInfoList' + nTNTAClist: + $ref: '#/components/schemas/NrTacList' + EphemerisInfoSet: + $ref: '#/components/schemas/EphemerisInfoSet-Multiple' + + EphemerisInfoSet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + EphemerisInfos: + $ref: '#/components/schemas/Ephemeris-Multiple' + + Ephemeris-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + oneOf: + - $ref: '#/components/schemas/PositionVelocity' + - $ref: '#/components/schemas/Orbital' + properties: + satelliteId: + type: integer + + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + ManagedElement-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedElement-Single' + GnbDuFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/GnbDuFunction-Single' + OperatorDu-Multiple: + type: array + items: + $ref: '#/components/schemas/OperatorDu-Single' + GnbCuUpFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/GnbCuUpFunction-Single' + GnbCuCpFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/GnbCuCpFunction-Single' + BWPSet-Multiple: + type: array + items: + $ref: '#/components/schemas/BWPSet-Single' + + NrCellDu-Multiple: + type: array + items: + $ref: '#/components/schemas/NrCellDu-Single' + + NrOperatorCellDu-Multiple: + type: array + items: + $ref: '#/components/schemas/NrOperatorCellDu-Single' + + NrCellCu-Multiple: + type: array + items: + $ref: '#/components/schemas/NrCellCu-Single' + + NRFrequency-Multiple: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/NRFrequency-Single' + EUtranFrequency-Multiple: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/EUtranFrequency-Single' + + NrSectorCarrier-Multiple: + type: array + items: + $ref: '#/components/schemas/NrSectorCarrier-Single' + Bwp-Multiple: + type: array + items: + $ref: '#/components/schemas/Bwp-Single' + Beam-Multiple: + type: array + items: + $ref: '#/components/schemas/Beam-Single' + RRMPolicyRatio-Multiple: + type: array + items: + $ref: '#/components/schemas/RRMPolicyRatio-Single' + + NRCellRelation-Multiple: + type: array + items: + $ref: '#/components/schemas/NRCellRelation-Single' + EUtranCellRelation-Multiple: + type: array + items: + $ref: '#/components/schemas/EUtranCellRelation-Single' + NRFreqRelation-Multiple: + type: array + items: + $ref: '#/components/schemas/NRFreqRelation-Single' + EUtranFreqRelation-Multiple: + type: array + items: + $ref: '#/components/schemas/EUtranFreqRelation-Single' + + RimRSSet-Multiple: + type: array + items: + $ref: '#/components/schemas/RimRSSet-Single' + + ExternalGnbDuFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalGnbDuFunction-Single' + ExternalGnbCuUpFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalGnbCuUpFunction-Single' + ExternalGnbCuCpFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalGnbCuCpFunction-Single' + ExternalNrCellCu-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalNrCellCu-Single' + + ExternalENBFunction-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalENBFunction-Single' + ExternalEUTranCell-Multiple: + type: array + items: + $ref: '#/components/schemas/ExternalEUTranCell-Single' + + EP_E1-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_E1-Single' + EP_XnC-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_XnC-Single' + EP_F1C-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_F1C-Single' + EP_NgC-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NgC-Single' + EP_X2C-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_X2C-Single' + EP_XnU-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_XnU-Single' + EP_F1U-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_F1U-Single' + EP_NgU-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_NgU-Single' + EP_X2U-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_X2U-Single' + EP_S1U-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_S1U-Single' + EphemerisInfoSet-Multiple: + type: array + items: + $ref: '#/components/schemas/EphemerisInfoSet-Single' + + Ephemeris-Multiple: + type: array + items: + $ref: '#/components/schemas/Ephemeris-Single' +#-------- Definitions in TS 28.541 for TS 28.532 --------------------------------- + + resources-nrNrm: + oneOf: + - $ref: '#/components/schemas/MnS' + + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/ManagedElement-Single' + + - $ref: '#/components/schemas/GnbDuFunction-Single' + - $ref: '#/components/schemas/GnbCuUpFunction-Single' + - $ref: '#/components/schemas/GnbCuCpFunction-Single' + - $ref: '#/components/schemas/OperatorDu-Single' + + - $ref: '#/components/schemas/NrCellCu-Single' + - $ref: '#/components/schemas/NrCellDu-Single' + - $ref: '#/components/schemas/NrOperatorCellDu-Single' + + - $ref: '#/components/schemas/NRFrequency-Single' + - $ref: '#/components/schemas/EUtranFrequency-Single' + + - $ref: '#/components/schemas/NrSectorCarrier-Single' + - $ref: '#/components/schemas/Bwp-Single' + - $ref: '#/components/schemas/BWPSet-Single' + - $ref: '#/components/schemas/CommonBeamformingFunction-Single' + - $ref: '#/components/schemas/Beam-Single' + - $ref: '#/components/schemas/RRMPolicyRatio-Single' + + - $ref: '#/components/schemas/NRCellRelation-Single' + - $ref: '#/components/schemas/EUtranCellRelation-Single' + - $ref: '#/components/schemas/NRFreqRelation-Single' + - $ref: '#/components/schemas/EUtranFreqRelation-Single' + + - $ref: '#/components/schemas/DANRManagementFunction-Single' + - $ref: '#/components/schemas/DESManagementFunction-Single' + - $ref: '#/components/schemas/DRACHOptimizationFunction-Single' + - $ref: '#/components/schemas/DMROFunction-Single' + - $ref: '#/components/schemas/DLBOFunction-Single' + - $ref: '#/components/schemas/DPCIConfigurationFunction-Single' + - $ref: '#/components/schemas/CPCIConfigurationFunction-Single' + - $ref: '#/components/schemas/CESManagementFunction-Single' + + - $ref: '#/components/schemas/RimRSGlobal-Single' + - $ref: '#/components/schemas/RimRSSet-Single' + + - $ref: '#/components/schemas/ExternalGnbDuFunction-Single' + - $ref: '#/components/schemas/ExternalGnbCuUpFunction-Single' + - $ref: '#/components/schemas/ExternalGnbCuCpFunction-Single' + - $ref: '#/components/schemas/ExternalNrCellCu-Single' + - $ref: '#/components/schemas/ExternalENBFunction-Single' + - $ref: '#/components/schemas/ExternalEUTranCell-Single' + + - $ref: '#/components/schemas/EP_XnC-Single' + - $ref: '#/components/schemas/EP_E1-Single' + - $ref: '#/components/schemas/EP_F1C-Single' + - $ref: '#/components/schemas/EP_NgC-Single' + - $ref: '#/components/schemas/EP_X2C-Single' + - $ref: '#/components/schemas/EP_XnU-Single' + - $ref: '#/components/schemas/EP_F1U-Single' + - $ref: '#/components/schemas/EP_NgU-Single' + - $ref: '#/components/schemas/EP_X2U-Single' + - $ref: '#/components/schemas/EP_S1U-Single' + - $ref: '#/components/schemas/CCOFunction-Single' + - $ref: '#/components/schemas/CCOWeakCoverageParameters-Single' + - $ref: '#/components/schemas/CCOPilotPollutionParameters-Single' + - $ref: '#/components/schemas/CCOOvershootCoverageParameters-Single' + - $ref: '#/components/schemas/NTNFunction-Single' + - $ref: '#/components/schemas/EphemerisInfoSet-Single' + - $ref: '#/components/schemas/Ephemeris-Single' + diff --git a/TS28541_SliceNrm.yaml b/TS28541_SliceNrm.yaml new file mode 100644 index 0000000..88eeb77 --- /dev/null +++ b/TS28541_SliceNrm.yaml @@ -0,0 +1,951 @@ +openapi: 3.0.1 +info: + title: Slice NRM + version: 18.5.0 + description: >- + OAS 3.0.1 specification of the Slice NRM + @ 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.541; 5G NRM, Slice NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.541/ +paths: {} +components: + schemas: + +#------------ Type definitions --------------------------------------------------- + + Float: + type: number + format: float + MobilityLevel: + type: string + enum: + - STATIONARY + - NOMADIC + - RESTRICTED_MOBILITY + - FULL_MOBILITY + SynAvailability: + type: string + enum: + - NOT_SUPPORTED + - BETWEEN_BS_AND_UE + - BETWEEN_BS_AND_UE_AND_UE_AND_UE + PositioningAvailability: + type: array + items: + type: string + enum: + - CIDE_CID + - OTDOA + - RF_FINGERPRINTING + - AECID + - HYBRID_POSITIONING + - NET_RTK + PredictionFrequency: + type: string + enum: + - PERSEC + - PERMIN + - PERHOUR + SharingLevel: + type: string + enum: + - SHARED + - NON_SHARED + + NetworkSliceSharingIndicator: + type: string + enum: + - SHARED + - NON_SHARED + + SliceSimultaneousUse: + type: integer + minimum: 0 + maximum: 4 + Category: + type: string + enum: + - CHARACTER + - SCALABILITY + Tagging: + type: array + items: + type: string + enum: + - PERFORMANCE + - FUNCTION + - OPERATION + Exposure: + type: string + enum: + - API + - KPI + ServAttrCom: + type: object + properties: + category: + $ref: '#/components/schemas/Category' + tagging: + $ref: '#/components/schemas/Tagging' + exposure: + $ref: '#/components/schemas/Exposure' + Support: + type: string + enum: + - NOT_SUPPORTED + - SUPPORTED + DelayTolerance: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + support: + $ref: '#/components/schemas/Support' + NonIPSupport: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + support: + $ref: '#/components/schemas/Support' + DeterministicComm: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + availability: + $ref: '#/components/schemas/Support' + periodicityList: + type: array + items: + type: integer + XLThpt: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + guaThpt: + $ref: '#/components/schemas/Float' + maxThpt: + $ref: '#/components/schemas/Float' + MaxPktSize: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + maxsize: + type: integer + MaxNumberofPDUSessions: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + nOofPDUSessions: + type: integer + KPIMonitoring: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + kPIList: + type: array + items: + type: string + NBIoT: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + support: + $ref: '#/components/schemas/Support' + RadioSpectrum: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + nROperatingBands: + type: array + items: + type: string + Synchronicity: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + availability: + $ref: '#/components/schemas/SynAvailability' + accuracy: + $ref: '#/components/schemas/Float' + SynchronicityRANSubnet: + type: object + properties: + availability: + $ref: '#/components/schemas/SynAvailability' + accuracy: + $ref: '#/components/schemas/Float' + Positioning: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + availability: + $ref: '#/components/schemas/PositioningAvailability' + predictionFrequency: + $ref: '#/components/schemas/PredictionFrequency' + accuracy: + $ref: '#/components/schemas/Float' + PositioningRANSubnet: + type: object + properties: + availability: + $ref: '#/components/schemas/PositioningAvailability' + predictionFrequency: + $ref: '#/components/schemas/PredictionFrequency' + accuracy: + $ref: '#/components/schemas/Float' + UserMgmtOpen: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + support: + $ref: '#/components/schemas/Support' + V2XCommModels: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + v2XMode: + $ref: '#/components/schemas/Support' + TermDensity: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + density: + type: integer + NsInfo: + type: object + properties: + nsInstanceId: + type: string + nsName: + type: string + description: + type: string + EmbbEEPerfReq: + type: object + properties: + kpiType: + type: string + enum: + - NUMOFBITS + - NUMOFBITS_RANBASED + req: + type: number + UrllcEEPerfReq: + type: object + properties: + kpiType: + type: string + enum: + - INVOFLATENCY + - NUMOFBITS_MULTIPLIED_INVOFLATENCY + req: + type: number + MIoTEEPerfReq: + type: object + properties: + kpiType: + type: string + enum: + - MAXREGSUBS + - MEANACTIVEUES + req: + type: number + EEPerfReq: + oneOf: + - $ref: '#/components/schemas/EmbbEEPerfReq' + - $ref: '#/components/schemas/UrllcEEPerfReq' + - $ref: '#/components/schemas/MIoTEEPerfReq' + EnergyEfficiency: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + performance: + $ref: '#/components/schemas/EEPerfReq' + NSSAASupport: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + support: + $ref: '#/components/schemas/Support' + SecFunc: + type: object + properties: + secFunId: + type: string + secFunType: + type: string + secRules: + type: array + items: + type: string + N6Protection: + type: object + properties: + servAttrCom: + $ref: '#/components/schemas/ServAttrCom' + secFuncList: + type: array + items: + $ref: '#/components/schemas/SecFunc' + + CNSliceSubnetProfile: + type: object + properties: + maxNumberofUEs: + type: integer + dLLatency: + type: number + uLLatency: + type: number + dLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + dLThptPerUE: + $ref: '#/components/schemas/XLThpt' + uLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + uLThptPerUE: + $ref: '#/components/schemas/XLThpt' + maxNumberOfPDUSessions: + type: integer + coverageAreaTAList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + resourceSharingLevel: + $ref: '#/components/schemas/SharingLevel' + dLMaxPktSize: + type: integer + uLMaxPktSize: + type: integer + delayTolerance: + $ref: '#/components/schemas/DelayTolerance' + synchronicity: + $ref: '#/components/schemas/SynchronicityRANSubnet' + sliceSimultaneousUse: + $ref: '#/components/schemas/SliceSimultaneousUse' + reliability: + type: number + energyEfficiency: + type: number + dLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + uLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + survivalTime: + type: number + nssaaSupport: + $ref: '#/components/schemas/NSSAASupport' + n6Protection: + $ref: '#/components/schemas/N6Protection' + nonIPSupport: + $ref: '#/components/schemas/NonIPSupport' + + RANSliceSubnetProfile: + type: object + properties: + coverageAreaTAList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + dLLatency: + type: number + uLLatency: + type: number + uEMobilityLevel: + $ref: '#/components/schemas/MobilityLevel' + resourceSharingLevel: + $ref: '#/components/schemas/SharingLevel' + maxNumberofUEs: + type: integer + activityFactor: + type: integer + dLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + dLThptPerUE: + $ref: '#/components/schemas/XLThpt' + uLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + uLThptPerUE: + $ref: '#/components/schemas/XLThpt' + uESpeed: + type: integer + reliability: + type: number + dLMaxPktSize: + type: integer + uLMaxPktSize: + type: integer + nROperatingBands: + type: array + items: + type: string + delayTolerance: + $ref: '#/components/schemas/DelayTolerance' + positioning: + $ref: '#/components/schemas/PositioningRANSubnet' + sliceSimultaneousUse: + $ref: '#/components/schemas/SliceSimultaneousUse' + energyEfficiency: + type: number + termDensity: + $ref: '#/components/schemas/TermDensity' + survivalTime: + type: number + synchronicity: + $ref: '#/components/schemas/SynchronicityRANSubnet' + dLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + uLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + nonIPSupport: + $ref: '#/components/schemas/NonIPSupport' + TopSliceSubnetProfile: + type: object + properties: + dLLatency: + type: integer + uLLatency: + type: integer + maxNumberofUEs: + type: integer + dLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + dLThptPerUE: + $ref: '#/components/schemas/XLThpt' + uLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + uLThptPerUE: + $ref: '#/components/schemas/XLThpt' + dLMaxPktSize: + type: integer + uLMaxPktSize: + type: integer + maxNumberOfPDUSessions: + type: integer + nROperatingBands: + type: array + items: + type: string + sliceSimultaneousUse: + $ref: '#/components/schemas/SliceSimultaneousUse' + energyEfficiency: + $ref: '#/components/schemas/EnergyEfficiency' + synchronicity: + $ref: '#/components/schemas/Synchronicity' + delayTolerance: + $ref: '#/components/schemas/DelayTolerance' + positioning: + $ref: '#/components/schemas/Positioning' + termDensity: + $ref: '#/components/schemas/TermDensity' + activityFactor: + type: integer + coverageAreaTAList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + resourceSharingLevel: + $ref: '#/components/schemas/SharingLevel' + uEMobilityLevel: + $ref: '#/components/schemas/MobilityLevel' + uESpeed: + type: integer + reliability: + type: number + dLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + uLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + survivalTime: + type: number + nssaaSupport: + $ref: '#/components/schemas/NSSAASupport' + n6Protection: + $ref: '#/components/schemas/N6Protection' + nonIPSupport: + $ref: '#/components/schemas/NonIPSupport' + + ServiceProfile: + type: object + properties: + serviceProfileId: + type: string + plmnInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + maxNumberofUEs: + type: number + dLLatency: + type: number + uLLatency: + type: number + uEMobilityLevel: + $ref: '#/components/schemas/MobilityLevel' + sst: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/Sst' + networkSliceSharingIndicator: + $ref: '#/components/schemas/NetworkSliceSharingIndicator' + availability: + type: number + delayTolerance: + $ref: '#/components/schemas/DelayTolerance' + dLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + uLDeterministicComm: + $ref: '#/components/schemas/DeterministicComm' + dLThptPerSlice: + $ref: '#/components/schemas/XLThpt' + dLThptPerUE: + $ref: '#/components/schemas/XLThpt' + uLThptPerSlice: + $ref: '#/components/schemas/XLThpt' + uLThptPerUE: + $ref: '#/components/schemas/XLThpt' + dLMaxPktSize: + $ref: '#/components/schemas/MaxPktSize' + uLMaxPktSize: + $ref: '#/components/schemas/MaxPktSize' + maxNumberofPDUSessions: + $ref: '#/components/schemas/MaxNumberofPDUSessions' + kPIMonitoring: + $ref: '#/components/schemas/KPIMonitoring' + nBIoT: + $ref: '#/components/schemas/NBIoT' + radioSpectrum: + $ref: '#/components/schemas/RadioSpectrum' + synchronicity: + $ref: '#/components/schemas/Synchronicity' + positioning: + $ref: '#/components/schemas/Positioning' + userMgmtOpen: + $ref: '#/components/schemas/UserMgmtOpen' + v2XCommModels: + $ref: '#/components/schemas/V2XCommModels' + coverageArea: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/GeoArea' + termDensity: + $ref: '#/components/schemas/TermDensity' + activityFactor: + $ref: '#/components/schemas/Float' + uESpeed: + type: integer + jitter: + type: integer + survivalTime: + type: number + reliability: + type: number + maxDLDataVolume: + type: number + maxULDataVolume: + type: number + sliceSimultaneousUse: + $ref: '#/components/schemas/SliceSimultaneousUse' + energyEfficiency: + $ref: '#/components/schemas/EnergyEfficiency' + nssaaSupport: + $ref: '#/components/schemas/NSSAASupport' + n6Protection: + $ref: '#/components/schemas/N6Protection' + nonIPSupport: + $ref: '#/components/schemas/NonIPSupport' + SliceProfile: + type: object + properties: + sliceProfileId: + type: string + plmnInfoList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/PlmnInfoList' + cNSliceSubnetProfile: + $ref: '#/components/schemas/CNSliceSubnetProfile' + rANSliceSubnetProfile: + $ref: '#/components/schemas/RANSliceSubnetProfile' + topSliceSubnetProfile: + $ref: '#/components/schemas/TopSliceSubnetProfile' + + IpAddress: + oneOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + + LogicalInterfaceInfo: + type: object + properties: + logicalInterfaceType: + type: string + enum: + - VLAN + - MPLS + - SEGMENT + logicalInterfaceId: + type: string + systemName: + type: string + portName: + type: string + routingProtocol: + type: string + enum: + - RIP + - IGMP + - OSPF + - EGP + - EIGRP + - BGP + - IS_IS + - STATIC + + ConnectionPointInfo: + type: object + properties: + connectionPointId: + type: string + connectionPointIdType: + type: string + enum: + - VLAN + - MPLS + - SEGMENT + - IPV4 + - IPV6 + - ATTACHMENT_CIRCUIT + + ServiceProfileList: + type: array + items: + $ref: '#/components/schemas/ServiceProfile' + + SliceProfileList: + type: array + items: + $ref: '#/components/schemas/SliceProfile' + FeasibilityResult: + description: >- + An attribute which specifies the feasibility check result for the feasibility check and reservation job. + type: string + enum: + - FEASIBLE + - INFEASIBLE + InFeasibleReason: + description: >- + An attribute that specifies the additional reason information if the feasibility check result is infeasible.The detailed ENUM value is FFS. + type: string + RecommendationRequest: + description: >- + An attribute represents MnS consumer's request for recommended network slice related requirements. + type: boolean + RecommendedRequirements: + description: >- + An attribute that specifies the recommended network slicing related requirements (i.e. ServiceProfile and SliceProfile information) which can be supported by the MnS producer.. + type: string + ResourceReservation: + description: >- + An attribute represents MnS consumer's requirements for resource reservation. + type: boolean + RequestedReservationExpiration: + description: >- + An attribute which specifies MnS consuner's requirements for the validity period of the resource reservation. + type: string + ResourceReservationStatus: + description: >- + An attribute which specifies the resource reservation result for the feasibility check job. + type: string + enum: + - RESERVED + - UNRESERVED + - USED + ReservationExpiration: + description: >- + An attribute which specifies the actual validity period of the resource reservation.. + type: string + ReservationFailureReason: + description: >- + An attribute that specifies the additional reason information if the reservation is failed. + type: string + + + +#------------ Definition of concrete IOCs ---------------------------------------- + + MnS: + oneOf: + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' +# - type: object +# properties: +# ManagedElement: +# $ref: '#/components/schemas/ManagedElement-Multiple' + + SubNetwork-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-Attr' + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/SubNetwork-ncO' + - type: object + properties: + SubNetwork: + $ref: '#/components/schemas/SubNetwork-Multiple' + NetworkSlice: + $ref: '#/components/schemas/NetworkSlice-Multiple' + NetworkSliceSubnet: + $ref: '#/components/schemas/NetworkSliceSubnet-Multiple' + EP_Transport: + $ref: '#/components/schemas/EP_Transport-Multiple' + NetworkSliceSubnetProviderCapabilities: + $ref: '#/components/schemas/NetworkSliceSubnetProviderCapabilities-Multiple' + FeasibilityCheckAndReservationJob: + $ref: '#/components/schemas/FeasibilityCheckAndReservationJob-Multiple' + NetworkSliceController: + $ref: '#/components/schemas/NetworkSliceController-Multiple' + NetworkSliceSubnetController: + $ref: '#/components/schemas/NetworkSliceSubnetController-Multiple' + + + NetworkSlice-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + networkSliceSubnetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + serviceProfileList: + $ref: '#/components/schemas/ServiceProfileList' + networkSliceControllerRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + NetworkSliceSubnet-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + allOf: + - type: object + properties: + managedFunctionRefList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + networkSliceSubnetRefList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + nsInfo: + $ref: '#/components/schemas/NsInfo' + sliceProfileList: + $ref: '#/components/schemas/SliceProfileList' + epTransportRefList: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + priorityLabel: + type: integer + networkSliceSubnetType: + type: string + enum: + - TOP_SLICESUBNET + - RAN_SLICESUBNET + - CN_SLICESUBNET + networkSliceSubnetControllerRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + + EP_Transport-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + ipAddress: + $ref: '#/components/schemas/IpAddress' + localLogicalInterfaceInfo: + $ref: '#/components/schemas/LogicalInterfaceInfo' + qosProfile: + type: string + epApplicationRefs: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + connectionPointRefList: + type: array + items: + $ref: '#/components/schemas/ConnectionPointInfo' + + NetworkSliceSubnetProviderCapabilities-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + dLlatency: + type: integer + uLlatency: + type: integer + dLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + uLThptPerSliceSubnet: + $ref: '#/components/schemas/XLThpt' + coverageAreaTAList: + $ref: 'TS28541_NrNrm.yaml#/components/schemas/TaiList' + FeasibilityCheckAndReservationJob-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + profile: + oneOf: + - $ref: '#/components/schemas/SliceProfile' + - $ref: '#/components/schemas/ServiceProfile' + resourceReservation: + $ref: '#/components/schemas/ResourceReservation' + recommendationRequest: + $ref: '#/components/schemas/RecommendationRequest' + requestedReservationExpiration: + $ref: '#/components/schemas/RequestedReservationExpiration' + feasibilityTimeWindow: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow' + processMonitor: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ProcessMonitor' + feasibilityResult: + $ref: '#/components/schemas/FeasibilityResult' + inFeasibleReason: + $ref: '#/components/schemas/InFeasibleReason' + resourceReservationStatus: + $ref: '#/components/schemas/ResourceReservationStatus' + reservationFailureReason: + $ref: '#/components/schemas/ReservationFailureReason' + + reservationExpiration: + $ref: '#/components/schemas/ReservationExpiration' + recommendedRequirements: + $ref: '#/components/schemas/RecommendedRequirements' + + NetworkSliceController-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + inputServiceProfile: + $ref: '#/components/schemas/ServiceProfile' + serviceProfileId: + type: string + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + availabilityStatus: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AvailabilityStatus' + processMonitor: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ProcessMonitor' + networkSliceRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + + NetworkSliceSubnetController-Single: + allOf: + - $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + inputSliceProfile: + $ref: '#/components/schemas/SliceProfile' + sliceProfileId: + type: string + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + availabilityStatus: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AvailabilityStatus' + processMonitor: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/ProcessMonitor' + networkSliceSubnetRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + +#-------- Definition of JSON arrays for name-contained IOCs ---------------------- + SubNetwork-Multiple: + type: array + items: + $ref: '#/components/schemas/SubNetwork-Single' + + NetworkSlice-Multiple: + type: array + items: + $ref: '#/components/schemas/NetworkSlice-Single' + + NetworkSliceSubnet-Multiple: + type: array + items: + $ref: '#/components/schemas/NetworkSliceSubnet-Single' + + EP_Transport-Multiple: + type: array + items: + $ref: '#/components/schemas/EP_Transport-Single' + + NetworkSliceSubnetProviderCapabilities-Multiple: + type: array + items: + $ref: '#/components/schemas/NetworkSliceSubnetProviderCapabilities-Single' + FeasibilityCheckAndReservationJob-Multiple: + type: array + items: + $ref: '#/components/schemas/FeasibilityCheckAndReservationJob-Single' + + NetworkSliceController-Multiple: + type: array + items: + $ref: '#/components/schemas/NetworkSliceController-Single' + + NetworkSliceSubnetController-Multiple: + type: array + items: + $ref: '#/components/schemas/NetworkSliceSubnetController-Single' + +#------------ Definitions in TS 28.541 for TS 28.532 ----------------------------- + + resources-sliceNrm: + oneOf: + - $ref: '#/components/schemas/MnS' + + - $ref: '#/components/schemas/SubNetwork-Single' + - $ref: '#/components/schemas/NetworkSlice-Single' + - $ref: '#/components/schemas/NetworkSliceSubnet-Single' + - $ref: '#/components/schemas/EP_Transport-Single' + - $ref: '#/components/schemas/NetworkSliceSubnetProviderCapabilities-Single' + - $ref: '#/components/schemas/FeasibilityCheckAndReservationJob-Single' + - $ref: '#/components/schemas/NetworkSliceController-Single' + - $ref: '#/components/schemas/NetworkSliceSubnetController-Single' + diff --git a/TS28550_PerfMeasJobCtrlMnS.yaml b/TS28550_PerfMeasJobCtrlMnS.yaml new file mode 100644 index 0000000..7de08a7 --- /dev/null +++ b/TS28550_PerfMeasJobCtrlMnS.yaml @@ -0,0 +1,277 @@ +openapi: 3.0.1 +info: + title: TS 28.550 Performance Measurement Job Control Service + version: 18.1.0 + description: >- + OAS 3.0.1 specification of the Performance Measurement Job Control Service + @ 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.550 Performance assurance + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.550/ +servers: + - url: '{MnSRoot}/PerfMeasJobCtrlMnS/{MnSVersion}' + variables: + MnSRoot: + description: See clause 4.4.2 of TS 32.158 + default: http://example.com/3GPPManagement + MnSVersion: + description: Version number of the OpenAPI definition + default: XXX +paths: + /measJobs: + post: + summary: Create a measurement job + description: To create a measurement job the representation of the measurement job is POSTed on the /measJobs collection resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/measJobCreation-RequestType' + responses: + '201': + description: Success case ("201 Created"). The representation of the newly created measurement job resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/measJobCreation-ResponseType' + '202': + description: Partial success case ("202 Partically created"). The representation of the newly created measurement job resource with unsupported list shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/measJobCreation-ResponseType' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/error-ResponseType' + get: + summary: Read resources of measurement jobs + description: 'With HTTP GET, resources of measurement jobs are read. The resources to be read are identified with the path component (base resource) and the query component (jobIdList) of the URI. The fields query component allows to select the resource properties to be returned.' + parameters: + - name: jobIdList + in: query + description: This parameter identifies the list of jobId to select the resources from the collection resources identified with the path component of the URI. + required: true + schema: + type: array + items: + type: string + responses: + '200': + description: 'Success case ("200 OK"). The resources identified in the request for retrieval are returned in the response message body. In case the fields query parameter is used, the selected resources are returned.' + content: + application/json: + schema: + $ref: '#/components/schemas/measJobsRetrieval-ResponseType' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/error-ResponseType' + '/measJobs/{jobId}': + get: + summary: Read resource of a single measurement job + description: 'With HTTP GET, resource of a measurement job is read. The resource to be read is identified with the path component of the URI.' + parameters: + - name: jobId + in: path + description: Identifies the measurement job to be read. + required: true + schema: + $ref: '#/components/schemas/uri-Type' + responses: + '200': + description: 'Success case ("200 OK"). The resource identified in the path for retrieval is returned in the response message body. ' + content: + application/json: + schema: + $ref: '#/components/schemas/measJobsRetrieval-ResponseType' + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/error-ResponseType' + delete: + summary: Delete a single measurement job + description: The measurement job is deleted by deleting the corresponding measurement job resource. The resource to be deleted is identified with the path component of the URI. + parameters: + - name: jobId + in: path + description: Identifies the measurement job to be deleted. + required: true + schema: + $ref: '#/components/schemas/uri-Type' + responses: + '204': + description: Success case ("204 No Content"). The measurement job resource has been deleted. The response message body is absent. + default: + description: Error case. + content: + application/json: + schema: + $ref: '#/components/schemas/error-ResponseType' +components: + schemas: + dateTime-Type: + type: string + format: date-Time + uri-Type: + type: string + measJobCreation-RequestType: + type: object + properties: + iOCName: + type: string + iOCInstanceList: + type: array + items: + $ref: '#/components/schemas/uri-Type' + measurementCategoryList: + type: array + items: + type: string + reportingMethod: + $ref: '#/components/schemas/reportingMethod-Type' + granularityPeriod: + type: integer + reportingPeriod: + type: integer + startTime: + $ref: '#/components/schemas/dateTime-Type' + stopTime: + $ref: '#/components/schemas/dateTime-Type' + schedule: + $ref: '#/components/schemas/schedule-Type' + streamTarget: + type: string + priority: + $ref: '#/components/schemas/priority-Type' + reliability: + type: string + measJobCreation-ResponseType: + type: object + properties: + unsupportedList: + type: array + items: + $ref: '#/components/schemas/unsupportedMeas-Type' + measJobsRetrieval-ResponseType: + type: object + properties: + jobInfoList: + type: array + items: + $ref: '#/components/schemas/measJobInfo-ResourceType' + error-ResponseType: + type: object + properties: + error: + type: object + properties: + errorInfo: + type: string + measJobInfo-ResourceType: + type: object + properties: + href: + $ref: '#/components/schemas/uri-Type' + iOCName: + type: string + iOCInstanceList: + type: array + items: + $ref: '#/components/schemas/uri-Type' + measurementCategoryList: + type: array + items: + type: string + reportingMethod: + $ref: '#/components/schemas/reportingMethod-Type' + granularityPeriod: + type: integer + reportingPeriod: + type: integer + startTime: + $ref: '#/components/schemas/dateTime-Type' + stopTime: + $ref: '#/components/schemas/dateTime-Type' + schedule: + $ref: '#/components/schemas/schedule-Type' + streamTarget: + type: string + priority: + $ref: '#/components/schemas/priority-Type' + reliability: + type: string + schedule-Type: + type: object + properties: + scheduleOption: + $ref: '#/components/schemas/scheduleOption-Type' + dailySchedule: + type: array + items: + $ref: '#/components/schemas/timeInterval-Type' + weeklySchedule: + type: array + items: + $ref: '#/components/schemas/scheduleOfDay-Type' + timeInterval-Type: + type: object + properties: + intervalStart: + type: string + format: Time + intervalEnd: + type: string + format: Time + scheduleOfDay-Type: + type: object + properties: + dayOfWeek: + $ref: '#/components/schemas/dayOfWeek-Type' + intervalsOfDay: + type: array + items: + $ref: '#/components/schemas/timeInterval-Type' + unsupportedMeas-Type: + type: object + properties: + iOCInstance: + $ref: '#/components/schemas/uri-Type' + measurementTypeName: + type: string + reason: + type: string + reportingMethod-Type: + type: string + enum: + - file + - streaming + priority-Type: + type: string + enum: + - low + - medium + - high + scheduleOption-Type: + type: string + enum: + - daily + - weekly + dayOfWeek-Type: + type: string + enum: + - Monday + - Tuesday + - Wednesday + - Thursday + - Friday + - Saturday + - Sunday diff --git a/TS28623_ComDefs.yaml b/TS28623_ComDefs.yaml new file mode 100644 index 0000000..eb97235 --- /dev/null +++ b/TS28623_ComDefs.yaml @@ -0,0 +1,245 @@ +openapi: 3.0.1 +info: + title: Common Type Definitions + version: 18.3.0 + description: >- + OAS 3.0.1 specification of common type definitions in the Generic NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.623; Generic NRM; Common type definitions + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.623/ +paths: {} +components: + schemas: + + Float: + type: number + format: float + DateTime: + type: string + format: date-time + Latitude: + type: number + format: float + minimum: -90 + maximum: 90 + Longitude: + type: number + format: float + minimum: -180 + maximum: 180 + + Dn: + type: string + DnList: + type: array + items: + $ref: '#/components/schemas/Dn' + + Mcc: + type: string + pattern: '^[0-9]{3}$' + Mnc: + type: string + pattern: '^[0-9]{2,3}$' + Nid: + type: string + pattern: '^[A-Fa-f0-9]{11}$' + PlmnId: + type: object + properties: + mcc: + $ref: '#/components/schemas/Mcc' + mnc: + $ref: '#/components/schemas/Mnc' + Tac: + type: string + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + UtraCellId: + type: integer + EutraCellId: + type: string + pattern: '^[A-Fa-f0-9]{7}$' + NrCellId: + type: string + pattern: '^[A-Fa-f0-9]{9}$' + TimeWindow: + type: object + properties: + startTime: + $ref: '#/components/schemas/DateTime' + endTime: + $ref: '#/components/schemas/DateTime' + GeoCoordinate: + type: object + properties: + latitude: + $ref: '#/components/schemas/Latitude' + longitude: + $ref: '#/components/schemas/Longitude' + altitude: + $ref: '#/components/schemas/Float' + ConvexGeoPolygon: + type: array + items: + $ref: '#/components/schemas/GeoCoordinate' + minItems: 3 + GeoArea: + type: object + properties: + convexGeoPolygon: + $ref: '#/components/schemas/ConvexGeoPolygon' + GeoAreaToCellMapping: + type: object + properties: + geoArea: + $ref: '#/components/schemas/GeoArea' + associationThreshold: + type: integer + AreaOfInterest: + oneOf: + - $ref: '#/components/schemas/GeoAreaToCellMapping' + - type: array + items: + $ref: 'TS28623_GenericNrm.yaml#/components/schemas/Tai' + - type: array + items: + $ref: '#/components/schemas/NrCellId' + - type: array + items: + $ref: '#/components/schemas/EutraCellId' + - type: array + items: + $ref: '#/components/schemas/UtraCellId' + + Fqdn: + type: string + Ipv4Addr: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$' + example: '198.51.100.1' + Ipv6Addr: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$' + example: '2001:db8:85a3::8a2e:370:7334' + Ipv6Prefix: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$' + example: '2001:db8:abcd:12::0/64' + IpAddr: + oneOf: + - $ref: '#/components/schemas/Ipv4Addr' + - $ref: '#/components/schemas/Ipv6Addr' + - $ref: '#/components/schemas/Ipv6Prefix' + HostAddr: + # This definition will be deprecated, when all occurances of HostAddr + # are replaced by Host. + oneOf: + - $ref: '#/components/schemas/Ipv4Addr' + - $ref: '#/components/schemas/Ipv6Addr' + - $ref: '#/components/schemas/Fqdn' + Host: + oneOf: + - $ref: '#/components/schemas/IpAddr' + - $ref: '#/components/schemas/Fqdn' + Uri: + type: string + + AdministrativeState: + type: string + enum: + - LOCKED + - UNLOCKED + OperationalState: + type: string + enum: + - ENABLED + - DISABLED + UsageState: + type: string + enum: + - IDEL + - ACTIVE + - BUSY + AvailabilityStatus: + type: string + enum: + - IN_TEST + - FAILED + - POWER_OFF + - OFF_LINE + - OFF_DUTY + - DEPENDENCY + - DEGRADED + - NOT_INSTALLED + - LOG_FULL + + AttributeNameValuePairSet: + description: >- + The key of this map is the attribute name, and the value the attribute value. + type: object + minProperties: 1 + additionalProperties: + nullable: true + AttributeValueChangeSet: + description: >- + The first array item contains the attribute name value pairs with the new values, + and the second array item the attribute name value pairs with the optional old values. + type: array + items: + $ref: '#/components/schemas/AttributeNameValuePairSet' + minItems: 1 + maxItems: 2 + + Filter: + description: >- + The filter format shall be compliant to XPath 1.0. + type: string + SystemDN: + type: string + + NotificationId: + type: integer + NotificationType: + oneOf: + - $ref: 'TS28532_FaultMnS.yaml#/components/schemas/AlarmNotificationTypes' + - $ref: 'TS28532_ProvMnS.yaml#/components/schemas/CmNotificationTypes' + - $ref: 'TS28532_PerfMnS.yaml#/components/schemas/PerfNotificationTypes' + - $ref: 'TS28532_HeartbeatNtf.yaml#/components/schemas/HeartbeatNotificationTypes' + - $ref: 'TS28532_FileDataReportingMnS.yaml#/components/schemas/FileNotificationTypes' + NotificationHeader: + type: object + properties: + href: + $ref: '#/components/schemas/Uri' + notificationId: + $ref: '#/components/schemas/NotificationId' + notificationType: + $ref: '#/components/schemas/NotificationType' + eventTime: + $ref: '#/components/schemas/DateTime' + systemDN: + $ref: '#/components/schemas/SystemDN' + required: + - href + - notificationId + - notificationType + - eventTime + - systemDN + + ErrorResponse: + description: >- + Default schema for the response message body in case the request + is not successful. + type: object + properties: + error: + type: object + properties: + errorInfo: + type: string diff --git a/TS28623_GenericNrm.yaml b/TS28623_GenericNrm.yaml new file mode 100644 index 0000000..e043404 --- /dev/null +++ b/TS28623_GenericNrm.yaml @@ -0,0 +1,2301 @@ +openapi: 3.0.1 +info: + title: Generic NRM + version: 18.4.0 + description: >- + OAS 3.0.1 definition of the Generic NRM + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 28.623; Generic NRM + url: http://www.3gpp.org/ftp/Specs/archive/28_series/28.623/ +paths: {} +components: + schemas: + +#-------- Definition of types----------------------------------------------------- + + RegistrationState: + type: string + enum: + - REGISTERED + - DEREGISTERED + VnfParameter: + type: object + properties: + vnfInstanceId: + type: string + vnfdId: + type: string + flavourId: + type: string + autoScalable: + type: boolean + PeeParameter: + type: object + properties: + siteIdentification: + type: string + siteDescription: + type: string + siteLatitude: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Latitude' + siteLongitude: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Longitude' + siteAltitude: + type: number + format: float + equipmentType: + type: string + environmentType: + type: string + powerInterface: + type: string + ThresholdInfo: + type: object + properties: + thresholdDirection: + type: string + enum: + - UP + - DOWN + - UP_AND_DOWN + thresholdValue: + oneOf: + - type: integer + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Float' + hysteresis: + oneOf: + - type: integer + minimum: 0 + - type: number + format: float + minimum: 0 + Operation: + type: object + properties: + name: + type: string + allowedNFTypes: + $ref: '#/components/schemas/NFType' + operationSemantics: + $ref: '#/components/schemas/OperationSemantics' + NFType: + type: string + description: ' NF name defined in TS 23.501 or TS 29.510' + enum: + - NRF + - UDM + - AMF + - SMF + - AUSF + - NEF + - PCF + - SMSF + - NSSF + - UDR + - LMF + - GMLC + - 5G_EIR + - SEPP + - UPF + - N3IWF + - AF + - UDSF + - DN + - 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 + - PANF + - TNGF + - W_AGF + - TWIF + - TSN_AF + + OperationSemantics: + type: string + enum: + - REQUEST_RESPONSE + - SUBSCRIBE_NOTIFY + SAP: + type: object + properties: + host: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/HostAddr' + port: + type: integer + NFServiceType: + type: string + enum: + - Namf_Communication + - Namf_EventExposure + - Namf_MT + - Namf_Location + - Nsmf_PDUSession + - Nsmf_EventExposure + - Others + TransportProtocol: + anyOf: + - type: string + enum: + - TCP + - type: string + SupportedPerfMetricGroup: + type: object + properties: + performanceMetrics: + type: array + items: + type: string + granularityPeriods: + type: array + items: + type: integer + minimum: 1 + reportingMethods: + type: array + items: + type: string + enum: + - FILE_BASED_LOC_SET_BY_PRODUCER + - FILE_BASED_LOC_SET_BY_CONSUMER + - STREAM_BASED + reportingPeriods: + type: array + items: + type: integer + minimum: 1 + ReportingCtrl: + oneOf: + - type: object + properties: + fileReportingPeriod: + type: integer + - type: object + properties: + fileReportingPeriod: + type: integer + fileLocation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + - type: object + properties: + streamTarget: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + Scope: + type: object + properties: + scopeType: + type: string + enum: + - BASE_ONLY + - BASE_ALL + - BASE_NTH_LEVEL + - BASE_SUBTREE + scopeLevel: + type: integer + ProcessMonitor: + description: >- + This data type is the "ProcessMonitor" data type without specialisations. + type: object + properties: + jobId: + type: string + status: + type: string + enum: + - NOT_STARTED + - RUNNING + - FINSHED + - FAILED + - PARTIALLY_FAILED + - CANCELLING + - CANCELLED + progressPercentage: + type: integer + minimum: 0 + maximum: 100 + progressStateInfo: + type: string + resultStateInfo: + type: string + startTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + timer: + type: integer + FileDownloadJobProcessMonitor: + description: >- + This data type is the "ProcessMonitor" data type with specialisations + for usage in the "FileDownloadJob". + type: object + properties: + jobId: + type: string + status: + type: string + enum: + - NOT_STARTED + - RUNNING + - FINSHED + - FAILED + - CANCELLING + - CANCELLED + progressPercentage: + type: integer + minimum: 0 + maximum: 100 + progressStateInfo: + type: string + resultStateInfo: + oneOf: + - type: string + enum: + - NULL + - UNKNOWN + - NO_STORAGE + - LOW_MEMROY + - NO_CONNECTION_TO_REMOTE_SERVER + - FILE_NOT_AVAILABLE + - DNS_CANNOT_BE_RESOLVED + - TIMER_EXPIRED + - OTHER + - type: string + startTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + timer: + type: integer + AreaScope: + oneOf: + - type: array + items: + $ref: '#/components/schemas/EutraCellId' + - type: array + items: + $ref: '#/components/schemas/NrCellId' + - type: array + items: + $ref: '#/components/schemas/Tac' + - type: array + items: + $ref: '#/components/schemas/Tai' + Tai: + type: object + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + tac: + $ref: '#/components/schemas/Tac' + AreaConfig: + type: object + properties: + freqInfo: + $ref: '#/components/schemas/FreqInfo' + pciList: + type: array + items: + type: integer + FreqInfo: + description: specifies the carrier frequency and bands used in a cell. + type: object + properties: + arfcn: + type: integer + freqBands: + type: array + items: + type: integer + MbsfnArea: + type: object + properties: + mbsfnAreaId: + type: integer + minimum: 1 + earfcn: + type: integer + minimum: 1 + Tac: + type: string + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + EutraCellId: + type: string + pattern: '^[A-Fa-f0-9]{7}$' + NrCellId: + type: string + pattern: '^[A-Fa-f0-9]{9}$' + IpAddr: + oneOf: + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv4Addr' + - $ref: 'TS28623_ComDefs.yaml#/components/schemas/Ipv6Addr' + + ManagementData: + oneOf: + - type: array + items: + type: string + enum: + - COVERAGE + - CAPACITY + - ENERGY_EFFICIENCY + - MOBILITY + - ACCESSIBILITY + - type: array + items: + type: string + NodeFilter: + type: object + properties: + areaOfInterest: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AreaOfInterest' + networkDomain: + type: string + enum: + - CN + - RAN + cpUpType: + type: string + enum: + - CP + - UP + sst: + type: integer + +#-------- Definition of types used in Trace control NRM fragment------------------ + + jobType-Type: + type: string + description: Specifies whether the TraceJob represents only MDT, Logged MBSFN MDT, Trace or a combined Trace and MDT job. Applicable for Trace, MDT, RCEF and RLF reporting. See 3GPP TS 32.422 clause 5.9a for additional details. + enum: + - IMMEDIATE_MDT_ONLY + - LOGGED_MDT_ONLY + - TRACE_ONLY + - IMMEDIATE_MDT AND TRACE + - RLF_REPORT_ONLY + - RCEF_REPORT_ONLY + - LOGGED_MBSFN_MDT + + listOfInterfaces-Type: + description: The interfaces to be recorded in the Network Element. See 3GPP TS 32.422 clause 5.5 for additional details. + type: object + properties: + MSCServerInterfaces: + type: array + items: + type: string + enum: + - A + - Iu-CS + - Mc + - MAP-G + - MAP-B + - MAP-E + - MAP-F + - MAP-D + - MAP-C + - CAP + MGWInterfaces: + type: array + items: + type: string + enum: + - Mc + - Nb-UP + - Iu-UP + RNCInterfaces: + type: array + items: + type: string + enum: + - Iu-CS + - Iu-PS + - Iur + - Iub + - Uu + SGSNInterfaces: + type: array + items: + type: string + enum: + - Gb + - Iu-PS + - Gn + - MAP-Gr + - MAP-Gd + - MAP-Gf + - Ge + - Gs + - S6d + - S4 + - S3 + - S13 + GGSNInterfaces: + type: array + items: + type: string + enum: + - Gn + - Gi + - Gmb + S-CSCFInterfaces: + type: array + items: + type: string + enum: + - Mw + - Mg + - Mr + - Mi + P-CSCFInterfaces: + type: array + items: + type: string + enum: + - Gm + - Mw + I-CSCFInterfaces: + type: array + items: + type: string + enum: + - Cx + - Dx + - Mg + - Mw + MRFCInterfaces: + type: array + items: + type: string + enum: + - Mp + - Mr + MGCFInterfaces: + type: array + items: + type: string + enum: + - Mg + - Mj + - Mn + IBCFInterfaces: + type: array + items: + type: string + enum: + - Ix + - Mx + E-CSCFInterfaces: + type: array + items: + type: string + enum: + - Mw + - Ml + - Mm + - Mi/Mg + BGCFInterfaces: + type: array + items: + type: string + enum: + - Mi + - Mj + - Mk + ASInterfaces: + type: array + items: + type: string + enum: + - Dh + - Sh + - ISC + - Ut + HSSInterfaces: + type: array + items: + type: string + enum: + - MAP-C + - MAP-D + - Gc + - Gr + - Cx + - S6d + - S6a + - Sh + - N70 + - N71 + - NU1 + EIRInterfaces: + type: array + items: + type: string + enum: + - MAP-F + - S13 + - MAP-Gf + BM-SCInterfaces: + type: array + items: + type: string + enum: + - Gmb + MMEInterfaces: + type: array + items: + type: string + enum: + - S1-MME + - S3 + - S6a + - S10 + - S11 + - S13 + SGWInterfaces: + type: array + items: + type: string + enum: + - S4 + - S5 + - S8 + - S11 + - Gxc + PDN_GWInterfaces: + type: array + items: + type: string + enum: + - S2a + - S2b + - S2c + - S5 + - S6b + - Gx + - S8 + - SGi + eNBInterfaces: + type: array + items: + type: string + enum: + - S1-MME + - X2 + en-gNBInterfaces: + type: array + items: + type: string + enum: + - S1-MME + - X2 + - Uu + - F1-C + - E1 + AMFInterfaces: + type: array + items: + type: string + enum: + - N1 + - N2 + - N8 + - N11 + - N12 + - N14 + - N15 + - N20 + - N22 + - N26 + AUSFInterfaces: + type: array + items: + type: string + enum: + - N12 + - N13 + NEFInterfaces: + type: array + items: + type: string + enum: + - N29 + - N30 + - N33 + NRFInterfaces: + type: array + items: + type: string + enum: + - N27 + NSSFInterfaces: + type: array + items: + type: string + enum: + - N22 + - N31 + PCFInterfaces: + type: array + items: + type: string + enum: + - N5 + - N7 + - N15 + SMFInterfaces: + type: array + items: + type: string + enum: + - N4 + - N7 + - N10 + - N11 + - S5-C + SMSFInterfaces: + type: array + items: + type: string + enum: + - N20 + - N21 + UDMInterfaces: + type: array + items: + type: string + enum: + - N8 + - N10 + - N13 + - N21 + - NU1 + UPFInterfaces: + type: array + items: + type: string + enum: + - N4 + ng-eNBInterfaces: + type: array + items: + type: string + enum: + - NG-C + - Xn-C + - Uu + gNB-CU-CPInterfaces: + type: array + items: + type: string + enum: + - NG-C + - Xn-C + - Uu + - F1-C + - E1 + - X2-C + gNB-CU-UPInterfaces: + type: array + items: + type: string + enum: + - E1 + gNB-DUInterfaces: + type: array + items: + type: string + enum: + - F1-C + + listOfNeTypes-Type: + description: The Network Element types where Trace Session activation is needed. See 3GPP TS 32.422 clause 5.4 for additional details. + type: array + items: + type: string + enum: + - MSC_SERVER + - SGSN + - MGW + - GGSN + - RNC + - BM_SC + - MME + - SGW + - PGW + - ENB + - EN_GNB + - GNB_CU_CP + - GNB_CU_UP + - GNB_DU + - AMF + - PCF + - SMF + - UPF + - AUSF + - SMSF + - HSS + - UDM + + plmnTarget-Type: + type: object + description: The PLMN for which sessions shall be selected in the Trace Session in case of management based activation when several PLMNs are supported in the RAN (this means that shared cells and not shared cells are allowed for the specified PLMN. Note that the PLMN Target might differ from the PLMN specified in the Trace Reference, as that specifies the PLMN that is containing the management system requesting the Trace Session from the NE. See 3GPP TS 32.422 clause 5.9b for additional details. + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + required: + - mcc + - mnc + + traceDepth-Type: + description: Specifies how detailed information should be recorded in the Network Element. The Trace Depth is a paremeter for Trace Session level, i.e., the Trace Depth is the same for all of the NEs to be traced in the same Trace Session. See 3GPP TS 32.422 clause 5.3 for additional details. + type: string + enum: + - MINIMUM + - MEDIUM + - MAXIMUM + - VENDORMINIMUM + - VENDORMEDIUM + - VENDORMAXIMUM + + traceReference-Type: + type: object + description: The Trace Reference parameter shall be globally unique, therefore the Trace Reference shall compose as follows - MCC+MNC+Trace ID, where the MCC and MNC are coming with the Trace activation request from the management system to identify one PLMN containing the management system, and Trace ID is a 3 byte Octet String. See 3GPP TS 32.422 clause 5.6 for additional details. + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + traceId: + type: string + required: + - mcc + - mnc + - traceId + + traceReportingFormat-Type: + type: string + description: Specifies whether file-based or streaming reporting shall be used for this Trace Session. See 3GPP TS 32.422 clause 5.11 for additional details. + enum: + - FILE-BASED + - STREAMING + + traceTarget-Type: + type: object + description: Trace target conveying both the type and value of the target ID. For additional details see 3GPP TS 32.422 + properties: + TargetIdType: + type: string + enum: + - IMSI + - IMEI + - IMEISV + - PUBLIC_ID + - UTRAN_CELL + - E-UTRAN_CELL + - NG-RAN_CELL + - eNB + - RNC + - gNB + - SUPI + TargetIdValue: + type: string + required: + - TargetIdType + - TargetIdValue + + triggeringEvents-Type: + type: object + description: Specifies when to start a Trace Recording Session and which message shall be recorded first, when to stop a Trace Recording Session and which message shall be recorded last respectively. See 3GPP TS 32.422 clause 5.1 for additional detials. + properties: + MSC_SERVER: + type: array + items: + type: string + enum: + - MO_MT_CALLS + - MO_MT_SMS + - LU_IMSIattach_IMSIdetach + - HANDOVER + - SS + SGSN: + type: array + items: + type: string + enum: + - PDPcontext + - MO_MT_SMS + - RAU_GPRSattach_GPRSdetach + - MBMScontext + MGW: + type: array + items: + type: string + enum: + - CONTEXT + GGSN: + type: array + items: + type: string + enum: + - PDPcontext + - MBMScontext + IMS: + type: array + items: + type: string + enum: + - SIPsession_StandaloneTransaction + BM_SC: + type: array + items: + type: string + enum: + - MBMSactivation + MME: + type: array + items: + type: string + enum: + - UEinitiatedPDNconnectivityRequest + - ServiceRequest + - InitialAttach_TAU_Detach + - UEinitiatedPDNdisconnection + - BearerActivationModificationDeletion + - Handover + SGW: + type: array + items: + type: string + enum: + - PDNconnectionCreation + - PDNconnectionTermination + - BearerActivationModificationDeletion + PGW: + type: array + items: + type: string + enum: + - PDNconnectionCreation + - PDNconnectionTermination + - BearerActivationModificationDeletion + AMF: + type: array + items: + type: string + enum: + - Registration + - ServiceRequest + - Handover + - UEderegistration + - NetworkDeregistration + - UEMobilityFromEPC + - UEMobilityToEPC + SMF: + type: array + items: + type: string + enum: + - PDUsessionEstablishment + - PDUsessionModification + - PDUsessionRelease + - PDUsessionUPactivationDeactivation + - MobilityBtw3gppAndN3gppTo5GC + - MobilityFromEpc + PCF: + type: array + items: + type: string + enum: + - AMpolicy + - SMpolicy + - Authorization + - BDTpolicy + UPF: + type: array + items: + type: string + enum: + - N4Session + AUSF: + type: array + items: + type: string + enum: + - UEauthentication + NEF: + type: array + items: + type: string + enum: + - EventExposure + - PFDmanagement + - ParameterProvision + - Trigger + NRF: + type: array + items: + type: string + enum: + - NFmanagement + - NFdiscovery + NSSF: + type: array + items: + type: string + enum: + - NSSelection + - NSSAI + SMSF: + type: array + items: + type: string + enum: + - SMservice + UDM: + type: array + items: + type: string + enum: + - UEcontext + - SubscriberData + - UEauthentication + - EventExposure + + anonymizationOfMdtData-Type: + description: Specifies level of MDT anonymization. For additional details see 3GPP TS 32.422 clause 5.10.12. + type: string + enum: + - NO_IDENTITY + - TAC_OF_IMEI + + beamLevelMeasurement-Type: + description: Determines whether beam level measurements shall be included in case of immediate MDT M1 measurement in NR. For additional details see 3GPP TS 32.422 clause 5.10.40. + type: boolean + + collectionPeriodRrmLte-Type: + description: See details in 3GPP TS 32.422 clause 5.10.20. + type: string + enum: + - 100ms + - 1000ms + - 1024ms + - 1280ms + - 2048ms + - 2560ms + - 5120ms + - 10000ms + - 10240ms + - 60000ms + + collectionPeriodM6Lte-Type: + description: See details in 3GPP TS 32.422 clause 5.10.32. + type: string + enum: + - 1024ms + - 2048ms + - 5120ms + - 10240ms + + collectionPeriodM7Lte-Type: + description: See details in 3GPP TS 32.422 clause 5.10.33. + type: integer + minimum: 1 + maximum: 60 + + collectionPeriodRrmUmts-Type: + description: See details in 3GPP TS 32.422 clause 5.10.21. + type: string + enum: + - 100ms + - 250ms + - 500ms + - 1000ms + - 2000ms + - 3000ms + - 4000ms + - 6000ms + + collectionPeriodRrmNr-Type: + description: See details in 3GPP TS 32.422 clause 5.10.30. + type: string + enum: + - 1024ms + - 2048ms + - 5120ms + - 10240ms + - 60000ms + + collectionPeriodM6Nr-Type: + description: See details in 3GPP TS 32.422 clause 5.10.34. + type: string + enum: + - 120ms + - 240ms + - 480ms + - 640ms + - 1024ms + - 2048ms + - 5120ms + - 10240ms + - 20480ms + - 40960ms + - 1min + - 6min + - 12min + - 30min + + collectionPeriodM7Nr-Type: + description: See details in 3GPP TS 32.422 clause 5.10.35. + type: integer + minimum: 1 + maximum: 60 + + eventListForEventTriggeredMeasurement-Type: + description: See details in 3GPP TS 32.422 clause 5.10.28. + type: string + enum: + - OUT_OF_COVERAGE + - A2_EVENT + + eventThreshold-Type: + description: See details in 3GPP TS 32.422 clause 5.10.7, 5.10.7a, 5.10.13 and 5.10.14. + type: object + properties: + EventThresholdRSRP: + oneOf: + - type: integer + minimum: 0 + maximum: 97 + - type: integer + minimum: 0 + maximum: 127 + EventThresholdRSRQ: + oneOf: + - type: integer + minimum: 0 + maximum: 34 + - type: integer + minimum: 0 + maximum: 127 + EventThreshold1F: + type: object + properties: + CPICH_RSCP: + type: integer + minimum: -120 + maximum: 25 + CPICH_EcNo: + type: integer + minimum: -24 + maximum: 0 + PathLoss: + type: integer + minimum: 30 + maximum: 165 + EventThreshold1I: + type: integer + minimum: -120 + maximum: 25 + + listOfMeasurements-Type: + description: See details in 3GPP TS 32.422 clause 5.10.3 for details. + type: object + properties: + UMTS: + type: array + items: + type: string + enum: + - M1 + - M2 + - M3 + - M4 + - M5 + - M6_DL + - M6_UL + - M7_DL + - M7_UL + LTE: + type: array + items: + type: string + enum: + - M1 + - M2 + - M3 + - M4 + - M5 + - M1_EVENT_TRIGGERED + - M6 + - M7 + - M8 + - M9 + NR: + type: array + items: + type: string + enum: + - M1 + - M2 + - M3 + - M4 + - M5 + - M6 + - M7 + - M1_EVENT_TRIGGERED + - M8 + - M9 + + loggingDuration-Type: + description: See details in 3GPP TS 32.422 clause 5.10.9. + type: string + enum: + - 600s + - 1200s + - 2400s + - 3600s + - 5400s + - 7200s + + loggingInterval-Type: + description: See details in 3GPP TS 32.422 clause 5.10.8. + type: object + properties: + UMTS: + type: array + items: + type: string + enum: + - 1.28s + - 2.56s + - 5.12s + - 10.24s + - 20.48s + - 30.72s + - 40.96s + - 61.44s + LTE: + type: array + items: + type: string + enum: + - 1.28s + - 2.56s + - 5.12s + - 10.24s + - 20.48s + - 30.72s + - 40.96s + - 61.44s + NR: + type: array + items: + type: string + enum: + - 0.32s + - 0.64s + - 1.28s + - 2.56s + - 5.12s + - 10.24s + - 20.48s + - 30.72s + - 40.96s + - 61.44s + - INFINITY + + eventThresholdL1-Type: + description: See details in 3GPP TS 32.422 clause 5.10.X. + type: object + properties: + RSRP: + type: integer + minimum: 0 + maximum: 127 + RSRQ: + type: integer + minimum: 0 + maximum: 127 + + hysteresisL1-Type: + description: See details in 3GPP TS 32.422 clause 5.10.Y. + type: integer + minimum: 0 + maximum: 30 + + timeToTriggerL1-Type: + description: See details in 3GPP TS 32.422 clause 5.10.Z. + type: string + enum: + - 0ms + - 40ms + - 64ms + - 80ms + - 100ms + - 128ms + - 160ms + - 256ms + - 320ms + - 480ms + - 512ms + - 640ms + - 1024ms + - 1280ms + - 2560ms + - 5120ms + + measurementPeriodLte-Type: + description: See details in 3GPP TS 32.422 clause 5.10.23. + type: string + enum: + - 1024ms + - 2048ms + - 5120ms + - 10240ms + - 1min + + measurementPeriodUmts-Type: + description: See details in 3GPP TS 32.422 clause 5.10.22. + type: string + enum: + - 1000ms + - 2000ms + - 3000ms + - 4000ms + - 6000ms + - 8000ms + - 12000ms + - 16000ms + - 20000ms + - 24000ms + - 28000ms + - 32000ms + - 64000ms + + measurementQuantity-Type: + description: See details in 3GPP TS 32.422 clause 5.10.15. + type: string + enum: + - CPICH_EcNo + - CPICH_RSCP + - PathLoss + + eventThresholdUphUmts-Type: + description: See details in 3GPP TS 32.422 clause 5.10.A. + type: integer + minimum: 0 + maximum: 31 + + plmnList-Type: + description: See details in 3GPP TS 32.422 clause 5.10.24. + type: array + items: + type: object + properties: + mcc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + mnc: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mnc' + required: + - mcc + - mnc + maxItems: 16 + + positioningMethod-Type: + description: See details in 3GPP TS 32.422 clause 5.10.19. + type: string + enum: + - GNSS + - E-CELL_ID + + reportAmount-Type: + description: See details in 3GPP TS 32.422 clause 5.10.6. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + reportAmountM1LTE-Type: + description: See details in 3GPP TS 32.422 clause 5.10.x. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + + reportAmountM4LTE-Type: + description: See details in 3GPP TS 32.422 clause 5.10.y. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + + reportAmountM5LTE-Type: + description: See details in 3GPP TS 32.422 clause 5.10.z. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + + reportAmountM6LTE-Type: + description: See details in 3GPP TS 32.422 clause 5.10.a. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + + reportAmountM7LTE-Type: + description: See details in 3GPP TS 32.422 clause 5.10.b. + type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - INFINITY + + reportingTrigger-Type: + description: See details in 3GPP TS 32.422 clause 5.10.4. + type: array + items: + type: string + enum: + - PERIODICAL + - A2_FOR_LTE_NR + - 1F_FOR_UMTS + - 1I_FOR_UMTS_MCPS_TDD + - A2_TRIGGERED_PERIODIC_FOR_LTE_NR + - ALL_CONFIGURED_RRM_FOR_LTE_NR + - ALL_CONFIGURED_RRM_FOR_UMTS + + reportInterval-Type: + description: See details in 3GPP TS 32.422 clause 5.10.5. + type: object + properties: + UMTS: + type: array + items: + type: string + enum: + - 250ms + - 500ms + - 1000ms + - 2000ms + - 3000ms + - 4000ms + - 6000ms + - 8000ms + - 12000ms + - 16000ms + - 20000ms + - 24000ms + - 28000ms + - 32000ms + - 64000ms + LTE: + type: array + items: + type: string + enum: + - 120ms + - 240ms + - 480ms + - 640ms + - 1024ms + - 2048ms + - 5120ms + - 10240ms + - 60000ms + - 360000ms + - 720000ms + - 1800000ms + - 3600000ms + NR: + type: array + items: + type: string + enum: + - 120ms + - 240ms + - 480ms + - 640ms + - 1024ms + - 2048ms + - 5120ms + - 10240ms + - 20480ms + - 40960ms + - 60000ms + - 360000ms + - 720000ms + - 1800000ms + + reportType-Type: + description: Report type for logged NR MDT. See details in 3GPP TS 32.422 clause 5.10.27. + type: string + enum: + - PERIODICAL + - EVENT_TRIGGERED + + sensorInformation-Type: + description: See details in 3GPP TS 32.422 clause 5.10.29. + type: array + items: + type: string + enum: + - BAROMETRIC_PRESSURE + - UE_SPEED + - UE_ORIENTATION + + traceCollectionEntityId-Type: + description: See details in 3GPP TS 32.422 clause 5.10.11. Only TCE Id value may be sent over the air to the UE being configured for Logged MDT. + type: integer + + excessPacketDelayThresholds-Type: + description: Excess Packet Delay Threshold for NR MDT. See details in 3GPP TS 32.422 clause 4.1.1 and 4.1.2. + type: array + properties: + fiveQIValue: + type: integer + excessPacketDelayThresholdValue: + type: string + enum: + - 0.25ms + - 0.5ms + - 1ms + - 2ms + - 4ms + - 5ms + - 10ms + - 20ms + - 30ms + - 40ms + - 50ms + - 60ms + - 70ms + - 80ms + - 90ms + - 100ms + - 150ms + - 300ms + - 500ms + minItems: 0 + maxItems: 255 + + traceConfig-Type: + description: Trace configuration parameters for NR. See details in 3GPP TS 28.622 clause 4.3.30. + type: object + properties: + listOfInterfaces: + $ref: '#/components/schemas/listOfInterfaces-Type' + listOfNeTypes: + $ref: '#/components/schemas/listOfNeTypes-Type' + traceDepth: + $ref: '#/components/schemas/traceDepth-Type' + triggeringEvents: + $ref: '#/components/schemas/triggeringEvents-Type' + + immediateMDTConfig-Type: + description: Immediate MDT configuration parameters. See details in 3GPP TS 28.622 clause 4.3.30. + type: object + properties: + listOfMeasurements: + $ref: '#/components/schemas/listOfMeasurements-Type' + reportingTrigger: + $ref: '#/components/schemas/reportingTrigger-Type' + reportAmount: + $ref: '#/components/schemas/reportAmount-Type' + reportAmountM1LTE: + $ref: '#/components/schemas/reportAmountM1LTE-Type' + reportAmountM4LTE: + $ref: '#/components/schemas/reportAmountM4LTE-Type' + reportAmountM5LTE: + $ref: '#/components/schemas/reportAmountM5LTE-Type' + reportAmountM6LTE: + $ref: '#/components/schemas/reportAmountM6LTE-Type' + reportAmountM7LTE: + $ref: '#/components/schemas/reportAmountM7LTE-Type' + reportInterval: + $ref: '#/components/schemas/reportInterval-Type' + eventThreshold: + $ref: '#/components/schemas/eventThreshold-Type' + collectionPeriodRrmLte: + $ref: '#/components/schemas/collectionPeriodRrmLte-Type' + collectionPeriodM6Lte: + $ref: '#/components/schemas/collectionPeriodM6Lte-Type' + collectionPeriodM7Lte: + $ref: '#/components/schemas/collectionPeriodM7Lte-Type' + collectionPeriodRrmUmts: + $ref: '#/components/schemas/collectionPeriodRrmUmts-Type' + collectionPeriodRrmNr: + $ref: '#/components/schemas/collectionPeriodRrmNr-Type' + collectionPeriodM6Nr: + $ref: '#/components/schemas/collectionPeriodM6Nr-Type' + collectionPeriodM7Nr: + $ref: '#/components/schemas/collectionPeriodM7Nr-Type' + eventThresholdUphUmts: + $ref: '#/components/schemas/eventThresholdUphUmts-Type' + measurementPeriodUmts: + $ref: '#/components/schemas/measurementPeriodUmts-Type' + measurementPeriodLte: + $ref: '#/components/schemas/measurementPeriodLte-Type' + measurementQuantity: + $ref: '#/components/schemas/measurementQuantity-Type' + beamLevelMeasurement: + $ref: '#/components/schemas/beamLevelMeasurement-Type' + positioningMethod: + $ref: '#/components/schemas/positioningMethod-Type' + excessPacketDelayThresholds: + $ref: '#/components/schemas/excessPacketDelayThresholds-Type' + + loggedMDTConfig-Type: + description: Logged MDT configuration parameters. See details in 3GPP TS 28.622 clause 4.3.30. + type: object + properties: + traceCollectionEntityId: + $ref: '#/components/schemas/traceCollectionEntityId-Type' + loggingDuration: + $ref: '#/components/schemas/loggingDuration-Type' + loggingInterval: + $ref: '#/components/schemas/loggingInterval-Type' + eventThresholdL1: + $ref: '#/components/schemas/eventThresholdL1-Type' + hysteresisL1: + $ref: '#/components/schemas/hysteresisL1-Type' + timeToTriggerL1: + $ref: '#/components/schemas/timeToTriggerL1-Type' + mbsfnAreaList: + type: array + items: + $ref: '#/components/schemas/MbsfnArea' + reportType: + $ref: '#/components/schemas/reportType-Type' + plmnList: + $ref: '#/components/schemas/plmnList-Type' + eventListForEventTriggeredMeasurement: + $ref: '#/components/schemas/eventListForEventTriggeredMeasurement-Type' + areaConfigurationForNeighCell: + $ref: '#/components/schemas/AreaConfig' + + mdtConfig-Type: + description: MDT config parameters. See details in 3GPP TS 28.622 clause 4.3.30. + type: object + properties: + anonymizationOfMdtData: + $ref: '#/components/schemas/anonymizationOfMdtData-Type' + areaScope: + type: array + items: + $ref: '#/components/schemas/AreaScope' + sensorInformation: + $ref: '#/components/schemas/sensorInformation-Type' + immediateMDTConfig: + $ref: '#/components/schemas/immediateMDTConfig-Type' + loggedMDTConfig: + $ref: '#/components/schemas/loggedMDTConfig-Type' + +#-------- end of Definition of types used in Trace control NRM fragment ---------- + + +#-------- Definition of abstract IOC Top ----------------------------------------- + + Top-Attr: + # This definition will be deprecated, when all occurances of Top-Attr + # are replaced by Top. + type: object + properties: + id: + type: string + nullable: true + objectClass: + type: string + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + VsDataContainer: + $ref: '#/components/schemas/VsDataContainer-Multiple' + required: + - id + Top: + type: object + properties: + id: + type: string + nullable: true + objectClass: + type: string + objectInstance: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + VsDataContainer: + $ref: '#/components/schemas/VsDataContainer-Multiple' + required: + - id + +#-------- Definition of IOCs with new name-containments defined in other TS ------ + + SubNetwork-Attr: + type: object + properties: + dnPrefix: + type: string + userLabel: + type: string + userDefinedNetworkType: + type: string + setOfMcc: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Mcc' + priorityLabel: + type: integer + supportedPerfMetricGroups: + type: array + items: + $ref: '#/components/schemas/SupportedPerfMetricGroup' + supportedTraceMetrics: + type: array + items: + type: string + ManagedElement-Attr: + type: object + properties: + dnPrefix: + type: string + managedElementTypeList: + type: array + items: + type: string + userLabel: + type: string + locationName: + type: string + managedBy: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + vendorName: + type: string + userDefinedState: + type: string + swVersion: + type: string + priorityLabel: + type: integer + supportedPerfMetricGroups: + type: array + items: + $ref: '#/components/schemas/SupportedPerfMetricGroup' + supportedTraceMetrics: + type: array + items: + type: string + + SubNetwork-ncO: + type: object + properties: + ManagementNode: + $ref: '#/components/schemas/ManagementNode-Multiple' + MnsAgent: + $ref: '#/components/schemas/MnsAgent-Multiple' + MeContext: + $ref: '#/components/schemas/MeContext-Multiple' + PerfMetricJob: + $ref: '#/components/schemas/PerfMetricJob-Multiple' + ThresholdMonitor: + $ref: '#/components/schemas/ThresholdMonitor-Multiple' + TraceJob: + $ref: '#/components/schemas/TraceJob-Multiple' + ManagementDataCollection: + $ref: '#/components/schemas/ManagementDataCollection-Multiple' + NtfSubscriptionControl: + $ref: '#/components/schemas/NtfSubscriptionControl-Multiple' + AlarmList: + $ref: '#/components/schemas/AlarmList-Single' + FileDownloadJob: + $ref: '#/components/schemas/FileDownloadJob-Multiple' + Files: + $ref: '#/components/schemas/Files-Multiple' + MnsRegistry: + $ref: '#/components/schemas/MnsRegistry-Single' + ManagedElement-ncO: + type: object + properties: + MnsAgent: + $ref: '#/components/schemas/MnsAgent-Multiple' + PerfMetricJob: + $ref: '#/components/schemas/PerfMetricJob-Multiple' + ThresholdMonitor: + $ref: '#/components/schemas/ThresholdMonitor-Multiple' + TraceJob: + $ref: '#/components/schemas/TraceJob-Multiple' + NtfSubscriptionControl: + $ref: '#/components/schemas/NtfSubscriptionControl-Multiple' + AlarmList: + $ref: '#/components/schemas/AlarmList-Single' + FileDownloadJob: + $ref: '#/components/schemas/FileDownloadJob-Multiple' + Files: + $ref: '#/components/schemas/Files-Multiple' + +#-------- Definition of abstract IOCs -------------------------------------------- + + ManagedFunction-Attr: + type: object + properties: + userLabel: + type: string + vnfParametersList: + type: array + items: + $ref: '#/components/schemas/VnfParameter' + peeParametersList: + type: array + items: + $ref: '#/components/schemas/PeeParameter' + priorityLabel: + type: integer + supportedPerfMetricGroups: + type: array + items: + $ref: '#/components/schemas/SupportedPerfMetricGroup' + supportedTraceMetrics: + type: array + items: + type: string + EP_RP-Attr: + type: object + properties: + userLabel: + type: string + farEndEntity: + type: string + supportedPerfMetricGroups: + type: array + items: + $ref: '#/components/schemas/SupportedPerfMetricGroup' + + TraceJob-Attr: + type: object + description: abstract class used as a container of all TraceJob attributes + properties: + jobType: + $ref: '#/components/schemas/jobType-Type' + plmnTarget: + $ref: '#/components/schemas/plmnTarget-Type' + traceReportingConsumerUri: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + traceCollectionEntityIpAddress: + $ref: '#/components/schemas/IpAddr' + traceReference: + $ref: '#/components/schemas/traceReference-Type' + jobId: + type: string + traceReportingFormat: + $ref: '#/components/schemas/traceReportingFormat-Type' + traceTarget: + $ref: '#/components/schemas/traceTarget-Type' + traceConfig: + $ref: '#/components/schemas/traceConfig-Type' + mdtConfig: + $ref: '#/components/schemas/mdtConfig-Type' + + ManagedFunction-ncO: + type: object + properties: + PerfMetricJob: + $ref: '#/components/schemas/PerfMetricJob-Multiple' + ThresholdMonitor: + $ref: '#/components/schemas/ThresholdMonitor-Multiple' + ManagedNFService: + $ref: '#/components/schemas/ManagedNFService-Multiple' + TraceJob: + $ref: '#/components/schemas/TraceJob-Multiple' + +#-------- Definition of concrete IOCs -------------------------------------------- + + VsDataContainer-Single: + type: object + properties: + id: + type: string + attributes: + type: object + properties: + vsDataType: + type: string + vsDataFormatVersion: + type: string + vsData: + nullable: true + VsDataContainer: + $ref: '#/components/schemas/VsDataContainer-Multiple' + ManagedNFService-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + userLabel: + type: string + nFServiceType: + $ref: '#/components/schemas/NFServiceType' + sAP: + $ref: '#/components/schemas/SAP' + operations: + type: array + items: + $ref: '#/components/schemas/Operation' + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + usageState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/UsageState' + registrationState: + $ref: '#/components/schemas/RegistrationState' + ManagementNode-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + userLabel: + type: string + managedElements: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + vendorName: + type: string + userDefinedState: + type: string + locationName: + type: string + swVersion: + type: string + MnsAgent: + $ref: '#/components/schemas/MnsAgent-Multiple' + MnsAgent-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + systemDN: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + MeContext-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + dnPrefix: + type: string + PerfMetricJob-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + jobId: + type: string + performanceMetrics: + type: array + items: + type: string + granularityPeriod: + type: integer + minimum: 1 + objectInstances: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + rootObjectInstances: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + reportingCtrl: + $ref: '#/components/schemas/ReportingCtrl' + Files: + $ref: '#/components/schemas/Files-Multiple' + ThresholdMonitor-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + performanceMetrics: + type: array + items: + type: string + thresholdInfoList: + type: array + items: + $ref: '#/components/schemas/ThresholdInfo' + monitorGranularityPeriod: + type: integer + minimum: 1 + objectInstances: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + rootObjectInstances: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DnList' + NtfSubscriptionControl-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + notificationRecipientAddress: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + notificationTypes: + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/NotificationType' + scope: + $ref: '#/components/schemas/Scope' + notificationFilter: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Filter' + HeartbeatControl: + $ref: '#/components/schemas/HeartbeatControl-Single' + HeartbeatControl-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + heartbeatNtfPeriod: + type: integer + minimum: 0 + triggerHeartbeatNtf: + type: boolean + TraceJob-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + $ref: '#/components/schemas/TraceJob-Attr' + Files: + $ref: '#/components/schemas/Files-Multiple' + ManagementDataCollection-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + managementData: + $ref: '#/components/schemas/ManagementData' + targetNodeFilter: + $ref: '#/components/schemas/NodeFilter' + collectionTimeWindow: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/TimeWindow' + reportingCtrl: + $ref: '#/components/schemas/ReportingCtrl' + dataScope: + type: string + enum: + - SNSSAI + - 5QI + AlarmList-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + administrativeState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/AdministrativeState' + operationalState: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/OperationalState' + numOfAlarmRecords: + type: integer + lastModification: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + alarmRecords: + description: >- + This resource represents a map of alarm records. + The alarmIds are used as keys in the map. + type: object + additionalProperties: + $ref: 'TS28532_FaultMnS.yaml#/components/schemas/AlarmRecord' + FileDownloadJob-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + fileLocation: + type: string + notificationRecipientAddress: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + cancelJob: + type: string + enum: + - TRUE + - FALSE + jobMonitor: + $ref: '#/components/schemas/FileDownloadJobProcessMonitor' + Files-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + numberOfFiles: + type: integer + jobRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + jobId: + type: string + File: + $ref: '#/components/schemas/File-Multiple' + File-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + attributes: + type: object + properties: + fileLocation: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + fileCompression: + type: string + fileSize: + type: integer + fileDataType: + type: string + enum: + - PERFORMANCE + - TRACE + - ANALYTICS + - PROPRIETARY + fileFormat: + type: string + fileReadyTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + fileExpirationTime: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/DateTime' + fileContent: + type: string + jobRef: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + jobId: + type: string + MnsRegistry-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + MnsInfo: + $ref: '#/components/schemas/MnsInfo-Multiple' + + MnsInfo-Single: + allOf: + - $ref: '#/components/schemas/Top' + - type: object + properties: + mnsLabel: + type: string + mnsType: + type: string + enum: + - ProvMnS + - FaultSupervisionMnS + - StreamingDataReportingMnS + - FileDataReportingMnS + mnsVersion: + type: string + mnsAddress: + description: Resource URI as defined in the relevant Technical Specification + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Uri' + mnsScope: + description: >- + List of the managed object instances that can be accessed using the MnS. + If a complete SubNetwork can be accessed using the MnS, this attribute may + contain the DN of the SubNetwork instead of the DNs of the individual managed + entities within the SubNetwork. + type: array + items: + $ref: 'TS28623_ComDefs.yaml#/components/schemas/Dn' + +#-------- Definition of YAML arrays for name-contained IOCs ---------------------- + + VsDataContainer-Multiple: + type: array + items: + $ref: '#/components/schemas/VsDataContainer-Single' + ManagedNFService-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagedNFService-Single' + ManagementNode-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagementNode-Single' + MnsAgent-Multiple: + type: array + items: + $ref: '#/components/schemas/MnsAgent-Single' + MeContext-Multiple: + type: array + items: + $ref: '#/components/schemas/MeContext-Single' + PerfMetricJob-Multiple: + type: array + items: + $ref: '#/components/schemas/PerfMetricJob-Single' + ThresholdMonitor-Multiple: + type: array + items: + $ref: '#/components/schemas/ThresholdMonitor-Single' + TraceJob-Multiple: + type: array + items: + $ref: '#/components/schemas/TraceJob-Single' + ManagementDataCollection-Multiple: + type: array + items: + $ref: '#/components/schemas/ManagementDataCollection-Single' + NtfSubscriptionControl-Multiple: + type: array + items: + $ref: '#/components/schemas/NtfSubscriptionControl-Single' + FileDownloadJob-Multiple: + type: array + items: + $ref: '#/components/schemas/FileDownloadJob-Single' + Files-Multiple: + type: array + items: + $ref: '#/components/schemas/Files-Single' + File-Multiple: + type: array + items: + $ref: '#/components/schemas/File-Single' + MnsInfo-Multiple: + type: array + items: + $ref: '#/components/schemas/MnsInfo-Single' + +#-------- Definitions in TS 28.623 for TS 28.532 --------------------------------- + + resources-genericNrm: + oneOf: + + - $ref: '#/components/schemas/VsDataContainer-Single' + + - $ref: '#/components/schemas/ManagementNode-Single' + - $ref: '#/components/schemas/MnsAgent-Single' + - $ref: '#/components/schemas/MeContext-Single' + + - $ref: '#/components/schemas/ManagedNFService-Single' + + - $ref: '#/components/schemas/PerfMetricJob-Single' + - $ref: '#/components/schemas/ThresholdMonitor-Single' + - $ref: '#/components/schemas/TraceJob-Single' + - $ref: '#/components/schemas/ManagementDataCollection-Single' + + - $ref: '#/components/schemas/NtfSubscriptionControl-Single' + - $ref: '#/components/schemas/HeartbeatControl-Single' + + - $ref: '#/components/schemas/AlarmList-Single' + + - $ref: '#/components/schemas/FileDownloadJob-Single' + - $ref: '#/components/schemas/Files-Single' + - $ref: '#/components/schemas/File-Single' + + - $ref: '#/components/schemas/MnsRegistry-Single' + - $ref: '#/components/schemas/MnsInfo-Single' diff --git a/TS29122_AsSessionWithQoS.yaml b/TS29122_AsSessionWithQoS.yaml new file mode 100644 index 0000000..707aa12 --- /dev/null +++ b/TS29122_AsSessionWithQoS.yaml @@ -0,0 +1,1204 @@ +openapi: 3.0.0 + +info: + title: 3gpp-as-session-with-qos + version: 1.3.0-alpha.4 + description: | + API for setting us an AS session with required QoS. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-as-session-with-qos/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/subscriptions: + get: + summary: Read all or queried active subscriptions for the SCS/AS. + operationId: FetchAllASSessionWithQoSSubscriptions + tags: + - AS Session with Required QoS Subscriptions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: ip-addrs + in: query + description: The IP address(es) of the requested UE(s). + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + - name: ip-domain + in: query + description: > + The IPv4 address domain identifier. The attribute may only be provided if IPv4 address + is included in the ip-addrs query parameter. + required: false + schema: + type: string + - name: mac-addrs + in: query + description: The MAC address(es) of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource. + operationId: CreateASSessionWithQoSSubscription + tags: + - AS Session with Required QoS Subscriptions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + requestBody: + description: Request to create a new subscription resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneNotificationData' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsAsSessionWithQos' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + type: string + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/subscriptions/{subscriptionId}: + get: + summary: Read an active subscriptions for the SCS/AS and the subscription Id. + operationId: FetchIndASSessionWithQoSSubscription + tags: + - Individual AS Session with Required QoS Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates/replaces an existing subscription resource. + operationId: UpdateIndASSessionWithQoSSubscription + tags: + - Individual AS Session with Required QoS Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + '204': + description: No Content (Successful update of the subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsAsSessionWithQos' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + type: string + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates/replaces an existing subscription resource. + operationId: ModifyIndASSessionWithQoSSubscription + tags: + - Individual AS Session with Required QoS Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscriptionPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AsSessionWithQoSSubscription' + '204': + description: No Content. The subscription was modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsAsSessionWithQos' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + type: string + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription. + operationId: DeleteIndASSessionWithQoSSubscription + tags: + - Individual AS Session with Required QoS Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneNotificationData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + AsSessionWithQoSSubscription: + description: Represents an individual AS session with required QoS subscription resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + exterAppId: + type: string + description: Identifies the external Application Identifier. + extGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Describe the data flow which requires QoS. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet flows. + enEthFlowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/EthFlowInfo' + minItems: 1 + description: > + Identifies the Ethernet flows which require QoS. Each Ethernet flow consists of a flow + idenifer and the corresponding UL and/or DL flows. + listUeAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + description: > + Identifies the list of UE address + multiModalId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MultiModalId' + protoDesc: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ProtoDesc' + qosReference: + type: string + description: Identifies a pre-defined QoS information + altQoSReferences: + type: array + items: + type: string + minItems: 1 + description: > + Identifies an ordered list of pre-defined QoS information. The lower the index of the + array for a given entry, the higher the priority. + altQosReqs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Identifies an ordered list of alternative service requirements that include individual + QoS parameter sets. The lower the index of the array for a given entry, the higher the + priority. + disUeNotif: + description: > + Indicates whether the QoS flow parameters signalling to the UE when the SMF is notified + by the NG-RAN of changes in the fulfilled QoS situation is disabled (true) or + not (false). Default value is false. The fulfilled situation is either the QoS profile + or an Alternative QoS Profile. + type: boolean + ueIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipDomain: + type: string + ueIpv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + macAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + usageThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + sponsorInfo: + $ref: 'TS29122_CommonData.yaml#/components/schemas/SponsorInformation' + qosMonInfo: + $ref: '#/components/schemas/QosMonitoringInformation' + pdvMon: + $ref: '#/components/schemas/QosMonitoringInformation' + qosDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + qosInactInt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + directNotifInd: + type: boolean + description: > + Indicates whether the direct event notification is requested (true) or not (false). + Default value is false. + tscQosReq: + $ref: '#/components/schemas/TscQosRequirement' + l4sInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/UplinkDownlinkSupport' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined + in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + events: + description: > + Represents the list of user plane event(s) to which the SCS/AS requests to subscribe to. + type: array + items: + $ref: '#/components/schemas/UserPlaneEvent' + minItems: 1 + multiModDatFlows: + type: object + additionalProperties: + $ref: '#/components/schemas/AsSessionMediaComponent' + minProperties: 1 + description: > + Contains media component data for a single-modal data flow(s). + The key of the map is the medCompN attribute. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara' + rTLatencyInd: + type: boolean + description: > + Indicates the service data flow needs to meet the Round-Trip (RT) latency requirement of + the service, when it is included and set to "true". + The default value is "false" if omitted. periodInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/PeriodicityInfo' + rttMon: + $ref: '#/components/schemas/QosMonitoringInformation' + qosMonDatRate: + $ref: '#/components/schemas/QosMonitoringInformation' + avrgWndw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + servAuthInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ServAuthInfo' + qosMonConReq: + $ref: '#/components/schemas/QosMonitoringInformation' + required: + - notificationDestination + + AsSessionWithQoSSubscriptionPatch: + description: Represents parameters to modify an AS session with specific QoS subscription. + type: object + properties: + exterAppId: + type: string + description: Identifies the external Application Identifier. + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Describe the IP data flow which requires QoS. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet flows. + enEthFlowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/EthFlowInfo' + minItems: 1 + description: > + Identifies the Ethernet flows which require QoS. Each Ethernet flow consists of a flow + idenifer and the corresponding UL and/or DL flows. + listUeAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + description: > + Identifies the list of UE address. + multiModalId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MultiModalId' + qosReference: + type: string + description: Pre-defined QoS reference + altQoSReferences: + type: array + items: + type: string + minItems: 1 + description: > + Identifies an ordered list of pre-defined QoS information. The lower the index of the + array for a given entry, the higher the priority. + altQosReqs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Identifies an ordered list of alternative service requirements that include individual + QoS parameter sets. The lower the index of the array for a given entry, the higher the + priority. + disUeNotif: + type: boolean + description: > + Indicates whether the QoS flow parameters signalling to the UE when the SMF is notified + by the NG-RAN of changes in the fulfilled QoS situation is disabled (true) or + not (false). The fulfilled situation is either the QoS profile or an Alternative QoS + Profile. + usageThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThresholdRm' + qosMonInfo: + $ref: '#/components/schemas/QosMonitoringInformationRm' + pdvMon: + $ref: '#/components/schemas/QosMonitoringInformationRm' + directNotifInd: + type: boolean + description: > + Indicates whether the direct event notification is requested (true) or not (false). + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + tscQosReq: + $ref: '#/components/schemas/TscQosRequirementRm' + l4sInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/UplinkDownlinkSupport' + events: + description: > + Represents the updated list of user plane event(s) to which the SCS/AS requests to + subscribe to. + type: array + items: + $ref: '#/components/schemas/UserPlaneEvent' + minItems: 1 + multiModDatFlows: + type: object + additionalProperties: + $ref: '#/components/schemas/AsSessionMediaComponentRm' + minProperties: 1 + description: > + Contains media component data for a single-modal data flow(s). + The key of the map is the medCompN attribute. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosParaRm' + rTLatencyInd: + type: boolean + description: > + Indicates the service data flow needs to meet the Round-Trip (RT) latency requirement of + the service, when it is included and set to "true". + The default value is "false" if omitted. + protoDesc: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ProtoDesc' + periodInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/PeriodicityInfo' + qosDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + qosInactInt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + rttMon: + $ref: '#/components/schemas/QosMonitoringInformationRm' + qosMonDatRate: + $ref: '#/components/schemas/QosMonitoringInformationRm' + avrgWndw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindowRm' + qosMonConReq: + $ref: '#/components/schemas/QosMonitoringInformationRm' + + QosMonitoringInformation: + description: Represents QoS monitoring information. + type: object + properties: + reqQosMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + repFreqs: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ReportingFrequency' + minItems: 1 + repThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + repThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + repThreshRp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + conThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + conThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + waitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + repThreshDatRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + repThreshDatRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + required: + - reqQosMonParams + - repFreqs + + QosMonitoringInformationRm: + description: > + Represents the same as the QosMonitoringInformation data type but with + the nullable:true property. + type: object + properties: + reqQosMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + repFreqs: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ReportingFrequency' + minItems: 1 + repThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + repThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + repThreshRp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + conThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + conThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + waitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + repThreshDatRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + repThreshDatRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + + QosMonitoringReport: + description: Represents a QoS monitoring report. + type: object + properties: + ulDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + dlDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + rtDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + pdmf: + type: boolean + description: Represents the packet delay measurement failure indicator. + ulDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulConInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dlConInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + cimf: + type: boolean + description: > + Represents the congestion information measurement failure indicator. When set to "true", + it indicates that a congestion information failure has occurred. Default value is false + if omitted. + + UserPlaneNotificationData: + description: Represents the parameters to be conveyed in a user plane event(s) notification. + type: object + properties: + transaction: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + eventReports: + type: array + items: + $ref: '#/components/schemas/UserPlaneEventReport' + minItems: 1 + description: Contains the reported event and applicable information + required: + - transaction + - eventReports + + UserPlaneEventReport: + description: Represents an event report for user plane. + type: object + properties: + event: + $ref: '#/components/schemas/UserPlaneEvent' + accumulatedUsage: + $ref: 'TS29122_CommonData.yaml#/components/schemas/AccumulatedUsage' + flowIds: + type: array + items: + type: integer + minItems: 1 + description: > + Identifies the affected flows that were sent during event subscription. It might be + omitted when the reported event applies to all the flows sent during the subscription. + multiModFlows: + type: array + items: + $ref: '#/components/schemas/MultiModalFlows' + minItems: 1 + description: > + Identifies the the flow filters for the single-modal data flows thatwere sent + during event subscription. + It may be omitted when the reported event applies to all the + single-modal data flows sent during the subscription. + appliedQosRef: + type: string + description: > + The currently applied QoS reference. Applicable for event QOS_NOT_GUARANTEED or + SUCCESSFUL_RESOURCES_ALLOCATION. + altQosNotSuppInd: + type: boolean + description: > + When present and set to true it indicates that the Alternative QoS profiles are not + supported by the access network. Applicable for event QOS_NOT_GUARANTEED. + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + qosMonReports: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + description: Contains the QoS Monitoring Reporting information + pdvMonReports: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/PdvMonitoringReport' + minItems: 1 + description: Contains the PDV Monitoring Reporting information + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + batOffsetInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/BatOffsetInfo' + rttMonReports: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + description: Contains the round trip delay over two SDFs reporting information + qosMonDatRateReps: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/QosMonitoringReport' + minItems: 1 + qosMonConInfoReps: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + description: > + Contains QoS Monitoring for congestion information. It shall be present when the + notified event is "QOS_MONITORING" and congestion measurements are available. + required: + - event + + TscQosRequirement: + description: Represents QoS requirements for time sensitive communication. + type: object + properties: + reqGbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + reqGbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + reqMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + reqMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxTscBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVol' + req5Gsdelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + reqPer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + priority: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscPriorityLevel' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + capBatAdaptation: + type: boolean + description: > + Indicates the capability for AF to adjust the burst sending time, when it is supported + and set to "true". The default value is "false" if omitted. + TscQosRequirementRm: + description: > + Represents the same as the TscQosRequirement data type but with the nullable:true property. + type: object + properties: + reqGbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + reqGbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + reqMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + reqMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxTscBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVolRm' + req5Gsdelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudgetRm' + reqPer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRateRm' + priority: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscPriorityLevelRm' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + capBatAdaptation: + type: boolean + description: > + Indicates the capability for AF to adjust the burst sending time, when it is supported + and set to "true". The default value is "false" if omitted. + nullable: true + + AdditionInfoAsSessionWithQos: + description: Describes additional error information specific for this API. + type: object + properties: + acceptableServInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AcceptableServiceInfo' + + ProblemDetailsAsSessionWithQos: + description: Extends ProblemDetails to also include the acceptable service info. + allOf: + - $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoAsSessionWithQos' + + AsSessionMediaComponent: + description: > + Representmedia component data for a single-modal data flow of + a multimodal service. + type: object + required: + - medCompN + allOf: + - not: + required: [altSerReqs,altSerReqsData] + - not: + required: [qosReference,altSerReqsData] + properties: + flowInfos: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + nullable: true + description: > + Contains the IP data flow(s) description for a single-modal data flow. + qosReference: + type: string + disUeNotif: + type: boolean + altSerReqs: + type: array + items: + type: string + minItems: 1 + altSerReqsData: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains alternative service requirements that include individual QoS parameter sets. + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + medCompN: + type: integer + medType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + tsnQos: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TsnQosContainer' + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + rTLatencyReq: + type: boolean + description: Round-Trip latency requirement of the service data flow. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara' + + AsSessionMediaComponentRm: + description: > + Represents the AsSessionMediaComponent data type with nullable information. + type: object + required: + - medCompN + not: + required: [altSerReqs,altSerReqsData] + properties: + flowInfos: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + nullable: true + description: > + Contains the IP data flow(s) description for a single-modal data flow. + qosReference: + type: string + nullable: true + altSerReqs: + type: array + items: + type: string + minItems: 1 + nullable: true + altSerReqsData: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains removable alternative service requirements that include individual QoS + parameter sets. + nullable: true + disUeNotif: + type: boolean + nullable: true + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + medCompN: + type: integer + medType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + tsnQos: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TsnQosContainerRm' + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + rTLatencyReq: + type: boolean + description: Round-Trip latency requirement of the service data flow. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara' + nullable: true + + MultiModalFlows: + description: Represents a flow information within a single-modal data flow. + type: object + properties: + medCompN: + type: integer + description: > + It contains the ordinal number of the single-modal data flow. Identifies the + single-modal data flow. + flowIds: + type: array + items: + type: integer + minItems: 1 + description: > + Identifies the affected flow(s) within the single-modal data flow + (identified by the medCompN attribute). + It may be omitted when all flows are affected. + required: + - medCompN + + UserPlaneEvent: + anyOf: + - type: string + enum: + - SESSION_TERMINATION + - LOSS_OF_BEARER + - RECOVERY_OF_BEARER + - RELEASE_OF_BEARER + - USAGE_REPORT + - FAILED_RESOURCES_ALLOCATION + - QOS_GUARANTEED + - QOS_NOT_GUARANTEED + - QOS_MONITORING + - SUCCESSFUL_RESOURCES_ALLOCATION + - ACCESS_TYPE_CHANGE + - PLMN_CHG + - L4S_NOT_AVAILABLE + - L4S_AVAILABLE + - BAT_OFFSET_INFO + - RT_DELAY_TWO_QOS_FLOWS + - PACK_DELAY_VAR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the user plane event. + Possible values are: + - SESSION_TERMINATION: Indicates that Rx session is terminated. + - LOSS_OF_BEARER : Indicates a loss of a bearer. + - RECOVERY_OF_BEARER: Indicates a recovery of a bearer. + - RELEASE_OF_BEARER: Indicates a release of a bearer. + - USAGE_REPORT: Indicates the usage report event. + - FAILED_RESOURCES_ALLOCATION: Indicates the resource allocation is failed. + - QOS_GUARANTEED: The QoS targets of one or more SDFs are guaranteed again. + - QOS_NOT_GUARANTEED: The QoS targets of one or more SDFs are not being guaranteed. + - QOS_MONITORING: Indicates a QoS monitoring event. + - SUCCESSFUL_RESOURCES_ALLOCATION: Indicates the resource allocation is successful. + - ACCESS_TYPE_CHANGE: Indicates an Access type change. + - PLMN_CHG: Indicates a PLMN change. + - L4S_NOT_AVAILABLE: The ECN marking for L4S of one or more SDFs is not available. + - L4S_AVAILABLE: The ECN marking for L4S of one or more SDFs is available again. + - BAT_OFFSET_INFO: Indicates the network provided BAT offset and the optionally adjusted periodicity. + - RT_DELAY_TWO_QOS_FLOWS: Indicates round-trip delay on UL and DL flows over two QoS flows. + - PACK_DELAY_VAR: Indicates Packet Delay Variation is enabled for the SDF. + diff --git a/TS29122_ChargeableParty.yaml b/TS29122_ChargeableParty.yaml new file mode 100644 index 0000000..6bf5c29 --- /dev/null +++ b/TS29122_ChargeableParty.yaml @@ -0,0 +1,453 @@ +openapi: 3.0.0 +info: + title: 3gpp-chargeable-party + version: 1.3.0-alpha.1 + description: | + API for Chargeable Party management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-chargeable-party/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /{scsAsId}/transactions: + get: + summary: Read all or queried chargeable party transaction resources for a given SCS/AS. + operationId: FetchAllChargeablePartyTransactions + tags: + - Chargeable Party Transaction Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: ip-addrs + in: query + description: The IP address(es) of the requested UE(s). + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + - name: ip-domain + in: query + description: The IPv4 address domain identifier. The attribute may only be provided if IPv4 address is included in the ip-addrs query parameter. + required: false + schema: + type: string + - name: mac-addrs + in: query + description: The MAC address(es) of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + responses: + '200': + description: OK (successful query of Chargeable Party resource) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ChargeableParty' + minItems: 0 + description: individual BDT policy subscription. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Create a new chargeable party transaction resource. + operationId: CreateChargeablePartyTransaction + tags: + - Chargeable Party Transaction Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + requestBody: + description: representation of the Chargeable Party resource to be Created in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargeableParty' + callbacks: + eventNotification: + '{$request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/NotificationData' + responses: + '204': + description: No Content (The successful acknowledgement of the notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: successful creation of a chargeable party resource + content: + application/json: + schema: + $ref: '#/components/schemas/ChargeableParty' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/transactions/{transactionId}: + get: + summary: Read a chargeable party resource for a given SCS/AS and a transaction Id. + operationId: FetchIndChargeablePartyTransaction + tags: + - Individual chargeable party resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of a chargeable party resource) + content: + application/json: + schema: + $ref: '#/components/schemas/ChargeableParty' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates a existing chargeable party resource for a given SCS/AS and transaction Id. + operationId: UpdateChargeablePartyTransaction + tags: + - Individual chargeable party resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + requestBody: + description: representation of the chargeable party resource to be udpated in the SCEF + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ChargeablePartyPatch' + responses: + '200': + description: successful update of a chargeable party resource + content: + application/json: + schema: + $ref: '#/components/schemas/ChargeableParty' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a chargeable party resource for a given SCS/AS and a transcation Id. + operationId: DeleteChargeablePartyTransaction + tags: + - Individual chargeable party resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '204': + description: successful deletion of an resouce of chargeable party + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/NotificationData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + ChargeableParty: + description: Represents the configuration of a chargeable party. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: Set to true by the SCS/AS to request the SCEF to send a test notification as defined in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + exterAppId: + type: string + description: Identifies the external Application Identifier. + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipDomain: + type: string + ipv6Addr : + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + macAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Describes the application flows. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet flows. + sponsorInformation: + $ref: 'TS29122_CommonData.yaml#/components/schemas/SponsorInformation' + sponsoringEnabled: + type: boolean + description: > + Indicates whether the sponsoring data connectivity is enabled (true) or not (false). + referenceId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + servAuthInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ServAuthInfo' + usageThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + events: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Event' + minItems: 1 + description: Represents the list of event(s) to which the SCS/AS requests to subscribe to. + required: + - notificationDestination + - sponsorInformation + - sponsoringEnabled + ChargeablePartyPatch: + description: Represents a modification request of a chargeable party resource. + type: object + properties: + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Describes the IP flows. + exterAppId: + type: string + description: Identifies the external Application Identifier. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet flows. + sponsoringEnabled: + type: boolean + description: > + Indicates whether the sponsoring data connectivity is enabled (true) or not (false). + referenceId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + usageThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThresholdRm' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + events: + description: Represents the list of event(s) to which the SCS/AS requests to subscribe to. + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Event' + minItems: 1 diff --git a/TS29122_CommonData.yaml b/TS29122_CommonData.yaml new file mode 100644 index 0000000..3d71ef5 --- /dev/null +++ b/TS29122_CommonData.yaml @@ -0,0 +1,679 @@ +openapi: 3.0.0 + +info: + title: TS 29.122 Common Data Types + version: 1.3.0-alpha.4 + description: | + Data types applicable to several APIs. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +paths: {} + +components: + schemas: + SponsorInformation: + description: Represents a sponsor information. + type: object + properties: + sponsorId: + type: string + description: It indicates Sponsor ID. + aspId: + type: string + description: It indicates Application Service Provider ID. + required: + - sponsorId + - aspId + + UsageThreshold: + description: Represents a usage threshold. + type: object + properties: + duration: + $ref: '#/components/schemas/DurationSec' + totalVolume: + $ref: '#/components/schemas/Volume' + downlinkVolume: + $ref: '#/components/schemas/Volume' + uplinkVolume: + $ref: '#/components/schemas/Volume' + + UsageThresholdRm: + description: > + Represents the same as the UsageThreshold data type but with the nullable:true property. + type: object + properties: + duration: + $ref: '#/components/schemas/DurationSecRm' + totalVolume: + $ref: '#/components/schemas/VolumeRm' + downlinkVolume: + $ref: '#/components/schemas/VolumeRm' + uplinkVolume: + $ref: '#/components/schemas/VolumeRm' + nullable: true + + TimeWindow: + description: Represents a time window identified by a start time and a stop time. + type: object + properties: + startTime: + $ref: '#/components/schemas/DateTime' + stopTime: + $ref: '#/components/schemas/DateTime' + required: + - startTime + - stopTime + + Acknowledgement: + description: Represents a successful acknowledgement of a notification. + type: object + properties: + details: + type: string + description: A human-readable explanation specific to this successful acknowledgement + required: + - details + + NotificationData: + description: > + Represents the information to be conveyed in a bearer level event(s) notification. + type: object + properties: + transaction: + $ref: '#/components/schemas/Link' + eventReports: + type: array + items: + $ref: '#/components/schemas/EventReport' + minItems: 1 + description: Contains the reported event and applicable information + required: + - transaction + - eventReports + + EventReport: + description: Represents an event report. + type: object + properties: + event: + $ref: '#/components/schemas/Event' + accumulatedUsage: + $ref: '#/components/schemas/AccumulatedUsage' + flowIds: + type: array + items: + type: integer + minItems: 1 + description: Identifies the IP flows that were sent during event subscription + required: + - event + + AccumulatedUsage: + description: Represents an accumulated usage. + type: object + properties: + duration: + $ref: '#/components/schemas/DurationSec' + totalVolume: + $ref: '#/components/schemas/Volume' + downlinkVolume: + $ref: '#/components/schemas/Volume' + uplinkVolume: + $ref: '#/components/schemas/Volume' + + FlowInfo: + description: Represents IP flow information. + type: object + properties: + flowId: + type: integer + description: Indicates the IP flow identifier. + flowDescriptions: + type: array + items: + type: string + description: > + Indicates the packet filters of the IP flow. Refer to clause 5.3.8 of 3GPP TS 29.214 for + encoding. It shall contain UL and/or DL IP flow description. + minItems: 1 + maxItems: 2 + tosTC: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TosTrafficClass' + required: + - flowId + + TestNotification: + description: > + Represents a notification that can be sent to test whether a chosen notification mechanism + works. + type: object + properties: + subscription: + $ref: '#/components/schemas/Link' + required: + - subscription + + WebsockNotifConfig: + description: > + Represents the configuration information for the delivery of notifications over Websockets. + type: object + properties: + websocketUri: + $ref: '#/components/schemas/Link' + requestWebsocketUri: + type: boolean + description: Set by the SCS/AS to indicate that the Websocket delivery is requested. + + LocationArea: + description: Represents a user location area. + type: object + properties: + cellIds: + type: array + items: + type: string + minItems: 1 + description: > + Indicates a list of Cell Global Identities of the user which identifies the cell the UE + is registered. + enodeBIds: + type: array + items: + type: string + minItems: 1 + description: Indicates a list of eNodeB identities in which the UE is currently located. + routingAreaIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies a list of Routing Area Identities of the user where the UE is located. + trackingAreaIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies a list of Tracking Area Identities of the user where the UE is located. + geographicAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + description: Identifies a list of geographic area of the user where the UE is located. + civicAddresses: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + description: Identifies a list of civic addresses of the user where the UE is located. + + LocationArea5G: + description: Represents a user location area when the UE is attached to 5G. + type: object + properties: + geographicAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 0 + description: Identifies a list of geographic area of the user where the UE is located. + civicAddresses: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 0 + description: Identifies a list of civic addresses of the user where the UE is located. + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + + ProblemDetails: + description: Represents additional information and details on an error response. + type: object + properties: + type: + $ref: '#/components/schemas/Uri' + title: + type: string + description: > + A short, human-readable summary of the problem type. It should not change from occurrence + to occurrence of the problem. + status: + type: integer + description: The HTTP status code for this occurrence of the problem. + detail: + type: string + description: A human-readable explanation specific to this occurrence of the problem. + instance: + $ref: '#/components/schemas/Uri' + cause: + type: string + description: > + A machine-readable application error cause specific to this occurrence of the problem. + This IE should be present and provide application-related error information, if + available. + invalidParams: + type: array + items: + $ref: '#/components/schemas/InvalidParam' + minItems: 1 + description: > + Description of invalid parameters, for a request rejected due to invalid parameters. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + InvalidParam: + description: > + Represents the description of invalid parameters, for a request rejected due to invalid + parameters. + type: object + properties: + param: + type: string + description: Attribute's name encoded as a JSON Pointer, or header's name. + reason: + type: string + description: A human-readable reason, e.g. "must be a positive integer". + required: + - param + + PlmnId: + description: Represents the identifier of a PLMN. + type: object + properties: + mcc: + $ref: '#/components/schemas/Mcc' + mnc: + $ref: '#/components/schemas/Mnc' + required: + - mcc + - mnc + + ConfigResult: + description: Represents one configuration processing result for a group's members. + type: object + properties: + externalIds: + type: array + items: + $ref: '#/components/schemas/ExternalId' + minItems: 1 + description: Each element indicates an external identifier of the UE. + msisdns: + type: array + items: + $ref: '#/components/schemas/Msisdn' + minItems: 1 + description: > + Each element identifies the MS internal PSTN/ISDN number allocated for the UE. + resultReason: + $ref: '#/components/schemas/ResultReason' + required: + - resultReason + oneOf: + - required: [externalIds] + - required: [msisdns] + + Bandwidth: + type: integer + minimum: 0 + description: integer indicating a bandwidth in bits per second. + BdtReferenceId: + type: string + description: string identifying a BDT Reference ID as defined in clause 5.3.3 of 3GPP TS 29.154. + + Binary: + type: string + description: string with format "binary" as defined in OpenAPI Specification. + + Bytes: + type: string + description: > + String with format "byte" as defined in OpenAPI Specification, i.e, base64-encoded + characters. + + DayOfWeek: + type: integer + minimum: 1 + maximum: 7 + description: > + integer between and including 1 and 7 denoting a weekday. 1 shall indicate Monday, and the + subsequent weekdays shall be indicated with the next higher numbers. 7 shall indicate + Sunday. + + DateTime: + format: date-time + type: string + description: string with format "date-time" as defined in OpenAPI. + + DateTimeRm: + format: date-time + type: string + description: > + string with format "date-time" as defined in OpenAPI with "nullable=true" property. + nullable: true + + DateTimeRo: + format: date-time + type: string + description: > + string with format "date-time" as defined in OpenAPI with "readOnly=true" property. + readOnly: true + + DurationSec: + type: integer + minimum: 0 + description: Unsigned integer identifying a period of time in units of seconds. + + DurationSecRm: + type: integer + minimum: 0 + description: > + Unsigned integer identifying a period of time in units of seconds with "nullable=true" + property. + nullable: true + + DurationSecRo: + type: integer + minimum: 0 + description: > + Unsigned integer identifying a period of time in units of seconds with "readOnly=true" + property. + readOnly: true + + DurationMin: + type: integer + format: int32 + minimum: 0 + description: Unsigned integer identifying a period of time in units of minutes. + + ExternalId: + type: string + description: > + string containing a local identifier followed by "@" and a domain identifier. Both the local + identifier and the domain identifier shall be encoded as strings that do not contain any "@" + characters. See Clause 4.6.2 of 3GPP TS 23.682 for more information. + + ExternalGroupId: + type: string + description: > + string containing a local identifier followed by "@" and a domain identifier. Both the local + identifier and the domain identifier shall be encoded as strings that do not contain any "@" + characters. See Clauses 4.6.2 and 4.6.3 of 3GPP TS 23.682 for more information. + + Ipv4Addr: + type: string + description: > + string identifying a Ipv4 address formatted in the "dotted decimal" notation as defined in + IETF RFC 1166. + + Ipv6Addr: + type: string + description: > + string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952. + The mixed Ipv4 Ipv6 notation according to clause 5 of IETF RFC 5952 shall not be used. + + Ipv4AddrRo: + type: string + description: > + string identifying a Ipv4 address formatted in the "dotted decimal" notation + as defined in IETF RFC 1166, with "readOnly=true" property. + readOnly: true + + Ipv6AddrRo: + type: string + description: > + string identifying a Ipv6 address formatted according to clause 4 in IETF RFC 5952, + with "readOnly=true" property. The mixed Ipv4 Ipv6 notation according to clause 5 of + IETF RFC 5952 shall not be used. + readOnly: true + + Link: + type: string + description: string formatted according to IETF RFC 3986 identifying a referenced resource. + LinkRm: + type: string + description: > + String formatted according to IETF RFC 3986 identifying a referenced resource, + but with the nullable property set to true. + nullable: true + + Mcc: + type: string + description: > + String encoding a Mobile Country Code part of the PLMN, comprising 3 digits, + as defined in 3GPP TS 38.413. + + Mnc: + type: string + description: > + String encoding a Mobile Network Code part of the PLMN, comprising 2 or 3 digits, + as defined in 3GPP TS 38.413. + + Msisdn: + type: string + description: > + string formatted according to clause 3.3 of 3GPP TS 23.003 that describes an MSISDN. + + Port: + type: integer + description: Unsigned integer with valid values between 0 and 65535. + minimum: 0 + maximum: 65535 + + PortRo: + type: integer + description: > + Unsigned integer with valid values between 0 and 65535, with "readOnly=true" property. + minimum: 0 + maximum: 65535 + readOnly: true + + ResourceId: + type: string + description: string chosen by the SCEF to serve as identifier in a resource URI. + + ScsAsId: + type: string + description: string that identifies an SCS/AS. + + TimeOfDay: + type: string + description: > + String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339. + Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC). + + Uri: + type: string + description: string providing an URI formatted according to IETF RFC 3986. + + Volume: + type: integer + format: int64 + minimum: 0 + description: Unsigned integer identifying a volume in units of bytes. + + VolumeRm: + type: integer + format: int64 + minimum: 0 + description: > + Unsigned integer identifying a volume in units of bytes with "nullable=true" property. + nullable: true + + EthFlowInfo: + description: Represents Ethernet flow information. + type: object + properties: + flowId: + type: integer + description: Indicates the Ethernet flow identifier. + ethFlowDescriptions: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + description: > + Indicates the packet filters of the Ethernet flow. It shall contain UL and/or DL + Ethernet flow description. + minItems: 1 + maxItems: 2 + required: + - flowId + + Event: + anyOf: + - type: string + enum: + - SESSION_TERMINATION + - LOSS_OF_BEARER + - RECOVERY_OF_BEARER + - RELEASE_OF_BEARER + - USAGE_REPORT + - FAILED_RESOURCES_ALLOCATION + - SUCCESSFUL_RESOURCES_ALLOCATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the event reported by the SCEF. + Possible values are: + - SESSION_TERMINATION: Indicates that Rx session is terminated. + - LOSS_OF_BEARER : Indicates a loss of a bearer. + - RECOVERY_OF_BEARER: Indicates a recovery of a bearer. + - RELEASE_OF_BEARER: Indicates a release of a bearer. + - USAGE_REPORT: Indicates the usage report event. + - FAILED_RESOURCES_ALLOCATION: Indicates the resource allocation is failed. + - SUCCESSFUL_RESOURCES_ALLOCATION: Indicates the resource allocation is successful. + + ResultReason: + anyOf: + - type: string + enum: + - ROAMING_NOT_ALLOWED + - OTHER_REASON + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents a failure result reason. + Possible values are: + - ROAMING_NOT_ALLOWED: Identifies the configuration parameters are not allowed by roaming + agreement. + - OTHER_REASON: Identifies the configuration parameters are not configured due to other + reason. +# +# HTTP responses +# + responses: + '307': + description: Temporary Redirect + headers: + Location: + description: 'An alternative URI of the resource.' + required: true + schema: + type: string + '308': + description: Permanent Redirect + headers: + Location: + description: 'An alternative URI of the resource.' + required: true + schema: + type: string + '400': + description: Bad request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: Not Acceptable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '409': + description: Conflict + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '411': + description: Length Required + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '412': + description: Precondition Failed + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '413': + description: Content Too Large + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '414': + description: URI Too Long + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: Unsupported Media Type + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: Too Many Requests + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '500': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + default: + description: Generic Error diff --git a/TS29122_CpProvisioning.yaml b/TS29122_CpProvisioning.yaml new file mode 100644 index 0000000..e8744f0 --- /dev/null +++ b/TS29122_CpProvisioning.yaml @@ -0,0 +1,821 @@ +openapi: 3.0.0 + +info: + title: 3gpp-cp-parameter-provisioning + version: 1.3.0-alpha.4 + description: | + API for provisioning communication pattern parameters. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-cp-parameter-provisioning/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/subscriptions: + get: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + summary: Read all active CP parameter provisioning subscription resources for a given SCS/AS. + operationId: FetchAllCPProvisioningSubscriptions + tags: + - CP provisioning Subscriptions + responses: + '200': + description: OK. The subscription information related to the request URI is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CpInfo' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + summary: Create a new subscription resource of provisioning CP parameter set(s). + operationId: CreateCPProvisioningSubscription + tags: + - CP provisioning Subscriptions + requestBody: + description: > + Create new subscriptions for a given SCS/AS and the provisioning CP parameter sets. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CpInfo' + responses: + '201': + description: > + Created. The subscription was created successfully. The SCEF shall return the created + subscription in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/CpInfo' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The CP parameters for all sets were not created successfully. CpReport may be included + with detailed information. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CpReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/subscriptions/{subscriptionId}: + get: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + summary: Read a CP parameter provisioning subscription resource. + operationId: FetchIndCPProvisioningSubscription + tags: + - Individual CP Provisioning Subscription + responses: + '200': + description: OK. The subscription information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/CpInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Modify a CP parameter provisioning subscription resource. + operationId: UpdateIndCPProvisioningSubscription + tags: + - Individual CP Provisioning Subscription + requestBody: + description: Modify a CP parameter provisioning subscription resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CpInfo' + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: > + OK. The subscription was modified successfully. The SCEF shall return an updated + subscription in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/CpInfo' + '204': + description: > + No Content. The subscription was modified successfully and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The CP parameters for all sets were not updated successfully. CpReport may be included + with detailed information. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/CpReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + summary: Delete a CP parameter provisioning subscription resource. + operationId: DeleteIndCPProvisioningSubscription + tags: + - Individual CP Provisioning Subscription + responses: + '204': + description: > + No Content. The subscription was deleted successfully. The content shall be empty. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/subscriptions/{subscriptionId}/cpSets/{setId}: + get: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + - name: setId + in: path + description: Identifier of the CP parameter set + required: true + schema: + type: string + summary: Read CP at individual CP set(s) level associated with a CP parameter set Id. + operationId: FetchIndCPSetProvisioning + tags: + - Individual CP set Provisioning + responses: + '200': + description: OK. The subscription information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/CpParameterSet' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update CP at individual CP set(s) level associated with a CP parameter set Id. + operationId: UpdateIndCPSetProvisioning + tags: + - Individual CP set Provisioning + requestBody: + description: Change information for a CP parameter set. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CpParameterSet' + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + - name: setId + in: path + description: Identifier of the CP parameter set + required: true + schema: + type: string + responses: + '200': + description: > + OK. The CP parameter set resource was modified successfully. The SCEF shall return an + updated CP parameter set resource in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/CpParameterSet' + '204': + description: > + No Content. The CP parameter set resource was modified successfully and no content + is to be sent in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + description: The CP parameters for the CP set were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/CpReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The CP parameters for the CP set were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/CpReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + - name: setId + in: path + description: Identifier of the CP parameter set + required: true + schema: + type: string + summary: Delete CP at individual CP set(s) level associated with a CP parameter set Id. + operationId: DeleteIndCPSetProvisioning + tags: + - Individual CP set Provisioning + responses: + '204': + description: > + No Content. The subscription was deleted successfully. The content shall be empty. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + CpInfo: + description: Represents the resources for communication pattern parameter provisioning. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtcProviderId: + type: string + description: Identifies the MTC Service Provider and/or MTC Application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + cpParameterSets: + type: object + additionalProperties: + $ref: '#/components/schemas/CpParameterSet' + minProperties: 1 + description: > + Identifies a set of CP parameter information that may be part of this CpInfo structure. + Any string value can be used as a key of the map. + cpReports: + type: object + additionalProperties: + $ref: '#/components/schemas/CpReport' + minProperties: 1 + description: > + Supplied by the SCEF and contains the CP set identifiers for which CP parameter(s) are + not added or modified successfully. The failure reason is also included. Each element + provides the related information for one or more CP set identifier(s) and is identified + in the map via the failure identifier as key. + readOnly: true + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ueMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + required: + - cpParameterSets + oneOf: + - required: [externalId] + - required: [msisdn] + - required: [externalGroupId] + + CpParameterSet: + description: Represents an offered communication pattern parameter set. + type: object + properties: + setId: + type: string + description: > + SCS/AS-chosen correlator provided by the SCS/AS in the request to create a resource + for CP parameter set(s). + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + validityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + periodicCommunicationIndicator: + $ref: '#/components/schemas/CommunicationIndicator' + communicationDurationTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + periodicTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + scheduledCommunicationTime: + $ref: '#/components/schemas/ScheduledCommunicationTime' + scheduledCommunicationType: + $ref: '#/components/schemas/ScheduledCommunicationType' + stationaryIndication: + $ref: '#/components/schemas/StationaryIndication' + batteryInds: + type: array + items: + $ref: '#/components/schemas/BatteryIndication' + minItems: 1 + trafficProfile: + $ref: '#/components/schemas/TrafficProfile' + expectedUmts: + type: array + items: + $ref: '#/components/schemas/UmtLocationArea5G' + minItems: 1 + description: > + Identifies the UE's expected geographical movement. The attribute is only applicable + in 5G. + expectedUmtDays: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DayOfWeek' + expectedUmtDaysAdd: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DayOfWeek' + minItems: 1 + maxItems: 5 + description: Identifies the additional day(s) of the week. + appExpUeBehvs: + type: array + items: + $ref: '#/components/schemas/AppExpUeBehaviour' + minItems: 1 + description: Contains the Application Specific Expected UE Behaviour parameters. + confidenceLevel: + type: string + pattern: '^[0]\.[0-9]{2}|[1.00]$' + accuracyLevel: + type: string + pattern: '^[0]\.[0-9]{2}|[1.00]$' + required: + - setId + + ScheduledCommunicationTime: + description: Represents an offered scheduled communication time. + type: object + properties: + daysOfWeek: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DayOfWeek' + minItems: 1 + maxItems: 6 + description: > + Identifies the day(s) of the week. If absent, it indicates every day of the week. + timeOfDayStart: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeOfDay' + timeOfDayEnd: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeOfDay' + + CpReport: + description: > + Represents a CP report indicating the CP set identifier(s) which CP parameter(s) are not + added or modified successfully and the corresponding failure cause(s). + type: object + properties: + setIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies the CP set identifier(s) which CP parameter(s) are not added or modified + successfully + failureCode: + $ref: '#/components/schemas/CpFailureCode' + required: + - failureCode + + UmtLocationArea5G: + description: Represents the user location area describing the UE moving trajectory. + allOf: + - $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + - type: object + properties: + umtTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeOfDay' + umtDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + + AppExpUeBehaviour: + description: Contains the Application Specificf Expected UE Behaviour parameters. + type: object + properties: + appId: + type: string + description: Indicates the Application Identifier. + expPduSesInacTm: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + flowDescriptions: + type: array + items: + type: string + minItems: 1 + description: > + Represents a 3-tuple with protocol, server ip and server port for UL/DL application + traffic. The content of the string has the same encoding as the IPFilterRule AVP + value as defined in IETF RFC 6733. + confidenceLevel: + type: string + pattern: '^[0]\.[0-9]{2}|[1.00]$' + accuracyLevel: + type: string + pattern: '^[0]\.[0-9]{2}|[1.00]$' + validityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + oneOf: + - required: [appId] + - required: [flowDescriptions] + + CommunicationIndicator: + anyOf: + - type: string + enum: + - PERIODICALLY + - ON_DEMAND + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of the communication. + Possible values are: + - PERIODICALLY: Identifies the UE communicates periodically + - ON_DEMAND: Identifies the UE communicates on demand + + StationaryIndication: + anyOf: + - type: string + enum: + - STATIONARY + - MOBILE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the stationarity of the UE. + Possible values are: + - STATIONARY: Identifies the UE is stationary + - MOBILE: Identifies the UE is mobile + + CpFailureCode: + anyOf: + - type: string + enum: + - MALFUNCTION + - SET_ID_DUPLICATED + - OTHER_REASON + - CONFIDENCE_LEVEL_NOT_SUFFICIENT + - ACCURACY_LEVEL_NOT_SUFFICIENT + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the failure reason of the CP parameter provisioning. + Possible values are + - MALFUNCTION: This value indicates that something functions wrongly in CP parameter provisioning or the CP parameter provisioning does not function at all. + - SET_ID_DUPLICATED: The received CP set identifier(s) are already provisioned. + - OTHER_REASON: Other reason unspecified. + - CONFIDENCE_LEVEL_NOT_SUFFICIENT: The received confidence level for the expected UE parameter is not sufficient. + - ACCURACY_LEVEL_NOT_SUFFICIENT: The received accuracy level for the expected UE parameter is not sufficient. + + BatteryIndication: + anyOf: + - type: string + enum: + - BATTERY_RECHARGE + - BATTERY_REPLACE + - BATTERY_NO_RECHARGE + - BATTERY_NO_REPLACE + - NO_BATTERY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of power consumption. + Possible values are: + - BATTERY_RECHARGE: UE powered with rechargeable battery. + - BATTERY_REPLACE: UE powered with replaceable battery. + - BATTERY_NO_RECHARGE: UE powered with no rechargeable battery. + - BATTERY_NO_REPLACE: UE powered with no replaceable battery. + - NO_BATTERY: UE not battery powered. + + TrafficProfile: + anyOf: + - type: string + enum: + - SINGLE_TRANS_UL + - SINGLE_TRANS_DL + - DUAL_TRANS_UL_FIRST + - DUAL_TRANS_DL_FIRST + - MULTI_TRANS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of data transmission. + Possible values are: + - SINGLE_TRANS_UL: Uplink single packet transmission. + - SINGLE_TRANS_DL: Downlink single packet transmission. + - DUAL_TRANS_UL_FIRST: Dual packet transmission, firstly uplink packet transmission with + subsequent downlink packet transmission. + - DUAL_TRANS_DL_FIRST: Dual packet transmission, firstly downlink packet transmission with + subsequent uplink packet transmission. + - MULTI_TRANS: Multiple packet transmission. + + ScheduledCommunicationType: + anyOf: + - type: string + enum: + - DOWNLINK + - UPLINK + - BIDIRECTIONAL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of scheduled communication. + Possible values are: + - DOWNLINK: Downlink only. + - UPLINK: Uplink only. + - BIDIRECTIONAL: Bi-directional. + diff --git a/TS29122_DeviceTriggering.yaml b/TS29122_DeviceTriggering.yaml new file mode 100644 index 0000000..ad22449 --- /dev/null +++ b/TS29122_DeviceTriggering.yaml @@ -0,0 +1,532 @@ +openapi: 3.0.0 + +info: + title: 3gpp-device-triggering + version: 1.3.0-alpha.1 + description: | + API for device trigger. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-device-triggering/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/transactions: + get: + summary: read all active device triggering transactions for a given SCS/AS. + operationId: FetchAllDeviceTriggeringTransactions + tags: + - Device Triggering Transactions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + responses: + '200': + description: > + OK (Successful get all of the active device triggering transactions for the SCS/AS) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DeviceTriggering' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create a long-term transaction for a device triggering. + operationId: CreateDeviceTriggeringTransaction + tags: + - Device Triggering API Transactions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + requestBody: + description: Parameters to request a device triggering delivery. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggeringDeliveryReportNotification' + responses: + '200': + description: OK (successful notification) + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Acknowledgement' + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/transactions/{transactionId}: + get: + summary: Read a device triggering transaction resource. + operationId: FetchIndDeviceTriggeringTransaction + tags: + - Individual Device Triggering Transaction + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + - name: transactionId + in: path + description: Identifier of the transaction resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Replace an existing device triggering transaction resource and the corresponding device trigger request. + operationId: UpdateIndDeviceTriggeringTransaction + tags: + - Individual Device Triggering Transaction + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + - name: transactionId + in: path + description: Identifier of the transaction resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing device triggering + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + responses: + '200': + description: OK (Successful update of the device triggering) + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + '204': + description: No Content (Successful update of the device triggering) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an existing Individual Device Triggering Transaction resource and the corresponding device triggering request. + operationId: ModifyIndDeviceTriggeringTransaction + tags: + - Individual Device Triggering Transaction + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + - name: transactionId + in: path + description: Identifier of the transaction resource + required: true + schema: + type: string + requestBody: + description: Parameters to request the modification of the existing Individual Device Triggering Transaction resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggeringPatch' + responses: + '200': + description: > + OK. The Individual Device Triggering Transaction resource was successfully modified + and a representation of the modified Individual Device Triggering Transaction resource + within the DeviceTriggering data structure including the "deliveryResult" attribute is + returned by the SCEF. + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + '204': + description: > + No Content. The Individual Device Triggering Transaction resource was successfully + modified no content is returned in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes an already existing device triggering transaction. + operationId: DeleteIndDeviceTriggeringTransaction + tags: + - Individual Device Triggering Transaction + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + - name: transactionId + in: path + description: Identifier of the transaction resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/DeviceTriggering' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + DeviceTriggering: + description: Represents device triggering related information. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + priority: + $ref: '#/components/schemas/Priority' + applicationPortId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + appSrcPortId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + triggerPayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined in + clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + deliveryResult: + $ref: '#/components/schemas/DeliveryResult' + required: + - validityPeriod + - priority + - applicationPortId + - triggerPayload + - notificationDestination + oneOf: + - required: [externalId] + - required: [msisdn] + + DeviceTriggeringDeliveryReportNotification: + description: Represents a device triggering delivery report notification. + type: object + properties: + transaction: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + result: + $ref: '#/components/schemas/DeliveryResult' + required: + - transaction + - result + + DeviceTriggeringPatch: + description: Represents device triggering related information. + type: object + properties: + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + priority: + $ref: '#/components/schemas/Priority' + applicationPortId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + appSrcPortId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + triggerPayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined + in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + + DeliveryResult: + anyOf: + - type: string + enum: + - SUCCESS + - UNKNOWN + - FAILURE + - TRIGGERED + - EXPIRED + - UNCONFIRMED + - REPLACED + - TERMINATE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the result of the delivery of a device triggering request. + Possible values are: + - SUCCESS: This value indicates that the device action request was successfully completed. + - UNKNOWN: This value indicates any unspecified errors. + - FAILURE: This value indicates that this trigger encountered a delivery error and is deemed + permanently undeliverable. + - TRIGGERED: This value indicates that device triggering request is accepted by the SCEF. + - EXPIRED: This value indicates that the validity period expired before the trigger could + be delivered. + - UNCONFIRMED: This value indicates that the delivery of the device action request is not + confirmed. + - REPLACED: This value indicates that the device triggering replacement request is accepted + by the SCEF. + - TERMINATE: This value indicates that the delivery of the device action request is + terminated by the SCS/AS. + readOnly: true + + Priority: + anyOf: + - type: string + enum: + - NO_PRIORITY + - PRIORITY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the priority indication for a trigger payload. + Possible values are: + - NO_PRIORITY: This value indicates that the device trigger has no priority. + - PRIORITY: This value indicates that the device trigger has priority. diff --git a/TS29122_ECRControl.yaml b/TS29122_ECRControl.yaml new file mode 100644 index 0000000..8bb8645 --- /dev/null +++ b/TS29122_ECRControl.yaml @@ -0,0 +1,194 @@ +openapi: 3.0.0 +info: + title: 3gpp-ecr-control + version: 1.2.0 + description: | + API for enhanced converage restriction control. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.122 V17.6.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-ecr-control/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /query: + post: + summary: Query the status of enhanced converage restriction for a UE. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ECRControl' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ECRData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /configure: + post: + summary: Configure the enhanced converage restriction for a UE. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ECRControl' + responses: + '200': + description: The Enhanced Coverage Restriction setting was configured successfully.. + content: + application/json: + schema: + $ref: '#/components/schemas/ECRData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + ECRControl: + description: Represents the parameters to request Enhanced Coverage Restriction control. + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtcProviderId: + type: string + description: Identifies the MTC Service Provider and/or MTC Application. + scsAsId: + type: string + description: Identifier of the SCS/AS. + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + ecrDataWbs: + type: array + items: + $ref: '#/components/schemas/PlmnEcRestrictionDataWb' + minItems: 0 + restrictedPlmnIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + minItems: 0 + description: Indicates a complete list (and possibly empty) of serving PLMNs where Enhanced Coverage shall be restricted. This attribute shall not be present for the query custom operation. + allowedPlmnIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + minItems: 0 + description: Indicates a complete list (and possibly empty) of serving PLMNs where Enhanced Coverage shall be allowed. This attribute shall not be present for the query custom operation. + required: + - supportedFeatures + oneOf: + - required: [externalId] + - required: [msisdn] + not: + required: [restrictedPlmnIds, allowedPlmnIds] + ECRData: + description: Represents the current visited PLMN (if any) and the current settings of enhanced coverage restriction. + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + visitedPlmnId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + ecrDataWbs: + type: array + items: + $ref: '#/components/schemas/PlmnEcRestrictionDataWb' + minItems: 0 + restrictedPlmnIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + minItems: 0 + description: Indicates a complete list (and possibly empty) of serving PLMNs where Enhanced Coverage shall be restricted. + allowedPlmnIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + minItems: 0 + description: Indicates a complete list (and possibly empty) of serving PLMNs where Enhanced Coverage shall be allowed. + required: + - supportedFeatures + not: + required: [restrictedPlmnIds, allowedPlmnIds] + PlmnEcRestrictionDataWb: + description: Indicates whether enhanced coverage mode is restricted or not for a PLMN ID. + type: object + properties: + plmnId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + plmnEcrDataWb: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/EcRestrictionDataWb' + required: + - plmnId diff --git a/TS29122_GMDviaMBMSbyMB2.yaml b/TS29122_GMDviaMBMSbyMB2.yaml new file mode 100644 index 0000000..6240cd3 --- /dev/null +++ b/TS29122_GMDviaMBMSbyMB2.yaml @@ -0,0 +1,867 @@ +openapi: 3.0.0 +info: + title: GMDviaMBMSbyMB2 + description: | + API for Group Message Delivery via MBMS by MB2 + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.3.0-alpha.1 +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-group-message-delivery-mb2/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /{scsAsId}/tmgi-allocation: + get: + summary: read all TMGI Allocation resource for a given SCS/AS + operationId: FetchAllTMGIAllocations + tags: + - TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of TMGI Allocation resource) + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new TMGI Allocation resource for a given SCS/AS. + operationId: CreateTMGIAllocation + tags: + - TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + requestBody: + description: representation of the TMGI Allocation to be created in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + responses: + '201': + description: successful creation of an TMGI Allocation + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/tmgi-allocation/{tmgi}: + get: + summary: Read a TMGI Allocation resource for a given SCS/AS and a TMGI. + operationId: FetchIndTMGIAllocation + tags: + - Individual TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of TMGI Allocation resource) + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates an existing TMGI Allocation resource for a given SCS/AS and a TMGI. + operationId: UpdateIndTMGIAllocation + tags: + - Individual TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + requestBody: + description: representation of the TMGI Allocation to be updated in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + responses: + '200': + description: successful creation of an TMGI Allocation + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + '204': + description: > + The TMGI expiration time renewal is successful, and no content is to be sent in + the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates an existing TMGI Allocation resource for a given SCS/AS and a TMGI. + operationId: ModifyIndTMGIAllocation + tags: + - Individual TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + requestBody: + description: representation of the TMGI Allocation to be updated in the SCEF + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/TMGIAllocationPatch' + responses: + '200': + description: successful creation of an TMGI Allocation + content: + application/json: + schema: + $ref: '#/components/schemas/TMGIAllocation' + '204': + description: > + The TMGI expiration time renewal is successful, and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing TMGI Allocation resource for a given SCS/AS and a TMGI. + operationId: DeleteTMGIAllocation + tags: + - Individual TMGI Allocation Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + responses: + '204': + description: No Content, successful deletion of an TMGI Allocation + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/tmgi-allocation/{tmgi}/delivery-via-mbms: + get: + summary: Read all group message delivery via MBMS resource for a given SCS/AS and a TMGI. + operationId: FecthAllGMDViaMBMSByMB2 + tags: + - Delivery via MBMS Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of Delivery via MBMS resource) + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new delivery via MBMS for a given SCS/AS and a TMGI. + operationId: CreateGMDViaMBMSByMB2 + tags: + - Delivery via MBMS Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by MB2 resource to be Created in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + callbacks: + gMDByMb2Notification: + '{$request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDByMb2Notification' + responses: + '200': + description: OK (The successful acknowledgement of the notification with a body) + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Acknowledgement' + '204': + description: successful notification + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: successful creation of an GMD via MBMS by MB2 resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/tmgi-allocation/{tmgi}/delivery-via-mbms/{transactionId}: + get: + summary: Read all group message delivery via MBMS resource for a given SCS/AS and a TMGI. + operationId: FetchIndDeliveryViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of an Delivery via MBMS resource) + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates a existing delivery via MBMS for a given SCS/AS, a TMGI and transaction Id. + operationId: UpdateIndDeliveryViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by MB2 resource to be udpated in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + responses: + '200': + description: successful update of an individual GMD via MBMS by MB2 resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + '204': + description: > + The group message delivery is replaced successfully, and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates a existing delivery via MBMS for a given SCS/AS, a TMGI and transaction Id. + operationId: ModifyIndDeliveryViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by MB2 resource to be udpated in the SCEF + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2Patch' + responses: + '200': + description: successful update of an individual GMD via MBMS by MB2 resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByMb2' + '204': + description: > + The group message delivery is modified successfully, and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a delivery via MBMS resource for a given SCS/AS, a TMGI and a transcation Id. + operationId: DeleteIndDeliveryViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: tmgi + in: path + description: TMGI + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '204': + description: No Content, successful deletion of an resouce of deliery via MBMS + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + TMGIAllocation: + description: Represents an individual TMGI Allocation resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + tmgiExpiration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRo' + + GMDViaMBMSByMb2: + description: Represents a group message delivery via MBMS by MB2. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as + defined in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + messageDeliveryStartTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + groupMessagePayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + scefMessageDeliveryIPv4: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4AddrRo' + scefMessageDeliveryIPv6: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6AddrRo' + scefMessageDeliveryPort: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PortRo' + required: + - notificationDestination + + GMDByMb2Notification: + description: Represents a group message delivery notification. + type: object + properties: + transaction: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + deliveryTriggerStatus: + type: boolean + description: > + Indicates whether delivery of group message payload corresponding to the TMGI was + successful (TRUE) or not (FALSE) + required: + - transaction + - deliveryTriggerStatus + + TMGIAllocationPatch: + description: > + Represents the parameters to request the modification of a TMGI Allocation resource. + type: object + properties: + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + + GMDViaMBMSByMb2Patch: + description: Represents a modification request of a group message delivery via MBMS by MB2. + type: object + properties: + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + messageDeliveryStartTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + groupMessagePayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + + MbmsLocArea: + description: > + Represents a user location area whithin which is sent a group message delivery + via MBMS request. + type: object + properties: + cellId: + type: array + items: + type: string + minItems: 1 + description: > + Indicates a Cell Global Identification of the user which identifies the cell the + UE is registered. + enodeBId: + type: array + items: + type: string + minItems: 1 + description: Indicates an eNodeB in which the UE is currently located. + geographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + description: Identifies a geographic area of the user where the UE is located. + mbmsServiceAreaId: + type: array + items: + type: string + minItems: 1 + description: Identifies an MBMS Service Area Identity of the user where the UE is located. + civicAddress: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + description: Identifies a civic address of the user where the UE is located. diff --git a/TS29122_GMDviaMBMSbyxMB.yaml b/TS29122_GMDviaMBMSbyxMB.yaml new file mode 100644 index 0000000..b63fe72 --- /dev/null +++ b/TS29122_GMDviaMBMSbyxMB.yaml @@ -0,0 +1,788 @@ +openapi: 3.0.0 + +info: + title: GMDviaMBMSbyxMB + description: | + API for Group Message Delivery via MBMS by xMB + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.3.0-alpha.1 + +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-group-message-delivery-xmb/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/services: + get: + summary: Read all service resources for a given SCS/AS. + operationId: FetchAllxMBServices + tags: + - Service Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of service creation resource) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceCreation' + minItems: 0 + description: The service resource for the SCS/AS in the request URI is returned. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new service creation resource for a given SCS/AS. + operationId: CreatexMBService + tags: + - Service Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + requestBody: + description: representation of the service to be created in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceCreation' + responses: + '201': + description: successful creation of a service + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceCreation' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/services/{serviceId}: + get: + summary: Read a service resource for a given SCS/AS and a Service Id. + operationId: FetchIndxMBService + tags: + - Individual Service Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of service resource) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceCreation' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing service resource for a given SCS/AS and a service id. + operationId: DeletexMBService + tags: + - Individual Service Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + responses: + '204': + description: No Content, successful deletion of a service resource + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/services/{serviceId}/delivery-via-mbms: + get: + summary: Read all group message delivery via MBMS resource for a given SCS/AS and a service id. + operationId: FetchAllGMDViaMBMS + tags: + - Delivery via MBMS Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of Delivery via MBMS resource) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new delivery via MBMS for a given SCS/AS and a service Id. + operationId: CreateGMDViaMBMS + tags: + - Delivery via MBMS Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by xMB resource to be Created in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + callbacks: + gMDByxMBNotification: + '{$request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDByxMBNotification' + responses: + '200': + description: OK (The successful acknowledgement of the notification with a body) + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Acknowledgement' + '204': + description: successful notification + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: successful creation of an GMD via MBMS by xMB resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/services/{serviceId}/delivery-via-mbms/{transactionId}: + get: + summary: Read all group message delivery via MBMS resource for a given SCS/AS and a service Id. + operationId: FetchIndGMDViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '200': + description: OK (successful query of an Delivery via MBMS resource) + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates an existing delivery via MBMS for a given SCS/AS, a service Id and transaction Id. + operationId: UpdateIndGMDViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by xMB resource to be udpated in the SCEF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + responses: + '200': + description: successful update of an individual GMD via MBMS by xMB resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + '204': + description: > + The group message delivery was modified successfully, and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates an existing delivery via MBMS for a given SCS/AS, a service Id and transaction Id. + operationId: ModifyIndGMDViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + requestBody: + description: representation of the GMD via MBMS by xMB resource to be udpated in the SCEF + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMBPatch' + responses: + '200': + description: successful update of an individual GMD via MBMS by xMB resource + content: + application/json: + schema: + $ref: '#/components/schemas/GMDViaMBMSByxMB' + '204': + description: > + The group message delivery was modified successfully, and no content is to be sent + in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a delivery via MBMS resource for a given SCS/AS, a service Id and a transcation Id. + operationId: DeleteIndGMDViaMBMS + tags: + - Individual Delivery via MBMS resource Operation + parameters: + - name: scsAsId + in: path + description: Identifier of SCS/AS + required: true + schema: + type: string + - name: serviceId + in: path + description: Service Id + required: true + schema: + type: string + - name: transactionId + in: path + description: Identifier of transaction + required: true + schema: + type: string + responses: + '204': + description: No Content, successful deletion of an resouce of deliery via MBMS + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ServiceCreation: + description: Represents an individual xMB Service resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + userServiceId: + type: string + description: Identifies the MBMS User Service supplied by the SCEF. + readOnly: true + serviceClass: + type: string + description: The service class that service belongs to supplied by the SCEF. + readOnly: true + serviceLanguages: + type: array + items: + type: string + minItems: 1 + description: List of language of the service content supplied by the SCEF. + readOnly: true + serviceNames: + type: array + items: + type: string + minItems: 1 + description: List of Service Names supplied by the SCEF. + readOnly: true + receiveOnlyMode: + type: boolean + description: > + When set to 'true', the Content Provider indicates that the service is a Receive Only + Mode service. This parameter is supplied by the SCEF. + readOnly: true + serviceAnnouncementMode: + $ref: '#/components/schemas/ServiceAnnouncementMode' + + GMDViaMBMSByxMB: + description: Represents a group message delivery via MBMS by xMB. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined + in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + messageDeliveryStartTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + messageDeliveryStopTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + groupMessagePayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + scefMessageDeliveryIPv4: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4AddrRo' + scefMessageDeliveryIPv6: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6AddrRo' + scefMessageDeliveryPort: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PortRo' + required: + - notificationDestination + + GMDByxMBNotification: + description: Represents a group message delivery notification. + type: object + properties: + transaction: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + deliveryTriggerStatus: + type: boolean + description: > + Indicates whether delivery of group message payload was successful(TRUE) or not (FALSE). + required: + - transaction + - deliveryTriggerStatus + + GMDViaMBMSByxMBPatch: + description: Represents a modification request of a group message delivery via MBMS by xMB. + type: object + properties: + mbmsLocArea: + $ref: '#/components/schemas/MbmsLocArea' + messageDeliveryStartTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + messageDeliveryStopTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + groupMessagePayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + + MbmsLocArea: + description: > + Represents a user location area whithin which is sent a group message delivery via MBMS + request. + type: object + properties: + cellId: + type: array + items: + type: string + minItems: 1 + description: > + Indicates a Cell Global Identification of the user which identifies the cell the UE is + registered. + enodeBId: + type: array + items: + type: string + minItems: 1 + description: Indicates an eNodeB in which the UE is currently located. + geographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + description: Identifies a geographic area of the user where the UE is located. + mbmsServiceAreaId: + type: array + items: + type: string + minItems: 1 + description: Identifies an MBMS Service Area Identity of the user where the UE is located. + civicAddress: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + description: Identifies a civic address of the user where the UE is located. + + ServiceAnnouncementMode: + anyOf: + - type: string + enum: + - SACH + - CONTENT_PROVIDER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the service annoucement mode. + Possible values are: + - SACH: BM-SC performs the service announcement for the current service using the + SACH channel. + - CONTENT_PROVIDER: BM-SC provides the necessary service access information used by + the Content Provider to create the service announcement information. + readOnly: true diff --git a/TS29122_MonitoringEvent.yaml b/TS29122_MonitoringEvent.yaml new file mode 100644 index 0000000..1930932 --- /dev/null +++ b/TS29122_MonitoringEvent.yaml @@ -0,0 +1,1448 @@ +openapi: 3.0.0 + +info: + title: 3gpp-monitoring-event + version: 1.3.0-alpha.4 + description: | + API for Monitoring Event. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-monitoring-event/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/subscriptions: + get: + summary: Read all or queried active subscriptions for the SCS/AS. + operationId: FetchAllMonitoringEventSubscriptions + tags: + - Monitoring Event Subscriptions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: ip-addrs + in: query + description: The IP address(es) of the requested UE(s). + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + - name: ip-domain + in: query + description: > + The IPv4 address domain identifier. The attribute may only be provided if IPv4 address + is included in the ip-addrs query parameter. + required: false + schema: + type: string + - name: mac-addrs + in: query + description: The MAC address(es) of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + responses: + '200': + description: OK (Successful get all or queried active subscriptions for the SCS/AS) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MonitoringEventSubscription' + minItems: 0 + description: Monitoring event subscriptions + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource for monitoring event notification. + operationId: CreateMonitoringEventSubscription + tags: + - Monitoring Event Subscriptions + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + requestBody: + description: Subscription for notification about monitoring event + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringEventSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + UserConsentRevocationNotif: + '{request.body#/revocationNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRevocNotif' + responses: + '204': + description: No Content (successful notification). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringEventSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '200': + description: The operation is successful and immediate report is included. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/MonitoringEventReport' + - $ref: '#/components/schemas/MonitoringEventReports' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/subscriptions/{subscriptionId}: + get: + summary: Read an active subscriptions for the SCS/AS and the subscription Id. + operationId: FetchIndMonitoringEventSubscription + tags: + - Individual Monitoring Event Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringEventSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates/replaces an existing subscription resource. + operationId: UpdateIndMonitoringEventSubscription + tags: + - Individual Monitoring Event Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringEventSubscription' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringEventSubscription' + '204': + description: No Content (Successful update of the subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modifies an existing subscription of monitoring event. + operationId: ModifyIndMonitoringEventSubscription + tags: + - Individual Monitoring Event Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource. + required: true + schema: + type: string + requestBody: + description: > + This is used for PATCH request for partial cancellation and/or partial addition of certain + UE(s) within an active group. + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '204': + description: The resource was modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing monitoring event subscription. + operationId: DeleteIndMonitoringEventSubscription + tags: + - Individual Monitoring Event Subscription + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MonitoringEventReport' + minItems: 1 + description: > + The subscription was terminated successfully, the monitoring event report(s) + shall be included if received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + MonitoringEventSubscription: + description: Represents a subscription to event(s) monitoring. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtcProviderId: + type: string + description: Identifies the MTC Service Provider and/or MTC Application. + appIds: + type: array + items: + type: string + description: Identifies the Application Identifier(s) + minItems: 1 + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + addedExternalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: Indicates the added external Identifier(s) within the active group. + addedMsisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: Indicates the added MSISDN(s) within the active group. + excludedExternalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: Indicates cancellation of the external Identifier(s) within the active group. + excludedMsisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: Indicates cancellation of the MSISDN(s) within the active group. + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + addExtGroupId: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + minItems: 2 + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification + as defined in clause 5.2.5.3. Set to false by the SCS/AS indicates not request SCEF to + send a test notification, default false if omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + monitoringType: + $ref: '#/components/schemas/MonitoringType' + maximumNumberOfReports: + type: integer + minimum: 1 + description: > + Identifies the maximum number of event reports to be generated by the HSS, MME/SGSN + as specified in clause 5.6.0 of 3GPP TS 23.682. + monitorExpireTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + groupReportGuardTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumDetectionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + reachabilityType: + $ref: '#/components/schemas/ReachabilityType' + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + suggestedNumberOfDlPackets: + type: integer + minimum: 0 + description: > + If "monitoringType" is "UE_REACHABILITY", this parameter may be included to identify + the number of packets that the serving gateway shall buffer in case that + the UE is not reachable. + idleStatusIndication: + type: boolean + description: > + If "monitoringType" is set to "UE_REACHABILITY" or "AVAILABILITY_AFTER_DDN_FAILURE", + this parameter may be included to indicate the notification of when a UE, for which PSM + is enabled, transitions into idle mode. "true" indicates enabling of notification; + "false" indicate no need to notify. Default value is "false" if omitted. + locationType: + $ref: '#/components/schemas/LocationType' + accuracy: + $ref: '#/components/schemas/Accuracy' + minimumReportInterval: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maxRptExpireIntvl: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + samplingInterval: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + reportingLocEstInd: + type: boolean + description: > + Indicates whether to request the location estimate for event reporting. If + "monitoringType" is "LOCATION_REPORTING", this parameter may be included to indicate + whether event reporting requires the location information. If set to true, the location + estimation information shall be included in event reporting. If set to "false", + indicates the location estimation information shall not be included in event reporting. + Default "false" if omitted. + linearDistance: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LinearDistance' + locQoS: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + svcId: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/ServiceIdentity' + ldrType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrType' + velocityRequested: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityRequested' + maxAgeOfLocEst: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + locTimeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + supportedGADShapes: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes' + codeWord: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/CodeWord' + upLocRepIndAf: + description: > + Indicates whether location reporting over user plane is requested or not. + "true" indicates the location reporting over user plane is requested. + "false" indicates the location reporting over user plane is not requested. + Default value is "false" if omitted. + type: boolean + default: false + upLocRepAddrAf: + $ref: '#/components/schemas/UpLocRepAddrAfRm' + associationType: + $ref: '#/components/schemas/AssociationType' + plmnIndication: + type: boolean + description: > + If "monitoringType" is "ROAMING_STATUS", this parameter may be included to indicate the + notification of UE's Serving PLMN ID. Value "true" indicates enabling of notification; + "false" indicates disabling of notification. Default value is "false" if omitted. + locationArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea' + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + dddTraDescriptors: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + dddStati: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + apiNames: + type: array + items: + type: string + minItems: 1 + monitoringEventReport: + $ref: '#/components/schemas/MonitoringEventReport' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + tgtNsThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SACInfo' + nsRepFormat: + $ref: '#/components/schemas/SACRepFormat' + afServiceId: + type: string + immediateRep: + type: boolean + description: > + Indicates whether an immediate reporting is requested or not. + "true" indicate an immediate reporting is requested. + "false" indicate an immediate reporting is not requested. + Default value "false" if omitted. + uavPolicy: + $ref: '#/components/schemas/UavPolicy' + sesEstInd: + type: boolean + description: > + Set to true by the SCS/AS so that only UAV's with "PDU session established for DNN(s) + subject to aerial service" are to be listed in the Event report. Set to false or default + false if omitted otherwise. + subType: + $ref: '#/components/schemas/SubType' + addnMonTypes: + type: array + items: + $ref: '#/components/schemas/MonitoringType' + addnMonEventReports: + type: array + items: + $ref: '#/components/schemas/MonitoringEventReport' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ueMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + revocationNotifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + reqRangingSlRes: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangingSlResult' + minItems: 1 + relatedUEs: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RelatedUE' + minItems: 1 + required: + - notificationDestination + - monitoringType + anyOf: + - required: [maximumNumberOfReports] + - required: [monitorExpireTime] + + MonitoringNotification: + description: Represents an event monitoring notification. + type: object + properties: + subscription: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + configResults: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ConfigResult' + minItems: 1 + description: Each element identifies a notification of grouping configuration result. + monitoringEventReports: + type: array + items: + $ref: '#/components/schemas/MonitoringEventReport' + minItems: 1 + description: Monitoring event reports. + addedExternalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: > + Identifies the added external Identifier(s) within the active group via + the "externalGroupId" attribute within the MonitoringEventSubscription data type. + addedMsisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: > + Identifies the added MSISDN(s) within the active group via the "externalGroupId" + attribute within the MonitoringEventSubscription data type. + cancelExternalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: > + Identifies the cancelled external Identifier(s) within the active group via + the "externalGroupId" attribute within the MonitoringEventSubscription data type. + cancelMsisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: > + Identifies the cancelled MSISDN(s) within the active group via the "externalGroupId" + attribute within the MonitoringEventSubscription data type. + cancelInd: + type: boolean + description: > + Indicates whether to request to cancel the corresponding monitoring subscription. + Set to false or omitted otherwise. + appliedParam: + $ref: '#/components/schemas/AppliedParameterConfiguration' + required: + - subscription + + MonitoringEventReport: + description: Represents an event monitoring report. + type: object + properties: + imeiChange: + $ref: '#/components/schemas/AssociationType' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pduSessionInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/PduSessionInformation' + idleStatusInfo: + $ref: '#/components/schemas/IdleStatusInfo' + locationInfo: + $ref: '#/components/schemas/LocationInfo' + locFailureCause: + $ref: '#/components/schemas/LocationFailureCause' + lossOfConnectReason: + type: integer + description: > + If "monitoringType" is "LOSS_OF_CONNECTIVITY", this parameter shall be included + if available to identify the reason why loss of connectivity is reported. + Refer to 3GPP TS 29.336 clause 8.4.58. + unavailPerDur: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maxUEAvailabilityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + monitoringType: + $ref: '#/components/schemas/MonitoringType' + uePerLocationReport: + $ref: '#/components/schemas/UePerLocationReport' + plmnId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/PlmnId' + reachabilityType: + $ref: '#/components/schemas/ReachabilityType' + roamingStatus: + type: boolean + description: > + If "monitoringType" is "ROAMING_STATUS", this parameter shall be set to "true" + if the new serving PLMN is different from the HPLMN. Set to false or + omitted otherwise. + failureCause: + $ref: '#/components/schemas/FailureCause' + eventTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + pdnConnInfoList: + type: array + items: + $ref: '#/components/schemas/PdnConnectionInformation' + minItems: 1 + dddStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + dddTrafDescriptor: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + maxWaitTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + apiCaps: + type: array + items: + $ref: '#/components/schemas/ApiCapabilityInfo' + minItems: 0 + nSStatusInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SACEventStatus' + afServiceId: + type: string + servLevelDevId: + type: string + description: > + If "monitoringType" is "AREA_OF_INTEREST", this parameter may be included + to identify the UAV. + uavPresInd: + type: boolean + description: > + If "monitoringType" is "AREA_OF_INTEREST", this parameter shall be set to true + if the specified UAV is in the monitoring area. Set to false or omitted otherwise. + groupMembListChanges: + $ref: '#/components/schemas/GroupMembListChanges' + required: + - monitoringType + + MonitoringEventReports: + description: Represents a set of event monitoring reports. + type: object + properties: + monitoringEventReports: + type: array + items: + $ref: '#/components/schemas/MonitoringEventReport' + minItems: 1 + required: + - monitoringEventReports + + IdleStatusInfo: + description: Represents the information relevant to when the UE transitions into idle mode. + type: object + properties: + activeTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + edrxCycleLength: + format: float + type: number + minimum: 0 + suggestedNumberOfDlPackets: + type: integer + minimum: 0 + description: > + Identifies the number of packets shall be buffered in the serving gateway. + It shall be present if the idle status indication is requested by the SCS/AS + with "idleStatusIndication" in the "monitoringEventSubscription" sets to "true". + idleStatusTimestamp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + periodicAUTimer: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + UePerLocationReport: + description: Represents the number of UEs found at the indicated location. + type: object + properties: + ueCount: + type: integer + minimum: 0 + description: Identifies the number of UEs. + externalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: Each element uniquely identifies a user. + msisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: Each element identifies the MS internal PSTN/ISDN number allocated for a UE. + servLevelDevIds: + type: array + items: + type: string + minItems: 1 + description: Each element uniquely identifies a UAV. + required: + - ueCount + + LocationInfo: + description: Represents the user location information. + type: object + properties: + ageOfLocationInfo: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationMin' + cellId: + type: string + description: > + Indicates the Cell Global Identification of the user which identifies the cell the UE + is registered. + enodeBId: + type: string + description: Indicates the eNodeB in which the UE is currently located. + routingAreaId: + type: string + description: Identifies the Routing Area Identity of the user where the UE is located. + trackingAreaId: + type: string + description: Identifies the Tracking Area Identity of the user where the UE is located. + plmnId: + type: string + description: Identifies the PLMN Identity of the user where the UE is located. + twanId: + type: string + description: Identifies the TWAN Identity of the user where the UE is located. + userLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + geographicArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + positionMethod: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethod' + qosFulfilInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + ueVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + ldrType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrType' + achievedQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MinorLocationQoS' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: '#/components/schemas/RangeDirection' + twodrelativeLocation: + $ref: '#/components/schemas/TwodrelativeLocation' + threedrelativeLocation: + $ref: '#/components/schemas/ThreedrelativeLocation' + relativeVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + RangeDirection: + description: Represents a range and direction from a point A to a point B. + type: object + properties: + range: + type: number + azimuthDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Angle' + elevationDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Angle' + + + TwodrelativeLocation: + description: Represents a relative 2D location with uncertainty ellipse. + type: object + properties: + semiMinor: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty' + semiMajor: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty' + orientationAngle: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Angle' + + ThreedrelativeLocation: + description: Represents a relative 3D location with uncertainty ellipsoid. + type: object + properties: + semiMinor: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty' + semiMajor: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty' + verticalUncertainty: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Uncertainty' + orientationAngle: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Angle' + + FailureCause: + description: Represents the reason of communication failure. + type: object + properties: + bssgpCause: + type: integer + description: > + Identifies a non-transparent copy of the BSSGP cause code. Refer to 3GPP TS 29.128. + causeType: + type: integer + description: Identify the type of the S1AP-Cause. Refer to 3GPP TS 29.128. + gmmCause: + type: integer + description: > + Identifies a non-transparent copy of the GMM cause code. Refer to 3GPP TS 29.128. + ranapCause: + type: integer + description: > + Identifies a non-transparent copy of the RANAP cause code. Refer to 3GPP TS 29.128. + ranNasCause: + type: string + description: > + Indicates RAN and/or NAS release cause code information, TWAN release cause code + information or untrusted WLAN release cause code information. Refer to 3GPP TS 29.214. + s1ApCause: + type: integer + description: > + Identifies a non-transparent copy of the S1AP cause code. Refer to 3GPP TS 29.128. + smCause: + type: integer + description: > + Identifies a non-transparent copy of the SM cause code. Refer to 3GPP TS 29.128. + + PdnConnectionInformation: + description: Represents the PDN connection information of the UE. + type: object + properties: + status: + $ref: '#/components/schemas/PdnConnectionStatus' + apn: + type: string + description: > + Identify the APN, it is depending on the SCEF local configuration whether or + not this attribute is sent to the SCS/AS. + pdnType: + $ref: '#/components/schemas/PdnType' + interfaceInd: + $ref: '#/components/schemas/InterfaceIndication' + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addrs: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + macAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + required: + - status + - pdnType + + AppliedParameterConfiguration: + description: Represents the parameter configuration applied in the network. + type: object + properties: + externalIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + minItems: 1 + description: Each element uniquely identifies a user. + msisdns: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + minItems: 1 + description: Each element identifies the MS internal PSTN/ISDN number allocated for a UE. + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumDetectionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + + ApiCapabilityInfo: + description: Represents the availability information of supported API. + type: object + properties: + apiName: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - apiName + - suppFeat + + UavPolicy: + description: > + Represents the policy information included in the UAV presence monitoring request. + type: object + properties: + uavMoveInd: + type: boolean + revokeInd: + type: boolean + required: + - uavMoveInd + - revokeInd + + ConsentRevocNotif: + description: > + Represents the user consent revocation information conveyed in a user consent + revocation notification. + type: object + properties: + subscriptionId: + type: string + consentsRevoked: + type: array + items: + $ref: '#/components/schemas/ConsentRevoked' + minItems: 1 + required: + - subscriptionId + - consentsRevoked + + ConsentRevoked: + description: Represents the information related to a revoked user consent. + type: object + properties: + ucPurpose: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcPurpose' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + required: + - ucPurpose + oneOf: + - required: [externalId] + - required: [msisdn] + + GroupMembListChanges: + description: Represents information on the change(s) to a group's members list. + type: object + properties: + addedUEs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + removedUEs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + anyOf: + - required: [addedUEs] + - required: [removedUEs] + + UpLocRepAddrAfRm: + description: Represents the user plane addressing information. + type: object + properties: + ipv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + nullable: true + anyOf: + - required: [ipv4Addrs] + - required: [ipv6Addrs] + - required: [fqdn] + +# +# ENUMS +# + MonitoringType: + anyOf: + - type: string + enum: + - LOSS_OF_CONNECTIVITY + - UE_REACHABILITY + - LOCATION_REPORTING + - CHANGE_OF_IMSI_IMEI_ASSOCIATION + - ROAMING_STATUS + - COMMUNICATION_FAILURE + - AVAILABILITY_AFTER_DDN_FAILURE + - NUMBER_OF_UES_IN_AN_AREA + - PDN_CONNECTIVITY_STATUS + - DOWNLINK_DATA_DELIVERY_STATUS + - API_SUPPORT_CAPABILITY + - NUM_OF_REGD_UES + - NUM_OF_ESTD_PDU_SESSIONS + - AREA_OF_INTEREST + - GROUP_MEMBER_LIST_CHANGE + - APPLICATION_START + - APPLICATION STOP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a monitoring event type. + Possible values are + - LOSS_OF_CONNECTIVITY: The SCS/AS requests to be notified when the 3GPP network detects + that the UE is no longer reachable for signalling or user plane communication + - UE_REACHABILITY: The SCS/AS requests to be notified when the UE becomes reachable for + sending either SMS or downlink data to the UE + - LOCATION_REPORTING: The SCS/AS requests to be notified of the current location or + the last known location of the UE + - CHANGE_OF_IMSI_IMEI_ASSOCIATION: The SCS/AS requests to be notified when the association + of an ME (IMEI(SV)) that uses a specific subscription (IMSI) is changed + - ROAMING_STATUS: The SCS/AS queries the UE's current roaming status and requests to get + notified when the status changes + - COMMUNICATION_FAILURE: The SCS/AS requests to be notified of communication failure events + - AVAILABILITY_AFTER_DDN_FAILURE: The SCS/AS requests to be notified when the UE has become + available after a DDN failure + - NUMBER_OF_UES_IN_AN_AREA: The SCS/AS requests to be notified the number of UEs in a given + geographic area + - PDN_CONNECTIVITY_STATUS: The SCS/AS requests to be notified when the 3GPP network detects + that the UE’s PDN connection is set up or torn down + - DOWNLINK_DATA_DELIVERY_STATUS: The AF requests to be notified when the 3GPP network detects that the downlink data delivery status is changed. + - API_SUPPORT_CAPABILITY: The SCS/AS requests to be notified of the availability of support + of service APIs. + - NUM_OF_REGD_UES: The AF requests to be notified of the current number of registered UEs + for a network slice. + - NUM_OF_ESTD_PDU_SESSIONS: The AF requests to be notified of the current number of + established PDU Sessions for a network slice. + - AREA_OF_INTEREST: The SCS/AS requests to be notified when the UAV moves in or + out of the geographic area. + - GROUP_MEMBER_LIST_CHANGE: The AF requests to be notified of the changes to a group members + list. + - APPLICATION_START: The AF requests to be notified about the start of application traffic + has been detected. + - APPLICATION_STOP: The AF requests to be notified about the stop of application traffic + has been detected. + + ReachabilityType: + anyOf: + - type: string + enum: + - SMS + - DATA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a reachability type. + Possible values are + - SMS: The SCS/AS requests to be notified when the UE becomes reachable for sending SMS + to the UE + - DATA: The SCS/AS requests to be notified when the UE becomes reachable for sending + downlink data to the UE. + + LocationType: + anyOf: + - type: string + enum: + - CURRENT_LOCATION + - LAST_KNOWN_LOCATION + - CURRENT_OR_LAST_KNOWN_LOCATION + - INITIAL_LOCATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a location type. + Possible values are + - CURRENT_LOCATION: The SCS/AS requests to be notified for current location + - LAST_KNOWN_LOCATION: The SCS/AS requests to be notified for last known location + - CURRENT_OR_LAST_KNOWN_LOCATION: The AF requests the current or last known location + - INITIAL_LOCATION: The AF requests the initial location + + AssociationType: + anyOf: + - type: string + enum: + - IMEI + - IMEISV + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents an IMEI or IMEISV to IMSI association. + Possible values are + - IMEI: The value shall be used when the change of IMSI-IMEI association shall be detected + - IMEISV: The value shall be used when the change of IMSI-IMEISV association shall be + detected + + Accuracy: + anyOf: + - type: string + enum: + - CGI_ECGI + - ENODEB + - TA_RA + - PLMN + - TWAN_ID + - GEO_AREA + - CIVIC_ADDR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a desired granularity of accuracy of the requested location information. + Possible values are + - CGI_ECGI: The SCS/AS requests to be notified using cell level location accuracy. + - ENODEB: The SCS/AS requests to be notified using eNodeB level location accuracy. + - TA_RA: The SCS/AS requests to be notified using TA/RA level location accuracy. + - PLMN: The SCS/AS requests to be notified using PLMN level location accuracy. + - TWAN_ID: The SCS/AS requests to be notified using TWAN identifier level location accuracy. + - GEO_AREA: The SCS/AS requests to be notified using the geographical area accuracy. + - CIVIC_ADDR: The SCS/AS requests to be notified using the civic address accuracy. + + PdnConnectionStatus: + anyOf: + - type: string + enum: + - CREATED + - RELEASED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the PDN connection status. + Possible values are + - CREATED: The PDN connection is created. + - RELEASED: The PDN connection is released. + + PdnType: + anyOf: + - type: string + enum: + - IPV4 + - IPV6 + - IPV4V6 + - NON_IP + - ETHERNET + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the PDN connection type. + Possible values are + - IPV4: PDN connection of IPv4 type. + - IPV6: PDN connection of IPv6 type. + - IPV4V6: PDN connection of IPv4v6 type. + - NON_IP: PDN connection of non-IP type. + - ETHERNET: PDN connection of Ethernet type. + + InterfaceIndication: + anyOf: + - type: string + enum: + - EXPOSURE_FUNCTION + - PDN_GATEWAY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the network entity used for data delivery towards the SCS/AS. + Possible values are + - EXPOSURE_FUNCTION: SCEF is used for the PDN connection towards the SCS/AS. + - PDN_GATEWAY: PDN gateway is used for the PDN connection towards the SCS/AS. + + LocationFailureCause: + anyOf: + - type: string + enum: + - POSITIONING_DENIED + - UNSUPPORTED_BY_UE + - NOT_REGISTED_UE + - UNSPECIFIED + - REQUESTED_AREA_NOT_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: > + Represents the cause of location positioning failure. + Possible values are: + - POSITIONING_DENIED: Positioning is denied. + - UNSUPPORTED_BY_UE: Positioning is not supported by UE. + - NOT_REGISTED_UE: UE is not registered. + - UNSPECIFIED: Unspecified. + - REQUESTED_AREA_NOT_ALLOWED: The location request is rejected because the location area + requested by the AF for area event reporting is not allowed. + + SubType: + anyOf: + - type: string + enum: + - AERIAL_UE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a subscription type. + Possible values are + - AERIAL_UE: The UE has Aerial subscription. + + SACRepFormat: + anyOf: + - type: string + enum: + - NUMERICAL + - PERCENTAGE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: Indicates the NSAC reporting format. + diff --git a/TS29122_MsisdnLessMoSms.yaml b/TS29122_MsisdnLessMoSms.yaml new file mode 100644 index 0000000..bc3d12c --- /dev/null +++ b/TS29122_MsisdnLessMoSms.yaml @@ -0,0 +1,102 @@ +openapi: 3.0.0 +info: + title: 3gpp-msisdn-less-mo-sms + version: 1.2.0 + description: | + API for MSISDN-less Mobile Originated SMS. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.122 V17.6.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /: + post: + summary: Deliver a received MSIDN-less MO SMS from the SCEF to the SCS/AS. + operationId: DeliverMSISDNlessMOSMSNotification + tags: + - MSISDN-less MO SMS Notification + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MsisdnLessMoSmsNotification' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/MsisdnLessMoSmsNotificationReply' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + MsisdnLessMoSmsNotification: + description: Represents a MSISDN-less MO SMS notification. + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + sms: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + externalId: + type: string + description: External identifier has the form username@realm. + applicationPort: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + required: + - supportedFeatures + - sms + - externalId + - applicationPort + MsisdnLessMoSmsNotificationReply: + description: Represents a reply to a MSISDN-less MO SMS notification. + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supportedFeatures diff --git a/TS29122_NIDD.yaml b/TS29122_NIDD.yaml new file mode 100644 index 0000000..a9c9522 --- /dev/null +++ b/TS29122_NIDD.yaml @@ -0,0 +1,1312 @@ +openapi: 3.0.0 + +info: + title: 3gpp-nidd + version: 1.3.0-alpha.1 + description: | + API for non IP data delivery. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-nidd/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/configurations: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + get: + summary: Read all NIDD configuration resources for a given SCS/AS. + operationId: FetchAllNIDDConfigurations + tags: + - NIDD configurations + responses: + '200': + description: all NIDD configurations. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NiddConfiguration' + minItems: 0 + description: individual NIDD configuration. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create a new NIDD configuration resource. + operationId: CreateNIDDConfiguration + tags: + - NIDD configurations + requestBody: + description: Contains the data to create a NIDD configuration. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfiguration' + responses: + '201': + description: NIDD configuration is successfully created. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfiguration' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + niddNotifications: + '{$request.body#/notificationDestination}': + post: + requestBody: + description: > + Notification for NIDD configuration status, MO NIDD, MT NIDD delivery report. + required: true + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NiddConfigurationStatusNotification' + - $ref: '#/components/schemas/NiddUplinkDataNotification' + - $ref: '#/components/schemas/NiddDownlinkDataDeliveryStatusNotification' + - $ref: '#/components/schemas/GmdNiddDownlinkDataDeliveryNotification' + - $ref: '#/components/schemas/ManagePortNotification' + responses: + '204': + description: Expected response to a successful callback processing without a body + '200': + description: Expected response to a successful callback processing with a body + content: + application/json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Acknowledgement' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/configurations/{configurationId}: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying the individual NIDD configuration resource in the SCEF. + in: path + required: true + schema: + type: string + get: + summary: Read an NIDD configuration resource. + operationId: FetchIndNIDDConfiguration + tags: + - Individual NIDD configuration + responses: + '200': + description: The individual NIDD configuration is successfully retrieved. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfiguration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an existing NIDD configuration resource. + operationId: ModifyNIDDConfiguration + tags: + - Individual NIDD configuration + requestBody: + description: Contains information to be applied to the individual NIDD configuration. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/NiddConfigurationPatch' + responses: + '200': + description: > + The Individual NIDD configuration is modified successfully and a representation + of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfiguration' + '204': + description: > + The Individual NIDD configuration is modified successfully and no content + is to be sent in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing NIDD configuration resource. + operationId: DeleteNIDDConfiguration + tags: + - Individual NIDD configuration + responses: + '204': + description: The Individual NIDD configuration is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/configurations/{configurationId}/downlink-data-deliveries: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying the individual NIDD configuration resource in the SCEF. + in: path + required: true + schema: + type: string + get: + summary: Read all pending NIDD downlink data delivery resources related to a particular NIDD configuration resource. + operationId: FetchAllDownlinkDataDeliveries + tags: + - NIDD downlink data deliveries + responses: + '200': + description: all NIDD downlink data deliveries. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + minItems: 0 + description: individual NIDD downlink data delivery. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create an NIDD downlink data delivery resource related to a particular NIDD configuration resource. + operationId: CreateDownlinkDataDelivery + tags: + - NIDD downlink data deliveries + requestBody: + description: Contains the data to create a NIDD downlink data delivery. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + responses: + '200': + description: NIDD downlink data delivery is successful. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + '201': + description: NIDD downlink data delivery is pending. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The NIDD downlink data delivery request was not successful. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/configurations/{configurationId}/downlink-data-deliveries/{downlinkDataDeliveryId}: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying the individual NIDD configuration resource in the SCEF. + in: path + required: true + schema: + type: string + - name: downlinkDataDeliveryId + description: String identifying the individual NIDD downlink data delivery in the SCEF. + in: path + required: true + schema: + type: string + get: + summary: Read pending NIDD downlink data delivery resource. + operationId: FetchIndDownlinkDataDelivery + tags: + - Individual NIDD downlink data delivery + responses: + '200': + description: The individual NIDD downlink data delivery is successfully retrieved. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Replace an NIDD downlink data delivery resource. + operationId: UpdateIndDownlinkDataDelivery + tags: + - Individual NIDD downlink data delivery + requestBody: + description: > + Contains information to be applied to the individual NIDD downlink data delivery. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + responses: + '200': + description: > + The pending NIDD downlink data is replaced sucessfully but delivery is pending. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + '204': + description: > + The NIDD downlink data delivery has been replaced successfully and no content + is to be sent in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The NIDD downlink data replacement request was not successful. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an existing Individual NIDD downlink data delivery resource. + operationId: ModifyIndDownlinkDataDelivery + tags: + - Individual NIDD downlink data delivery + requestBody: + description: > + Contains the parameters to update an individual NIDD downlink data delivery resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransferPatch' + responses: + '200': + description: > + OK. The modification of the Individual NIDD downlink data delivery resource was + successful and an updated representation of the resource within the + NiddDownlinkDataTransfer data structure in the response message body is returned + by the SCEF. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + '204': + description: > + No Content. The modification of the Individual NIDD downlink data delivery resource + was successful and no content is to be sent in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + Internal Server Error. The NIDD downlink data modification request was not successful. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an NIDD downlink data delivery resource. + operationId: DeleteIndDownlinkDataDelivery + tags: + - Individual NIDD downlink data delivery + responses: + '204': + description: The pending NIDD downlink data is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The NIDD downlink data cancellation request was not successful. + content: + application/json: + schema: + $ref: '#/components/schemas/NiddDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/configurations/{configurationId}/rds-ports: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying the individual NIDD configuration resource in the SCEF. + in: path + required: true + schema: + type: string + get: + summary: Read all RDS ManagePort Configurations. + operationId: FetchAllManagePortConfigurations + tags: + - ManagePort Configurations + responses: + '200': + description: all ManagePort configurations. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ManagePort' + minItems: 0 + description: individual ManagePort configuration. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/configurations/{configurationId}/rds-ports/{portId}: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying the individual NIDD configuration resource in the SCEF. + in: path + required: true + schema: + type: string + - name: portId + description: The UE port number. + in: path + required: true + schema: + type: string + pattern: '^(ue([0-9]|(1[0-5]))-ef([0-9]|(1[0-5])))$' + get: + summary: Read an Individual ManagePort Configuration resource to query port numbers. + operationId: FetchIndManagePortConfiguration + tags: + - Individual ManagePort Configuration + responses: + '200': + description: The individual ManagePort configuration is successfully retrieved. + content: + application/json: + schema: + $ref: '#/components/schemas/ManagePort' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Create a new Individual ManagePort Configuration resource to reserve port numbers. + operationId: UpdateIndManagePortConfiguration + tags: + - Individual ManagePort Configuration + requestBody: + description: Contains information to be applied to the individual ManagePort configuration. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ManagePort' + responses: + '201': + description: The individual ManagePort configuration is created. + content: + application/json: + schema: + $ref: '#/components/schemas/ManagePort' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '202': + description: The request is accepted and under processing. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The request was not successful. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/RdsDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an Individual ManagePort Configuration resource to release port numbers. + operationId: DeleteIndManagePortConfiguration + tags: + - Individual ManagePort Configuration + responses: + '202': + description: The request is accepted and under processing. + '204': + description: The individual ManagePort configuration is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The request was not successful. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/RdsDownlinkDataDeliveryFailure' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + NiddConfiguration: + description: Represents the configuration for NIDD. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtcProviderId: + type: string + description: Identifies the MTC Service Provider and/or MTC Application. + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + duration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + reliableDataService: + type: boolean + description: > + Indicates whether the reliable data service (as defined in clause 4.5.14.3 of 3GPP TS + 23.682) acknowledgement is requested (true) or not (false). Default value is false. + rdsPorts: + type: array + items: + $ref: '#/components/schemas/RdsPort' + minItems: 1 + description: > + Indicates the static port configuration that is used for reliable data transfer between + specific applications using RDS (as defined in clause 5.2.4 and + 5.2.5 of 3GPP TS 24.250). + pdnEstablishmentOption: + $ref: '#/components/schemas/PdnEstablishmentOptions' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined + in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + maximumPacketSize: + type: integer + minimum: 1 + description: > + The Maximum Packet Size is the maximum NIDD packet size that was transferred to + the UE by the SCEF in the PCO, see clause 4.5.14.1 of 3GPP TS 23.682. If no maximum + packet size was provided to the UE by the SCEF, the SCEF sends a default configured + max packet size to SCS/AS. Unit bit. + readOnly: true + niddDownlinkDataTransfers: + type: array + items: + $ref: '#/components/schemas/NiddDownlinkDataTransfer' + minItems: 1 + description: > + The downlink data deliveries that needed to be executed by the SCEF. The cardinality of + the property shall be 0..1 in the request and 0..N in the response (i.e. response may + contain multiple buffered MT NIDD). + status: + $ref: '#/components/schemas/NiddStatus' + required: + - notificationDestination + oneOf: + - required: [externalId] + - required: [msisdn] + - required: [externalGroupId] + + NiddDownlinkDataTransfer: + description: Represents the received NIDD downlink data from the SCS/AS. + type: object + properties: + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + reliableDataService: + type: boolean + description: > + Indicates whether the reliable data service (as defined in clause 4.5.14.3 of 3GPP TS + 23.682) acknowledgement is requested (true) or not (false). Default value is false. + rdsPort: + $ref: '#/components/schemas/RdsPort' + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + priority: + type: integer + description: > + It is used to indicate the priority of the non-IP data packet relative to other + non-IP data packets. + pdnEstablishmentOption: + $ref: '#/components/schemas/PdnEstablishmentOptions' + deliveryStatus: + $ref: '#/components/schemas/DeliveryStatus' + requestedRetransmissionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - data + oneOf: + - required: [externalId] + - required: [msisdn] + - required: [externalGroupId] + + NiddUplinkDataNotification: + description: Represents NIDD uplink data to be notified to the SCS/AS. + type: object + properties: + niddConfiguration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + reliableDataService: + type: boolean + description: > + Indicates whether the reliable data service acknowledgement is requested (true) or + not (false). + rdsPort: + $ref: '#/components/schemas/RdsPort' + required: + - niddConfiguration + - data + oneOf: + - required: [externalId] + - required: [msisdn] + + NiddDownlinkDataDeliveryStatusNotification: + description: Represents the delivery status of a specific NIDD downlink data delivery. + type: object + properties: + niddDownlinkDataTransfer: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + deliveryStatus: + $ref: '#/components/schemas/DeliveryStatus' + requestedRetransmissionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - niddDownlinkDataTransfer + - deliveryStatus + + NiddConfigurationStatusNotification: + description: Represents an NIDD configuration status notification. + type: object + properties: + niddConfiguration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + status: + $ref: '#/components/schemas/NiddStatus' + rdsCapIndication: + type: boolean + description: > + It indicates whether the network capability for the reliable data service is enabled + or not. + rdsPort: + $ref: '#/components/schemas/RdsPort' + required: + - niddConfiguration + - status + oneOf: + - required: [externalId] + - required: [msisdn] + + GmdNiddDownlinkDataDeliveryNotification: + description: Represents the delivery status of a specific group NIDD downlink data delivery. + type: object + properties: + niddDownlinkDataTransfer: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + gmdResults: + type: array + items: + $ref: '#/components/schemas/GmdResult' + minItems: 1 + description: Indicates the group message delivery result. + required: + - niddDownlinkDataTransfer + - gmdResults + + RdsPort: + description: Represents the port configuration for Reliable Data Transfer. + type: object + properties: + portUE: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + portSCEF: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + required: + - portUE + - portSCEF + + GmdResult: + description: Represents the group message delivery result. + type: object + properties: + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + deliveryStatus: + $ref: '#/components/schemas/DeliveryStatus' + requestedRetransmissionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - deliveryStatus + oneOf: + - required: [externalId] + - required: [msisdn] + + NiddDownlinkDataDeliveryFailure: + description: Represents information related to a failure delivery result. + type: object + properties: + problemDetail: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + requestedRetransmissionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - problemDetail + + ManagePort: + description: Represents the configuration of a RDS dynamic port management. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + appId: + type: string + description: Identifies the application. + manageEntity: + $ref: '#/components/schemas/ManageEntity' + skipUeInquiry: + type: boolean + description: Indicate whether to skip UE inquiry. + supportedFormats: + type: array + items: + $ref: '#/components/schemas/SerializationFormat' + minItems: 1 + description: > + Indicates the serialization format(s) that are supported by the SCS/AS on the associated + RDS port. + configuredFormat: + $ref: '#/components/schemas/SerializationFormat' + required: + - appId + + ManagePortNotification: + description: Represents a ManagePort notification of port numbers that are reserved. + type: object + properties: + niddConfiguration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + managedPorts: + type: array + items: + $ref: '#/components/schemas/ManagePort' + minItems: 1 + description: Indicates the reserved RDS port configuration information. + required: + - niddConfiguration + oneOf: + - required: [externalId] + - required: [msisdn] + + RdsDownlinkDataDeliveryFailure: + description: Represents the failure delivery result for RDS. + allOf: + - $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + - type: object + properties: + requestedRetransmissionTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + supportedUeFormats: + type: array + items: + $ref: '#/components/schemas/SerializationFormat' + minItems: 1 + description: > + Indicates the serialization format(s) that are supported by the UE on the associated + RDS port. + + NiddDownlinkDataTransferPatch: + description: > + Represents the parameters to request the modification of an Individual NIDD Downlink Data + Delivery resource. + type: object + properties: + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + reliableDataService: + type: boolean + description: > + Indicates whether the reliable data service (as defined in clause 4.5.14.3 of 3GPP TS + 23.682) acknowledgement is requested (true) or not (false). + rdsPort: + $ref: '#/components/schemas/RdsPort' + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + priority: + type: integer + description: > + It is used to indicate the priority of the non-IP data packet relative to other + non-IP data packets. + pdnEstablishmentOption: + $ref: '#/components/schemas/PdnEstablishmentOptions' + + PdnEstablishmentOptions: + anyOf: + - type: string + enum: + - WAIT_FOR_UE + - INDICATE_ERROR + - SEND_TRIGGER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents PDN establishment options that describe the network behaviour when + there is no PDN connection towards the addressed UE. + Possible values are: + - WAIT_FOR_UE: wait for the UE to establish the PDN connection + - INDICATE_ERROR: respond with an error cause + - SEND_TRIGGER: send a device trigger + + PdnEstablishmentOptionsRm: + description: > + Represents the same information as the PdnEstablishmentOptions data type with the + difference that it allows also the null value. + anyOf: + - $ref: '#/components/schemas/PdnEstablishmentOptions' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + + DeliveryStatus: + anyOf: + - type: string + enum: + - SUCCESS + - SUCCESS_NEXT_HOP_ACKNOWLEDGED + - SUCCESS_NEXT_HOP_UNACKNOWLEDGED + - SUCCESS_ACKNOWLEDGED + - SUCCESS_UNACKNOWLEDGED + - TRIGGERED + - BUFFERING + - BUFFERING_TEMPORARILY_NOT_REACHABLE + - SENDING + - FAILURE + - FAILURE_RDS_DISABLED + - FAILURE_NEXT_HOP + - FAILURE_TIMEOUT + - FAILURE_TEMPORARILY_NOT_REACHABLE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the status of a downlink NIDD data delivery resource. + Possible values are: + - SUCCESS: Success but details not provided + - SUCCESS_NEXT_HOP_ACKNOWLEDGED: Successful delivery to the next hop with acknowledgment. + - SUCCESS_NEXT_HOP_UNACKNOWLEDGED: Successful delivery to the next hop without + acknowledgment + - SUCCESS_ACKNOWLEDGED: Reliable delivery was acknowledged by the UE + - SUCCESS_UNACKNOWLEDGED: Reliable delivery was not acknowledged by the UE + - TRIGGERED: The SCEF triggered the device and is buffering the data. + - BUFFERING: The SCEF is buffering the data due to no PDN connection established. + - BUFFERING_TEMPORARILY_NOT_REACHABLE: The SCEF has been informed that the UE is temporarily + not reachable but is buffering the data + - SENDING: The SCEF has forwarded the data, but they may be stored elsewhere + - FAILURE: Delivery failure but details not provided + - FAILURE_RDS_DISABLED: RDS was disabled + - FAILURE_NEXT_HOP: Unsuccessful delivery to the next hop. + - FAILURE_TIMEOUT: Unsuccessful delivery due to timeout. + - FAILURE_TEMPORARILY_NOT_REACHABLE: The SCEF has been informed that the UE is temporarily + not reachable without buffering the data. + readOnly: true + + NiddStatus: + anyOf: + - type: string + enum: + - ACTIVE + - TERMINATED_UE_NOT_AUTHORIZED + - TERMINATED + - RDS_PORT_UNKNOWN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the status of a NIDD configuration. + Possible values are: + - ACTIVE: The NIDD configuration is active. + - TERMINATED_UE_NOT_AUTHORIZED: The NIDD configuration was terminated because the UE´s + authorisation was revoked. + - TERMINATED: The NIDD configuration was terminated. + - RDS_PORT_UNKNOWN: The RDS port is unknown. + readOnly: true + + ManageEntity: + anyOf: + - type: string + enum: + - UE + - AS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the origin that manages the RDS port. + Possible values are: + - UE: Representing the UE. + - AS: Representing the Application Server. + readOnly: true + + SerializationFormat: + anyOf: + - type: string + enum: + - CBOR + - JSON + - XML + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a serialization format associated with an RDS port which is applicable + for the Rds_serialization_format feature. + Possible values are + - CBOR: The CBOR Serialzition format + - JSON: The JSON Serialzition format + - XML: The XML Serialzition format + + NiddConfigurationPatch: + description: Represents the parameters to update a NIDD configuration. + type: object + properties: + duration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRm' + reliableDataService: + type: boolean + description: > + Indicates whether the reliable data service (as defined in clause 4.5.14.3 of 3GPP TS + 23.682) acknowledgement is requested (true) or not (false). + nullable: true + rdsPorts: + type: array + items: + $ref: '#/components/schemas/RdsPort' + minItems: 1 + description: > + Indicates the static port configuration that is used for reliable data transfer between + specific applications using RDS (as defined in clause 5.2.4 and 5.2.5 + of 3GPP TS 24.250). + pdnEstablishmentOption: + $ref: '#/components/schemas/PdnEstablishmentOptionsRm' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' diff --git a/TS29122_NpConfiguration.yaml b/TS29122_NpConfiguration.yaml new file mode 100644 index 0000000..30b30b6 --- /dev/null +++ b/TS29122_NpConfiguration.yaml @@ -0,0 +1,475 @@ +openapi: 3.0.0 +info: + title: 3gpp-network-parameter-configuration + version: 1.2.0 + description: | + API for network parameter configuration. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.122 V17.6.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-network-parameter-configuration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause of 3GPP TS 29.122. +paths: + /{scsAsId}/configurations: + get: + summary: Read all of the active configurations for the SCS/AS. + operationId: FetchAllNPConfigurations + tags: + - Np Configurations + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active NpConfigurations for the SCS/AS) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NpConfiguration' + minItems: 0 + description: Network Parameter configurations + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new configuration resource for network parameter configuration. + operationId: CreateNPConfiguration + tags: + - Np Configurations + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + requestBody: + description: new configuration creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigurationNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/configurations/{configurationId}: + get: + summary: Read an active configuration for the SCS/AS and the configuration Id. + operationId: FetchIndNPConfiguration + tags: + - Individual Np Configuration + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Updates/replaces an existing configuration resource. + operationId: UpdateIndNPConfiguration + tags: + - Individual Np Configuration + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing configuration + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + responses: + '200': + description: OK (Successful update of the existing configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + '204': + description: No Content (Successful update of the configuration) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates/replaces an existing configuration resource. + operationId: ModifyIndNPConfiguration + tags: + - Individual Np Configuration + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/NpConfigurationPatch' + responses: + '200': + description: OK. The configuration was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/NpConfiguration' + '204': + description: No Content. The configuration was modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing configuration. + operationId: DeleteIndNPConfiguration + tags: + - Individual Np Configuration + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing configuration) + '200': + description: OK. (Successful deletion of the existing configuration) + content: + application/json: + schema: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ConfigResult' + minItems: 1 + description: The configuration was terminated successfully, the configuration failure information for group members shall be included if received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + NpConfiguration: + description: Represents a network parameters configuration. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtcProviderId: + type: string + description: Identifies the MTC Service Provider and/or MTC Application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + msisdn: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Msisdn' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + suggestedNumberOfDlPackets: + type: integer + minimum: 0 + description: This parameter may be included to identify the number of packets that the serving gateway shall buffer in case that the UE is not reachable. + groupReportingGuardTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: Set to true by the SCS/AS to request the SCEF to send a test notification as defined in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + validityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ueMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + oneOf: + - required: [externalId] + - required: [msisdn] + - required: [externalGroupId] + NpConfigurationPatch: + description: Represents parameters used to request the modification of a network parameters configuration resource. + type: object + properties: + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + maximumResponseTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + suggestedNumberOfDlPackets: + type: integer + minimum: 0 + description: This parameter may be included to identify the number of packets that the serving gateway shall buffer in case that the UE is not reachable. + nullable: true + groupReportGuardTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + validityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRm' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + ConfigurationNotification: + description: Represents a configuration result notification. + type: object + properties: + configuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + configResults: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ConfigResult' + minItems: 1 + description: The grouping configuration result notification provided by the SCEF. + appliedParam: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/AppliedParameterConfiguration' + required: + - configuration diff --git a/TS29122_PfdManagement.yaml b/TS29122_PfdManagement.yaml new file mode 100644 index 0000000..470b13b --- /dev/null +++ b/TS29122_PfdManagement.yaml @@ -0,0 +1,825 @@ +openapi: 3.0.0 + +info: + title: 3gpp-pfd-management + version: 1.3.0-alpha.3 + description: | + API for PFD management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.4.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-pfd-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/transactions: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + get: + summary: Read all or queried PFDs for a given SCS/AS. + operationId: FetchAllPFDManagementTransactions + tags: + - PFD Management Transactions + parameters: + - name: external-app-ids + in: query + description: The external application identifier(s) of the requested PFD data. + required: false + schema: + type: array + items: + type: string + minItems: 1 + responses: + '200': + description: OK. All or queried transactions related to the request URI are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdManagement' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create PFDs for a given SCS/AS and one or more external Application Identifier(s). + operationId: CreatePFDManagementTransaction + tags: + - PFD Management Transactions + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + description: Create a new transaction for PFD management. + responses: + '201': + description: > + Created. The transaction was created successfully. The SCEF shall return the created + transaction in the response content. PfdReport may be included to provide detailed + failure information for some applications. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The PFDs for all applications were not created successfully. PfdReport is included with + detailed information. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdReport' + minItems: 1 + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/transactions/{transactionId}: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: transactionId + in: path + description: Transaction ID + required: true + schema: + type: string + get: + summary: Read all PFDs for a given SCS/AS and a transaction for one or more external Application Identifier(s). + operationId: FetchIndPFDManagementTransaction + tags: + - Individual PFD Management Transaction + responses: + '200': + description: OK. The transaction information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update PFDs for a given SCS/AS and a transaction for one or more external Application Identifier(s). + operationId: UpdateIndPFDManagementTransaction + tags: + - Individual PFD Management Transaction + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + description: Change information in PFD management transaction. + responses: + '200': + description: > + OK. The transaction was modified successfully. The SCEF shall return an updated + transaction in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The PFDs for all applications were not updated successfully. PfdReport is included with + detailed information. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an existing PFD Management Transaction resource. + operationId: ModifyIndPFDManagementTransaction + tags: + - Individual PFD Management Transaction + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PfdManagementPatch' + responses: + '200': + description: > + OK. The PFD Management Transaction was modified successfully. The SCEF shall return an + updated representation of the resource in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdManagement' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The PFDs for all applications were not modified successfully. A set of PFD Report(s) is + included with detailed information. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete PFDs for a given SCS/AS and a transaction for one or more external Application Identifier(s). + operationId: DeleteIndPFDManagementTransaction + tags: + - Individual PFD Management Transaction + responses: + '204': + description: > + No Content. The transaction was deleted successfully. The content shall be empty. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/transactions/{transactionId}/applications/{appId}: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: transactionId + in: path + description: Transaction ID + required: true + schema: + type: string + - name: appId + in: path + description: Identifier of the application + required: true + schema: + type: string + get: + summary: Read PFDs at individual application level. + operationId: FetchIndApplicationPFDManagement + tags: + - Individual Application PFD Management + responses: + '200': + description: OK. The application information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update PFDs at individual application level. + operationId: UpdateIndApplicationPFDManagement + tags: + - Individual Application PFD Management + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdData' + description: Change information in application. + responses: + '200': + description: > + OK. The application resource was modified successfully. The SCEF shall return an updated + application resource in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdData' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Update PFDs at individual application level. + operationId: ModifyIndApplicationPFDManagement + tags: + - Individual Application PFD Management + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PfdData' + description: Change information in PFD management transaction. + responses: + '200': + description: > + OK. The transaction was modified successfully. The SCEF shall return an updated + transaction in the response content. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdData' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The PFDs for the application were not updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdReport' + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete PFDs at individual application level. + operationId: DeleteIndApplicationPFDManagement + tags: + - Individual Application PFD Management + responses: + '204': + description: > + No Content. The application was deleted successfully. The content shall be empty. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + PfdManagement: + description: Represents a PFD management resource for a PFD management request. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pfdDatas: + type: object + additionalProperties: + $ref: '#/components/schemas/PfdData' + minProperties: 1 + description: > + Each element uniquely identifies the PFDs for an external application identifier. + Each element is identified in the map via an external application identifier as key. + The response shall include successfully provisioned PFD data of application(s). + pfdReports: + type: object + additionalProperties: + $ref: '#/components/schemas/PfdReport' + minProperties: 1 + description: > + Supplied by the SCEF and contains the external application identifiers for which PFD(s) + are not added or modified successfully. The failure reason is also included. + Each element provides the related information for one or more external application + identifier(s) and is identified in the map via the failure identifier as key. + readOnly: true + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined + in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + required: + - pfdDatas + + PfdData: + description: > + Represents a PFD request to add, update or remove PFD(s) for one external application + identifier. + type: object + properties: + externalAppId: + type: string + description: Each element uniquely external application identifier + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + pfds: + type: object + additionalProperties: + $ref: '#/components/schemas/Pfd' + description: > + Contains the PFDs of the external application identifier. Each PFD is identified in + the map via a key containing the PFD identifier. + allowedDelay: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + cachingTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRo' + required: + - externalAppId + - pfds + + Pfd: + description: Represents a PFD for an external Application Identifier. + type: object + properties: + pfdId: + type: string + description: Identifies a PDF of an application identifier. + flowDescriptions: + type: array + items: + type: string + minItems: 1 + description: > + Represents a 3-tuple with protocol, server ip and server port for UL/DL application + traffic. The content of the string has the same encoding as the IPFilterRule AVP + value as defined in IETF RFC 6733. + urls: + type: array + items: + type: string + minItems: 1 + description: > + Indicates a URL or a regular expression which is used to match the significant parts + of the URL. + domainNames: + type: array + items: + type: string + minItems: 1 + description: Indicates an FQDN or a regular expression as a domain name matching criteria. + dnProtocol: + $ref: '#/components/schemas/DomainNameProtocol' + required: + - pfdId + + PfdReport: + description: > + Represents a PFD report indicating the external application identifier(s) which PFD(s) + are not added or modified successfully and the corresponding failure cause(s). + type: object + properties: + externalAppIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies the external application identifier(s) which PFD(s) are not added or + modified successfully + failureCode: + $ref: '#/components/schemas/FailureCode' + cachingTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + locationArea: + $ref: '#/components/schemas/UserPlaneLocationArea' + required: + - externalAppIds + - failureCode + + UserPlaneLocationArea: + description: > + Represents location area(s) of the user plane functions which are unable to enforce the + provisioned PFD(s) successfully. + type: object + properties: + locationArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea' + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 0 + description: Identifies a list of DNAI which the user plane functions support. + + PfdManagementPatch: + description: > + Represents the parameters to request the modification of a PFD management transaction + resource. + type: object + properties: + pfdDatas: + type: object + additionalProperties: + $ref: '#/components/schemas/PfdData' + minProperties: 1 + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + + FailureCode: + anyOf: + - type: string + enum: + - MALFUNCTION + - RESOURCE_LIMITATION + - SHORT_DELAY + - APP_ID_DUPLICATED + - PARTIAL_FAILURE + - OTHER_REASON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the failure reason of the PFD management. + Possible values are: + - MALFUNCTION: This value indicates that something functions wrongly in PFD provisioning + or the PFD provisioning does not function at all. + - RESOURCE_LIMITATION: This value indicates there is resource limitation for PFD storage. + - SHORT_DELAY: This value indicates that the allowed delay is too short and PFD(s) + are not stored. + - APP_ID_DUPLICATED: The received external application identifier(s) are already + provisioned. + - PARTIAL_FAILURE: The PFD(s) are not provisioned to all PCEFs/TDFs/SMFs. + - OTHER_REASON: Other reason unspecified. + + DomainNameProtocol: + anyOf: + - type: string + enum: + - DNS_QNAME + - TLS_SNI + - TLS_SAN + - TSL_SCN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of Domain Name Protocol. + Possible values are: + - DNS_QNAME: Identifies the DNS protocol and the question name in DNS query. + - TLS_SNI: Identifies the Server Name Indication in TLS ClientHello message. + - TLS_SAN: Identifies the Subject Alternative Name in TLS ServerCertificate message. + - TSL_SCN: Identifies the Subject Common Name in TLS ServerCertificate message. + diff --git a/TS29122_RacsParameterProvisioning.yaml b/TS29122_RacsParameterProvisioning.yaml new file mode 100644 index 0000000..3f214ec --- /dev/null +++ b/TS29122_RacsParameterProvisioning.yaml @@ -0,0 +1,469 @@ +openapi: 3.0.0 + +info: + title: 3gpp-racs-parameter-provisioning + version: 1.2.0-alpha.1 + description: | + API for provisioning UE radio capability parameters. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-racs-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/provisionings: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + get: + summary: Read all RACS parameter provisionings for a given AF. + operationId: FetchAllRACSParameterProvisionings + tags: + - RACS Parameter Provisionings + responses: + '200': + description: OK. The provisioning information related to the request URI is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RacsProvisioningData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create a new RACS parameter provisioning. + operationId: CreateRACSParameterProvisioning + tags: + - RACS Parameter Provisionings + requestBody: + description: create new provisionings for a given SCS/AS. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + responses: + '201': + description: Created. The provisioning was created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/provisionings/{provisioningId}: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS as defined in clause 5.2.4 of 3GPP TS 29.122. + required: true + schema: + type: string + - name: provisioningId + in: path + description: Provisioning ID + required: true + schema: + type: string + get: + summary: Read an existing RACS parameter provisioning. + operationId: FetchIndRACSParameterProvisioning + tags: + - Individual RACS Parameter Provisioning + responses: + '200': + description: OK. The provisioning information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify some properties in an existing RACS parameter provisioning. + operationId: ModifyIndRACSParameterProvisioning + tags: + - Individual RACS Parameter Provisioning + requestBody: + description: update an existing parameter provisioning. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/RacsProvisioningDataPatch' + responses: + '200': + description: OK. The provisioning data was updated successfully. The SCEF shall return an updated provisioning information in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + '204': + description: > + The provisioning data was updated successfully, and no content is to be sent in + the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Modify all properties in an existing RACS parameter provisioning. + operationId: UpdateIndRACSParameterProvisioning + tags: + - Individual RACS Parameter Provisioning + requestBody: + description: update an existing parameter provisioning. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + responses: + '200': + description: > + OK. The provisioning data was updated successfully. The SCEF shall return an updated + provisioning information in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsProvisioningData' + '204': + description: > + The provisioning data was updated successfully, and no content is to be sent in + the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a RACS parameter provisioning. + operationId: DeleteIndRACSParameterProvisioning + tags: + - Individual RACS Parameter Provisioning + responses: + '204': + description: > + No Content. The provisioning was terminated successfully. The payload body shall + be empty. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + RacsProvisioningData: + description: Represents a UE's radio capability data. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + racsConfigs: + type: object + additionalProperties: + $ref: '#/components/schemas/RacsConfiguration' + minProperties: 1 + description: > + Identifies the configuration related to manufacturer specific UE radio capability. + Each element uniquely identifies an RACS configuration for an RACS ID and is identified + in the map via the RACS ID as key. The response shall include successfully provisioned + RACS data. + racsReports: + type: object + additionalProperties: + $ref: '#/components/schemas/RacsFailureReport' + minProperties: 1 + description: > + Supplied by the SCEF. Contains the RACS IDs for which the RACS data are not provisioned + successfully. Any string value can be used as a key of the map. + readOnly: true + required: + - racsConfigs + RacsFailureReport: + description: Represents a radio capability data provisioning failure report. + type: object + properties: + racsIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies the RACS ID(s) for which the RACS data are not provisioned successfully. + failureCode: + $ref: '#/components/schemas/RacsFailureCode' + required: + - racsIds + - failureCode + + RacsConfiguration: + description: Represents a single UE radio capability configuration data. + type: object + properties: + racsId: + type: string + description: > + The UE radio capability ID provided by the SCS/AS to identify the UE radio capability + data. See 3GPP TS 23.003 for the encoding. + racsParamEps: + type: string + description: The UE radio capability data in EPS. + racsParam5Gs: + type: string + description: The UE radio capability data in 5GS. + imeiTacs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TypeAllocationCode' + minItems: 1 + description: Related UE model's IMEI-TAC values. + anyOf: + - required: [racsParamEps] + - required: [racsParam5Gs] + required: + - racsId + - imeiTacs + + RacsProvisioningDataPatch: + description: > + Represents parameters to request the modification of a UE's radio capability data. + type: object + properties: + racsConfigs: + type: object + additionalProperties: + $ref: '#/components/schemas/RacsConfigurationRm' + minProperties: 1 + description: > + Identifies the configuration related to manufactuer specific UE radio capability. + Each element uniquely identifies an RACS configuration for an RACS ID and is identified + in the map via the RACS ID as key. + + RacsConfigurationRm: + description: > + Represents the same as the RacsConfiguration data type but with the nullable:true property. + type: object + properties: + racsParamEps: + type: string + description: The UE radio capability data in EPS. + nullable: true + racsParam5Gs: + type: string + description: The UE radio capability data in 5GS. + nullable: true + imeiTacs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TypeAllocationCode' + minItems: 1 + description: Related UE model's IMEI-TAC values. + nullable: true + + RacsFailureCode: + anyOf: + - type: string + enum: + - MALFUNCTION + - RESOURCE_LIMITATION + - RACS_ID_DUPLICATED + - OTHER_REASON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the failure result of UE radio capability provisioning. + Possible values are: + - MALFUNCTION: This value indicates that something functions wrongly in RACS provisioning or + the RACS provisioning does not function at all. + - RESOURCE_LIMITATION: This value indicates there is resource limitation for RACS data + storage. + - RACS_ID_DUPLICATED: The received RACS identifier(s) are already provisioned. + - OTHER_REASON: Other reason unspecified. diff --git a/TS29122_ReportingNetworkStatus.yaml b/TS29122_ReportingNetworkStatus.yaml new file mode 100644 index 0000000..114276a --- /dev/null +++ b/TS29122_ReportingNetworkStatus.yaml @@ -0,0 +1,455 @@ +openapi: 3.0.0 + +info: + title: 3gpp-network-status-reporting + version: 1.3.0-alpha.1 + description: | + API for reporting network status. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.122 V18.1.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-net-stat-report/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{scsAsId}/subscriptions: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + get: + summary: Read all network status reporting subscription resources for a given SCS/AS. + operationId: FetchAllNwStatusReportSubscriptions + tags: + - Network Status Reporting Subscriptions + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Create a new network status reporting subscription resource. + operationId: CreateNwStatusReportSubscription + tags: + - Network Status Reporting Subscriptions + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: > + The subscription was created successfully. The URI of the created resource shall be + returned in the "Location" HTTP header. + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{scsAsId}/subscriptions/{subscriptionId}: + parameters: + - name: scsAsId + in: path + description: Identifier of the SCS/AS + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ScsAsId' + - name: subscriptionId + in: path + description: Identifier of the subscription resource of type string + required: true + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ResourceId' + get: + summary: Read an active network status reporting subscription resource. + operationId: FetchIndNwStatusReportSubscription + tags: + - Individual Network Status Reporting subscription + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Modify an existing subscription resource to update a subscription. + operationId: UpdateIndNwStatusReportSubscription + tags: + - Individual Network Status Reporting subscription + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + responses: + '200': + description: The subscription was updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + '204': + description: No Content. The subscription was updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an existing Individual Network Status Reporting Subscription resource. + operationId: ModifyIndNwStatusReportSubscription + tags: + - Individual Network Status Reporting Subscription + requestBody: + description: > + Contains the parameters to modify an existing Individual Network Status Reporting + Subscription resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/NetStatusRepSubsPatch' + responses: + '200': + description: > + OK. The modification of the Individual Network Status Reporting Subscription resource + was successfull. The SCEF shall return an updated representation of the resource within + the NetworkStatusReportingSubscription data structure in the response message body. + content: + application/json: + schema: + $ref: '#/components/schemas/NetworkStatusReportingSubscription' + '204': + description: > + No Content. The modification of the Individual Network Status Reporting Subscription + resource was successfull and no content is to be sent in the response message body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing continuous network status reporting subscription resource. + operationId: DeleteIndNwStatusReportSubscription + tags: + - Individual Network Status Reporting subscription + responses: + '204': + description: The subscription was updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + NetworkStatusReportingSubscription: + description: Represents a subscription to network status information reporting. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification as defined in + clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + locationArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea' + timeDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + thresholdValues: + type: array + items: + $ref: '#/components/schemas/CongestionValue' + minItems: 1 + description: > + Identifies a list of congestion level(s) with exact value that the SCS/AS requests + to be informed of when reached. + thresholdTypes: + type: array + items: + $ref: '#/components/schemas/CongestionType' + minItems: 1 + description: Identifies a list of congestion level(s) with abstracted value that the SCS/AS requests to be informed of when reached. + required: + - notificationDestination + - locationArea + not: + required: [thresholdValues, thresholdTypes] + + NetStatusRepSubsPatch: + description: > + Represents the parameters to request the modification of network status reporting + subscription. + type: object + properties: + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + locationArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea' + timeDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRm' + thresholdValues: + type: array + items: + $ref: '#/components/schemas/CongestionValue' + minItems: 1 + thresholdTypes: + type: array + items: + $ref: '#/components/schemas/CongestionType' + minItems: 1 + not: + required: [thresholdValues, thresholdTypes] + + NetworkStatusReportingNotification: + description: Represents a network status reporting notification. + type: object + properties: + subscription: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + nsiValue: + $ref: '#/components/schemas/CongestionValue' + nsiType: + $ref: '#/components/schemas/CongestionType' + required: + - subscription + not: + required: [nsiValue, nsiType] + + CongestionValue: + type: integer + minimum: 0 + maximum: 31 + description: > + Unsigned integer with valid values between 0 and 31. The value 0 indicates that there is no + congestion. The value 1 is the lowest congestion level and value 31 is the highest + congestion level. + + CongestionType: + anyOf: + - type: string + enum: + - HIGH + - MEDIUM + - LOW + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents abstracted values for congestion status. + Possible values are: + - HIGH: The congestion status is high. + - MEDIUM: The congestion status is medium. + - LOW: The congestion status is low. diff --git a/TS29122_ResourceManagementOfBdt.yaml b/TS29122_ResourceManagementOfBdt.yaml new file mode 100644 index 0000000..e1c500a --- /dev/null +++ b/TS29122_ResourceManagementOfBdt.yaml @@ -0,0 +1,441 @@ +openapi: 3.0.0 +info: + title: 3gpp-bdt + version: 1.3.0-alpha.1 + description: | + API for BDT resouce management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.122 V18.2.0 T8 reference point for Northbound APIs + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.122/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-bdt/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /{scsAsId}/subscriptions: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + get: + summary: Fetch all active background data transfer subscription resources for a given SCS/AS. + operationId: FetchAllActiveBDTSubscriptions + tags: + - BDT Subscription + responses: + '200': + description: all BDT policy subscriptions. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Bdt' + minItems: 0 + description: individual BDT policy subscription. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Creates a new background data transfer subscription resource. + operationId: CreateBDTSubscription + tags: + - BDT Subscription + requestBody: + description: Contains the data to create a BDT subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + callbacks: + bDTWarningNotification: + '{$request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ExNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Background data transfer policies offered to the SCS/AS. + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29122_CommonData.yaml#/components/responses/409' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{scsAsId}/subscriptions/{subscriptionId}: + parameters: + - name: scsAsId + description: String identifying the SCS/AS. + in: path + required: true + schema: + type: string + - name: subscriptionId + description: String identifying the individual BDT policy resource in the SCEF. + in: path + required: true + schema: + type: string + get: + summary: Read a background data transfer subscription resource. + operationId: FetchIndBDTSubscription + tags: + - Individual BDT Subscription + responses: + '200': + description: Background data transfer policies offered to and selected by the SCEF. + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update a background data transfer subscription resource for negotiation of background data transfer policy. + operationId: UpdateBDTSubscription + tags: + - Individual BDT Subscription + requestBody: + description: Parameters to update/replace the existing BDT subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + responses: + '200': + description: OK (Successful update of the BDT subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + '204': + description: No Content. The Individual BDT Subscription resource was updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify a background data transfer subscription resource to select one of the transfer policies offered by the SCEF. + operationId: ModifyBDTSubscription + tags: + - Individual BDT Subscription + requestBody: + description: Contains information to be performed on the Bdt data structure to select a transfer policy. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/BdtPatch' + responses: + '200': + description: The Individual BDT Policy resource is modified with a selected policy and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Bdt' + '204': + description: The Individual BDT Policy resource is modified with a selected policy. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a background data transfer resource. + operationId: DeleteBDTSubscription + tags: + - Individual BDT Subscription + responses: + '204': + description: The Individual BDT Policy resource is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + Bdt: + description: Represents a Background Data Transfer subscription. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + aspId: + type: string + description: Identifies an application service provider. + volumePerUE: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + numberOfUEs: + type: integer + minimum: 1 + description: Identifies the number of UEs. + desiredTimeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + locationArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea' + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + referenceId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + transferPolicies: + type: array + items: + $ref: '#/components/schemas/TransferPolicy' + minItems: 1 + description: Identifies an offered transfer policy. + readOnly: true + selectedPolicy: + type: integer + description: Identity of the selected background data transfer policy. Shall not be present in initial message exchange, can be provided by NF service consumer in a subsequent message exchange. + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the BDT warning notification is enabled (true) or not (false). Default + value is false. + trafficDes: + $ref: '#/components/schemas/TrafficDescriptor' + required: + - volumePerUE + - numberOfUEs + - desiredTimeWindow + BdtPatch: + description: Represents a Background Data Transfer subscription modification request. + type: object + properties: + selectedPolicy: + type: integer + description: Identity of the selected background data transfer policy. + warnNotifEnabled: + type: boolean + description: > + Indicates whether the BDT warning notification is enabled (true) or not (false). + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + required: + - selectedPolicy + TransferPolicy: + description: Represents an offered transfer policy sent from the SCEF to the SCS/AS, or a selected transfer policy sent from the SCS/AS to the SCEF. + type: object + properties: + bdtPolicyId: + type: integer + description: Identifier for the transfer policy + maxUplinkBandwidth: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + maxDownlinkBandwidth: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + ratingGroup: + type: integer + minimum: 0 + description: Indicates the rating group during the time window. + timeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + required: + - bdtPolicyId + - ratingGroup + - timeWindow + ExNotification: + description: Represents a Background Data Transfer notification. + type: object + properties: + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + timeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + candPolicies: + type: array + items: + $ref: '#/components/schemas/TransferPolicy' + minItems: 1 + description: This IE indicates a list of the candidate transfer policies from which the AF may select a new transfer policy due to network performance degradation. + required: + - bdtRefId + TrafficDescriptor: + type: string + description: Identify a traffic descriptor as defined in Figure 5.2.2 of 3GPP TS 24.526, octets v+5 to w. diff --git a/TS29175_Nimsas_MediaControl.yaml b/TS29175_Nimsas_MediaControl.yaml new file mode 100644 index 0000000..24b7061 --- /dev/null +++ b/TS29175_Nimsas_MediaControl.yaml @@ -0,0 +1,216 @@ +openapi: 3.0.0 + +info: + title: 'IMS AS MediaControl Service' + version: '1.0.0-alpha.1' + description: | + Nimsas_MediaControl Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.175 V0.5.0; IP Multimedia Subsystem; IP Multimedia Subsystem (IMS) Application + Server (AS) Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.175' + +servers: + - url: '{apiRoot}/nimsas-mc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nimsas-mc + +paths: + + /call-sessions/{sessionId}/media-instruction: + post: + summary: Update + operationId: UpdateCallSession + tags: + - Individual call session (Document) + parameters: + - name: sessionId + in: path + description: Session ID assigned by the IMS AS during the IMS session setup. + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SessionId' + requestBody: + description: Representation of the updates to apply to the call session. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MediaInstructionData' + responses: + '200': + description: > + Successful update of the call session, when the IMS AS needs to return information + in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/MediaInstructionData' + '204': + description: > + Successful update of the call session, when the IMS AS does not need to return + information in the response. + '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 UPF. + 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 UPF. + 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' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nimsas-mc: Access to the Nimsas_MediaControl API. + + schemas: + +# STRUCTURED DATA TYPES + + MediaInstructionData: + description: The media instruction data for a specific session. + type: object + required: + - sessionId + - mediaInstructionSet + properties: + sessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SessionId' + mediaInstructionSet: + description: > + Contains a set of instructions for each media flow to control. The mediaId + attribute within the MediaInstructions data type is the key of the map. + type: object + additionalProperties: + $ref: '#/components/schemas/MediaInstructions' + minProperties: 1 + + MediaInstructions: + description: The media instructions for a specific media flow. + type: object + required: + - mediaId + - mediaResourceType + properties: + mediaId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaId' + mediaResourceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaResourceType' + mediaInstruction: + $ref: '#/components/schemas/MediaInstruction' + dcMediaSpecification: + $ref: '#/components/schemas/DcMediaSpecification' + mediaProcessingUrl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + DcMediaSpecification: + description: The data channel media specification information. + type: object + required: + - streams + properties: + mediaProxyConfig: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaProxy' + replaceHttpUrls: + description: > + Contains a list of replacement HTTP URLs. The streamId + attribute within the ReplaceHttpUrl data type is the key of the map. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReplaceHttpUrl' + minProperties: 1 + mdc1EndpointDcsf: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + mdc1EndpointMf: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + mdc2EndpointDcAs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + mdc2EndpointMf: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + mdc2Protocol: + type: string + streams: + description: > + Contains a data channel mapping and configuration information. The streamId + attribute within the DcStream data type is the key of the map. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcStream' + minProperties: 1 + +# ENUMS + + MediaInstruction: + description: The media instruction for handling a specific media flow. + anyOf: + - type: string + enum: + - TERMINATE_MEDIA + - ORIGINATE_MEDIA + - TERMINATE_AND_ORIGINATE_MEDIA + - UPDATE_MEDIA + - DELETE_MEDIA + - REJECT_MEDIA + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + diff --git a/TS29175_Nimsas_SessionEventControl.yaml b/TS29175_Nimsas_SessionEventControl.yaml new file mode 100644 index 0000000..ce45918 --- /dev/null +++ b/TS29175_Nimsas_SessionEventControl.yaml @@ -0,0 +1,268 @@ +openapi: 3.0.0 + +info: + + title: 'IMS AS SessionEventControl Service' + version: '1.0.0-alpha.1' + description: | + Nimsas_SessionEventControl Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.175 V0.5.0; IP Multimedia Subsystem; IP Multimedia Subsystem (IMS) Application + Server (AS) Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.175/' + +servers: + - url: '{apiRoot}/nimsas-sec/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nimsas-sec + +paths: + /session-event-subscriptions: + post: + # This is a pseudo operation, NF service consumers shall NOT invoke this method! + summary: Nimsas_SessionEventControl Subscribe service operation, pseudo operation + tags: + - Session Event Subscriptions (Collection) + operationId: Subscribe + requestBody: + required: true + content: + application/json: + # Unspecified schema for the JSON body, since this is not used by consumer or producer. + schema: {} + responses: + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + callbacks: + eeNotification: + '{SessionEventNotificationUri}': + # The URI in {SessionEventNotificationUri} is not provided by NF service consumer via Nimsas_SessionEventControl API in this Release. + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SessionEventNotification' + responses: + '204': + description: No Content, notification was succesfull. + '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 NF + service consumer. + 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 NF + service consumer. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nimsas-sec: Access to the Nimsas_SessionEventControl API + + schemas: + +# STRUCTURED DATA TYPES + + SessionEventNotification: + description: The session event notification item. + type: object + required: + - notificationEvent + - sessionId + properties: + notificationEvent: + $ref: '#/components/schemas/NotificationEvent' + sessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SessionId' + sessionInfo: + $ref: '#/components/schemas/SessionInfo' + mediaInfoList: + description: > + Contains a media related information. The mediaId attribute within the MediaInfo + data type is the key of the map. + type: object + additionalProperties: + $ref: '#/components/schemas/MediaInfo' + minItems: 1 + + NotificationEvent: + description: The notification event information. + type: object + required: + - eventType + properties: + eventType: + $ref: '#/components/schemas/EventType' + eventInitiator: + $ref: '#/components/schemas/EventInitiator' + + SessionInfo: + description: The session information related to the notification event. + type: object + properties: + callingIdentity: + $ref: 'TS29562_Nhss_imsSDM.yaml#/components/schemas/ImsPublicId' + calledIdentity: + $ref: 'TS29562_Nhss_imsSDM.yaml#/components/schemas/ImsPublicId' + sessionCase: + $ref: '#/components/schemas/SessionCase' + + MediaInfo: + description: The media information related to the notification event. + type: object + required: + - mediaId + - mediaType + properties: + mediaId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaId' + mediaType: + $ref: '#/components/schemas/MediaType' + dcMediaSpecification: + $ref: '#/components/schemas/DcMediaSpecification' + + DcMediaSpecification: + description: > + The data channel media specification information contains media description attributes. + type: object + required: + - streams + properties: + streams: + description: > + Contains a data channel mapping and configuration information. The streamId + attribute within the DcStream data type is the key of the map. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcEndpoint' + minItems: 1 + maxMessageSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxMessageSize' + localDcEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcEndpoint' + remoteDcEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcEndpoint' + securitySetup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecuritySetup' + +# ENUMS + + EventType: + description: The type of the event for which the notification is generated. + anyOf: + - type: string + enum: + - SESSION_ESTABLISHMENT_REQUEST + - SESSION_ESTABLISHMENT_PROGRESS + - SESSION_ESTABLISHMENT_ALERTING + - SESSION_ESTABLISHMENT_SUCCESS + - SESSION_ESTABLISHMENT_FAILURE + - MEDIA_CHANGE_REQUEST + - MEDIA_CHANGE_SUCCESS + - MEDIA_CHANGE_FAILURE + - SESSION_TERMINATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + MediaType: + description: The type of the media for which the notification is generated. + anyOf: + - type: string + enum: + - DC + - AUDIO + - VIDEO + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + SessionCase: + description: The type of the session case. + anyOf: + - type: string + enum: + - ORIGINATING_IMS_SESSION + - TERMINATING_IMS_SESSION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + EventInitiator: + description: The initiator of the event for which the notification is generated. + anyOf: + - type: string + enum: + - SERVED_IMS_SUBSCRIBER + - REMOTE_IMS_SUBSCRIBER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. diff --git a/TS29176_Nmf_MRM.yaml b/TS29176_Nmf_MRM.yaml new file mode 100644 index 0000000..2359f0e --- /dev/null +++ b/TS29176_Nmf_MRM.yaml @@ -0,0 +1,349 @@ +openapi: 3.0.0 + +info: + title: 'MF Media Resource Management (MRM) Service' + version: 1.0.0-alpha.1 + description: | + MF Media Resource Management (MRM) Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.176 V0.5.0; IP Multimedia Subsystem (IMS); Media Function (MF) Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.176/ + +servers: + - url: '{apiRoot}/nmf-mrm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nmf-mrm + +paths: + + /contexts: + post: + summary: Create a new media context. + operationId: CreateMediaContext + tags: + - MediaContext(Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MediaContext' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/MediaContext' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nmf-mrm//contexts/{contextId} + required: true + 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 MF. + 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 MF. + 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' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /contexts/{contextId}: + + patch: + summary: Update Media Context + operationId: UpdateMediaContext + tags: + - Media Context ID (Document) + parameters: + - name: contextId + in: path + required: true + description: Unique ID of the Media Context to update. + 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/MediaContext' + '204': + description: Expected response with empty body + '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 MF. + 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 MF. + 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: Deletes a given Media Context + operationId: DeleteMediaContext + tags: + - Media Context ID (Document) + parameters: + - name: contextId + in: path + required: true + description: Unique ID of the Media Context to delete. + schema: + type: string + responses: + '204': + description: Expected response to a successful deletion. + '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' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmf-mrm: Access to the Nmf_MRM API. + + schemas: + + MediaContext: + description: Information of a Media Context in a MF. + type: object + required: + - terminations + properties: + contextId: + type: string + terminations: + type: array + items: + $ref: '#/components/schemas/TerminationInfo' + minItems: 1 + + TerminationInfo: + description: Represents the termination information. + type: object + required: + - medias + properties: + terminationId: + type: string + medias: + type: array + items: + $ref: '#/components/schemas/MediaInfo' + minItems: 1 + + MediaInfo: + description: Represents the media information. + type: object + required: + - mediaId + - mediaResourceType + properties: + mediaId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaId' + mediaResourceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaResourceType' + localMbEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + remoteMbEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + dcMedia: + $ref: '#/components/schemas/DcMedia' + mediaProcessingUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + DcMedia: + description: Represents the DC media descriptor. + type: object + required: + - streams + properties: + mediaProxyConfig: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MediaProxy' + replaceHttpUrl: + type: object + description: > + Contains a list of replacement HTTP URLs. The streamId attribute + within the ReplaceHttpUrl data type is the key of the map. + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReplaceHttpUrl' + minProperties: 1 + remoteMdc1Endpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + remoteMdc2Endpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + localMdc1Endpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + localMdc2Endpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Endpoint' + mdc2Protocol: + type: string + streams: + type: object + description: > + Contains a data channel mapping and configuration information. The streamId + attribute within the DcStream data type is the key of the map. + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcStream' + minProperties: 1 + maxMessageSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxMessageSize' + localDcEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcEndpoint' + remoteDcEndpoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DcEndpoint' + securitySetup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecuritySetup' diff --git a/TS29222_AEF_Security_API.yaml b/TS29222_AEF_Security_API.yaml new file mode 100644 index 0000000..ba750f1 --- /dev/null +++ b/TS29222_AEF_Security_API.yaml @@ -0,0 +1,154 @@ +openapi: 3.0.0 + +info: + title: AEF_Security_API + description: | + API for AEF security management. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.1" + +externalDocs: + description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/aef-security/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. + +paths: + /check-authentication: + post: + summary: Check authentication. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CheckAuthenticationReq' + responses: + '200': + description: The request was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/CheckAuthenticationRsp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /revoke-authorization: + post: + summary: Revoke authorization. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeAuthorizationReq' + responses: + '200': + description: The request was successful. + content: + application/json: + schema: + $ref: '#/components/schemas/RevokeAuthorizationRsp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + CheckAuthenticationReq: + type: object + description: Represents authentication check request data. + properties: + apiInvokerId: + type: string + description: > + API invoker ID assigned by the CAPIF core function to the API invoker + while on-boarding the API invoker. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - apiInvokerId + - supportedFeatures + + CheckAuthenticationRsp: + type: object + description: Represents authentication check response data. + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supportedFeatures + + RevokeAuthorizationReq: + type: object + description: Represents authorization revocation request data. + properties: + revokeInfo: + $ref: 'TS29222_CAPIF_Security_API.yaml#/components/schemas/SecurityNotification' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - revokeInfo + - supportedFeatures + + RevokeAuthorizationRsp: + type: object + description: Represents authorization revocation response data. + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supportedFeatures diff --git a/TS29222_CAPIF_API_Invoker_Management_API.yaml b/TS29222_CAPIF_API_Invoker_Management_API.yaml new file mode 100644 index 0000000..cd88fc9 --- /dev/null +++ b/TS29222_CAPIF_API_Invoker_Management_API.yaml @@ -0,0 +1,394 @@ +openapi: 3.0.0 + +info: + title: CAPIF_API_Invoker_Management_API + description: | + API for API invoker management. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.1" + +externalDocs: + description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/api-invoker-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /onboardedInvokers: + post: + description: Creates a new individual API Invoker profile. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + description: Notify the API Invoker about the onboarding completion + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingNotification' + responses: + '204': + description: No Content (successful onboarding notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: API invoker on-boarded successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/api-invoker-management/v1/onboardedInvokers/{onboardingId} + required: true + schema: + type: string + '202': + description: The CAPIF core has accepted the Onboarding request and is processing it. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /onboardedInvokers/{onboardingId}: + delete: + description: Deletes an individual API Invoker. + parameters: + - name: onboardingId + in: path + description: String identifying an individual on-boarded API invoker resource + required: true + schema: + type: string + responses: + '204': + description: The individual API Invoker matching onboardingId was offboarded. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + description: Updates an individual API invoker details. + parameters: + - name: onboardingId + in: path + description: String identifying an individual on-boarded API invoker resource + required: true + schema: + type: string + requestBody: + description: representation of the API invoker details to be updated in CAPIF core function + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + description: Notify the API Invoker about the API invoker update completion + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/OnboardingNotification' + responses: + '204': + description: No Content (successful API invoker update notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '200': + description: API invoker details updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + '202': + description: > + The CAPIF core has accepted the API invoker update details request and is processing it. + '204': + description: > + API invoker's information updated successfully, with no content to be + sent in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an individual API invoker details. + operationId: ModifyIndApiInvokeEnrolment + tags: + - Individual API Invoker enrolment details + parameters: + - name: onboardingId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetailsPatch' + responses: + '200': + description: > + The definition of the service API is modified successfully and a + representation of the updated service API is returned in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + '202': + description: The request is accepted and under processing. + '204': + description: No Content. The definition of the service API is modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + schemas: + OnboardingInformation: + type: object + description: Represents on-boarding information of the API invoker. + properties: + apiInvokerPublicKey: + type: string + description: The API Invoker's public key + apiInvokerCertificate: + type: string + description: > + The API Invoker's generic client certificate, provided by the CAPIF core function. + onboardingSecret: + type: string + description: > + The API Invoker's onboarding secret, provided by the CAPIF core function. + required: + - apiInvokerPublicKey + + APIList: + type: object + description: Represents a list of APIs. + properties: + serviceAPIDescriptions: + type: array + items: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/ServiceAPIDescription' + minItems: 1 + description: Represents the list of service APIs that the API Invoker is allowed to invoke. + + APIInvokerEnrolmentDetails: + type: object + properties: + apiInvokerId: + type: string + description: > + API invoker ID assigned by the CAPIF core function to the API invoker while + on-boarding the API invoker. Shall not be present in the HTTP POST request + from the API invoker to the CAPIF core function, to on-board itself. Shall be + present in all other HTTP requests and responses. + readOnly: true + onboardingInformation: + $ref: '#/components/schemas/OnboardingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the CAPIF core function to send a + test notification as defined in in clause 7.6. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + apiList: + $ref: '#/components/schemas/APIList' + apiInvokerInformation: + type: string + description: > + Generic information related to the API invoker such as details of + the device or the application. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - onboardingInformation + - notificationDestination + description: Represents information about the API Invoker that requested to onboard. + + OnboardingNotification: + type: object + description: Represents a notification of on-boarding or update result. + properties: + result: + type: boolean + description: Set to "true" indicate successful on-boarding. Otherwise set to "false" + resourceLocation: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + apiInvokerEnrolmentDetails: + $ref: '#/components/schemas/APIInvokerEnrolmentDetails' + apiList: + $ref: '#/components/schemas/APIList' + required: + - result + + APIInvokerEnrolmentDetailsPatch: + type: object + description: Represents an API Invoker's enrolment details to be updated. + properties: + onboardingInformation: + $ref: '#/components/schemas/OnboardingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + apiList: + $ref: '#/components/schemas/APIList' + apiInvokerInformation: + type: string + description: > + Generic information related to the API invoker such as details of + the device or the application. diff --git a/TS29222_CAPIF_API_Provider_Management_API.yaml b/TS29222_CAPIF_API_Provider_Management_API.yaml new file mode 100644 index 0000000..5abec6b --- /dev/null +++ b/TS29222_CAPIF_API_Provider_Management_API.yaml @@ -0,0 +1,338 @@ +openapi: 3.0.0 + +info: + title: CAPIF_API_Provider_Management_API + description: | + API for API provider domain functions management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.2" + +externalDocs: + description: 3GPP TS 29.222 V18.1.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/api-provider-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /registrations: + post: + description: Registers a new API Provider domain with API provider domain functions profiles. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetails' + responses: + '201': + description: API provider domain registered successfully + content: + application/json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetails' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/api-provider-management/v1/registrations/{registrationId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + delete: + description: Deregisters API provider domain by deleting API provider domain and functions. + parameters: + - name: registrationId + in: path + description: String identifying an registered API provider domain resource. + required: true + schema: + type: string + responses: + '204': + description: The API provider domain matching registrationId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + description: Updates an API provider domain's registration details. + parameters: + - name: registrationId + in: path + description: String identifying an registered API provider domain resource. + required: true + schema: + type: string + requestBody: + description: > + Representation of the API provider domain registration details to be updated + in CAPIF core function. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetails' + responses: + '200': + description: API provider domain registration details updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetails' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an individual API provider details. + operationId: ModifyIndApiProviderEnrolment + tags: + - Individual API Provider enrolment details + parameters: + - name: registrationId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetailsPatch' + responses: + '200': + description: > + The definition of the service API is modified successfully and a + representation of the updated service API is returned in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/APIProviderEnrolmentDetails' + '204': + description: No Content. The definition of the service API is modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + APIProviderEnrolmentDetails: + type: object + description: Represents an API provider domain's enrolment details. + properties: + apiProvDomId: + type: string + description: > + API provider domain ID assigned by the CAPIF core function to the API management + function while registering the API provider domain. Shall not be present in the + HTTP POST request from the API Management function to the CAPIF core function, + to on-board itself. Shall be present in all other HTTP requests and responses. + readOnly: true + regSec: + type: string + description: > + Security information necessary for the CAPIF core function to validate the + registration of the API provider domain. Shall be present in HTTP POST request + from API management function to CAPIF core function for API provider domain + registration. + apiProvFuncs: + type: array + items: + $ref: '#/components/schemas/APIProviderFunctionDetails' + minItems: 1 + description: > + A list of individual API provider domain functions details. When included by + the API management function in the HTTP request message, it lists the API + provider domain functions that the API management function intends to + register/update in registration or update registration procedure. When + included by the CAPIF core function in the HTTP response message, it lists + the API domain functions details that are registered or updated successfully. + apiProvDomInfo: + type: string + description: > + Generic information related to the API provider domain such as details + of the API provider applications. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + failReason: + type: string + description: > + Registration or update specific failure information of failed API provider + domain function registrations.Shall be present in the HTTP response + body if atleast one of the API provider domain function registration or update + registration fails. + required: + - regSec + + APIProviderFunctionDetails: + type: object + description: Represents an API provider domain function's details. + properties: + apiProvFuncId: + type: string + description: > + API provider domain functionID assigned by the CAPIF core function to the + API provider domain function while registering/updating the API provider domain. + Shall not be present in the HTTP POST request from the API management function to + the CAPIF core function, to register itself. Shall be present in all other HTTP + requests and responses. + regInfo: + $ref: '#/components/schemas/RegistrationInformation' + apiProvFuncRole: + $ref: '#/components/schemas/ApiProviderFuncRole' + apiProvFuncInfo: + type: string + description: > + Generic information related to the API provider domain function such as details + of the API provider applications. + required: + - regInfo + - apiProvFuncRole + + RegistrationInformation: + type: object + description: > + Represents registration information of an individual API provider domain function. + properties: + apiProvPubKey: + type: string + description: Public Key of API Provider domain function. + apiProvCert: + type: string + description: API provider domain function's client certificate + required: + - apiProvPubKey + + APIProviderEnrolmentDetailsPatch: + type: object + description: > + Represents a list of modifications for the API provider domain's enrolment details. + properties: + apiProvFuncs: + type: array + items: + $ref: '#/components/schemas/APIProviderFunctionDetails' + minItems: 1 + description: > + A list of individual API provider domain functions details. When included by + the API management function in the HTTP request message, it lists the API + provider domain functions that the API management function intends to + register/update in registration or update registration procedure. + apiProvDomInfo: + type: string + description: > + Generic information related to the API provider domain such as details + of the API provider applications. + +# Simple data types and enumerations + ApiProviderFuncRole: + anyOf: + - type: string + enum: + - AEF + - APF + - AMF + - type: string + description: > + This string provides forward-compatiblity with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + description: | + Indicates the role (e.g. AEF, APF, etc.) of an API provider domain function. + Possible values are: + - AEF: API provider function is API Exposing Function. + - APF: API provider function is API Publishing Function. + - AMF: API Provider function is API Management Function. diff --git a/TS29222_CAPIF_Access_Control_Policy_API.yaml b/TS29222_CAPIF_Access_Control_Policy_API.yaml new file mode 100644 index 0000000..236f888 --- /dev/null +++ b/TS29222_CAPIF_Access_Control_Policy_API.yaml @@ -0,0 +1,127 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Access_Control_Policy_API + description: | + API for access control policy. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.1" + +externalDocs: + description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/access-control-policy/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /accessControlPolicyList/{serviceApiId}: + get: + description: Retrieves the access control policy list. + parameters: + - name: serviceApiId + in: path + description: Identifier of a published service API + required: true + schema: + type: string + - name: aef-id + in: query + required: true + description: Identifier of the AEF + schema: + type: string + - name: api-invoker-id + in: query + description: Identifier of the API invoker + schema: + type: string + - name: supported-features + in: query + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK. + content: + application/json: + schema: + $ref: '#/components/schemas/AccessControlPolicyList' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + AccessControlPolicyList: + type: object + description: Represents the access control policy list for a published service API. + properties: + apiInvokerPolicies: + type: array + items: + $ref: '#/components/schemas/ApiInvokerPolicy' + minItems: 0 + description: Policy of each API invoker. + + ApiInvokerPolicy: + type: object + description: Represents the policy of an API Invoker. + properties: + apiInvokerId: + type: string + description: API invoker ID assigned by the CAPIF core function + allowedTotalInvocations: + type: integer + description: Total number of invocations allowed on the service API by the API invoker. + allowedInvocationsPerSecond: + type: integer + description: Invocations per second allowed on the service API by the API invoker. + allowedInvocationTimeRangeList: + type: array + items: + $ref: '#/components/schemas/TimeRangeList' + minItems: 0 + description: > + The time ranges during which the invocations are allowed on the service API + by the API invoker. + required: + - apiInvokerId + + TimeRangeList: + type: object + description: > + Represents the time range during which the invocation of a service API is allowed + by the API invoker. + properties: + startTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' diff --git a/TS29222_CAPIF_Auditing_API.yaml b/TS29222_CAPIF_Auditing_API.yaml new file mode 100644 index 0000000..c5c3d6d --- /dev/null +++ b/TS29222_CAPIF_Auditing_API.yaml @@ -0,0 +1,158 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Auditing_API + description: | + API for auditing. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.2" + +externalDocs: + description: 3GPP TS 29.222 V18.1.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/logs/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. + +paths: + /apiInvocationLogs: + get: + description: Query and retrieve service API invocation logs stored on the CAPIF core function. + parameters: + - name: aef-id + in: query + description: String identifying the API exposing function. + schema: + type: string + - name: api-invoker-id + in: query + description: String identifying the API invoker which invoked the service API. + schema: + type: string + - name: time-range-start + in: query + description: Start time of the invocation time range. + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + - name: time-range-end + in: query + description: End time of the invocation time range. + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + - name: api-id + in: query + description: String identifying the API invoked. + schema: + type: string + - name: api-name + in: query + description: > + API name, it is set as {apiName} part of the URI structure as defined in + clause 5.2.4 of 3GPP TS 29.122. + schema: + type: string + - name: api-version + in: query + description: Version of the API which was invoked. + schema: + type: string + - name: protocol + in: query + description: Protocol invoked. + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/Protocol' + - name: operation + in: query + description: Operation that was invoked on the API. + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/Operation' + - name: result + in: query + description: Result or output of the invocation. + schema: + type: string + - name: resource-name + in: query + description: Name of the specific resource invoked. + schema: + type: string + - name: src-interface + in: query + description: Interface description of the API invoker. + content: + application/json: + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/InterfaceDescription' + - name: dest-interface + in: query + description: Interface description of the API invoked. + content: + application/json: + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/InterfaceDescription' + - name: supported-features + in: query + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Result of the query operation along with fetched service API invocation log data. + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationLogsRetrieveRes' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + InvocationLogs: + type: object + description: > + Represents several (more than one) invocation logs. + properties: + multipleInvocationLogs: + type: array + items: + $ref: 'TS29222_CAPIF_Logging_API_Invocation_API.yaml#/components/schemas/InvocationLog' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - multipleInvocationLogs + + InvocationLogsRetrieveRes: + description: > + Represents the result of an invocation logs retrieval request. + oneOf: + - $ref: 'TS29222_CAPIF_Logging_API_Invocation_API.yaml#/components/schemas/InvocationLog' + - $ref: '#/components/schemas/InvocationLogs' diff --git a/TS29222_CAPIF_Discover_Service_API.yaml b/TS29222_CAPIF_Discover_Service_API.yaml new file mode 100644 index 0000000..f65217a --- /dev/null +++ b/TS29222_CAPIF_Discover_Service_API.yaml @@ -0,0 +1,146 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Discover_Service_API + description: | + API for discovering service APIs. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.2" + +externalDocs: + description: 3GPP TS 29.222 V18.4.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/service-apis/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. + +paths: + /allServiceAPIs: + get: + description: > + Discover published service APIs and retrieve a collection of APIs according + to certain filter criteria. + parameters: + - name: api-invoker-id + in: query + description: > + String identifying the API invoker assigned by the CAPIF core function. + It also represents the CCF identifier in the CAPIF-6/6e interface. + required: true + schema: + type: string + - name: api-name + in: query + description: > + API name, it is set as {apiName} part of the URI structure as defined + in clause 5.2.4 of 3GPP TS 29.122. + schema: + type: string + - name: api-version + in: query + description: API major version the URI (e.g. v1). + schema: + type: string + - name: comm-type + in: query + description: Communication type used by the API (e.g. REQUEST_RESPONSE). + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/CommunicationType' + - name: protocol + in: query + description: Protocol used by the API. + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/Protocol' + - name: aef-id + in: query + description: AEF identifer. + schema: + type: string + - name: data-format + in: query + description: Data formats used by the API (e.g. serialization protocol JSON used). + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/DataFormat' + - name: api-cat + in: query + description: The service API category to which the service API belongs to. + schema: + type: string + - name: preferred-aef-loc + in: query + description: The preferred AEF location. + content: + application/json: + schema: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/AefLocation' + - name: req-api-prov-name + in: query + description: Represents the required API provider name. + schema: + type: string + - name: supported-features + in: query + description: Features supported by the NF consumer for the CAPIF Discover Service API. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: api-supported-features + in: query + description: > + Features supported by the discovered service API indicated by api-name parameter. + This may only be present if api-name query parameter is present. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + The response body contains the result of the search over the list of registered APIs. + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveredAPIs' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + DiscoveredAPIs: + type: object + description: > + Represents a list of APIs currently registered in the CAPIF core function + and satisfying a number of filter criteria provided by the API consumer. + properties: + serviceAPIDescriptions: + type: array + items: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/ServiceAPIDescription' + minItems: 1 + description: > + Description of the service API as published by the service. Each service + API description shall include AEF profiles matching the filter criteria. diff --git a/TS29222_CAPIF_Events_API.yaml b/TS29222_CAPIF_Events_API.yaml new file mode 100644 index 0000000..b45675c --- /dev/null +++ b/TS29222_CAPIF_Events_API.yaml @@ -0,0 +1,468 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Events_API + description: | + API for event subscription management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.3" + +externalDocs: + description: 3GPP TS 29.222 V18.3.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/capif-events/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /{subscriberId}/subscriptions: + post: + description: Creates a new individual CAPIF Event Subscription. + parameters: + - name: subscriberId + in: path + description: Identifier of the Subscriber + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/capif-events/v1/{subscriberId}/subscriptions/{subscriptionId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{subscriberId}/subscriptions/{subscriptionId}: + delete: + description: Deletes an individual CAPIF Event Subscription. + parameters: + - name: subscriberId + in: path + description: Identifier of the Subscriber + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of an individual Events Subscription + required: true + schema: + type: string + responses: + '204': + description: > + The individual CAPIF Events Subscription matching the subscriptionId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + description: Update of an existing individual CAPIF Event Subscription. + parameters: + - name: subscriberId + in: path + description: Identifier of the Subscriber + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the individual Subscriber + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + responses: + '200': + description: OK (Successful update of the subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + '204': + description: No Content + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + description: Modification of an existing individual CAPIF Event Subscription. + parameters: + - name: subscriberId + in: path + description: Identifier of the Subscriber + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the individual Subscriber + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/EventSubscriptionPatch' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/EventSubscription' + '204': + description: No Content + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + EventSubscription: + type: object + description: Represents an individual CAPIF Event Subscription resource. + properties: + events: + type: array + items: + $ref: '#/components/schemas/CAPIFEvent' + minItems: 1 + description: Subscribed events + eventFilters: + type: array + items: + $ref: '#/components/schemas/CAPIFEventFilter' + minItems: 1 + description: Subscribed event filters + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the CAPIF core function to send a + test notification as defined in in clause 7.6. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - events + - notificationDestination + + EventNotification: + type: object + description: Represents an individual CAPIF Event notification. + properties: + subscriptionId: + type: string + description: > + Identifier of the subscription resource to which the notification + is related – CAPIF resource identifier + events: + $ref: '#/components/schemas/CAPIFEvent' + eventDetail: + $ref: '#/components/schemas/CAPIFEventDetail' + required: + - subscriptionId + - events + + CAPIFEventFilter: + type: object + description: Represents a CAPIF event filter. + properties: + apiIds: + type: array + items: + type: string + minItems: 1 + description: Identifier of the service API + apiInvokerIds: + type: array + items: + type: string + minItems: 1 + description: Identity of the API invoker + aefIds: + type: array + items: + type: string + minItems: 1 + description: Identifier of the API exposing function + + CAPIFEventDetail: + type: object + description: Represents a CAPIF event details. + properties: + serviceAPIDescriptions: + type: array + items: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/ServiceAPIDescription' + minItems: 1 + description: Description of the service API as published by the APF. + apiIds: + type: array + items: + type: string + minItems: 1 + description: Identifier of the service API + apiInvokerIds: + type: array + items: + type: string + minItems: 1 + description: Identity of the API invoker + accCtrlPolList: + $ref: '#/components/schemas/AccessControlPolicyListExt' + invocationLogs: + type: array + items: + $ref: 'TS29222_CAPIF_Logging_API_Invocation_API.yaml#/components/schemas/InvocationLog' + minItems: 1 + description: Invocation logs. + apiTopoHide: + $ref: '#/components/schemas/TopologyHiding' + + AccessControlPolicyListExt: + description: Represents the extension for access control policies. + allOf: + - $ref: 'TS29222_CAPIF_Access_Control_Policy_API.yaml#/components/schemas/AccessControlPolicyList' + - type: object + properties: + apiId: + type: string + required: + - apiId + + TopologyHiding: + type: object + description: Represents the routing rules information of a service API. + properties: + apiId: + type: string + routingRules: + type: array + items: + $ref: 'TS29222_CAPIF_Routing_Info_API.yaml#/components/schemas/RoutingRule' + minItems: 1 + required: + - apiId + - routingRules + + EventSubscriptionPatch: + type: object + description: > + Represents the parameters to request the updated of an individual CAPIF Event + Subscription resource. + properties: + events: + type: array + items: + $ref: '#/components/schemas/CAPIFEvent' + minItems: 1 + description: Subscribed events + eventFilters: + type: array + items: + $ref: '#/components/schemas/CAPIFEventFilter' + minItems: 1 + description: Subscribed event filters + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + CAPIFEvent: + anyOf: + - type: string + enum: + - SERVICE_API_AVAILABLE + - SERVICE_API_UNAVAILABLE + - SERVICE_API_UPDATE + - API_INVOKER_ONBOARDED + - API_INVOKER_OFFBOARDED + - SERVICE_API_INVOCATION_SUCCESS + - SERVICE_API_INVOCATION_FAILURE + - ACCESS_CONTROL_POLICY_UPDATE + - ACCESS_CONTROL_POLICY_UNAVAILABLE + - API_INVOKER_AUTHORIZATION_REVOKED + - API_INVOKER_UPDATED + - API_TOPOLOGY_HIDING_CREATED + - API_TOPOLOGY_HIDING_REVOKED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Describes the CAPIF event. + Possible values are: + - SERVICE_API_AVAILABLE: + Events related to the availability of service APIs after the service APIs are published. + - SERVICE_API_UNAVAILABLE: + Events related to the unavailability of service APIs after the service APIs are + unpublished. + - SERVICE_API_UPDATE: Events related to change in service API information. + - API_INVOKER_ONBOARDED: Events related to API invoker onboarded to CAPIF. + - API_INVOKER_OFFBOARDED: Events related to API invoker offboarded from CAPIF. + - SERVICE_API_INVOCATION_SUCCESS: + Events related to the successful invocation of service APIs. + - SERVICE_API_INVOCATION_FAILURE: Events related to the failed invocation of service APIs. + - ACCESS_CONTROL_POLICY_UPDATE: + Events related to the update for the access control policy related to the service APIs. + - ACCESS_CONTROL_POLICY_UNAVAILABLE: + Events related to the unavailability of the access control policy related to + the service APIs. + - API_INVOKER_AUTHORIZATION_REVOKED: Events related to the revocation of the authorization of API invokers to access the service APIs. + - API_INVOKER_UPDATED: Events related to API invoker profile updated to CAPIF. + - API_TOPOLOGY_HIDING_CREATED: + Events related to the creation or update of the API topology hiding + information of the service APIs after the service APIs are published. + - API_TOPOLOGY_HIDING_REVOKED: + Events related to the revocation of the API topology hiding information of + the service APIs after the service APIs are unpublished. diff --git a/TS29222_CAPIF_Logging_API_Invocation_API.yaml b/TS29222_CAPIF_Logging_API_Invocation_API.yaml new file mode 100644 index 0000000..916a4ab --- /dev/null +++ b/TS29222_CAPIF_Logging_API_Invocation_API.yaml @@ -0,0 +1,179 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Logging_API_Invocation_API + description: | + API for invocation logs. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.1" + +externalDocs: + description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/api-invocation-logs/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /{aefId}/logs: + post: + description: Creates a new log entry for service API invocations. + parameters: + - name: aefId + in: path + description: Identifier of the API exposing function + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationLog' + responses: + '201': + description: > + Log of service API invocations provided by API exposing function successfully + stored on the CAPIF core function. + content: + application/json: + schema: + $ref: '#/components/schemas/InvocationLog' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/api-invocation-logs/v1/{aefId}/logs/{logId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{aefId}/logs/{logId}: + description: Creates a new log entry for service API invocations. + parameters: + - name: aefId + in: path + description: Identifier of the API exposing function + required: true + schema: + type: string + - name: logId + in: path + description: Identifier of individual log entry + required: true + schema: + type: string +components: + schemas: + InvocationLog: + type: object + description: > + Represents a set of Service API invocation logs to be stored in a CAPIF core function. + properties: + aefId: + type: string + description: > + Identity information of the API exposing function requesting logging of + service API invocations + apiInvokerId: + type: string + description: Identity of the API invoker which invoked the service API + logs: + type: array + items: + $ref: '#/components/schemas/Log' + minItems: 1 + description: Service API invocation log + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - aefId + - apiInvokerId + - logs + + Log: + type: object + description: Represents an individual service API invocation log entry. + properties: + apiId: + type: string + description: String identifying the API invoked. + apiName: + type: string + description: > + Name of the API which was invoked, it is set as {apiName} part of the URI + structure as defined in clause 5.2.4 of 3GPP TS 29.122. + apiVersion: + type: string + description: Version of the API which was invoked + resourceName: + type: string + description: Name of the specific resource invoked + uri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + protocol: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/Protocol' + operation: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/Operation' + result: + type: string + description: For HTTP protocol, it contains HTTP status code of the invocation + invocationTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + invocationLatency: + $ref: '#/components/schemas/DurationMs' + inputParameters: + description: > + List of input parameters. Can be any value - string, number, boolean, array or object. + outputParameters: + description: > + List of output parameters. Can be any value - string, number, boolean, array or object. + srcInterface: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/InterfaceDescription' + destInterface: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/InterfaceDescription' + fwdInterface: + type: string + description: > + It includes the node identifier (as defined in IETF RFC 7239 of all forwarding + entities between the API invoker and the AEF, concatenated with comma and space, + e.g. 192.0.2.43:80, unknown:_OBFport, 203.0.113.60 + required: + - apiId + - apiName + - apiVersion + - resourceName + - protocol + - result + + DurationMs: + type: integer + description: Represents a period of time in units of milliseconds. + minimum: 0 diff --git a/TS29222_CAPIF_Publish_Service_API.yaml b/TS29222_CAPIF_Publish_Service_API.yaml new file mode 100644 index 0000000..9977715 --- /dev/null +++ b/TS29222_CAPIF_Publish_Service_API.yaml @@ -0,0 +1,718 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Publish_Service_API + description: | + API for publishing service APIs. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.4" + +externalDocs: + description: 3GPP TS 29.222 V18.4.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/published-apis/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. + +paths: +# APF published API + /{apfId}/service-apis: + post: + description: Publish a new API. + parameters: + - name: apfId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + responses: + '201': + description: > + Service API published successfully The URI of the created resource + shall be returned in the "Location" HTTP header. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/published-apis/v1/{apfId}/service-apis/{serviceApiId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + description: Retrieve all published APIs. + parameters: + - name: apfId + in: path + required: true + schema: + type: string + responses: + '200': + description: Definition of all service API(s) published by the API publishing function. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceAPIDescription' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Individual APF published API + /{apfId}/service-apis/{serviceApiId}: + get: + description: Retrieve a published service API. + parameters: + - name: serviceApiId + in: path + required: true + schema: + type: string + - name: apfId + in: path + required: true + schema: + type: string + responses: + '200': + description: > + Definition of individual service API published by the API publishing function. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + description: Update a published service API. + parameters: + - name: serviceApiId + in: path + required: true + schema: + type: string + - name: apfId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + responses: + '200': + description: Definition of service API updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an existing published service API. + operationId: ModifyIndAPFPubAPI + tags: + - Individual APF published API + parameters: + - name: serviceApiId + in: path + required: true + schema: + type: string + - name: apfId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServiceAPIDescriptionPatch' + responses: + '200': + description: > + The definition of the service API is modified successfully and a + representation of the updated service API is returned in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceAPIDescription' + '204': + description: No Content. The definition of the service API is modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + description: Unpublish a published service API. + parameters: + - name: serviceApiId + in: path + required: true + schema: + type: string + - name: apfId + in: path + required: true + schema: + type: string + responses: + '204': + description: The individual published service API matching the serviceAPiId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + schemas: +# Data Type for representations + ServiceAPIDescription: + type: object + description: Represents the description of a service API as published by the APF. + properties: + apiName: + type: string + description: > + API name, it is set as {apiName} part of the URI structure as defined in + clause 5.2.4 of 3GPP TS 29.122. + apiId: + type: string + description: > + API identifier assigned by the CAPIF core function to the published service API. + Shall not be present in the HTTP POST request from the API publishing function + to the CAPIF core function. Shall be present in the HTTP POST response from the + CAPIF core function to the API publishing function and in the HTTP GET response + from the CAPIF core function to the API invoker (discovery API). + apiStatus: + $ref: '#/components/schemas/ApiStatus' + aefProfiles: + type: array + items: + $ref: '#/components/schemas/AefProfile' + minItems: 1 + description: > + AEF profile information, which includes the exposed API details (e.g. protocol). + description: + type: string + description: Text description of the API + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + shareableInfo: + $ref: '#/components/schemas/ShareableInformation' + serviceAPICategory: + type: string + description: The service API category to which the service API belongs to. + apiSuppFeats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pubApiPath: + $ref: '#/components/schemas/PublishedApiPath' + ccfId: + type: string + description: CAPIF core function identifier. + required: + - apiName + + InterfaceDescription: + type: object + description: Represents the description of an API's interface. + properties: + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + port: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + apiPrefix: + type: string + description: > + A string representing a sequence of path segments that starts with the slash character. + securityMethods: + type: array + items: + $ref: '#/components/schemas/SecurityMethod' + minItems: 1 + description: > + Security methods supported by the interface, it take precedence over + the security methods provided in AefProfile, for this specific interface. + oneOf: + - required: [ipv4Addr] + - required: [ipv6Addr] + - required: [fqdn] + + AefProfile: + type: object + description: Represents the AEF profile data. + properties: + aefId: + type: string + description: Identifier of the API exposing function + versions: + type: array + items: + $ref: '#/components/schemas/Version' + minItems: 1 + description: API version + protocol: + $ref: '#/components/schemas/Protocol' + dataFormat: + $ref: '#/components/schemas/DataFormat' + securityMethods: + type: array + items: + $ref: '#/components/schemas/SecurityMethod' + minItems: 1 + description: Security methods supported by the AEF + domainName: + type: string + description: Domain to which API belongs to + interfaceDescriptions: + type: array + items: + $ref: '#/components/schemas/InterfaceDescription' + minItems: 1 + description: Interface details + aefLocation: + $ref: '#/components/schemas/AefLocation' + required: + - aefId + - versions + oneOf: + - required: [domainName] + - required: [interfaceDescriptions] + + Resource: + type: object + description: Represents the API resource data. + properties: + resourceName: + type: string + description: Resource name + commType: + $ref: '#/components/schemas/CommunicationType' + uri: + type: string + description: > + Relative URI of the API resource, it is set as {apiSpecificSuffixes} part + of the URI structure as defined in clause 5.2.4 of 3GPP TS 29.122. + custOpName: + type: string + description: > + it is set as {custOpName} part of the URI structure for a custom operation + associated with a resource as defined in clause 5.2.4 of 3GPP TS 29.122. + custOperations: + type: array + items: + $ref: '#/components/schemas/CustomOperation' + minItems: 1 + description: > + Custom operations associated with this resource. + operations: + type: array + items: + $ref: '#/components/schemas/Operation' + minItems: 1 + description: > + Supported HTTP methods for the API resource. Only applicable when the + protocol in AefProfile indicates HTTP. + description: + type: string + description: Text description of the API resource + required: + - resourceName + - commType + - uri + + CustomOperation: + type: object + description: Represents the description of a custom operation. + properties: + commType: + $ref: '#/components/schemas/CommunicationType' + custOpName: + type: string + description: > + it is set as {custOpName} part of the URI structure for a custom operation + without resource association as defined in clause 5.2.4 of 3GPP TS 29.122. + operations: + type: array + items: + $ref: '#/components/schemas/Operation' + minItems: 1 + description: > + Supported HTTP methods for the API resource. Only applicable when the + protocol in AefProfile indicates HTTP. + description: + type: string + description: Text description of the custom operation + required: + - commType + - custOpName + + Version: + type: object + description: Represents the API version information. + properties: + apiVersion: + type: string + description: API major version in URI (e.g. v1) + expiry: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + resources: + type: array + items: + $ref: '#/components/schemas/Resource' + minItems: 1 + description: Resources supported by the API. + custOperations: + type: array + items: + $ref: '#/components/schemas/CustomOperation' + minItems: 1 + description: Custom operations without resource association. + required: + - apiVersion + + ShareableInformation: + type: object + description: > + Indicates whether the service API and/or the service API category can be shared + to the list of CAPIF provider domains. + properties: + isShareable: + type: boolean + description: > + Set to "true" indicates that the service API and/or the service API + category can be shared to the list of CAPIF provider domain information. + Otherwise set to "false". + capifProvDoms: + type: array + items: + type: string + minItems: 1 + description: > + List of CAPIF provider domains to which the service API information to be shared. + required: + - isShareable + + PublishedApiPath: + type: object + description: Represents the published API path within the same CAPIF provider domain. + properties: + ccfIds: + type: array + items: + type: string + minItems: 1 + description: A list of CCF identifiers where the service API is already published. + + AefLocation: + description: > + Represents the location information (e.g. civic address, GPS coordinates, data center ID) + where the AEF providing the service API is located. + type: object + properties: + civicAddr: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + geoArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + dcId: + type: string + description: > + Identifies the data center where the AEF providing the service API is located. + + ServiceAPIDescriptionPatch: + type: object + description: > + Represents the parameters to request the modification of an APF published API resource. + properties: + apiStatus: + $ref: '#/components/schemas/ApiStatus' + aefProfiles: + type: array + items: + $ref: '#/components/schemas/AefProfile' + description: AEF profile information, which includes the exposed API details. + minItems: 1 + description: + type: string + description: Text description of the API + shareableInfo: + $ref: '#/components/schemas/ShareableInformation' + serviceAPICategory: + type: string + description: The service API category to which the service API belongs to. + apiSuppFeats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pubApiPath: + $ref: '#/components/schemas/PublishedApiPath' + ccfId: + type: string + description: CAPIF core function identifier. + + ApiStatus: + type: object + description: > + Represents the API status. + properties: + aefIds: + type: array + items: + type: string + description: > + Indicates the list of AEF ID(s) where the API is active. + If this attribute is omitted, the API is inactive at all AEF(s) + defined in the "aefProfiles" attribute within + the ServiceAPIDescription data structure. + required: + - aefIds + + Protocol: + anyOf: + - type: string + enum: + - HTTP_1_1 + - HTTP_2 + - MQTT + - WEBSOCKET + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates a protocol and protocol version used by the API. + Possible values are: + - HTTP_1_1: Indicates that the protocol is HTTP version 1.1. + - HTTP_2: Indicates that the protocol is HTTP version 2. + - MQTT: Indicates that the protocol is Message Queuing Telemetry Transport. + - WEBSOCKET: Indicates that the protocol is Websocket. + + CommunicationType: + anyOf: + - type: string + enum: + - REQUEST_RESPONSE + - SUBSCRIBE_NOTIFY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates a communication type of the resource or the custom operation. + Possible values are: + - REQUEST_RESPONSE: The communication is of the type request-response. + - SUBSCRIBE_NOTIFY: The communication is of the type subscribe-notify. + + DataFormat: + anyOf: + - type: string + enum: + - JSON + - XML + - PROTOBUF3 + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates a data format. + Possible values are: + - JSON: Indicates that the data format is JSON. + - XML: Indicates that the data format is Extensible Markup Language. + - PROTOBUF3: Indicates that the data format is Protocol buffers version 3. + + SecurityMethod: + anyOf: + - type: string + enum: + - PSK + - PKI + - OAUTH + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the security method. + Possible values are: + - PSK: Security method 1 (Using TLS-PSK) as described in 3GPP TS 33.122. + - PKI: Security method 2 (Using PKI) as described in 3GPP TS 33.122. + - OAUTH: Security method 3 (TLS with OAuth token) as described in 3GPP TS 33.122. + + Operation: + anyOf: + - type: string + enum: + - GET + - POST + - PUT + - PATCH + - DELETE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates an HTTP method. + Possible values are: + - GET: HTTP GET method. + - POST: HTTP POST method. + - PUT: HTTP PUT method. + - PATCH: HTTP PATCH method. + - DELETE: HTTP DELETE method. diff --git a/TS29222_CAPIF_Routing_Info_API.yaml b/TS29222_CAPIF_Routing_Info_API.yaml new file mode 100644 index 0000000..fc520ba --- /dev/null +++ b/TS29222_CAPIF_Routing_Info_API.yaml @@ -0,0 +1,120 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Routing_Info_API + description: | + API for Routing information. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.1" + +externalDocs: + description: 3GPP TS 29.222 V18.0.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/capif-routing-info/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222 + +paths: + /service-apis/{serviceApiId}: + get: + description: Retrieves the API routing information. + parameters: + - name: serviceApiId + in: path + description: Identifier of a published service API + required: true + schema: + type: string + - name: aef-id + in: query + required: true + description: Identifier of the AEF + schema: + type: string + - name: supp-feat + in: query + required: false + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK. + content: + application/json: + schema: + $ref: '#/components/schemas/RoutingInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + schemas: + RoutingInfo: + type: object + description: Represents an API routing information. + properties: + routingRules: + type: array + items: + $ref: '#/components/schemas/RoutingRule' + minItems: 1 + required: + - routingRules + + RoutingRule: + type: object + description: Represents an API routing rule. + properties: + ipv4AddrRanges: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/Ipv4AddressRange' + minItems: 1 + ipv6AddrRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6AddressRange' + minItems: 1 + aefProfile: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/AefProfile' + required: + - aefProfile + + Ipv6AddressRange: + type: object + description: Represents IPv6 address range. + properties: + start: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + end: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + required: + - start + - end diff --git a/TS29222_CAPIF_Security_API.yaml b/TS29222_CAPIF_Security_API.yaml new file mode 100644 index 0000000..5899bd8 --- /dev/null +++ b/TS29222_CAPIF_Security_API.yaml @@ -0,0 +1,531 @@ +openapi: 3.0.0 + +info: + title: CAPIF_Security_API + description: | + API for CAPIF security management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.3.0-alpha.2" + +externalDocs: + description: 3GPP TS 29.222 V18.1.0 Common API Framework for 3GPP Northbound APIs + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.222/ + +servers: + - url: '{apiRoot}/capif-security/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.222. + +paths: + /trustedInvokers/{apiInvokerId}: + get: + parameters: + - name: apiInvokerId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + - name: authenticationInfo + in: query + description: > + When set to 'true', it indicates the CAPIF core function to send the + authentication information of the API invoker. Set to false or omitted otherwise. + schema: + type: boolean + - name: authorizationInfo + in: query + description: > + When set to 'true', it indicates the CAPIF core function to send the + authorization information of the API invoker. Set to false or omitted otherwise. + schema: + type: boolean + responses: + '200': + description: > + The security related information of the API Invoker based on the request + from the API exposing function. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSecurity' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + parameters: + - name: apiInvokerId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + requestBody: + description: create a security context for an API invoker + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSecurity' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Successful created. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSecurity' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/capif-security/v1/trustedInvokers/{apiInvokerId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '414': + $ref: 'TS29122_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + parameters: + - name: apiInvokerId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /trustedInvokers/{apiInvokerId}/update: + post: + parameters: + - name: apiInvokerId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + requestBody: + description: Update the security context (e.g. re-negotiate the security methods). + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSecurity' + responses: + '200': + description: Successful updated. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSecurity' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /trustedInvokers/{apiInvokerId}/delete: + post: + parameters: + - name: apiInvokerId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + requestBody: + description: Revoke the authorization of the API invoker for APIs. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SecurityNotification' + responses: + '204': + description: Successful revoked. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /securities/{securityId}/token: + post: + parameters: + - name: securityId + in: path + description: Identifier of an individual API invoker + required: true + schema: + type: string + requestBody: + required: true + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/AccessTokenReq' + responses: + '200': + description: Successful Access Token Request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenRsp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + description: Error in the Access Token Request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenErr' + '401': + description: Unauthorized + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenErr' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + ServiceSecurity: + type: object + description: > + Represents the details of the security method for each service API interface. + When included by the API invoker, it indicates the preferred method of security. + When included by the CAPIF core function, it indicates the security method to be + used for the service API interface. + properties: + securityInfo: + type: array + items: + $ref: '#/components/schemas/SecurityInformation' + minimum: 1 + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by API invoker to request the CAPIF core function to send a + test notification as defined in in clause 7.6. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - securityInfo + - notificationDestination + + SecurityInformation: + type: object + description: Represents the interface details and the security method. + properties: + interfaceDetails: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/InterfaceDescription' + aefId: + type: string + description: Identifier of the API exposing function + apiId: + type: string + description: API identifier + prefSecurityMethods: + type: array + items: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/SecurityMethod' + minItems: 1 + description: Security methods preferred by the API invoker for the API interface. + selSecurityMethod: + $ref: 'TS29222_CAPIF_Publish_Service_API.yaml#/components/schemas/SecurityMethod' + authenticationInfo: + type: string + description: Authentication related information + authorizationInfo: + type: string + description: Authorization related information + required: + - prefSecurityMethods + oneOf: + - required: [interfaceDetails] + - required: [aefId] + + SecurityNotification: + type: object + description: Represents the revoked authorization notification details. + properties: + apiInvokerId: + type: string + description: String identifying the API invoker assigned by the CAPIF core function. + aefId: + type: string + description: String identifying the AEF. + apiIds: + type: array + items: + type: string + minItems: 1 + description: Identifier of the service API + cause: + $ref: '#/components/schemas/Cause' + required: + - apiInvokerId + - apiIds + - cause + + AccessTokenReq: + format: x-www-form-urlencoded + description: Represents the access token request information. + properties: + grant_type: + type: string + enum: + - client_credentials + client_id: + type: string + client_secret: + type: string + scope: + type: string + required: + - grant_type + - client_id + + AccessTokenRsp: + type: object + description: Represents the access token response information. + properties: + access_token: + type: string + description: > + JWS Compact Serialized representation of JWS signed JSON object (AccessTokenClaims) + token_type: + type: string + enum: + - Bearer + expires_in: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + scope: + type: string + required: + - access_token + - token_type + - expires_in + + AccessTokenClaims: + type: object + description: Represents the claims data structure for the access token. + properties: + iss: + type: string + scope: + type: string + exp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + required: + - iss + - scope + - exp + + AccessTokenErr: + type: object + description: Represents an error in the access token request. + properties: + error: + type: string + enum: + - invalid_request + - invalid_client + - invalid_grant + - unauthorized_client + - unsupported_grant_type + - invalid_scope + error_description: + type: string + error_uri: + type: string + required: + - error + + Cause: + anyOf: + - type: string + enum: + - OVERLIMIT_USAGE + - UNEXPECTED_REASON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the cause for revoking the API invoker's authorization to the service API. + Possible values are: + - OVERLIMIT_USAGE: + The revocation of the authorization of the API invoker is due to the overlimit + usage of the service API + - UNEXPECTED_REASON: + The revocation of the authorization of the API invoker is due to unexpected reason. diff --git a/TS29255_Naf_Authentication.yaml b/TS29255_Naf_Authentication.yaml new file mode 100644 index 0000000..84b10a9 --- /dev/null +++ b/TS29255_Naf_Authentication.yaml @@ -0,0 +1,308 @@ +openapi: 3.0.0 + +info: + title: Naf_Authentication + version: 1.1.0-alpha.1 + description: | + AF Authentication Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.255 V18.0.0; 5G System;Uncrewed Aerial System Service Supplier (USS) Services; Stage + 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.255/ + +servers: + - url: '{apiRoot}/naf-auth/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /request-auth: + post: + operationId: UAVAuthRequest + summary: UAV authentication + tags: + - UAV authentication + requestBody: + description: UAV authentication + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UAVAuthInfo' + responses: + '200': + description: UAV Auth response or message exchange + content: + application/json: + schema: + $ref: '#/components/schemas/UAVAuthResponse' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + description: > + The request is rejected by the USS and more details (not only the ProblemDetails) are + returned. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsAuthenticateAuthorize' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + reauthRevokeNotification: + '{request.body#/notifyUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ReauthRevokeNotify' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + + + schemas: + +# +# STRUCTURED DATA TYPES +# + UAVAuthInfo: + description: UAV auth data + type: object + required: + - gpsi + - serviceLevelId + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + serviceLevelId: + type: string + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrId: + type: string + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + authMsg: + type: string + deprecated: true + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + uavLocInfo: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UAVAuthResponse: + description: UAV auth response data + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + authMsg: + type: string + deprecated: true + authResult: + allOf: + - $ref: '#/components/schemas/AuthResult' + deprecated: true + serviceLevelId: + type: string + authSessAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + authProfIndex: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + + ReauthRevokeNotify: + description: UAV related notification + type: object + required: + - gpsi + - serviceLevelId + - notifyType + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + serviceLevelId: + type: string + notifyCorrId: + type: string + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + authMsg: + type: string + deprecated: true + notifyType: + $ref: '#/components/schemas/NotifyType' + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + + AuthContainer: + description: Authentication/Authorization data + type: object + properties: + authMsgType: + $ref: '#/components/schemas/AuthMsgType' + authMsgPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + authResult: + $ref: '#/components/schemas/AuthResult' + + ProblemDetailsAuthenticateAuthorize: + description: Extends ProblemDetails to indicate more details during Authentication failure + allOf: + - $ref: 'TS29122_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoAuthenticateAuthorize' + + AdditionInfoAuthenticateAuthorize: + description: Indicates additional information during authentication failure + type: object + properties: + uasResRelInd: + type: boolean + description: > + Indicates to release the UAV resources during authentication failure, when set to + "true". Default is set to "false". + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + AuthResult: + anyOf: + - type: string + enum: + - AUTH_SUCCESS + - AUTH_FAIL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the result of authentication and/or authorization. + Possible values are: + - AUTH_SUCCESS: The UUAA or C2 authorization has succeeded. + - AUTH_FAIL: The UUAA or C2 authorization has failed. + + NotifyType: + anyOf: + - type: string + enum: + - REAUTHENTICATE + - REAUTHORIZE + - REVOKE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the type of notification. + Possible values are: + - REAUTHENTICATE: The UAV needs to be reauthenticated. + - REAUTHORIZE: Authorization data needs to be updated to UAV. + - REVOKE: Revoke UAV authentication and authorization. + + AuthMsgType: + anyOf: + - type: string + enum: + - UUAA + - C2AUTH + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the type of AA message. + Possible values are: + - UUAA: Indicates that the type of the AA message is UUAA payload. + - C2AUTH: Indicates that the type of the AA message is C2 authorization payload. diff --git a/TS29256_Nnef_Authentication.yaml b/TS29256_Nnef_Authentication.yaml new file mode 100644 index 0000000..b76bb4e --- /dev/null +++ b/TS29256_Nnef_Authentication.yaml @@ -0,0 +1,243 @@ +openapi: 3.0.0 + +info: + title: Nnef_Authentication + version: '1.0.2' + description: | + NEF Auth Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.256 V17.3.0; 5G System;Uncrewed Aerial Systems Network Function (UAS-NF); + Aerial Management Services; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.256/ + +servers: + - url: '{apiRoot}/nnef-authentication/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnef-authentication + +paths: + /uav-authentications: + post: + summary: UAV authentication + tags: + - UAV authentication + requestBody: + description: UAV authentication + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UAVAuthInfo' + responses: + '200': + description: UAV Auth response or message exchange + content: + application/json: + schema: + $ref: '#/components/schemas/UAVAuthResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '403': + description: UAV authentication failure + content: + application/json: + schema: + $ref: '#/components/schemas/UAVAuthFailure' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + authNotification: + '{request.body#/authNotification }': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AuthNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-authentication: Access to the Nnef_authentication API + + + + + + schemas: +# +# STRUCTURED DATA TYPES +# + UAVAuthInfo: + description: UAV auth data + type: object + required: + - gpsi + - serviceLevelId + - nfType + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + serviceLevelId: + type: string + authNotificationURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + authServerAddress: + type: string + authMsg: + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + deprecated: true + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + ueLocInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + + UAVAuthResponse: + description: UAV auth response data + type: object + required: + - gpsi + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + serviceLevelId: + type: string + authMsg: + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + deprecated: true + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + authResult: + allOf: + - $ref: '#/components/schemas/AuthResult' + deprecated: true + notifyCorrId: + type: string + + AuthNotification: + description: UAV related notification + type: object + required: + - gpsi + - serviceLevelId + - notifType + - notifyCorrId + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + serviceLevelId: + type: string + notifyCorrId: + type: string + authMsg: + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + deprecated: true + authContainer: + type: array + items: + $ref: '#/components/schemas/AuthContainer' + minItems: 1 + notifType: + $ref: '#/components/schemas/NotifType' + + UAVAuthFailure: + description: UAV auth failure + type: object + required: + - error + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + uasResourceRelease: + type: boolean + default: false + + AuthContainer: + description: Authentication/Authorization data + type: object + properties: + authMsgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + authMsgPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + authResult: + $ref: '#/components/schemas/AuthResult' + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + AuthResult: + description: Enumeration representing the result of authentication and/or authorization. + anyOf: + - type: string + enum: + - AUTH_SUCCESS + - AUTH_FAIL + - type: string + NotifType: + description: Enumeration representing the type of notification. + anyOf: + - type: string + enum: + - REAUTH + - UPDATEAUTH + - REVOKE + - type: string diff --git a/TS29257_UAE_C2OperationModeManagement.yaml b/TS29257_UAE_C2OperationModeManagement.yaml new file mode 100644 index 0000000..fec6870 --- /dev/null +++ b/TS29257_UAE_C2OperationModeManagement.yaml @@ -0,0 +1,501 @@ +openapi: 3.0.0 + +info: + title: UAE Server C2 Operation Mode Management Service + version: 1.1.0-alpha.1 + description: | + UAE Server C2 Operation Mode Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.257 V18.1.0; Application layer support for Uncrewed Aerial System (UAS); + UAS Application Enabler (UAE) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.257/ + +servers: + - url: '{apiRoot}/uae-c2opmode-mngt/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /initiate: + post: + summary: Request the provisioning of C2 Operation Mode configuration information for a UAS (i.e. pair of UAV and UAV-C). + operationId: InitiateC2OpModeConfig + tags: + - Initiate C2 Operation Mode configuration + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConfigureData' + responses: + '200': + description: > + The communicated C2 Operation Mode configuration information was successfully + received. The response body contains the feedback of the UAE Server on whether + this C2 Operation Mode configuration request is confirmed (i.e. can be undertaken + by the UAE Server) or not. + content: + application/json: + schema: + $ref: '#/components/schemas/C2Result' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + C2OpModeMngtCompletionNotification: + '{$request.body#/notificationUri}/c2mode-mngt-completion': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/C2OpModeMngtCompStatus' + responses: + '204': + description: > + No Content. The notification was succesfull and the C2 Operation Mode + Management Completion status for the concerned UAS (i.e. pair of UAV + and UAV-C) was successfully received and acknowledged by the UASS. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + SelectedC2CommunicationModeNotification: + '{$request.body#/notificationUri}/inform-selec-c2mode': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SelectedC2CommModeNotif' + responses: + '204': + description: > + No Content. The notification was succesfull and the C2 Communication Mode + selected by the concerned UAS (i.e. pair of UAV and UAV-C) was successfully + received and acknowledged by the UASS. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + C2CommunicationModeSwitchingNotification: + '{$request.body#/notificationUri}/inform-c2mode-switch': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/C2CommModeSwitchNotif' + responses: + '200': + description: > + OK. The targeted C2 Communication Mode switching for the concerned UAS + (i.e. pair of UAV and UAV-C) is successfully received. The response body + contains the feedback of the UASS on whether this C2 Communication Mode + switching is confirmed (i.e. validated) or not. + content: + application/json: + schema: + $ref: '#/components/schemas/C2Result' + '204': + description: > + No Content. The targeted C2 Communication Mode switching for the concerned + UAS (i.e. pair of UAV and UAV-C) is successfully received and acknowledged, + and the UASS does not need to confirm (i.e. validate) it. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ConfigureData: + description: > + Represents the parameters to request to provision C2 Operation Mode configuration + information for a UAS (i.e. pair of UAV and UAV-C). + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + uasId: + $ref: '#/components/schemas/UasId' + allowedC2CommModes: + type: array + items: + $ref: '#/components/schemas/C2CommMode' + minItems: 1 + c2CommModeSwitchTypes: + type: array + items: + $ref: '#/components/schemas/C2CommModeSwitching' + minItems: 1 + notificationUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + primaryC2CommMode: + $ref: '#/components/schemas/C2CommMode' + secondaryC2CommMode: + $ref: '#/components/schemas/C2CommMode' + c2SwitchPolicies: + $ref: '#/components/schemas/C2SwitchPolicies' + c2ServiceArea: + $ref: '#/components/schemas/C2ServiceArea' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - uasId + - allowedC2CommModes + - c2CommModeSwitchTypes + - notificationUri + - primaryC2CommMode + - c2SwitchPolicies + + SelectedC2CommModeNotif: + description: > + Represents information on the C2 Communication Mode selected by a UAS (i.e. pair of + UAV and UAV-C). + type: object + properties: + uasId: + $ref: '#/components/schemas/UasId' + selPrimaryC2CommMode: + $ref: '#/components/schemas/C2CommMode' + selSecondaryC2CommMode: + $ref: '#/components/schemas/C2CommMode' + required: + - uasId + - selPrimaryC2CommMode + + C2CommModeSwitchNotif: + description: > + Represents information on the targeted C2 Communication Mode switching for a UAS + (i.e. pair of UAV and UAV-C). + type: object + properties: + uaeServerId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + uasId: + $ref: '#/components/schemas/UasId' + c2CommModeSwitchType: + $ref: '#/components/schemas/C2CommModeSwitching' + switchingCause: + $ref: '#/components/schemas/C2SwitchingCause' + required: + - uaeServerId + - uasId + - c2CommModeSwitchType + + C2Result: + description: Represents the result of an action related to C2 of a UAS. + type: object + properties: + c2OpConfirmed: + type: boolean + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - c2OpConfirmed + + UasId: + description: Represents the identifier of a UAS (i.e. pair of UAV and UAV-C). + type: object + properties: + groupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + individualUasId: + type: array + items: + $ref: '#/components/schemas/UavId' + minItems: 2 + oneOf: + - required: [groupId] + - required: [individualUasId] + + UavId: + description: Represents the identifier of a UAV (e.g. UAV, UAV-C). + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + caaId: + type: string + anyOf: + - required: [gpsi] + - required: [caaId] + + C2ServiceArea: + description: Represents a C2 service area. + type: object + properties: + ncgiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + geographicAreaList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + oneOf: + - required: [geographicAreaList] + - anyOf: + - required: [ncgiList] + - required: [taiList] + + C2OpModeMngtCompStatus: + description: > + Represents the C2 Operation Mode Management Completion status for a UAV + (e.g. UAV, UAV-C). + type: object + properties: + uasId: + $ref: '#/components/schemas/UasId' + status: + $ref: '#/components/schemas/C2OpModeStatus' + required: + - uasId + - status + + C2SwitchPolicies: + description: Represents the C2 operation mode switching policies. + type: object + properties: + directC2LinkQualityThrlds: + $ref: '#/components/schemas/C2LinkQualityThrlds' + uuC2LinkQualityThrlds: + $ref: '#/components/schemas/C2LinkQualityThrlds' + + C2LinkQualityThrlds: + description: Represents the C2 link quality thresholds. + type: object + properties: + nrRsrpThrldLow: + type: integer + minimum: 0 + maximum: 127 + nrRsrpThrldHigh: + type: integer + minimum: 0 + maximum: 127 + nrRsrqThrldLow: + type: integer + minimum: 0 + maximum: 127 + nrRsrqThrldHigh: + type: integer + minimum: 0 + maximum: 127 + packetLossThrldLow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + packetLossThrldHigh: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + +# ENUMS: + + C2CommMode: + anyOf: + - type: string + enum: + - DIRECT_C2_COMMUNICATION + - NETWORK_ASSISTED_C2_COMMUNICATION + - UTM_NAVIGATED_C2_COMMUNICATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the C2 Communication Mode. + Possible values are: + - DIRECT_C2_COMMUNICATION: Indicates Direct C2 Communication mode. + - NETWORK_ASSISTED_C2_COMMUNICATION: Indicates Network-Assisted C2 Communication mode. + - UTM_NAVIGATED_C2_COMMUNICATION: Indicates UTM-Navigated C2 communication mode. + + C2CommModeSwitching: + anyOf: + - type: string + enum: + - DIRECT_TO_NETWORK_ASSISTED_C2 + - NETWORK_ASSISTED_TO_DIRECT_C2 + - DIRECT_TO_UTM_NAVIGATED_C2 + - NETWORK_ASSISTED_TO_UTM_NAVIGATED_C2 + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the C2 Communication Mode Switching type. + Possible values are: + - DIRECT_TO_NETWORK_ASSISTED_C2: Indicates the C2 Communication Mode switching from Direct + C2 Communication mode to Network-Assisted C2 Communication mode. + - NETWORK_ASSISTED_TO_DIRECT_C2: Indicates the C2 Communication Mode switching from + Network-Assisted C2 Communication mode to Direct C2 Communication mode. + - DIRECT_TO_UTM_NAVIGATED_C2: Indicates the C2 Communication Mode switching from + Direct C2 Communication mode to UTM-Navigated C2 communication mode. + - NETWORK_ASSISTED_TO_UTM_NAVIGATED_C2: Indicates the C2 Communication Mode switching + from Network-Assisted C2 Communication mode to UTM-Navigated C2 communication mode. + + C2SwitchingCause: + anyOf: + - type: string + enum: + - DIRECT_LINK_QUALITY_DEGRADATION + - DIRECT_LINK_AVAILABLE + - MOVING_BVLOS + - LOCATION_CHANGE + - TRAFFIC_CONTROL_NEEDED + - SECURITY_REASONS + - OTHER_REASONS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the C2 Communication Mode switching cause. + Possible values are: + - DIRECT_LINK_QUALITY_DEGRADATION: Indicates that the C2 Communication Mode switching + was triggered due to a degradation in the direct radio link quality. + - DIRECT_LINK_AVAILABLE: Indicates that the C2 Communication Mode switching was triggered + due to the availability of a direct link, i.e. direct radio link quality enables its + usage. + - MOVING_BVLOS: Indicates that the C2 Communication Mode switching was triggered due to + the UAV moving BVLOS. + - LOCATION_CHANGE: Indicates that the C2 Communication Mode switching was triggered due to + an actual or expected location/mobility of the UAV (e.g. which impacts the UAV-to-UAV-C + location). + - TRAFFIC_CONTROL_NEEDED: Indicates that the C2 Communication Mode switching was triggered + due to the necessity to have air traffic control. + - SECURITY_REASONS: Indicates that the C2 Communication Mode switching was triggered due to + security reasons. + - OTHER_REASONS: Indicates that the C2 Communication Mode switching was triggered due to + other reasons (e.g. unpredictable event, unknown reason, weather conditions, topography, + etc.). + + C2OpModeStatus: + anyOf: + - type: string + enum: + - SUCCESSFUL + - NOT_SUCCESSFUL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the C2 operation mode management completion status. + Possible values are: + - SUCCESSFUL: Indicates that the C2 operation mode configuration was successful. + - NOT_SUCCESSFUL: Indicates that the C2 operation mode configuration was not successful. diff --git a/TS29257_UAE_ChangeUSSManagement.yaml b/TS29257_UAE_ChangeUSSManagement.yaml new file mode 100644 index 0000000..ac99321 --- /dev/null +++ b/TS29257_UAE_ChangeUSSManagement.yaml @@ -0,0 +1,402 @@ +openapi: 3.0.0 + +info: + title: UAE Server USS Change Management Service + version: 1.0.0-alpha.1 + description: | + UAE Server USS Change Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.257 V18.1.0; Application layer support for Uncrewed Aerial System (UAS); + UAS Application Enabler (UAE) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.257/ + +servers: + - url: '{apiRoot}/uae-usschange-mngt/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /policies: + get: + summary: Retrieve all the active USS Change Policies managed by the UAE Server. + operationId: GetUSSChangePolicies + tags: + - USS Change Policies (Collection) + responses: + '200': + description: > + OK. All the active USS Change Policies managed by the UAE Server shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/USSChangePolicy' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a USS Change Policy. + operationId: CreateUSSChangePolicy + tags: + - USS Change Policies (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolReq' + responses: + '200': + description: > + OK. The USS Change Policy is successfully created and a representation of the created + Individual USS Change Policy resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolResp' + headers: + Location: + description: > + Contains the URI of the created Individual USS Change Policy resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +#Editor's Note: The definition of the notifications is FFS. + + + /policies/{policyId}: + parameters: + - name: policyId + in: path + description: Represents the identifier of the Individual USS Change Policy resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual USS Change Policy resource. + operationId: GetUSSChangePolicy + tags: + - Individual USS Change Policy (Document) + responses: + '200': + description: OK. The requested Individual USS Change Policy resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolicy' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual USS Change Policy resource. + operationId: UpdateUSSChangePolicy + tags: + - Individual USS Change Policy (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolicy' + responses: + '200': + description: > + OK. The Individual USS Change Policy resource is successfully updated and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolicy' + '204': + description: > + No Content. The Individual USS Change Policy resource is successfully updated and no + content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual USS Change Policy resource. + operationId: ModifyUSSChangePolicy + tags: + - Individual USS Change Policy (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/USSChangePolicyPatch' + responses: + '200': + description: > + OK. The Individual USS Change Policy resource is successfully modified and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangePolicy' + '204': + description: > + No Content. The Individual USS Change Policy resource is successfully modified and no + content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual USS Change Policy resource. + operationId: DeleteUSSChangePolicy + tags: + - Individual USS Change Policy (Document) + responses: + '204': + description: > + No Content. The Individual USS Change Policy resource is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /request-usschange: + post: + summary: Request USS change. + operationId: RequestUSSChange + tags: + - Request USS Change + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/USSChangeReq' + responses: + '204': + description: > + No Content. The USS change request is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + USSChangePolReq: + description: > + Represents the parameters to request the creation/Update of a USS Change Policy. + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + ussChangePol: + $ref: '#/components/schemas/USSChangePolicy' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - ussChangePol + + USSChangePolResp: + description: Represents the response to a USS Change Policy create/update request. + type: object + properties: + ussChangePol: + $ref: '#/components/schemas/USSChangePolicy' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ussChangePol + + USSChangePolicy: + description: Represents a USS Change Policy. + type: object + properties: + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + required: + - uasId + - notifUri + + USSChangePolicyPatch: + description: > + Represents the parameters to request the modification of a USS Change Policy. + type: object + properties: + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + USSChangeReq: + description: Represents the parameters to request for USS change. + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - uasId diff --git a/TS29257_UAE_DAASupport.yaml b/TS29257_UAE_DAASupport.yaml new file mode 100644 index 0000000..992ca04 --- /dev/null +++ b/TS29257_UAE_DAASupport.yaml @@ -0,0 +1,552 @@ +openapi: 3.0.0 + +info: + title: UAE Server DAA Support Service + version: 1.0.0-alpha.2 + description: | + UAE Server DAA Support Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.257 V18.2.0; Application layer support for Uncrewed Aerial System (UAS); + UAS Application Enabler (UAE) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.257/ + +servers: + - url: '{apiRoot}/uae-daa/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /policies: + get: + summary: Retrieve all the active DAA Policies managed by the UAE Server. + operationId: GetDAAPolicies + tags: + - DAA Policies (Collection) + responses: + '200': + description: > + OK. All the active DAA Policies managed by the UAE Server shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DAAPolicy' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a DAA Policy. + operationId: CreateDAAPolicy + tags: + - DAA Policies (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolReq' + responses: + '200': + description: > + OK. The DAA Policy is successfully created and a representation of the created + Individual DAA Policy resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolResp' + headers: + Location: + description: > + Contains the URI of the created Individual DAA Policy resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + DAAPolCompStatusNotif: + '{$request.body#/daaPol/notifUri}/daa-policy': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolConfigNotif' + responses: + '204': + description: > + No Content. The DAA Policy Configuration Status notification is successfully + received and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + DAAEventsNotif: + '{$request.body#/daaPol/notifUri}/daa-events': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DAAEventsInfo' + responses: + '200': + description: > + OK. The DAA event notification is successfully received and acknowledged, and + the UASS returns updated/additional DAA related event information in the + response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DAAEventsInfo' + '204': + description: > + No Content. The DAA event notification is successfully received and + acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /policies/{policyId}: + parameters: + - name: policyId + in: path + description: Represents the identifier of the Individual DAA Policy resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual DAA Policy resource. + operationId: GetIndDAAPolicy + tags: + - Individual DAA Policy (Document) + responses: + '200': + description: OK. The requested Individual DAA Policy resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolicy' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual DAA Policy resource. + operationId: UpdateIndDAAPolicy + tags: + - Individual DAA Policy (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolicy' + responses: + '200': + description: > + OK. The Individual DAA Policy resource is successfully updated and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolicy' + '204': + description: > + No Content. The Individual DAA Policy resource is successfully updated and no + content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual DAA Policy resource. + operationId: ModifyIndDAAPolicy + tags: + - Individual DAA Policy (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/DAAPolicyPatch' + responses: + '200': + description: > + OK. The Individual DAA Policy resource is successfully modified and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DAAPolicy' + '204': + description: > + No Content. The Individual DAA Policy resource is successfully modified and no + content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual DAA Policy resource. + operationId: DeleteIndDAAPolicy + tags: + - Individual DAA Policy (Document) + responses: + '204': + description: > + No Content. The Individual DAA Policy resource is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /inform-events: + post: + summary: Inform about and request the management of possible DAA related events. + operationId: InformDAAEvents + tags: + - InformDAAEvents + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/InformDAAEventsReq' + responses: + '204': + description: > + No Content. The request is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + DAAPolReq: + description: > + Represents the parameters to request the creation of a DAA Policy. + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + daaPol: + $ref: '#/components/schemas/DAAPolicy' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - daaPol + + DAAPolResp: + description: Represents the response to a DAA Policy creation request. + type: object + properties: + daaPol: + $ref: '#/components/schemas/DAAPolicy' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - daaPol + + DAAPolicy: + description: Represents the content of a DAA Policy. + type: object + properties: + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + required: + - uasId + - notifUri + + DAAPolicyPatch: + description: > + Represents the parameters to request the modification of a DAA Policy. + type: object + properties: + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + InformDAAEventsReq: + description: Represents the parameters to report DAA related event(s). + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + daaEventsInfo: + type: array + items: + $ref: '#/components/schemas/DAAEvent' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - uasId + - daaEventsInfo + + DAAPolConfigNotif: + description: Represents the parameters to request for DAA. + type: object + properties: + status: + $ref: '#/components/schemas/DAAPolConfigStatus' + required: + - status + + DAAEventsInfo: + description: Represents the parameters to request for DAA. + type: object + properties: + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + daaEventsInfo: + type: array + items: + $ref: '#/components/schemas/DAAEvent' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uasId + - daaEventsInfo + + DAAEvent: + description: Represents the parameters to request for DAA. + type: object + properties: + uasId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UasId' + uasLocInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + required: + - uasId + - uasLocInfo + + DAAPolConfigStatus: + anyOf: + - type: string + enum: + - SUCCESSFUL + - NOT_SUCCESSFUL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents DAA Policy configuration completion status. + Possible values are: + - SUCCESSFUL: Indicates that the DAA Policy configuration was successful. + - NOT_SUCCESSFUL: Indicates that the DAA Policy configuration was not successful. diff --git a/TS29257_UAE_RealtimeUAVStatus.yaml b/TS29257_UAE_RealtimeUAVStatus.yaml new file mode 100644 index 0000000..4d79feb --- /dev/null +++ b/TS29257_UAE_RealtimeUAVStatus.yaml @@ -0,0 +1,373 @@ +openapi: 3.0.0 +info: + title: UAE Server Real-time UAV Status Service + version: 1.0.0 + description: | + UAE Server Real-time UAV Status Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.257 V17.1.0; Application layer support for Uncrewed Aerial System (UAS); + UAS Application Enabler (UAE) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.257/ + +servers: + - url: '{apiRoot}/uae-uav-status/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /subscriptions: + get: + summary: Retrieve all the active real-time UAV status subscriptions managed by the UAE Server. + operationId: GetRTUavStatusSubscriptions + tags: + - Real-time UAV Status Subscriptions (Collection) + responses: + '200': + description: > + OK. All the active real-time UAV status subscriptions managed by the UAE Server + shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/RTUavStatusSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a subscription to real-time UAV status reporting. + operationId: CreateRTUavStatusSubsc + tags: + - Real-time UAV Status Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusSubsc' + responses: + '200': + description: > + OK. The subscription is successfully created and a representation of the created + Individual Real-time UAV Status Subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual Real-time UAV Status Subscription + resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + RTUavStatusNotification: + '{$request.body#/notificationUri}/uav-status': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusNotif' + responses: + '204': + description: > + No Content. The real-time UAV status notification is successfully + received and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /subscriptions/{subscriptionId}: + get: + summary: Retrieve a real-time UAV status subscription resource. + operationId: GetRTUavStatusSubscription + tags: + - Individual Real-time UAV Status Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Individual Real-time UAV Status Subscription identifier. + required: true + schema: + type: string + responses: + '200': + description: OK. The requested real-time UAV status subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing real-time UAV status subscription. + operationId: UpdateRTUavStatusSubscription + tags: + - Individual Real-time UAV Status Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Individual Real-time UAV Status Subscription identifier. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusSubsc' + responses: + '200': + description: > + OK. The real-time UAV status subscription is successfully updated and a + representation of the updated Individual Real-time UAV Status Subscription + resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RTUavStatusSubsc' + '204': + description: No Content. The real-time UAV status subscription is successfully updated. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing real-time UAV status subscription. + operationId: DeleteRTUavStatusSubscription + tags: + - Individual Real-time UAV Status Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Individual Real-time UAV Status Subscription identifier. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual Real-time UAV Status Subscription resource + is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + RTUavStatusSubsc: + description: > + Represents the parameters to request the creation or update of a subscription + to real-time UAV status reporting. + type: object + properties: + uassId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + uavIds: + type: array + items: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UavId' + minItems: 1 + notificationUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - uassId + - uavIds + - notificationUri + + RTUavStatusNotif: + description: Represents a real-time UAV status notification. + type: object + properties: + subscriptionId: + type: string + rTUavStatus: + type: array + items: + $ref: '#/components/schemas/RTUavStatus' + minItems: 1 + required: + - subscriptionId + - rTUavStatus + + RTUavStatus: + description: Represents real-time UAV status information. + type: object + properties: + uavId: + $ref: 'TS29257_UAE_C2OperationModeManagement.yaml#/components/schemas/UavId' + uavNetConnStatus: + $ref: '#/components/schemas/UavNetConnStatus' + uavLocInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + allOf: + - required: [uavId] + - oneOf: + - required: [uavLocInfo] + - allOf: + - required: [uavLocInfo] + - required: [uavNetConnStatus] + + UavNetConnStatus: + description: Represents UAV network connection status information. + type: object + properties: + statusInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/MonitoringType' + timestamp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - statusInfo + - timestamp diff --git a/TS29309_Nbsp_GBA.yaml b/TS29309_Nbsp_GBA.yaml new file mode 100644 index 0000000..f76c984 --- /dev/null +++ b/TS29309_Nbsp_GBA.yaml @@ -0,0 +1,461 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.2' + title: 'GBA BSF Nbsp_GBA Service' + description: | + GBA BSF Nbsp_GBA Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.309 V18.1.0; 5G System; Bootstrapping Server Function (GBA BSF) Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.309/' + +servers: + - url: '{apiRoot}/nbsp-gba/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nbsp-gba + +paths: + /bootstrapping-info-retrieval: + post: + summary: Retrieve Bootstrapping Info from GBA BSF from NAF + operationId: BootstrappingInfoRetrieval + tags: + - Bootstrapping Info Retrieval (Custom Operation) + security: + - {} + - oAuth2ClientCredentials: + - nbsp-gba + - oAuth2ClientCredentials: + - nbsp-gba + - nbsp-gba:bootstrapping-info-retrieval:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/BootstrappingInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/BootstrappingInfoResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + + /push-info-retrieval: + post: + summary: Retrieve Push Info from GBA BSF from Push-NAF + operationId: PushInfoRetrieval + tags: + - Push Info Retrieval (Custom Operation) + security: + - {} + - oAuth2ClientCredentials: + - nbsp-gba + - oAuth2ClientCredentials: + - nbsp-gba + - nbsp-gba:push-info-retrieval:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PushInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PushInfoResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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: '{nrfApiRoot}/oauth2/token' + scopes: + nbsp-gba: Access to the Nbsp_GBA API + nbsp-gba:bootstrapping-info-retrieval:invoke: >- + Access to invoke the Bootstrapping Info Retrieval custom operation + nbsp-gba:push-info-retrieval:invoke: >- + Access to invoke the Push Info Retrieval custom operation + + schemas: + +# +# STRUCTURED TYPES +# + + BootstrappingInfoRequest: + description: > + Request body of the HTTP POST operation for resource /bootstrapping-info-request + type: object + required: + - btId + - nafId + properties: + btId: + $ref: '#/components/schemas/BtId' + nafId: + $ref: '#/components/schemas/NafId' + gbaUAware: + type: boolean + default: false + gsIds: + type: array + items: + $ref: '#/components/schemas/GsId' + minItems: 1 + + BootstrappingInfoResponse: + description: > + Response body of the HTTP POST operation for resource /bootstrapping-info-request + type: object + required: + - meKeyMaterial + properties: + meKeyMaterial: + $ref: '#/components/schemas/MeKeyMaterial' + uiccKeyMaterial: + $ref: '#/components/schemas/UiccKeyMaterial' + keyExpiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + bootstrappingInfoCreationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ussList: + type: array + items: + $ref: '#/components/schemas/UssListItem' + minItems: 1 + gbaType: + $ref: '#/components/schemas/GbaType' + impi: + $ref: '#/components/schemas/Impi' + + PushInfoRequest: + description: Request body of the HTTP POST operation for resource /push-info-request + type: object + required: + - ueId + - ueIdType + - uiccAppLabel + - nafId + - ptId + - uiccOrMe + - requestedLifeTime + properties: + ueId: + $ref: '#/components/schemas/UeId' + ueIdType: + $ref: '#/components/schemas/UeIdType' + uiccAppLabel: + $ref: '#/components/schemas/UiccAppLabel' + nafId: + $ref: '#/components/schemas/NafId' + ptId: + $ref: '#/components/schemas/PtId' + uiccOrMe: + $ref: '#/components/schemas/UiccOrMe' + requestedLifeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + privateIdRequest: + type: boolean + default: false + gbaUAware: + type: boolean + default: false + gsIds: + type: array + items: + $ref: '#/components/schemas/GsId' + minItems: 1 + auts: + $ref: '#/components/schemas/Auts' + rand: + $ref: '#/components/schemas/Rand' + securityFeaturesRequest: + type: array + items: + $ref: '#/components/schemas/SecFeature' + minItems: 1 + + PushInfoResponse: + description: Response body of the HTTP POST operation for resource /push-info-request + type: object + required: + - meKeyMaterial + - gbaPushInfo + properties: + meKeyMaterial: + $ref: '#/components/schemas/MeKeyMaterial' + gbaPushInfo: + $ref: '#/components/schemas/GbaPushInfo' + uiccKeyMaterial: + $ref: '#/components/schemas/UiccKeyMaterial' + keyExpiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + bootstrappingInfoCreationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ussList: + type: array + items: + $ref: '#/components/schemas/UssListItem' + minItems: 1 + gbaType: + $ref: '#/components/schemas/GbaType' + impi: + $ref: '#/components/schemas/Impi' + securityFeaturesResponse: + type: array + items: + $ref: '#/components/schemas/SecFeature' + + NafId: + description: NAF ID, containing the NAF FQDN and the Ua Security Protocol Identifier + type: object + required: + - nafFqdn + - uaSecProtId + properties: + nafFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + uaSecProtId: + type: string + pattern: '^[A-Fa-f0-9]{10}$' + + UssListItem: + description: Data item in a User Security Settings array list + type: object + required: + - uss + properties: + uss: + $ref: '#/components/schemas/Uss' + + Uss: + description: User Security Settings for a given GAA Service + type: object + required: + - gsId + - gsType + - ueIds + properties: + gsId: + $ref: '#/components/schemas/GsId' + gsType: + $ref: '#/components/schemas/GsType' + ueIds: + type: array + items: + $ref: '#/components/schemas/UeIdsItem' + minItems: 1 + nafGroup: + $ref: '#/components/schemas/NafGroup' + flags: + type: array + items: + $ref: '#/components/schemas/FlagsItem' + minItems: 1 + keyChoice: + $ref: '#/components/schemas/KeyChoice' + + UeIdsItem: + description: Data item in a UE ID array list + type: object + required: + - ueId + properties: + ueId: + $ref: '#/components/schemas/UeId' + + FlagsItem: + description: Data item in a Flags array list + type: object + required: + - flag + properties: + flag: + $ref: '#/components/schemas/Flag' + +# +# SIMPLE TYPES +# + + GsId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + + GsType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + + BtId: + description: Bootstrapping Transaction Identifier + type: string + + MeKeyMaterial: + description: ME Key Material (hex-encoded string) + type: string + pattern: '^[A-Fa-f0-9]{64}$' + + UiccKeyMaterial: + description: UICC key material (hex-encoded string) + type: string + pattern: '^[A-Fa-f0-9]{64}$' + + UeId: + description: Public Identity of the UE + type: string + + Impi: + description: IMS Private Identity of the UE + type: string + + Flag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + + GbaPushInfo: + description: GBA Push Info (hex-encoded string) + type: string + pattern: '^([A-Fa-f0-9]{2})+$' + + NafGroup: + description: Character string representing a NAF Group + type: string + + PtId: + description: Character string representing a P-TID + type: string + + UiccAppLabel: + description: Character string representing an UICC Application Label + type: string + + Auts: + description: AUTS value in UMTS AKA + type: string + pattern: '^[A-Fa-f0-9]{28}$' + + Rand: + description: RAND in UMTS AKA + type: string + pattern: '^[A-Fa-f0-9]{32}$' + +# +# ENUMS +# + + KeyChoice: + description: Type of key (ME-based or UICC-based) that the NAF shall use + anyOf: + - type: string + enum: + - ME_BASED_KEY + - UICC_BASED_KEY + - ME_UICC_BASED_KEYS + - type: string + + UiccOrMe: + description: Indicates whether GBA_ME or GBA_U is to be used for GBA push + anyOf: + - type: string + enum: + - GBA_ME + - GBA_U + - type: string + + SecFeature: + description: Security features supported by the BSF or the NAF + anyOf: + - type: string + enum: + - GPL_U + - type: string + + GbaType: + description: Authentication type used by the UE for GBA + anyOf: + - type: string + enum: + - 3G_GBA + - 2G_GBA + - GBA_DIGEST + - type: string + + UeIdType: + description: Type of UE Identity (public or private) + anyOf: + - type: string + enum: + - PUBLIC + - PRIVATE + - type: string diff --git a/TS29486_VAE_ApplicationRequirement.yaml b/TS29486_VAE_ApplicationRequirement.yaml new file mode 100644 index 0000000..e295546 --- /dev/null +++ b/TS29486_VAE_ApplicationRequirement.yaml @@ -0,0 +1,281 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.2 + title: VAE_ApplicationRequirement + description: | + API for VAE Application Requirement Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-app-req/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /application-requirements: + post: + summary: VAE_Application_Requirements resource create service Operation + tags: + - application requirements collection (Document) + operationId: CreateApplicationRequirement + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRequirementData' + required: true + responses: + '201': + description: Application Requirement Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRequirementData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + NotifyNetworkResource: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppReqNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /application-requirements/{requirementId}: + get: + summary: VAE Application Requirement resource read service Operation + tags: + - Individual application requirement (Document) + operationId: ReadApplicationRequirement + parameters: + - name: requirementId + in: path + description: Identifier of an application requirement resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationRequirementData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: VAE Application Requirement resource delete service Operation + tags: + - Individual application requirement (Document) + operationId: DeleteApplicationRequirement + parameters: + - name: requirementId + in: path + required: true + description: Unique ID of the application requirement to be deleted + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ApplicationRequirementData: + description: > + Represents an individual Application Requirement resource for a V2X UE ID or a V2X group ID. + type: object + properties: + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + appRequirement: + $ref: '#/components/schemas/ApplicationRequirement' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to send a test + notification as defined in clause 6.3.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - serviceId + - appRequirement + - notifUri + + ApplicationRequirement: + description: Represents the requirements for application change. + type: object + properties: + serviceLevel: + $ref: '#/components/schemas/ServiceLevel' + + AppReqNotification: + description: > + Represents a notificaton of the result of the network resource adaptation corresponding to + the V2X application requirement. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + result: + $ref: '#/components/schemas/ReservationResult' + required: + - resourceUri + - result + +# Simple data types and Enumerations + ServiceLevel: + description: Indicates a service level for application service. + anyOf: + - type: string + enum: + - HIGH + - MEDIUM + - LOW + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + + ReservationResult: + description: > + Represents the result of the network resource adaptation corresponding to the V2X + application requirement. + anyOf: + - type: string + enum: + - SUCCESSFUL + - FAILURE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. diff --git a/TS29486_VAE_DynamicGroup.yaml b/TS29486_VAE_DynamicGroup.yaml new file mode 100644 index 0000000..bdd8273 --- /dev/null +++ b/TS29486_VAE_DynamicGroup.yaml @@ -0,0 +1,249 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.2 + title: VAE_DynamicGroup + description: | + VAE_Dynamic_Group Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-dynamic-group/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /group-configurations: + post: + summary: VAE_Dynamice_Group resource create service Operation + tags: + - application requirements collection (Document) + operationId: CreateGroupConfiguration + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GroupConfigurationData' + required: true + responses: + '201': + description: Application Requirement Resource created + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/GroupConfigurationData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + NotifyDynamicGroup: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DynamicGroupNotification' + responses: + '204': + description: No Content, notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /group-configurations/{configId}: + get: + summary: VAE Group Configuration resource read service Operation + tags: + - Individual Group Configuration(Document) + operationId: ReadDynamicGroupConfiguration + parameters: + - name: configId + in: path + description: Identifier of an group configuration resource. + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/GroupConfigurationData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: VAE Group Configuration resource delete service Operation + tags: + - Individual group configuration (Document) + operationId: DeleteGroupConfiguration + parameters: + - name: configId + in: path + required: true + description: Unique ID of the group configuration to be deleted. + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + GroupConfigurationData: + description: Represents an individual Group Configuration resource for a V2X group ID. + type: object + properties: + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + definition: + type: string + leaderId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to test + a notification connection. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - groupId + - definition + - leaderId + - notifUri + + DynamicGroupNotification: + description: > + Represents a notification on the dynamic group information (i.e. group member + joins or leaves). + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + joinedUeIds: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + leftUeIds: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + required: + - resourceUri diff --git a/TS29486_VAE_FileDistribution.yaml b/TS29486_VAE_FileDistribution.yaml new file mode 100644 index 0000000..d237e2b --- /dev/null +++ b/TS29486_VAE_FileDistribution.yaml @@ -0,0 +1,262 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.1 + title: VAE_FileDistribution + description: | + API for VAE File Distribution Service + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.0.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-file-distribution/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /file-distributions: + post: + summary: VAE File Distributions resource create service Operation + tags: + - file distributions collection (Document) + operationId: CreateFileDistributions + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/FileDistributionData' + required: true + responses: + '201': + description: File Distribution Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/FileDistributionData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /file-distributions/{distributionId}: + get: + summary: Get an existing individual file distribution resource + operationId: ReadIndividualFileDistribution + tags: + - Individual File Distribution (Document) + parameters: + - name: distributionId + in: path + description: Identifier of a file distribution resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/FileDistributionData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: VAE File Distribution resource delete service Operation + tags: + - Individual file distribution (Document) + operationId: DeleteFileDistribution + parameters: + - name: distributionId + in: path + required: true + description: Unique ID of the file distribution to be deleted + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + FileDistributionData: + description: Represents an individual File Distribution resource for a V2X group ID. + type: object + properties: + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + fileLists: + type: array + items: + $ref: '#/components/schemas/FileList' + minItems: 1 + serviceClass: + type: string + geoArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + maxBitrate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + localMbmsInfo: + $ref: '#/components/schemas/LocalMbmsInfo' + localMbmsActInd: + type: boolean + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - fileLists + - geoArea + - maxBitrate + - maxDelay + + FileList: + description: Represents a file list. + type: object + properties: + fileUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + fileDisplayUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + fileEarFetchTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + fileLatFetchTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + fileSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + fileStatus: + $ref: '#/components/schemas/FileStatus' + completionTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + keepUpdateInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + uniAvailability: + type: boolean + fileRepetition: + type: integer + required: + - fileUri + - fileDisplayUri + - fileEarFetchTime + - fileLatFetchTime + - fileStatus + - completionTime + - keepUpdateInterval + + LocalMbmsInfo: + description: Contains the local MBMS information. + type: object + properties: + mbmsEnbIpv4MulAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + mbmsEnbIpv6MulAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + mbmsGwIpv4SsmAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + mbmsGwIpv6SsmAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + cteid: + type: string + bmscIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + bmscIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + bmscPort: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + +# Simple data types and Enumerations + FileStatus: + description: Represents a file status. + anyOf: + - type: string + enum: + - PENDING + - FETCHED + - PREPARED + - TRANSMITTING + - SENT + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. diff --git a/TS29486_VAE_HDMapDynamicInfo.yaml b/TS29486_VAE_HDMapDynamicInfo.yaml new file mode 100644 index 0000000..580d4da --- /dev/null +++ b/TS29486_VAE_HDMapDynamicInfo.yaml @@ -0,0 +1,256 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.2 + title: VAE_HDMapDynamicInfo + description: | + API for VAE HDMapDynamicInfo Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-hdmap-dynamic-info/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /subscriptions: + post: + summary: VAE_HDMapDynamicInfo resource create service Operation + tags: + - hdmap dynamicinfo subscriptions collection (Document) + operationId: Create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HdMapDynamicInfoData' + required: true + responses: + '201': + description: HdMap DynamicInfo Subscription Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/HdMapDynamicInfoData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + NotifyHdMapDynamicInfo: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/HdMapDynamicInfoNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + get: + summary: VAE HdMap DynamicInfo Subscription resource read service Operation + tags: + - Individual HdMap DynamicInfo Subscription(Document) + operationId: ReadHdMapDynamicInfoSubscription + parameters: + - name: subscriptionId + in: path + description: Identifier of an HdMap DynamicIfo Subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/HdMapDynamicInfoData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: VAE HdMap DynamicInfo Subscription resource delete service Operation + tags: + - Individual hdmap dynamicinfo subscription (Document) + operationId: DeleteHdMapDynamicInfoSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the hdmap dynamicinfo subscription to be deleted + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + HdMapDynamicInfoData: + description: > + Represents an individual HdMap DynamicInfo Subscription resource for a V2X UE ID. + type: object + properties: + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + range: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to send a test + notification as defined in clause 6.3.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueId + - notifUri + - range + + HdMapDynamicInfoNotification: + description: > + Represents a notificaton of HD map dynamic info corresponding to the subscription. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nearbyUeInfo: + type: array + items: + $ref: '#/components/schemas/NearbyUeInfo' + minItems: 1 + description: Contains the informaiotn of nearby UEs. + required: + - resourceUri + - nearbyUeInfo + + NearbyUeInfo: + description: Represents the informaiotn of nearby UEs. + type: object + properties: + nearbyUeId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + distance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - nearbyUeId + - location + - distance diff --git a/TS29486_VAE_MessageDelivery.yaml b/TS29486_VAE_MessageDelivery.yaml new file mode 100644 index 0000000..34178a0 --- /dev/null +++ b/TS29486_VAE_MessageDelivery.yaml @@ -0,0 +1,484 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.2 + title: VAE_MessageDelivery + description: | + API for VAE Message Delivery Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/vae-message-delivery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /subscriptions: + post: + summary: Create a new Individual Message Delivery Data Subscription resource + operationId: CreateIndividualMessageDeliveryDataSubscription + tags: + - Message Delivery Data Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliverySubscriptionData' + responses: + '201': + description: The subscription was created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliverySubscriptionData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + uplinkMessageDelivery: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UplinkMessageDeliveryData' + responses: + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + receptReportOfDownlinkMesageDelivery: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Result' + responses: + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Get an existing individual Message Delivery Subscription resource + operationId: ReadIndividualMessageDeliverySubscription + tags: + - Individual Message Delivery Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Message Delivery Subscription + required: true + schema: + type: string + responses: + '200': + description: The subscription information is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliverySubscriptionData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual Message Delivery Subscription resource + operationId: DeleteMessageDeliverySubscription + tags: + - Individual Message Delivery Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Message Delivery Subscription + required: true + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}/message-deliveries: + post: + summary: VAE Message delivery resource create service Operation + tags: + - message deliveries collection (Collection) + operationId: CreateDownlinkMessageDelivery + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Message Delivery Subscription + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DownlinkMessageDeliveryData' + required: true + responses: + '201': + description: Downlink Message Delivery Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/DownlinkMessageDeliveryData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}/message-deliveries/{dlDeliveryId}: + get: + summary: VAE Message delivery resource Read service Operation + tags: + - Individual downlink message delivery (Document) + operationId: ReadIndividualDownlinkMessageDelivery + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Message Delivery Subscription + required: true + schema: + type: string + - name: dlDeliveryId + in: path + description: Identifier of a downlink messge delivery resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/DownlinkMessageDeliveryData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: VAE Message delivery resource delete service Operation + tags: + - Individual message delivery (Document) + operationId: DeleteMessageDelivery + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Message Delivery Subscription + required: true + schema: + type: string + - name: dlDeliveryId + in: path + required: true + description: Unique ID of the message delivery to be deleted + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + DownlinkMessageDeliveryData: + description: Contains the downlink V2X message delivery data. + type: object + properties: + ueId: + $ref: '#/components/schemas/V2xUeId' + groupId: + $ref: '#/components/schemas/V2xGroupId' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + geoId: + $ref: '#/components/schemas/GeoId' + payload: + $ref: '#/components/schemas/V2xMessagePayload' + required: + - payload + + MessageDeliverySubscriptionData: + description: Represents the V2X message delivery subscription data. + type: object + properties: + appSerId: + $ref: '#/components/schemas/AppServerId' + serviceId: + $ref: '#/components/schemas/V2xServiceId' + geoId: + $ref: '#/components/schemas/GeoId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to send a test + notification as defined in clause 6.1.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - appSerId + - serviceId + - notifUri + + + UplinkMessageDeliveryData: + description: Represents the uplink V2X message delivery data. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ueId: + $ref: '#/components/schemas/V2xUeId' + geoId: + $ref: '#/components/schemas/GeoId' + payload: + $ref: '#/components/schemas/V2xMessagePayload' + required: + - resourceUri + - ueId + - payload + + Result: + description: Contains the result of downlink message delivery. + anyOf: + - type: string + enum: + - SUCCESS + - FAIL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + + AppServerId: + description: Represents the service consumer identifier. + type: string + + V2xUeId: + description: Represents the identifier of the V2X UE. + type: string + + V2xGroupId: + description: Represents the group ID for which a V2X message is addressed. + type: string + + V2xServiceId: + description: Represents the V2X service ID to which a V2X message belongs. + type: string + + GeoId: + description: Represents a geographical area identifier. + type: string + + V2xMessagePayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' diff --git a/TS29486_VAE_PC5ProvisioningRequirement.yaml b/TS29486_VAE_PC5ProvisioningRequirement.yaml new file mode 100644 index 0000000..7f9a60f --- /dev/null +++ b/TS29486_VAE_PC5ProvisioningRequirement.yaml @@ -0,0 +1,297 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.2 + title: VAE_PC5ProvisioningRequirement + description: | + API for VAE_PC5ProvisioningRequirement + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-pc5-prov-req/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /subscriptions: + post: + summary: VAE_PC5 Provisioning Requirement resource create service Operation + tags: + - PC5 provisioning requirement subscriptions collection (Document) + operationId: Create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisioningRequirement' + required: true + responses: + '201': + description: PC5 Provisioning Requirement Subscription Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisioningRequirement' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + NotifyResutOfMultiOperationPC5Provisioning: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + get: + summary: VAE PC5 Provisioning Requirement Subscription resource read service Operation + tags: + - Individual PC5 Provisioning Requirement Subscription (Document) + operationId: ReadPC5ProvisioningRequirementSubscription + parameters: + - name: subscriptionId + in: path + description: Identifier of an PC5 Provisioning Requirement Subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisioningRequirement' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Updates/replaces an existing subscription resource + tags: + - VAE PC5 Provisioning Requirement Subscription resource put service Operation + operationId: UpdatePC5ProvisioningRequirementSubscription + parameters: + - name: subscriptionId + in: path + description: Identifier of an PC5 Provisioning Requirement Subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisioningRequirement' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisioningRequirement' + '204': + description: No Content (Successful update of the subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: VAE PC5 Provisioning Requirement Subscription resource delete service Operation + tags: + - Individual PC5 Provisioning Requirement Subscription (Document) + operationId: DeletePC5ProvisioningRequirementSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the PC5 Provisioning Requirement Subscription to be deleted + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ProvisioningRequirement: + description: Represents an Individual PC5 Provisioning Requirement Subscription resource. + type: object + properties: + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + appQosReq: + $ref: 'TS29486_VAE_SessionOrientedService.yaml#/components/schemas/AppplicationQosRequirement' + plmnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to send a test + notification as defined in clause 6.3.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - serviceId + - notifUri + + Notification: + description: Represents a notificaton of result of PC5 Provisioning Requirement. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + result: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/Result' + required: + - resourceUri + - result diff --git a/TS29486_VAE_ServiceAndQoSControlInfo.yaml b/TS29486_VAE_ServiceAndQoSControlInfo.yaml new file mode 100644 index 0000000..d3a08c6 --- /dev/null +++ b/TS29486_VAE_ServiceAndQoSControlInfo.yaml @@ -0,0 +1,423 @@ +openapi: 3.0.0 + +info: + title: VAE Server Service And QoS Control Info Service + version: 1.0.0-alpha.1 + description: | + VAE Server Service And QoS Control Info Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +servers: + - url: '{apiRoot}/vae-sqci/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /subscriptions: + post: + summary: Request the creation of a Service Adaptation And QoS Control Subscription. + operationId: CreateServAdaptQoSCtrlSubsc + tags: + - Service Adaptation And QoS Control Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + responses: + '201': + description: > + Created. The Service Adaptation And QoS Control Subscription is successfully created + and a representation of the created Individual Service Adaptation And QoS Control + Subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual Service Adaptation And QoS Control + Subscription resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ServReqQoSAdaptNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AdaptNotif' + responses: + '200': + description: > + OK. The Service Requirements And QoS Adaptation notification is successfully + received and acknowledged and the acknowledgment related information shall be + returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/AdaptNotifResp' + '204': + description: > + No Content. The Service Requirements And QoS Adaptation notification is + successfully received and acknowledged and no content is returned in the + response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of the Individual Service Adaptation And QoS Control + Subscription resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Service Adaptation And QoS Control Subscription resource. + operationId: GetIndServAdaptQoSCtrlSubsc + tags: + - Individual Service Adaptation And QoS Control Subscription (Document) + responses: + '200': + description: > + OK. The requested Individual Service Adaptation And QoS Control Subscription resource + shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Service Adaptation And QoS Control Subscription resource. + operationId: UpdateIndServAdaptQoSCtrlSubsc + tags: + - Individual Service Adaptation And QoS Control Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + responses: + '200': + description: > + OK. The Individual Service Adaptation And QoS Control Subscription resource is + successfully updated and a representation of the updated resource shall be returned in + the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + '204': + description: > + No Content. The Individual Service Adaptation And QoS Control Subscription resource is + successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Service Adaptation And QoS Control Subscription resource. + operationId: ModifyIndServAdaptQoSCtrlSubsc + tags: + - Individual Service Adaptation And QoS Control Subscription (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubscPatch' + responses: + '200': + description: > + OK. The Individual Service Adaptation And QoS Control Subscription resource is + successfully modified and a representation of the updated resource shall be returned in + the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ServAdaptQoSCtrlSubsc' + '204': + description: > + No Content. The Individual Service Adaptation And QoS Control Subscription resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Service Adaptation And QoS Control Subscription resource. + operationId: DeleteIndServAdaptQoSCtrlSubsc + tags: + - Individual Service Adaptation And QoS Control Subscription (Document) + responses: + '204': + description: > + No Content. The Individual Service Adaptation And QoS Control Subscription resource is + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ServAdaptQoSCtrlSubsc: + description: > + Represents a Service Adaptation And QoS Control Subscription. + type: object + properties: + subscTarget: + $ref: '#/components/schemas/V2xTarget' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subscTarget + - notifUri + + ServAdaptQoSCtrlSubscPatch: + description: > + Represents the requested modifications to a Service Adaptation And QoS Control subscription. + type: object + properties: + subscTarget: + $ref: '#/components/schemas/V2xTarget' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + AdaptNotif: + description: > + Represents a Service Requirements And QoS Adaptation Notification. + type: object + properties: + subscriptionId: + type: string + ueIdsList: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + qosChangeInfo: + $ref: '#/components/schemas/QoSChangeInfo' + required: + - subscriptionId + - qosChangeInfo + + AdaptNotifResp: + description: > + Represents the Service Requirements And QoS Adaptation Notification acknowledgment related + information. + type: object + properties: + result: + $ref: '#/components/schemas/AckResult' + ueIdsList: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + required: + - result + + QoSChangeInfo: + description: > + Represents the QoS change related information. + type: object + properties: + loa: + type: string + + V2xTarget: + description: > + Represents the targeted V2X entity. + type: object + properties: + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + oneOf: + - required: [groupId] + - required: [serviceId] + - required: [ueId] + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + AckResult: + anyOf: + - type: string + enum: + - POSITIVE + - NEGATIVE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the reporting granularity. + Possible values are: + - POSITIVE: Indicates that the acknowledgement is positive. + - NEGATIVE: Indicates that the acknowledgement is negative. diff --git a/TS29486_VAE_ServiceContinuity.yaml b/TS29486_VAE_ServiceContinuity.yaml new file mode 100644 index 0000000..b2a2067 --- /dev/null +++ b/TS29486_VAE_ServiceContinuity.yaml @@ -0,0 +1,104 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.1 + title: VAE_Service Continuity + description: | + API for VAE Service Continuity Service + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.0.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-service-continuity/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /geo-areas/{geoId}: + get: + summary: VAE service continuity query service operation + tags: + - Individual geographical area (Document) + operationId: QueryServiceContinuity + parameters: + - name: geoId + in: path + description: Identifier of a geographical area + required: true + schema: + type: string + - name: service-id + in: query + description: Identifier of a V2X service + required: true + schema: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + - name: supp-feat + in: query + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/V2xServiceInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + V2xServiceInfo: + description: > + Represents an individual geographical area resource including the designated V2X + service identifier. + type: object + properties: + serviceIds: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - serviceIds diff --git a/TS29486_VAE_SessionOrientedService.yaml b/TS29486_VAE_SessionOrientedService.yaml new file mode 100644 index 0000000..928a0a6 --- /dev/null +++ b/TS29486_VAE_SessionOrientedService.yaml @@ -0,0 +1,330 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.2 + title: VAE_SessionOrientedService + description: | + API for VAE_SessionOrientedService + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/vae-session-Oriented-service/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /subscriptions: + post: + summary: VAE_SessionOrientedService resource create service Operation + tags: + - session oriented service subscriptions collection (Document) + operationId: Create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SessionOrientedData' + required: true + responses: + '201': + description: Session Oriented Service Subscription Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/SessionOrientedData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + NotifyResutOfSessionOrientedService: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + get: + summary: VAE Session Oriented Service Subscription resource read service Operation + tags: + - Individual Session Oriented Service Subscription (Document) + operationId: ReadSessionOrientedServiceSubscription + parameters: + - name: subscriptionId + in: path + description: Identifier of an Session Oriented Service Subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/SessionOrientedData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Updates/replaces an existing subscription resource + tags: + - VAE Session Oriented Service Subscription resource put service Operation + parameters: + - name: subscriptionId + in: path + description: Identifier of an Session Oriented Service Subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SessionOrientedData' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/SessionOrientedData' + '204': + description: No Content (Successful update of the subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: VAE Session Oriented Service Subscription resource delete service Operation + tags: + - Individual Session Oriented Service Subscription (Document) + operationId: DeleteSessionOrientedServiceSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the Session Oriented Service Subscription n to be deleted + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + SessionOrientedData: + description: > + Represents data to trigger establishment or update of session-oriented service. + type: object + properties: + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + appSerId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/AppServerId' + appQosReq: + $ref: '#/components/schemas/AppplicationQosRequirement' + requestTestNotification: + type: boolean + description: > + Set to true by the service consumer to request the VAE server to send a test + notification as defined in clause 6.3.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueId + - notifUri + - serviceId + - appSerId + + Notification: + description: > + Represents the result of the establishment or update of the session-oriented service. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + action: + $ref: '#/components/schemas/Action' + result: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/Result' + required: + - resourceUri + - action + - result + + AppplicationQosRequirement: + description: Represents application layer QoS requirement. + type: object + properties: + pqi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + resourceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/QosResourceType' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetErrorRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + averagingWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + maxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVol' + +# Simple data types and Enumerations + Action: + description: Indicate the action to the session-oriented service. + anyOf: + - type: string + enum: + - ESTABLISHMENT + - UPDATE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. diff --git a/TS29486_VAE_V2PApplicationRequirement.yaml b/TS29486_VAE_V2PApplicationRequirement.yaml new file mode 100644 index 0000000..7aac57f --- /dev/null +++ b/TS29486_VAE_V2PApplicationRequirement.yaml @@ -0,0 +1,306 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.1 + title: VAE Server V2P Application Requirement Service + description: | + API for VAE Server V2P Application Requirement Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-v2P-app-req/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /provisionings: + post: + summary: Request the creation of a V2P Application Requirements Provisioning. + tags: + - V2P Application Requirements Provisionings collection (Collection) + operationId: CreateV2PAppReqsProv + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + required: true + responses: + '201': + description: > + Created. The V2P Application Requirements Provisioning is successfully created and a + representation of the created Individual V2P Application Requirements Provisioning + resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + headers: + Location: + description: > + Contains the URI of the created Individual V2P Application Requirements + Provisioning resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /provisionings/{provId}: + parameters: + - name: provId + in: path + description: > + Represents the identifier of the Individual V2P Application Requirements Provisioning + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual V2P Application Requirement Provisioning resource. + operationId: GetIndV2pAppReqsProv + tags: + - Individual V2P Application Requirements Provisioning (Document) + responses: + '200': + description: > + OK. The requested Individual V2P Application Requirements Provisioning resource + representation shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual V2P Application Requirements Provisioning resource. + operationId: UpdateIndV2pAppReqsProv + tags: + - Individual V2P Application Requirements Provisioning (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + responses: + '200': + description: > + OK. The Individual V2P Application Requirements Provisioning resource is successfully + updated and a representation of the updated resource shall be returned in the response + body. + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + '204': + description: > + No Content. The Individual V2P Application Requirements Provisioning resource is + successfully updated and no content is returned in the response body + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual V2P Application Requirements Provisioning resource. + operationId: ModifyIndV2pAppReqsProv + tags: + - Individual V2P Application Requirements Provisioning (Document) + requestBody: + description: Parameters to modify the existing configuration. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/V2pAppReqDataPatch' + responses: + '200': + description: > + OK. The Individual V2P Application Requirements Provisioning resource is successfully + modified and a representation of the updated resource shall be returned in the response + body. + content: + application/json: + schema: + $ref: '#/components/schemas/V2pAppReqData' + '204': + description: > + No Content. The Individual V2P Application Requirements Provisioning resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual V2P Application Requirements Provisioning resource. + operationId: DeleteIndV2pAppReqsProv + tags: + - Individual V2P Application Requirements Provisioning (Document) + responses: + '204': + description: > + No Content. The Individual V2P Application Requirements Provisioning resource is + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + V2pAppReqData: + description: Represents the V2P Application Requirements Provisioning. + type: object + properties: + requestorId: + type: string + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + v2pQosReqs: + $ref: 'TS29486_VAE_VRUZoneManagement.yaml#/components/schemas/AppReqs' + appTrafficPattern: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + paramOverPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverPc5' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oneOf: + - required: [serviceId] + - required: [groupId] + required: + - requestorId + - v2pQosReqs + - appTrafficPattern + + V2pAppReqDataPatch: + description: > + Represents the requested modifications to a V2P Application Requirements Provisioning. + type: object + properties: + v2pQosReqs: + $ref: 'TS29486_VAE_VRUZoneManagement.yaml#/components/schemas/AppReqs' + appTrafficPattern: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + paramOverPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverPc5Rm' diff --git a/TS29486_VAE_V2VConfigRequirement.yaml b/TS29486_VAE_V2VConfigRequirement.yaml new file mode 100644 index 0000000..8c3280b --- /dev/null +++ b/TS29486_VAE_V2VConfigRequirement.yaml @@ -0,0 +1,232 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.1 + title: VAE_V2VConfigRequirement + description: | + API for VAE_V2VConfigRequirement + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.0.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/vae-v2v-config-req/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /configurations: + post: + summary: VAE V2V Configuration resource create service Operation + tags: + - V2V Configurations collection (Document) + operationId: Create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/V2vConfigurationData' + required: true + responses: + '201': + description: V2V Configuration Resource Created + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/V2vConfigurationData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /configurations/{configurationId}: + get: + summary: VAE V2V Configuration resource read service Operation + tags: + - Individual V2V Configuration (Document) + operationId: ReadV2VConfiguration + parameters: + - name: configurationId + in: path + description: Identifier of a V2V Configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/V2vConfigurationData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Updates/replaces an existing configuration resource + tags: + - VAE V2V Configuration resource put service Operation + operationId: UpdateV2VConfiguration + parameters: + - name: configurationId + in: path + description: Identifier of a V2V Configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing configuration + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/V2vConfigurationData' + responses: + '200': + description: OK (Successful update of the configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/V2vConfigurationData' + '204': + description: No Content (Successful update of the configuration) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: VAE V2V Configuration resource delete service Operation + tags: + - Individual V2V Configuration (Document) + operationId: DeleteV2VConfiguration + parameters: + - name: configurationId + in: path + required: true + description: Unique ID of the V2V Configuration to be deleted + schema: + type: string + responses: + '204': + description: The configuration was deleted successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + V2vConfigurationData: + description: Contains the V2V configuration data. + type: object + properties: + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + serviceId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xServiceId' + canUeIds: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + appQosReq: + $ref: 'TS29486_VAE_SessionOrientedService.yaml#/components/schemas/AppplicationQosRequirement' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' diff --git a/TS29486_VAE_VRUZoneManagement.yaml b/TS29486_VAE_VRUZoneManagement.yaml new file mode 100644 index 0000000..00aca1c --- /dev/null +++ b/TS29486_VAE_VRUZoneManagement.yaml @@ -0,0 +1,511 @@ +openapi: 3.0.0 + +info: + title: VAE Server VRU Zone Management Service + version: 1.0.0-alpha.1 + description: | + VAE Server VRU Zone Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.486 V18.1.0 V2X Application Enabler (VAE) Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.486/' + +servers: + - url: '{apiRoot}/vae-vzm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /subscriptions: + post: + summary: Request the creation of a VRU Zone Management Subscription. + operationId: CreateVRUZoneMngtSubsc + tags: + - VRU Zone Management Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + responses: + '201': + description: > + Created. The VRU Zone Management Subscription is successfully created and a + representation of the created Individual VRU Zone Management Subscription resource + shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual VRU Zone Management Subscription + resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + EnterLeaveNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EnterLeaveNotif' + responses: + '204': + description: > + No Content. The VRU Zone Management Enter/Leave notification is successfully + received and acknowledged and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of the Individual VRU Zone Management Subscription + resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual VRU Zone Management Subscription resource. + operationId: GetIndVRUZoneMngtSubsc + tags: + - Individual VRU Zone Management Subscription (Document) + responses: + '200': + description: > + OK. The requested Individual VRU Zone Management Subscription resource shall be + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual VRU Zone Management Subscription resource. + operationId: UpdateIndVRUZoneMngtSubsc + tags: + - Individual VRU Zone Management Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + responses: + '200': + description: > + OK. The Individual VRU Zone Management Subscription resource is successfully updated + and a representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + '204': + description: > + No Content. The Individual VRU Zone Management Subscription resource is successfully + updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual VRU Zone Management Subscription resource. + operationId: ModifyIndVRUZoneMngtSubsc + tags: + - Individual VRU Zone Management Subscription (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubscPatch' + responses: + '200': + description: > + OK. The Individual VRU Zone Management Subscription resource is successfully modified + and a representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/VRUZoneMngtSubsc' + '204': + description: > + No Content. The Individual VRU Zone Management Subscription resource is successfully + modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual VRU Zone Management Subscription resource. + operationId: DeleteIndVRUZoneMngtSubsc + tags: + - Individual VRU Zone Management Subscription (Document) + responses: + '204': + description: > + No Content. The Individual VRU Zone Management Subscription resource is successfully + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + VRUZoneMngtSubsc: + description: > + Represents a VRU Zone Management Subscription. + type: object + properties: + requestorId: + type: string + ueIdsList: + type: array + items: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + minItems: 1 + vruZoneInfo: + $ref: '#/components/schemas/VRUZoneInfo' + vruAppReqs: + $ref: '#/components/schemas/AppReqs' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + vruZoneId: + type: string + areaOfInterest: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + timeValidity: + $ref: '#/components/schemas/TimeValidity' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - requestorId + - notifUri + - vruZoneInfo + - vruAppReqs + + VRUZoneMngtSubscPatch: + description: > + Represents the requested modifications to a VRU Zone Management Subscription. + type: object + properties: + vruZoneInfo: + $ref: '#/components/schemas/VRUZoneInfo' + vruAppReqs: + $ref: '#/components/schemas/AppReqs' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + areaOfInterest: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + timeValidity: + $ref: '#/components/schemas/TimeValidity' + + EnterLeaveNotif: + description: > + Represents a VRU Zone Management Enter/LeaveNotification. + type: object + properties: + groupId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xGroupId' + ueId: + $ref: 'TS29486_VAE_MessageDelivery.yaml#/components/schemas/V2xUeId' + vruZoneInfo: + $ref: '#/components/schemas/VRUZoneInfo' + vruZoneId: + type: string + enterLeaveInfo: + $ref: '#/components/schemas/EnterLeaveInfo' + mobilityInfo: + $ref: '#/components/schemas/MobilityInfo' + required: + - vruZoneInfo + - vruZoneId + - enterLeaveInfo + oneOf: + - required: [groupId] + - required: [ueId] + + VRUZoneInfo: + description: > + Represents VRU zone related information. + type: object + properties: + ueTypes: + type: array + items: + $ref: '#/components/schemas/UEType' + minItems: 1 + vruZoneType: + $ref: '#/components/schemas/VRUZoneType' + required: + - typeOfUes + - vruZoneType + + AppReqs: + description: > + Represents VRU application requirements. + type: object + properties: + supportedMsgs: + type: array + items: + $ref: '#/components/schemas/MsgType' + minItems: 1 + reliability: + format: float + type: number + minimum: 0 + maximum: 100 + delay: + type: integer + minimum: 1 + jitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + anyOf: + - required: [reliability] + - required: [delay] + - required: [jitter] + + TimeValidity: + description: > + Represents the time validity information. + type: object + properties: + startTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + anyOf: + - required: [startTime] + - required: [endTime] + + EnterLeaveInfo: + description: > + Represents the information related to V2X UE(s) entering/leaving a VRU zone. + type: object + properties: + time: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + duration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + required: + - time + + MobilityInfo: + description: > + Represents mobility information. + type: object + properties: + speed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + direction: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Direction' + anyOf: + - required: [speed] + - required: [direction] + + UEType: + anyOf: + - type: string + enum: + - V2X + - PEDESTRIAN + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the type of UE(s) to be considered. + Possible values are: + - V2X: Indicates V2X UE(s). + - PEDESTRIAN: Indicates pedestrian UE(s). + + VRUZoneType: + anyOf: + - type: string + enum: + - STATIC + - DYNAMIC + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the VRU zone type. + Possible values are: + - STATIC: Indicates that the VRU zone is static. + - DYNAMIC: Indicates that the VRU zone is dynamic. + + MsgType: + anyOf: + - type: string + enum: + - VAM + - CAM + - DENM + - BSM + - CPM + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the message type. + Possible values are: + - VAM: Indicates that the type of message is VAM. + - CAM: Indicates that the type of message is CAM. + - DENM: Indicates that the type of message is DENM. + - BSM: Indicates that the type of message is BSM. + - CPM: Indicates that the type of message is CPM. diff --git a/TS29500_CustomHeaders.abnf b/TS29500_CustomHeaders.abnf new file mode 100644 index 0000000..51e3a5e --- /dev/null +++ b/TS29500_CustomHeaders.abnf @@ -0,0 +1,763 @@ +; ---------------------------------------- +; RFC 5234 +; ---------------------------------------- + +HTAB = %x09 ; horizontal tab + +LF = %x0A ; linefeed + +CR = %x0D ; carriage return + +SP = %x20 + +DQUOTE = %x22 ; " (Double Quote) + +DIGIT = %x30-39 ; 0-9 + +ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + +VCHAR = %x21-7E ; visible (printing) characters + +WSP = SP / HTAB ; white space + +CRLF = CR LF ; Internet standard newline + +HEXDIG = DIGIT / "A" / "B" / "C" / "D" / "E" / "F" + + + +; ---------------------------------------- +; RFC 3986 +; ---------------------------------------- + +unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" + +pct-encoded = "%" HEXDIG HEXDIG + +sub-delims = "!" / "$" / "&" / "'" / "(" / ")" / "*" / "+" / "," / ";" / "=" + +pchar = unreserved / pct-encoded / sub-delims / ":" / "@" + +segment = *pchar + +segment-nz = 1*pchar + +path-abempty = *( "/" segment ) + +path-absolute = "/" [ segment-nz *( "/" segment ) ] + +path-rootless = segment-nz *( "/" segment ) + +path-empty = 0pchar + +IPvFuture = "v" 1*HEXDIG "." 1*( unreserved / sub-delims / ":" ) + +dec-octet = "25" %x30-35 / "2" %x30-34 DIGIT / "1" 2DIGIT / %x31-39 DIGIT / DIGIT + +h16 = 1*4HEXDIG + +ls32 = ( h16 ":" h16 ) / Ipv4address + +Ipv4address = dec-octet "." dec-octet "." dec-octet "." dec-octet + +Ipv6address = 6( h16 ":" ) ls32 + / "::" 5( h16 ":" ) ls32 + / [ h16 ] "::" 4( h16 ":" ) ls32 + / [ *1( h16 ":" ) h16 ] "::" 3( h16 ":" ) ls32 + / [ *2( h16 ":" ) h16 ] "::" 2( h16 ":" ) ls32 + / [ *3( h16 ":" ) h16 ] "::" h16 ":" ls32 + / [ *4( h16 ":" ) h16 ] "::" ls32 + / [ *5( h16 ":" ) h16 ] "::" h16 + / [ *6( h16 ":" ) h16 ] "::" + +IP-literal = "[" ( Ipv6address / IpvFuture ) "]" + +reg-name = *( unreserved / pct-encoded / sub-delims ) + +host = IP-literal / Ipv4address / reg-name + +port = *DIGIT + +scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) + +userinfo = *( unreserved / pct-encoded / sub-delims / ":" ) + +authority = [ userinfo "@" ] host [ ":" port ] + +hier-part = "//" authority path-abempty / path-absolute / path-rootless / path-empty + +query = *( pchar / "/" / "?" ) + +fragment = *( pchar / "/" / "?" ) + +URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] + + + +; ---------------------------------------- +; RFC 5322 +; ---------------------------------------- + +obs-FWS = 1*WSP *( CRLF 1*WSP ) + +FWS = ( [ *WSP CRLF ] 1*WSP ) / obs-FWS + +obs-NO-WS-CTL = %d1-8 / %d11 / %d12 / %d14-31 / %d127 + +obs-ctext = obs-NO-WS-CTL + +ctext = %d33-39 / %d42-91 / %d93-126 / obs-ctext + +obs-qp = "\" ( %d0 / obs-NO-WS-CTL / LF / CR ) + +quoted-pair = ( "\" ( VCHAR / WSP ) ) / obs-qp + +ccontent = ctext / quoted-pair / comment + +comment = "(" *( [ FWS ] ccontent ) [ FWS ] ")" + +CFWS = ( 1*( [ FWS ] comment ) [ FWS ] ) / FWS + +day-name = "Mon" / "Tue" / "Wed" / "Thu" / "Fri" / "Sat" / "Sun" + +obs-day-of-week = [ CFWS ] day-name [ CFWS ] + +day-of-week = ( [ FWS ] day-name ) / obs-day-of-week + +obs-day = [ CFWS ] 1*2DIGIT [ CFWS ] + +day = ( [ FWS ] 1*2DIGIT FWS ) / obs-day + +month = "Jan" / "Feb" / "Mar" / "Apr" / "May" / "Jun" + / "Jul" / "Aug" / "Sep" / "Oct" / "Nov" / "Dec" + +obs-year = [ CFWS ] 2*DIGIT [ CFWS ] + +year = ( FWS 4*DIGIT FWS ) / obs-year + +date = day month year + +obs-hour = [ CFWS ] 2DIGIT [ CFWS ] + +hour = obs-hour / 2DIGIT + +obs-minute = [ CFWS ] 2DIGIT [ CFWS ] + +minute = obs-minute / 2DIGIT + +obs-second = [ CFWS ] 2DIGIT [ CFWS ] + +second = obs-second / 2DIGIT + +time-of-day = hour ":" minute [ ":" second ] + +obs-zone = "UT" / "GMT" / "EST" / "EDT" / "CST" / "CDT" / "MST" / "MDT" + / "PST" / "PDT" / %d65-73 / %d75-90 / %d97-105 / %d107-122 + +zone = ( FWS ( "+" / "-" ) 4DIGIT ) / obs-zone + +time = time-of-day zone + +date-time = [ day-of-week "," ] date time [ CFWS ] + + + +; ---------------------------------------- +; RFC 6749 +; ---------------------------------------- + +NQCHAR = %x21 / %x23-5B / %x5D-7E + + + +; ---------------------------------------- +; RFC 9110 +; ---------------------------------------- + +OWS = *( SP / HTAB ) + +RWS = 1*( SP / HTAB ) + +tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" + / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA + +token = 1*tchar + +BWS = OWS + +quoted-string = DQUOTE *( qdtext / quoted-pair ) DQUOTE + +qdtext = HTAB / SP / %x21 / %x23-5B / %x5D-7E / obs-text + +obs-text = %x80-FF + + +date1 = day-rfc9110 SP month-rfc9110 SP year-rfc9110 ; e.g., 02 Jun 1982 + +day-rfc9110 = 2DIGIT + +month-rfc9110 = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + +year-rfc9110 = 4DIGIT + +codings = content-coding / "identity" / "*" + +content-coding = token + +weight = OWS ";" OWS "q=" qvalue + +qvalue = ( "0" [ "." *3DIGIT ] ) / ( "1" [ "." *3"0" ] ) + + +credentials = auth-scheme [ 1*SP ( token68 + / [ ( "," / auth-param ) *( OWS "," [ OWS auth-param ] ) ] ) ] + +auth-scheme = token + +auth-param = token BWS "=" BWS ( token / quoted-string ) + +token68 = 1*( ALPHA / DIGIT / "-" / "." / "_" / "~" / "+" / "/" ) *"=" + + + +; ---------------------------------------- +; 3GPP TS 29.500 +; +; Version: 18.3.0 (September 2023) +; +; (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +; ---------------------------------------- + + +; +; Header: 3gpp-Sbi-Message-Priority +; + +Sbi-Message-Priority-Header = "3gpp-Sbi-Message-Priority:" OWS + ( "3" %x30-31 / %x31-32 DIGIT / DIGIT ) OWS + + + +; +; Header: 3gpp-Sbi-Callback +; + +Sbi-Callback-Header = "3gpp-Sbi-Callback:" OWS cbtype *1( ";" OWS "apiversion=" majorversion ) OWS + +cbchar = "-" / "_" / DIGIT / ALPHA + +cbtype = 1*cbchar + +majorversion = *DIGIT + + + +; +; Header: 3gpp-Sbi-Target-apiRoot +; + +Sbi-Target-ApiRoot-Header = "3gpp-Sbi-Target-apiRoot:" OWS sbi-scheme "://" sbi-authority + [ prefix ] OWS + +sbi-scheme = "https" / "http" + +sbi-authority = host [ ":" port ] + +prefix = path-absolute + + + +; +; Header: 3gpp-Sbi-Routing-Binding +; + +Sbi-Routing-Binding-Header = "3gpp-Sbi-Routing-Binding:" OWS "bl=" blvalue + 1*( ";" OWS parameter ) + [ ";" OWS callback-uri-prefix ] OWS + +blvalue = "nf-instance" + / "nf-set" + / "nfservice-instance" + / "nfservice-set" + +parametername = "nfinst" + / "nfset" + / "nfservinst" + / "nfserviceset" + / "servname" + / "backupamfinst" + / "backupnf" + +parameter = parametername "=" token + + + +; +; Header: 3gpp-Sbi-Binding +; + +Sbi-Binding-Header = "3gpp-Sbi-Binding:" OWS binding-element *( OWS "," OWS binding-element ) OWS + +binding-element = "bl=" blvalue 1*( ";" OWS bh-parameter ) + [ ";" OWS recoverytime ] + [ ";" OWS notif-receiver ] + [ ";" OWS "group=" groupvalue ] + [ 1*( ";" OWS groupparameter ) ] + [ ";" OWS "no-redundancy=" no-red-value ] + [ ";" OWS callback-uri-prefix ] OWS + +bh-parametername = parametername / "scope" + +bh-parameter = bh-parametername "=" token + +recoverytime = "recoverytime=" OWS DQUOTE date-time DQUOTE + +notif-receiver = "nr=" URI + +groupvalue = "true" / "false" + +groupparametername = "oldgroupid" + / "groupid" + / "uribase" + / "oldnfinst" + / "oldservset" + / "oldservinst" + / "guami" + +groupparameter = groupparametername "=" token + +no-red-value = "true" + + + +; +; Header: 3gpp-Sbi-Producer-Id +; + +Sbi-Producer-Id-Header = "3gpp-Sbi-Producer-Id:" OWS "nfinst=" nfinst + [ OWS ";" OWS "nfservinst=" nfservinst ] + [ OWS ";" OWS "nfset=" nfset ] + [ OWS ";" OWS "nfserviceset=" nfserviceset ] OWS + +nfinst = 8HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 4HEXDIG "-" 12HEXDIG + +nfservinst = token + +nfset = token + +nfserviceset = token + + + +; +; Header: 3gpp-Sbi-Oci +; + +Sbi-Oci-Header = "3gpp-Sbi-Oci:" OWS oci-element *( OWS "," OWS oci-element ) OWS + +oci-element = timestamp ";" RWS validityPeriod ";" RWS olcMetric ";" RWS olcScope + +timestamp = "Timestamp:" RWS DQUOTE date-time DQUOTE + +validityPeriod = "Period-of-Validity:" RWS 1*DIGIT "s" + +olcMetric = "Overload-Reduction-Metric:" RWS ( "100" / %x31-39 DIGIT / DIGIT ) "%" + +olcScope = nfProducerScope / nfConsumerScope / scpScope / seppScope + +nfProducerScope = ( ( "NF-Instance:" RWS nfinst ) + / ( "NF-Set:" RWS nfset ) + / ( "NF-Service-Instance:" RWS nfservinst [ ";" RWS "NF-Inst:" RWS nfinst ] ) + / ( "NF-Service-Set:" RWS nfserviceset ) + ) [ ";" RWS sNssaiList ";" RWS dnnList ] + +nfConsumerScope = ( "NFC-Instance:" RWS nfinst [ ";" RWS "Service-Name:" RWS servname ] ) + / ( "NFC-Set:" RWS nfset [ ";" RWS "Service-Name:" RWS servname ]) + / ( "NFC-Service-Instance:" RWS nfservinst [";" RWS "NF-Inst:" RWS nfinst ] ) + / ( "NFC-Service-Set:" RWS nfserviceset ) + / ( "Callback-Uri:" RWS DQUOTE URI DQUOTE *( RWS "&" RWS DQUOTE URI DQUOTE )) + +servname = token + +scpScope = "SCP-FQDN:" RWS fqdn + +seppScope = "SEPP-FQDN:" RWS fqdn + +fqdn = token + +dnnList = "DNN:" RWS 1*tchar *( RWS "&" RWS 1*tchar ) + +sNssaiList = "S-NSSAI:" RWS snssai *( RWS "&" RWS snssai ) + +snssai = 1*tchar + + + +; +; Header: 3gpp-Sbi-Lci +; + +Sbi-Lci-Header = "3gpp-Sbi-Lci:" OWS lc-element *( OWS "," OWS lc-element ) OWS + +lc-element = timestamp ";" RWS lcMetric ";" RWS lcScope + +lcMetric = "Load-Metric:" RWS ( "100" / %x31-39 DIGIT / DIGIT ) "%" + +lcScope = lcNfProducerScope / scpScope / seppScope + +lcNfProducerScope = ( ( "NF-Instance:" RWS nfinst ) + / ( "NF-Set:" RWS nfset) + / ( "NF-Service-Instance:" RWS nfservinst [ ";" RWS "NF-Inst:" RWS nfinst ] ) + / ( "NF-Service-Set:" RWS nfserviceset) + ) [ ";" RWS sNssaiList ";" RWS dnnList ";" RWS relativeCapacity ] + +relativeCapacity = "Relative-Capacity:" RWS ( "100" / 1*2DIGIT ) "%" + + + +; +; Header: 3gpp-Sbi-Client-Credentials +; + +Sbi-Client-Credentials-Header = "3gpp-Sbi-Client-Credentials:" OWS jwt OWS + +jwt = 1*b64urlchar "." 1*b64urlchar "." 1*b64urlchar + +b64urlchar = ALPHA / DIGIT / "-" / "_" + + + +; +; Header: 3gpp-Sbi-Source-NF-Client-Credentials +; + +Sbi-Source-NF-Client-Credentials-Header = "3gpp-Sbi-Source-NF-Client-Credentials:" OWS jwt OWS + + + +; +; Header: 3gpp-Sbi-Nrf-Uri +; + +Sbi-Nrf-Uri-Header = "3gpp-Sbi-Nrf-Uri:" OWS nrfUriParam *( OWS ";" OWS nrfUriParam ) OWS + +nrfUriParam = nrfUriParamName ":" RWS ( nrfUriParamValue1 / nrfUriParamValue2 ) + +nrfUriParamName = "nnrf-disc" / "nnrf-nfm" / "nnrf-oauth2" / "oauth2-requested-services" / token + +nrfUriParamValue1 = DQUOTE URI DQUOTE + +nrfUriParamValue2 = ( nrfServiceName *( RWS "&" RWS nrfServiceName ) ) + +nrfServiceName = "nnrf-disc" / "nnrf-nfm" + + + +; +; Header: 3gpp-Sbi-Target-Nf-Id +; + +Sbi-Target-Nf-Id-Header = "3gpp-Sbi-Target-Nf-Id:" OWS "nfinst=" nfinst + [ ";" OWS "nfservinst=" nfservinst ] OWS + + + +; +; Header: 3gpp-Sbi-Max-Forward-Hops +; + +Sbi-Max-Forward-Hops-Header = "3gpp-Sbi-Max-Forward-Hops:" OWS ( %x31-39 DIGIT / DIGIT ) + ";" OWS "nodetype=" nodetypevalue OWS + +nodetypevalue = "scp" + + + +; +; Header: 3gpp-Sbi-Originating-Network-Id +; + +Sbi-Originating-Network-Id-Header = "3gpp-Sbi-Originating-Network-Id:" OWS 3DIGIT "-" 2*3DIGIT + [ "-" 11HEXDIG ] [ ";" OWS srcinfo ] OWS + +srcinfo = "src" ":" RWS srctype "-" srcfqdn + +srctype = "SCP" / "SEPP" + +srcfqdn = 4*( ALPHA / DIGIT / "-" / "." ) + + + +; +; Header: 3gpp-Sbi-Access-Scope +; + +Sbi-Access-Scope-Header = "3gpp-Sbi-Access-Scope:" OWS scope-token *( SP scope-token ) OWS + +scope-token = 1*NQCHAR + + + +; +; Header: 3gpp-Sbi-Other-Access-Scopes +; + +Sbi-Other-Access-Scopes-Header = "3gpp-Sbi-Other-Access-Scopes:" OWS scope-token + *( SP scope-token ) OWS + + + +; +; Header: 3gpp-Sbi-Access-Token +; + +Sbi-Access-Token-Header = "3gpp-Sbi-Access-Token:" OWS credentials OWS + + + +; +; Header: 3gpp-Sbi-Target-Nf-Group-Id +; + +Sbi-Target-Nf-Group-Id-Header = "3gpp-Sbi-Target-Nf-Group-Id:" OWS "nfgid=" nfGroupIdValue OWS + +nfGroupIdValue = DQUOTE token DQUOTE + + + +; +; Header: 3gpp-Sbi-Nrf-Uri-Callback +; + +Sbi-Nrf-Uri-Callback-Header = "3gpp-Sbi-Nrf-Uri-Callback:" OWS + nrfUriCallbackParam *( OWS ";" OWS nrfUriCallbackParam ) OWS + +nrfUriCallbackParam = nrfUriCallbackParamName ":" RWS nrfUriCallbackParamValue + +nrfUriCallbackParamName = "nnrf-disc" / "nnrf-nfm" / token + +nrfUriCallbackParamValue = DQUOTE URI DQUOTE + + + +; +; Header: 3gpp-Sbi-NF-Peer-Info +; + +Sbi-NF-Peer-Info-Header = "3gpp-Sbi-NF-Peer-Info:" OWS peerinfo *( ";" OWS peerinfo ) OWS + +peerinfo = peertype "=" token + +peertype = "srcinst" + / "srcservinst" + / "srcscp" + / "srcsepp" + / "dstinst" + / "dstservinst" + / "dstscp" + / "dstsepp" + + + +; +; Header: 3gpp-Sbi-Sender-Timestamp +; + +Sbi-Sender-Timestamp-Header = "3gpp-Sbi-Sender-Timestamp:" OWS + day-name "," SP date1 SP time-of-day "." milliseconds SP "GMT" OWS + +milliseconds = 3DIGIT + + + +; +; Header: 3gpp-Sbi-Max-Rsp-Time +; + +Sbi-Max-Rsp-Time-Header = "3gpp-Sbi-Max-Rsp-Time:" OWS 1*5DIGIT OWS + + + +; +; Header: 3gpp-Sbi-Correlation-Info +; + +Sbi-Correlation-Info-Header = "3gpp-Sbi-Correlation-Info:" OWS + correlationinfo *( ";" OWS correlationinfo ) OWS + +correlationinfo = ctype "-" cvalue + +ctype = extension-token / "imsi" / "impi" / "suci" / "nai" / "gci" / "gli" + / "impu" / "msisdn" / "extid" / "imeisv" / "imei" / "mac" / "eui" + +extension-token = 1*( "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "." / "^" / "_" + / "`" / "|" / "~" / DIGIT / ALPHA ) + +cvalue = 1*( tchar / "@" ) + + + +; +; Header: 3gpp-Sbi-Alternate-Chf-Id +; + +Sbi-Alternate-Chf-Id-Header = "3gpp-Sbi-Alternate-Chf-Id:" OWS + "nfinst=" nfinst ";" OWS ( "primary" / "secondary" ) OWS + + + +; +; Header: 3gpp-Sbi-Notif-Accepted-Encoding +; + +Sbi-Notif-Accepted-Encoding-Header = "3gpp-Sbi-Notif-Accepted-Encoding:" OWS + encoding-element *( OWS "," OWS encoding-element ) OWS + +encoding-element = codings [ weight ] + + + +; +; Header: 3gpp-Sbi-Consumer-Info +; + +Sbi-Consumer-Info-Header = "3gpp-Sbi-Consumer-Info:" OWS + consumer-info-element *( OWS "," OWS consumer-info-element ) OWS + +consumer-info-element = ( supportedService ";" OWS supportedVersions + [ ";" OWS supportedFeatures ] + [ ";" OWS acceptEncoding ] + [ ";" OWS callback-uri-prefix ] + ) [ ";" OWS intraPlmnCallbackRoot ";" OWS interPlmnCallbackRoot ] + +supportedService = "service=" servicename + +servicename = 1*( "-" / %x61-7A ) + +supportedVersions = "apiversion=" "(" OWS + [ apimajorversion *( RWS apimajorversion ) OWS ] ")" + +apimajorversion = %x31-39 [ *DIGIT ] + +supportedFeatures = "supportedfeatures=" features + +features = *HEXDIG + +acceptEncoding = "acceptencoding=" %x22 encodingList %x22 + +encodingList = [ encoding-element *( OWS "," OWS encoding-element ) ] + +intraPlmnCallbackRoot = "intraPlmnCallbackRoot=" + DQUOTE sbi-scheme "://" sbi-authority [ prefix ] DQUOTE + +interPlmnCallbackRoot = "interPlmnCallbackRoot=" + DQUOTE sbi-scheme "://" sbi-authority [ prefix ] DQUOTE + +callback-uri-prefix = "callback-uri-prefix=" DQUOTE prefix DQUOTE + + + +; +; Header: 3gpp-Sbi-Response-Info +; + +Sbi-Response-Info-Header = "3gpp-Sbi-Response-Info:" OWS + resp-info-param *( OWS ";" OWS resp-info-param ) OWS + +resp-info-param = resp-info-param-name "=" OWS resp-info-param-value + +resp-info-param-name = "request-retransmitted" + / "nfinst" + / "nfset" + / "nfservinst" + / "nfserviceset" + / "context-transferred" + / "no-retry" + / token + +resp-info-param-value = token + + + +; +; Header: 3gpp-Sbi-Selection-Info +; + +Sbi-Selection-Info-Header = "3gpp-Sbi-Selection-Info:" OWS + selection-info-element *( OWS "," OWS selection-info-element ) OWS + +selection-info-element = ( "reselection=" reselectionvalue *( ";" OWS selection-criteria ) ) + / ( selection-criteria *( ";" OWS selection-criteria ) ) +reselectionvalue = "true" / "false" + +selection-criteria = selection-action "=" token + +selection-action = "not-select-nfservinst" + / "not-select-nfserviceset" + / "not-select-nfinst" + / "not-select-nfset" + + + +; +; Header: 3gpp-Sbi-Interplmn-Purpose +; + +Sbi-Interplmn-Purpose-Header = "3gpp-Sbi-Interplmn-Purpose:" OWS N32Purpose ":" OWS + additional-info OWS + +N32Purpose = "ROAMING" + / "INTER_PLMN_MOBILITY" + / "SMS_INTERCONNECT" + / "ROAMING_TEST" + / "INTER_PLMN_MOBILITY_TEST" + / "SMS_INTERCONNECT_TEST" + / "SNPN_INTERCONNECT" + / "SNPN_INTERCONNECT_TEST" + / "DISASTER_ROAMING" + / "DISASTER_ROAMING_TEST" + / token + +additional-info = token + + + +; +; Header: 3gpp-Sbi-Request-Info +; + +Sbi-Request-Info-Header = "3gpp-Sbi-Request-Info:" OWS req-param *( ";" OWS req-param ) OWS + +req-param = req-param-name "=" OWS req-param-value + +req-param-name = "retrans" + / "redirect" + / "reason" + / "idempotency-key" + / "receivedrejectioncause" + / "callback-uri-prefix" + / token + +req-param-value = token + + + +; +; Header: 3gpp-Sbi-Retry-Info +; + +Sbi-Retry-Info-Header = "3gpp-Sbi-Retry-Info:" OWS retriesindication OWS + +retriesindication = "no-retries" + diff --git a/TS29502_CustomHeaders.abnf b/TS29502_CustomHeaders.abnf new file mode 100644 index 0000000..bccb796 --- /dev/null +++ b/TS29502_CustomHeaders.abnf @@ -0,0 +1,72 @@ +; ---------------------------------------- +; RFC 5234 +; ---------------------------------------- + +HTAB = %x09 ; horizontal tab + +SP = %x20 + +DIGIT = %x30-39 ; 0-9 + + + +; ---------------------------------------- +; RFC 9110 +; ---------------------------------------- + +OWS = *( SP / HTAB ) + + +date1 = day SP month SP year ; e.g., 02 Jun 1982 + +day = 2DIGIT + +month = %x4A.61.6E ; "Jan", case-sensitive + / %x46.65.62 ; "Feb", case-sensitive + / %x4D.61.72 ; "Mar", case-sensitive + / %x41.70.72 ; "Apr", case-sensitive + / %x4D.61.79 ; "May", case-sensitive + / %x4A.75.6E ; "Jun", case-sensitive + / %x4A.75.6C ; "Jul", case-sensitive + / %x41.75.67 ; "Aug", case-sensitive + / %x53.65.70 ; "Sep", case-sensitive + / %x4F.63.74 ; "Oct", case-sensitive + / %x4E.6F.76 ; "Nov", case-sensitive + / %x44.65.63 ; "Dec", case-sensitive + +year = 4DIGIT + +day-name = %x4D.6F.6E ; Mon + / %x54.75.65 ; Tue + / %x57.65.64 ; Wed + / %x54.68.75 ; Thu + / %x46.72.69 ; Fri + / %x53.61.74 ; Sat + / %x53.75.6E ; Sun + +time-of-day = hour ":" minute ":" second + +hour = 2DIGIT + +minute = 2DIGIT + +second = 2DIGIT + + + +; ---------------------------------------- +; 3GPP TS 29.502 +; +; Version: 18.5.0 (December 2023) +; +; (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +; ---------------------------------------- + +; +; Header: 3gpp-Sbi-Origination-Timestamp +; + +Sbi-Origination-Timestamp-Header = "3gpp-Sbi-Origination-Timestamp:" OWS day-name "," + SP date1 SP time-of-day "." milliseconds SP "GMT" OWS + +milliseconds = 3DIGIT diff --git a/TS29502_Nsmf_PDUSession.yaml b/TS29502_Nsmf_PDUSession.yaml new file mode 100644 index 0000000..df5afb7 --- /dev/null +++ b/TS29502_Nsmf_PDUSession.yaml @@ -0,0 +1,5335 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.6' + title: 'Nsmf_PDUSession' + description: | + SMF PDU Session Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.502 V18.5.0; 5G System; Session Management Services; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.502/ + +servers: + - url: '{apiRoot}/nsmf-pdusession/v1' + variables: + apiRoot: + default: https://example.com + description: > + apiRoot as defined in clause 4.4 of 3GPP TS 29.501. The sm-contexts and pdu-sessions + resources can be distributed on different processing instances or hosts. Thus the + authority and/or deployment-specific string of the apiRoot of the created individual + sm context and pdu-session resources' URIs may differ from the authority and/or + deployment-specific string of the apiRoot of the sm-contexts and pdu-sessions + collections' URIs. + +security: + - {} + - oAuth2ClientCredentials: + - nsmf-pdusession + +paths: + /sm-contexts: + post: + summary: Create SM Context + tags: + - SM contexts collection + operationId: PostSmContexts + requestBody: + description: representation of the SM context to be created in the SMF + required: true + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateData' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + binaryDataN2SmInformationExt1: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + callbacks: + smContextStatusNotification: + '{$request.body#/smContextStatusUri}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextStatusNotification' + responses: + '204': + description: successful notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + responses: + '201': + description: successful creation of an SM context + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreatedData' + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nsmf-pdusession//sm-contexts/{smContextRef} + required: true + schema: + type: string + + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: unsuccessful creation of an SM context - bad request + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '401': + $ref: '#/components/responses/401' + '403': + description: unsuccessful creation of an SM context - forbidden + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '404': + description: unsuccessful creation of an SM context - not found + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: '#/components/responses/413' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + description: unsuccessful creation of an SM context - internal server error + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '502': + $ref: '#/components/responses/502' + '503': + description: unsuccessful creation of an SM context - service unavailable + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '504': + description: unsuccessful creation of an SM context - gateway timeout + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextCreateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmMessage: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /sm-contexts/{smContextRef}/retrieve: + post: + summary: Retrieve SM Context + tags: + - Individual SM context + operationId: RetrieveSmContext + parameters: + - name: smContextRef + in: path + description: SM context reference + required: true + schema: + type: string + requestBody: + description: parameters used to retrieve the SM context + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextRetrieveData' + responses: + '200': + description: successful retrieval of an SM context + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextRetrievedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextRef}/modify: + post: + summary: Update SM Context + tags: + - Individual SM context + operationId: UpdateSmContext + parameters: + - name: smContextRef + in: path + description: SM context reference + required: true + schema: + type: string + requestBody: + description: representation of the updates to apply to the SM context + required: true + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateData' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + binaryDataN2SmInformationExt1: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + responses: + '200': + description: successful update of an SM context with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdatedData' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '204': + description: successful update of an SM context without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: unsuccessful update of an SM context - bad request + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '401': + $ref: '#/components/responses/401' + '403': + description: unsuccessful update of an SM context - forbidden + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '404': + description: unsuccessful update of an SM context - not found + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateError' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: '#/components/responses/413' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + description: unsuccessful update of an SM context - Internal server error + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '502': + $ref: '#/components/responses/502' + '503': + description: unsuccessful update of an SM context - Service Unavailable + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextUpdateError' + binaryDataN1SmMessage: + type: string + format: binary + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmMessage: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextRef}/release: + post: + summary: Release SM Context + tags: + - Individual SM context + operationId: ReleaseSmContext + parameters: + - name: smContextRef + in: path + description: SM context reference + required: true + schema: + type: string + requestBody: + description: representation of the data to be sent to the SMF when releasing the SM context + required: false + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextReleaseData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/SmContextReleaseData' + binaryDataN2SmInformation: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2SmInformation: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + + responses: + '200': + description: successful release of a PDU session with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/SmContextReleasedData' + '204': + description: successful release of an SM context without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextRef}/send-mo-data: + post: + summary: Send MO Data + tags: + - Individual SM context + operationId: SendMoData + parameters: + - name: smContextRef + in: path + description: SM context reference + required: true + schema: + type: string + requestBody: + description: representation of the content of Send MO Data Request + required: true + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SendMoDataReqData' + binaryMoData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMoData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: successful sending of MO data + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: '#/components/responses/400' + '401': + $ref: '#/components/responses/401' + '403': + $ref: '#/components/responses/403' + '404': + $ref: '#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: '#/components/responses/413' + '415': + $ref: '#/components/responses/415' + '429': + $ref: '#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: '#/components/responses/502' + '503': + $ref: '#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdu-sessions: + post: + summary: Create + tags: + - PDU sessions collection + operationId: PostPduSessions + requestBody: + description: representation of the PDU session to be created in the H-SMF or SMF + required: true + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/PduSessionCreateData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/PduSessionCreateData' + binaryDataN1SmInfoFromUe: + type: string + format: binary + binaryDataUnknownN1SmInfo: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoFromUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataUnknownN1SmInfo: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + callbacks: + statusNotification: + '{$request.body#/vsmfPduSessionUri}': + post: + summary: Notify Status + tags: + - Individual PDU session (V-SMF) + operationId: NotifyStatus + requestBody: + $ref: '#/components/requestBodies/NotifyStatusRequestBody' + responses: + '204': + description: successful notificationof the status change + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + statusNotification-ismf: + '{$request.body#/ismfPduSessionUri}': + post: + summary: Notify Status + tags: + - Individual PDU session (I-SMF) + operationId: NotifyStatus-isfm + requestBody: + $ref: '#/components/requestBodies/NotifyStatusRequestBody' + responses: + '204': + description: successful notificationof the status change + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + update: + '{$request.body#/vsmfPduSessionUri}/modify': + post: + summary: Update (initiated by H-SMF) + tags: + - Individual PDU session (V-SMF) + operationId: ModifyPduSession + requestBody: + $ref: '#/components/requestBodies/VsmfUpdateRequestBody' + responses: + '200': + $ref: '#/components/responses/VsmfUpdateResponse200' + '204': + description: successful update of a PDU session without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: '#/components/responses/VsmfUpdateError' + '403': + $ref: '#/components/responses/VsmfUpdateError' + '404': + $ref: '#/components/responses/VsmfUpdateError' + '409': + $ref: '#/components/responses/VsmfUpdateError' + '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: '#/components/responses/VsmfUpdateError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: '#/components/responses/VsmfUpdateError' + '504': + $ref: '#/components/responses/VsmfUpdateError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + update-ismf: + '{$request.body#/ismfPduSessionUri}/modify': + post: + summary: Update (initiated by SMF) + tags: + - Individual PDU session (I-SMF) + operationId: ModifyPduSession-ismf + requestBody: + $ref: '#/components/requestBodies/VsmfUpdateRequestBody' + responses: + '200': + $ref: '#/components/responses/VsmfUpdateResponse200' + '204': + description: successful update of a PDU session without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: '#/components/responses/VsmfUpdateError' + '403': + $ref: '#/components/responses/VsmfUpdateError' + '404': + $ref: '#/components/responses/VsmfUpdateError' + '409': + $ref: '#/components/responses/VsmfUpdateError' + '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: '#/components/responses/VsmfUpdateError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: '#/components/responses/VsmfUpdateError' + '504': + $ref: '#/components/responses/VsmfUpdateError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + transferMtData: + '{$request.body#/vsmfPduSessionUri}/transfer-mt-data': + post: + summary: Transfer MT Data (by H-SMF) + tags: + - Individual PDU session (V-SMF) + operationId: TransferMtData + requestBody: + description: representation of the content of Transfer MT Data Request + required: true + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/TransferMtDataReqData' + binaryMtData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMtData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: successful transfering of MT data + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: unsuccessful delivery of mobile terminated data - gateway timeout + content: + application/json: + schema: + $ref: '#/components/schemas/TransferMtDataError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + transferMtData-ismf: + '{$request.body#/ismfPduSessionUri}/transfer-mt-data': + post: + summary: Transfer MT Data (by SMF) + tags: + - Individual PDU session (I-SMF) + operationId: TransferMtData-ismf + requestBody: + description: representation of the content of Transfer MT Data Request + required: true + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/TransferMtDataReqData' + binaryMtData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMtData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: successful transfering of MT data + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: unsuccessful delivery of mobile terminated data - gateway timeout + content: + application/json: + schema: + $ref: '#/components/schemas/TransferMtDataError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + responses: + '201': + description: successful creation of a PDU session + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/PduSessionCreatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/PduSessionCreatedData' + binaryDataN1SmInfoToUe: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoToUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nsmf-pdusession//pdu-sessions/{pduSessionRef} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: '#/components/responses/PduSessionCreateError' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: '#/components/responses/PduSessionCreateError' + '404': + $ref: '#/components/responses/PduSessionCreateError' + '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: '#/components/responses/PduSessionCreateError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: '#/components/responses/PduSessionCreateError' + '504': + $ref: '#/components/responses/PduSessionCreateError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdu-sessions/{pduSessionRef}/modify: + post: + summary: Update (initiated by V-SMF or I-SMF) + tags: + - Individual PDU session (H-SMF or SMF) + operationId: UpdatePduSession + parameters: + - name: pduSessionRef + in: path + description: PDU session reference + required: true + schema: + type: string + requestBody: + description: representation of the updates to apply to the PDU session + required: true + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/HsmfUpdateData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/HsmfUpdateData' + binaryDataN1SmInfoFromUe: + type: string + format: binary + binaryDataUnknownN1SmInfo: + type: string + format: binary + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoFromUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataUnknownN1SmInfo: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + responses: + '200': + description: successful update of a PDU session with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/HsmfUpdatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/HsmfUpdatedData' + binaryDataN1SmInfoToUe: + type: string + format: binary + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoToUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + '204': + description: successful update of a PDU session without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: '#/components/responses/HsmfUpdateError' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: '#/components/responses/HsmfUpdateError' + '404': + $ref: '#/components/responses/HsmfUpdateError' + '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: '#/components/responses/HsmfUpdateError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: '#/components/responses/HsmfUpdateError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdu-sessions/{pduSessionRef}/release: + post: + summary: Release + tags: + - Individual PDU session (H-SMF or SMF) + operationId: ReleasePduSession + parameters: + - name: pduSessionRef + in: path + description: PDU session reference + required: true + schema: + type: string + requestBody: + description: data sent to H-SMF or SMF when releasing the PDU session + required: false + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/ReleaseData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/ReleaseData' + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + + responses: + '200': + description: successful release of a PDU session with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/ReleasedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/ReleasedData' + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + '204': + description: successful release of a PDU session + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdu-sessions/{pduSessionRef}/retrieve: + post: + summary: Retrieve + tags: + - Individual PDU session (H-SMF or SMF) + operationId: RetrievePduSession + parameters: + - name: pduSessionRef + in: path + description: PDU session reference + required: true + schema: + type: string + requestBody: + description: representation of the content of the Retrieve Request + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RetrieveData' + responses: + '200': + description: successful information retrieval + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/RetrievedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdu-sessions/{pduSessionRef}/transfer-mo-data: + post: + summary: Transfer MO Data + tags: + - Individual PDU session (H-SMF or SMF) + operationId: TransferMoData + parameters: + - name: pduSessionRef + in: path + description: PDU session reference + required: true + schema: + type: string + requestBody: + description: representation of the content of Transfer MO Data Request + required: true + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/TransferMoDataReqData' + binaryMoData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMoData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: successful transfering of MO data + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nsmf-pdusession: Access to the nsmf-pdusession API + + schemas: +# +# STRUCTURED DATA TYPES +# + SmContextCreateData: + description: Data within Create SM Context Request + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + unauthenticatedSupi: + type: boolean + default: false + roamingUeInd: + type: boolean + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + selectedDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + altSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + altHplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + servingNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + serviceName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + requestType: + $ref: '#/components/schemas/RequestType' + n1SmMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + presenceInLadn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + perLadnDnnSnssaiInd: + type: boolean + default: false + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + smContextStatusUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + hSmfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + hSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + additionalHsmfUri: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + additionalHsmfId: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + additionalSmfUri: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + additionalSmfId: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + oldPduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + pduSessionsActivateList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + ueEpsPdnConnection: + $ref: '#/components/schemas/EpsPdnCnxContainer' + hoState: + $ref: '#/components/schemas/HoState' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + nrfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + selMode: + $ref: '#/components/schemas/DnnSelectionMode' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + minItems: 1 + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + hNwPubKeyId: + type: integer + epsInterworkingInd: + $ref: '#/components/schemas/EpsInterworkingIndication' + indirectForwardingFlag: + type: boolean + directForwardingFlag: + type: boolean + targetId: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/NgRanTargetId' + epsBearerCtxStatus: + $ref: '#/components/schemas/EpsBearerContextStatus' + cpCiotEnabled: + type: boolean + default: false + cpOnlyInd: + type: boolean + default: false + invokeNef: + type: boolean + default: false + maRequestInd: + type: boolean + default: false + maNwUpgradeInd: + type: boolean + default: false + n3gPathSwitchSupportInd: + type: boolean + default: false + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + n2SmInfoExt1: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoTypeExt1: + $ref: '#/components/schemas/N2SmInfoType' + smContextRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smContextSmfPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + smContextSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smContextSmfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + smContextSmfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + smContextSmfBinding: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/SbiBindingLevel' + upCnxState: + $ref: '#/components/schemas/UpCnxState' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + extendedNasSmTimerInd: + type: boolean + default: false + dlDataWaitingInd: + type: boolean + default: false + ddnFailureSubs: + $ref: '#/components/schemas/DdnFailureSubs' + smfTransferInd: + type: boolean + default: false + oldSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + oldSmContextRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + wAgfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/WAgfInfo' + tngfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TngfInfo' + twifInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TwifInfo' + ranUnchangedInd: + type: boolean + samePcfSelectionInd: + type: boolean + default: false + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + nrfManagementUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfDiscoveryUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfAccessTokenUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfOauth2Required: + type: object + description: 'Map indicating whether the NRF requires Oauth2-based authorization for + accessing its services. The key of the map shall be the name of an NRF service, e.g. + "nnrf-nfm" or "nnrf-disc"' + additionalProperties: + type: boolean + minProperties: 1 + smfBindingInfo: + type: string + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + onboardingInd: + type: boolean + default: false + oldPduSessionRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smPolicyNotifyInd: + type: boolean + default: false + pcfUeCallbackInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + upipSupported: + type: boolean + default: false + disasterRoamingInd: + type: boolean + default: false + anchorSmfOauth2Required: + type: boolean + smContextSmfOauth2Required: + type: boolean + geoSatelliteId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GeoSatelliteId' + hrsboAllowedInd: + type: boolean + default: false + estabRejectionInd: + type: boolean + enum: + - true + estabRejectionCause: + $ref: '#/components/schemas/EstablishmentRejectionCause' + required: + - servingNfId + - servingNetwork + - anType + - smContextStatusUri + + SmContextCreatedData: + description: Data within Create SM Context Response + type: object + properties: + hSmfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + additionalSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + upCnxState: + $ref: '#/components/schemas/UpCnxState' + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + allocatedEbiList: + type: array + items: + $ref: '#/components/schemas/EbiArpMapping' + minItems: 1 + hoState: + $ref: '#/components/schemas/HoState' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + smfServiceInstanceId: + type: string + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + selectedSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + selectedOldSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + + SmContextUpdateData: + description: Data within Update SM Context Request + type: object + properties: + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + servingNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + minItems: 1 + nullable: true + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + anTypeToReactivate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + presenceInLadn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + upCnxState: + $ref: '#/components/schemas/UpCnxState' + hoState: + $ref: '#/components/schemas/HoState' + toBeSwitched: + type: boolean + default: false + failedToBeSwitched: + type: boolean + n1SmMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + targetId: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/NgRanTargetId' + targetServingNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smContextStatusUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + dataForwarding: + type: boolean + default: false + n9ForwardingTunnel: + $ref: '#/components/schemas/TunnelInfo' + n9DlForwardingTnlList: + type: array + items: + $ref: '#/components/schemas/IndirectDataForwardingTunnelInfo' + minItems: 1 + n9UlForwardingTnlList: + type: array + items: + $ref: '#/components/schemas/IndirectDataForwardingTunnelInfo' + minItems: 1 + n9DlForwardingTunnel: + $ref: '#/components/schemas/TunnelInfo' + n9InactivityTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + epsBearerSetup: + type: array + items: + $ref: '#/components/schemas/EpsBearerContainer' + minItems: 0 + revokeEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + release: + type: boolean + default: false + cause: + $ref: '#/components/schemas/Cause' + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + epsInterworkingInd: + $ref: '#/components/schemas/EpsInterworkingIndication' + anTypeCanBeChanged: + type: boolean + default: false + n2SmInfoExt1: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoTypeExt1: + $ref: '#/components/schemas/N2SmInfoType' + maReleaseInd: + $ref: '#/components/schemas/MaReleaseIndication' + maNwUpgradeInd: + type: boolean + default: false + maRequestInd: + type: boolean + default: false + n3gPathSwitchExecutionInd: + type: boolean + enum: + - true + exemptionInd: + $ref: '#/components/schemas/ExemptionInd' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + moExpDataCounter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MoExpDataCounter' + extendedNasSmTimerInd: + type: boolean + forwardingFTeid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + forwardingBearerContexts: + type: array + items: + $ref: '#/components/schemas/ForwardingBearerContainer' + minItems: 1 + ddnFailureSubs: + $ref: '#/components/schemas/DdnFailureSubs' + skipN2PduSessionResRelInd: + type: boolean + default: false + secondaryRatUsageDataReportContainer: + type: array + items: + $ref: '#/components/schemas/SecondaryRatUsageDataReportContainer' + minItems: 1 + smPolicyNotifyInd: + type: boolean + enum: + - true + pcfUeCallbackInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + cnBasedMt: + type: boolean + enum: + - true + geoSatelliteId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GeoSatelliteId' + altSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + altHplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + SmContextUpdatedData: + description: Data within Update SM Context Response + type: object + properties: + upCnxState: + $ref: '#/components/schemas/UpCnxState' + hoState: + $ref: '#/components/schemas/HoState' + releaseEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + allocatedEbiList: + type: array + items: + $ref: '#/components/schemas/EbiArpMapping' + minItems: 1 + modifiedEbiList: + type: array + items: + $ref: '#/components/schemas/EbiArpMapping' + minItems: 1 + n1SmMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + epsBearerSetup: + type: array + items: + $ref: '#/components/schemas/EpsBearerContainer' + minItems: 1 + dataForwarding: + type: boolean + n3DlForwardingTnlList: + type: array + items: + $ref: '#/components/schemas/IndirectDataForwardingTunnelInfo' + minItems: 1 + n3UlForwardingTnlList: + type: array + items: + $ref: '#/components/schemas/IndirectDataForwardingTunnelInfo' + minItems: 1 + n9UlForwardingTunnel: + $ref: '#/components/schemas/TunnelInfo' + cause: + $ref: '#/components/schemas/Cause' + maAcceptedInd: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + forwardingFTeid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + forwardingBearerContexts: + type: array + items: + $ref: '#/components/schemas/ForwardingBearerContainer' + minItems: 1 + selectedSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + selectedOldSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + anchorSmfFeatures: + $ref: '#/components/schemas/AnchorSmfFeatures' + + SmContextReleaseData: + description: Data within Release SM Context Request + type: object + properties: + cause: + $ref: '#/components/schemas/Cause' + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + vsmfReleaseOnly: + type: boolean + default: false + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + ismfReleaseOnly: + type: boolean + default: false + + SmContextReleasedData: + description: Data within Release SM Context Response + type: object + properties: + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + + SmContextStatusNotification: + description: Data within Notify SM Context Status Request + type: object + properties: + statusInfo: + $ref: '#/components/schemas/StatusInfo' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + ddnFailureStatus: + type: boolean + default: false + notifyCorrelationIdsForddnFailure: + type: array + items: + type: string + minItems: 1 + newIntermediateSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + newSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + newSmfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + oldSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + oldSmContextRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altAnchorSmfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altAnchorSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetDnaiInfo: + $ref: '#/components/schemas/TargetDnaiInfo' + oldPduSessionRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + required: + - statusInfo + + PduSessionCreateData: + description: Data within Create Request + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + unauthenticatedSupi: + type: boolean + default: false + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + selectedDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + altSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + vsmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ismfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + requestType: + $ref: '#/components/schemas/RequestType' + epsBearerId: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + pgwS8cFteid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + vsmfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ismfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + vcnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + icnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + n9ForwardingTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + additionalCnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + n1SmInfoFromUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + unknownN1SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + hPcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + hoPreparationIndication: + type: boolean + selMode: + $ref: '#/components/schemas/DnnSelectionMode' + alwaysOnRequested: + type: boolean + default: false + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + hNwPubKeyId: + type: integer + epsInterworkingInd: + $ref: '#/components/schemas/EpsInterworkingIndication' + vSmfServiceInstanceId: + type: string + iSmfServiceInstanceId: + type: string + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + roamingChargingProfile: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/RoamingChargingProfile' + chargingId: + type: string + pattern: '^(0|([1-9]{1}[0-9]{0,9}))$' + smfChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmfChargingId' + oldPduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + epsBearerCtxStatus: + $ref: '#/components/schemas/EpsBearerContextStatus' + amfNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + maxIntegrityProtectedDataRateUl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + cpCiotEnabled: + type: boolean + default: false + cpOnlyInd: + type: boolean + default: false + invokeNef: + type: boolean + default: false + maRequestInd: + type: boolean + default: false + maNwUpgradeInd: + type: boolean + default: false + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + presenceInLadn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + secondaryRatUsageInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageInfo' + minItems: 1 + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + dlServingPlmnRateCtl: + type: integer + minimum: 10 + upSecurityInfo: + $ref: '#/components/schemas/UpSecurityInfo' + vplmnQos: + $ref: '#/components/schemas/VplmnQos' + oldSmContextRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + redundantPduSessionInfo: + $ref: '#/components/schemas/RedundantPduSessionInformation' + oldPduSessionRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smPolicyNotifyInd: + type: boolean + default: false + pcfUeCallbackInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + upipSupported: + type: boolean + default: false + upCnxState: + $ref: '#/components/schemas/UpCnxState' + disasterRoamingInd: + type: boolean + default: false + hrsboInfo: + $ref: '#/components/schemas/HrsboInfoFromVplmn' + ecsAddrConfigInfos: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/EcsAddrConfigInfo' + minItems: 1 + pduSetSupportInd: + type: boolean + default: false + ecnMarkingCongestionInfoStatus: + type: array + items: + $ref: '#/components/schemas/EcnMarkingCongestionInfoStatus' + minItems: 1 + required: + - dnn + - servingNetwork + - anType + oneOf: + - required: [ vsmfId, vsmfPduSessionUri ] + - required: [ ismfId, ismfPduSessionUri ] + + PduSessionCreatedData: + description: Data within Create Response + type: object + properties: + pduSessionType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sscMode: + type: string + pattern: '^[0-7]$' + hcnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + cnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + additionalCnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + qosFlowsSetupList: + type: array + items: + $ref: '#/components/schemas/QosFlowSetupItem' + minItems: 1 + hSmfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + additionalSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + enablePauseCharging: + type: boolean + default: false + ueIpv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + n1SmInfoToUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + epsPdnCnxInfo: + $ref: '#/components/schemas/EpsPdnCnxInfo' + epsBearerInfo: + type: array + items: + $ref: '#/components/schemas/EpsBearerInfo' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + maxIntegrityProtectedDataRate: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + alwaysOnGranted: + type: boolean + default: false + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + upSecurity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UpSecurity' + roamingChargingProfile: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/RoamingChargingProfile' + hSmfServiceInstanceId: + type: string + smfServiceInstanceId: + type: string + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + ipv6MultiHomingInd: + type: boolean + default: false + maAcceptedInd: + type: boolean + default: false + homeProvidedChargingId: + type: string + pattern: '^(0|([1-9]{1}[0-9]{0,9}))$' + homeProvidedSmfChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmfChargingId' + nefExtBufSupportInd: + type: boolean + default: false + smallDataRateControlEnabled: + type: boolean + default: false + ueIpv6InterfaceId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + ipv6Index: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/IpIndex' + dnAaaAddress: + $ref: '#/components/schemas/IpAddress' + redundantPduSessionInfo: + $ref: '#/components/schemas/RedundantPduSessionInformation' + nspuSupportInd: + type: boolean + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + intraPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + hrsboInfo: + $ref: '#/components/schemas/HrsboInfoFromHplmn' + pendingUpdateInfoList: + type: array + items: + $ref: '#/components/schemas/PendingUpdateInfo' + minItems: 1 + required: + - pduSessionType + - sscMode + oneOf: + - required: [ hSmfInstanceId ] + - required: [ smfInstanceId ] + + HsmfUpdateData: + description: Data within Update Request towards H-SMF, or from I-SMF to SMF + type: object + properties: + requestIndication: + $ref: '#/components/schemas/RequestIndication' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + vcnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + icnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + additionalCnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + pauseCharging: + type: boolean + pti: + $ref: '#/components/schemas/ProcedureTransactionId' + n1SmInfoFromUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + unknownN1SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + qosFlowsRelNotifyList: + type: array + items: + $ref: '#/components/schemas/QosFlowItem' + minItems: 1 + qosFlowsVsmfRejectedList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + minItems: 1 + qosFlowsNotifyList: + type: array + items: + $ref: '#/components/schemas/QosFlowNotifyItem' + minItems: 1 + NotifyList: + type: array + items: + $ref: '#/components/schemas/PduSessionNotifyItem' + minItems: 1 +# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason. + epsBearerId: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 0 + hoPreparationIndication: + type: boolean + revokeEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + cause: + $ref: '#/components/schemas/Cause' + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + alwaysOnRequested: + type: boolean + default: false + epsInterworkingInd: + $ref: '#/components/schemas/EpsInterworkingIndication' + secondaryRatUsageReport: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageReport' + minItems: 1 + secondaryRatUsageInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageInfo' + minItems: 1 + anTypeCanBeChanged: + type: boolean + default: false + maReleaseInd: + $ref: '#/components/schemas/MaReleaseIndication' + maNwUpgradeInd: + type: boolean + default: false + maRequestInd: + type: boolean + default: false + unavailableAccessInd: + $ref: '#/components/schemas/UnavailableAccessIndication' + psaInfo: + type: array + items: + $ref: '#/components/schemas/PsaInformation' + minItems: 1 + ulclBpInfo: + $ref: '#/components/schemas/UlclBpInformation' + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + presenceInLadn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + vsmfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + vsmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + vSmfServiceInstanceId: + type: string + ismfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ismfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + iSmfServiceInstanceId: + type: string + dlServingPlmnRateCtl: + type: integer + minimum: 10 + nullable: true + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + roamingChargingProfile: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/RoamingChargingProfile' + moExpDataCounter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MoExpDataCounter' + vplmnQos: + $ref: '#/components/schemas/VplmnQos' + securityResult: + $ref: '#/components/schemas/SecurityResult' + upSecurityInfo: + $ref: '#/components/schemas/UpSecurityInfo' + amfNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + secondaryRatUsageDataReportContainer: + type: array + items: + $ref: '#/components/schemas/SecondaryRatUsageDataReportContainer' + minItems: 1 + smPolicyNotifyInd: + type: boolean + enum: + - true + pcfUeCallbackInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + maxIntegrityProtectedDataRateUl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + upCnxState: + $ref: '#/components/schemas/UpCnxState' + ecsAddrConfigInfos: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/EcsAddrConfigInfo' + minItems: 1 + hrsboInfo: + $ref: '#/components/schemas/HrsboInfoFromVplmn' + altSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + disasterRoamingInd: + type: boolean + enum: + - true + pduSetSupportInd: + type: boolean + ecnMarkingCongestionInfoStatus: + type: array + items: + $ref: '#/components/schemas/EcnMarkingCongestionInfoStatus' + minItems: 1 + required: + - requestIndication + + HsmfUpdatedData: + description: Data within Update Response from H-SMF, or from SMF to I-SMF + type: object + properties: + n1SmInfoToUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + roamingChargingProfile: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/RoamingChargingProfile' + homeProvidedChargingId: + type: string + pattern: '^(0|([1-9]{1}[0-9]{0,9}))$' + homeProvidedSmfChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmfChargingId' + upSecurity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UpSecurity' + maxIntegrityProtectedDataRateUl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + ipv6MultiHomingInd: + type: boolean + default: false + qosFlowsSetupList: + type: array + items: + $ref: '#/components/schemas/QosFlowSetupItem' + minItems: 1 + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + epsPdnCnxInfo: + $ref: '#/components/schemas/EpsPdnCnxInfo' + epsBearerInfo: + type: array + items: + $ref: '#/components/schemas/EpsBearerInfo' + minItems: 1 + pti: + $ref: '#/components/schemas/ProcedureTransactionId' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + intraPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + hrsboInfo: + $ref: '#/components/schemas/HrsboInfoFromHplmn' + + ReleaseData: + description: Data within Release Request + type: object + properties: + cause: + $ref: '#/components/schemas/Cause' + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + secondaryRatUsageReport: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageReport' + minItems: 1 + secondaryRatUsageInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageInfo' + minItems: 1 + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + + ReleasedData: + description: Data within Release Response + type: object + properties: + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + + VsmfUpdateData: + description: Data within Update Request towards V-SMF, or from SMF to I-SMF + type: object + properties: + requestIndication: + $ref: '#/components/schemas/RequestIndication' + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + qosFlowsAddModRequestList: + type: array + items: + $ref: '#/components/schemas/QosFlowAddModifyRequestItem' + minItems: 1 + qosFlowsRelRequestList: + type: array + items: + $ref: '#/components/schemas/QosFlowReleaseRequestItem' + minItems: 1 + epsBearerInfo: + type: array + items: + $ref: '#/components/schemas/EpsBearerInfo' + minItems: 1 + assignEbiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + revokeEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + modifiedEbiList: + type: array + items: + $ref: '#/components/schemas/EbiArpMapping' + minItems: 1 + pti: + $ref: '#/components/schemas/ProcedureTransactionId' + n1SmInfoToUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + alwaysOnGranted: + type: boolean + default: false + hsmfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + newSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + newSmfPduSessionUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + cause: + $ref: '#/components/schemas/Cause' + n1smCause: + type: string + backOffTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maReleaseInd: + $ref: '#/components/schemas/MaReleaseIndication' + maAcceptedInd: + type: boolean + default: false + additionalCnTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + n4InfoExt3: + $ref: '#/components/schemas/N4Information' + smallDataRateControlEnabled: + type: boolean + qosMonitoringInfo: + $ref: '#/components/schemas/QosMonitoringInfo' + epsPdnCnxInfo: + $ref: '#/components/schemas/EpsPdnCnxInfo' + n9DataForwardingInd: + type: boolean + default: false + n9InactivityTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + hrsboInfo: + $ref: '#/components/schemas/HrsboInfoFromHplmn' + altHplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + pduSessionRetainInd: + type: boolean + enum: + - true + pendingUpdateInfoList: + type: array + items: + $ref: '#/components/schemas/PendingUpdateInfo' + required: + - requestIndication + + VsmfUpdatedData: + description: Data within Update Response from V-SMF, or from I-SMF to SMF + type: object + properties: + qosFlowsAddModList: + type: array + items: + $ref: '#/components/schemas/QosFlowItem' + minItems: 1 + qosFlowsRelList: + type: array + items: + $ref: '#/components/schemas/QosFlowItem' + minItems: 1 + qosFlowsFailedtoAddModList: + type: array + items: + $ref: '#/components/schemas/QosFlowItem' + minItems: 1 + qosFlowsVsmfRejectedAddModList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + minItems: 1 + qosFlowsFailedtoRelList: + type: array + items: + $ref: '#/components/schemas/QosFlowItem' + minItems: 1 + n1SmInfoFromUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + unknownN1SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + addUeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + assignedEbiList: + type: array + items: + $ref: '#/components/schemas/EbiArpMapping' + minItems: 1 + failedToAssignEbiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + releasedEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + secondaryRatUsageReport: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageReport' + minItems: 1 + secondaryRatUsageInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SecondaryRatUsageInfo' + minItems: 1 + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + n4InfoExt3: + $ref: '#/components/schemas/N4Information' + modifiedEbiListNotDelivered: + type: boolean + ecnMarkingCongestionInfoStatus: + type: array + items: + $ref: '#/components/schemas/EcnMarkingCongestionInfoStatus' + minItems: 1 + + StatusNotification: + description: Data within Notify Status Request + type: object + properties: + statusInfo : + $ref: '#/components/schemas/StatusInfo' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + targetDnaiInfo: + $ref: '#/components/schemas/TargetDnaiInfo' + oldPduSessionRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + newSmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + epsPdnCnxInfo: + $ref: '#/components/schemas/EpsPdnCnxInfo' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + intraPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - statusInfo + + QosFlowItem: + description: Individual QoS flow + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + cause: + $ref: '#/components/schemas/Cause' + currentQosProfileIndex: + type: integer + minimum: 1 + maximum: 8 + nullQoSProfileIndex: + type: boolean + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + required: + - qfi + + QosFlowSetupItem: + description: Individual QoS flow to setup + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + qosRules: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + ebi: + $ref: '#/components/schemas/EpsBearerId' + qosFlowDescription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + qosFlowProfile: + $ref: '#/components/schemas/QosFlowProfile' + associatedAnType: + $ref: '#/components/schemas/QosFlowAccessType' + defaultQosRuleInd: + type: boolean + ecnMarkingCongestInfoReq: + $ref: '#/components/schemas/EcnMarkingCongestInfoReq' + required: + - qfi + - qosRules + + QosFlowAddModifyRequestItem: + description: Individual QoS flow requested to be created or modified + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + ebi: + $ref: '#/components/schemas/EpsBearerId' + qosRules: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + qosFlowDescription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + qosFlowProfile: + $ref: '#/components/schemas/QosFlowProfile' + associatedAnType: + $ref: '#/components/schemas/QosFlowAccessType' + ecnMarkingCongestInfoReq: + $ref: '#/components/schemas/EcnMarkingCongestInfoReq' + tscaiUl: + $ref: '#/components/schemas/TscAssistanceInformation' + tscaiDl: + $ref: '#/components/schemas/TscAssistanceInformation' + required: + - qfi + + QosFlowReleaseRequestItem: + description: Individual QoS flow requested to be released + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + qosRules: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + qosFlowDescription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + required: + - qfi + + QosFlowProfile: + description: QoS flow profile + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + nonDynamic5Qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NonDynamic5Qi' + dynamic5Qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dynamic5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + gbrQosFlowInfo: + $ref: '#/components/schemas/GbrQosFlowInformation' + rqa: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReflectiveQoSAttribute' + additionalQosFlowInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AdditionalQosFlowInfo' + qosMonitoringReq: + $ref: '#/components/schemas/QosMonitoringReq' + qosRepPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + pduSetQosPara: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara' + required: + - 5qi + + GbrQosFlowInformation: + description: GBR QoS flow information + type: object + properties: + maxFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxFbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + notifControl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationControl' + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPacketLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + alternativeQosProfileList: + type: array + items: + $ref: '#/components/schemas/AlternativeQosProfile' + required: + - maxFbrDl + - maxFbrUl + - guaFbrDl + - guaFbrUl + + QosFlowNotifyItem: + description: Notification related to a QoS flow + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + notificationCause: + $ref: '#/components/schemas/NotificationCause' + currentQosProfileIndex: + type: integer + minimum: 1 + maximum: 8 + nullQoSProfileIndex: + type: boolean + required: + - qfi + - notificationCause + + + SmContextRetrieveData: + description: Data within Retrieve SM Context Request + type: object + properties: + targetMmeCap: + $ref: '#/components/schemas/MmeCapabilities' + smContextType: + $ref: '#/components/schemas/SmContextType' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + notToTransferEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + ranUnchangedInd: + type: boolean + default: false + hrsboSupportInd: + type: boolean + default: false + storedOffloadIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OffloadIdentifier' + minItems: 1 + + SmContextRetrievedData: + description: Data within Retrieve SM Context Response + type: object + properties: + ueEpsPdnConnection: + $ref: '#/components/schemas/EpsPdnCnxContainer' + smContext: + $ref: '#/components/schemas/SmContext' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + dlDataWaitingInd: + type: boolean + default: false + afCoordinationInfo: + $ref: '#/components/schemas/AfCoordinationInfo' + required: + - ueEpsPdnConnection + + MmeCapabilities: + description: MME capabilities + type: object + properties: + nonIpSupported: + type: boolean + default: false + ethernetSupported: + type: boolean + default: false + upipSupported: + type: boolean + default: false + + TunnelInfo: + description: Tunnel Information + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + gtpTeid: + $ref: '#/components/schemas/Teid' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - gtpTeid + + StatusInfo: + description: Status of SM context or of PDU session + type: object + properties: + resourceStatus: + $ref: '#/components/schemas/ResourceStatus' + cause: + $ref: '#/components/schemas/Cause' + remoteError: + type: boolean + cnAssistedRanPara: + $ref: '#/components/schemas/CnAssistedRanPara' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - resourceStatus + + + EpsPdnCnxInfo: + description: EPS PDN Connection Information from H-SMF to V-SMF, or from SMF to I-SMF + type: object + properties: + pgwS8cFteid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + pgwNodeName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + pgwChangeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + linkedBearerId: + $ref: '#/components/schemas/EpsBearerId' + required: + - pgwS8cFteid + + EpsBearerInfo: + description: EPS Bearer Information from H-SMF to V-SMF, or from SMF to I-SMF + type: object + properties: + ebi: + $ref: '#/components/schemas/EpsBearerId' + pgwS8uFteid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + bearerLevelQoS: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + required: + - ebi + - pgwS8uFteid + - bearerLevelQoS + + PduSessionNotifyItem: + description: Notification related to a PDU session + type: object + properties: + notificationCause: + $ref: '#/components/schemas/NotificationCause' + required: + - notificationCause + + EbiArpMapping: + description: EBI to ARP mapping + type: object + properties: + epsBearerId: + $ref: '#/components/schemas/EpsBearerId' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + required: + - epsBearerId + - arp + + SmContextCreateError: + description: Error within Create SM Context Response + type: object + properties: + error: + $ref: '#/components/schemas/ExtProblemDetails' + n1SmMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - error + + SmContextUpdateError: + description: Error within Update SM Context Response + type: object + properties: + error: + $ref: '#/components/schemas/ExtProblemDetails' + n1SmMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n2SmInfoType: + $ref: '#/components/schemas/N2SmInfoType' + upCnxState: + $ref: '#/components/schemas/UpCnxState' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - error + + PduSessionCreateError: + description: Error within Create Response + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + n1smCause: + type: string + pattern: '^[A-F0-9]{2}$' + n1SmInfoToUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + backOffTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - error + + HsmfUpdateError: + description: Error within Update Response from H-SMF, or from SMF to I-SMF + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + pti: + $ref: '#/components/schemas/ProcedureTransactionId' + n1smCause: + type: string + pattern: '^[A-F0-9]{2}$' + n1SmInfoToUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + backOffTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - error + + VsmfUpdateError: + description: Error within Update Response from V-SMF, or from I-SMF to SMF + type: object + properties: + error: + $ref: '#/components/schemas/ExtProblemDetails' + pti: + $ref: '#/components/schemas/ProcedureTransactionId' + n1smCause: + type: string + pattern: '^[A-F0-9]{2}$' + n1SmInfoFromUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + unknownN1SmInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + failedToAssignEbiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + n4Info: + $ref: '#/components/schemas/N4Information' + n4InfoExt1: + $ref: '#/components/schemas/N4Information' + n4InfoExt2: + $ref: '#/components/schemas/N4Information' + n4InfoExt3: + $ref: '#/components/schemas/N4Information' + retryAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - error + + SmContext: + description: Complete SM Context + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + selectedDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + pduSessionType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + hSmfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smfUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + pduSessionRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + intraPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + selMode: + $ref: '#/components/schemas/DnnSelectionMode' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + hNwPubKeyId: + type: integer + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + qosFlowsList: + type: array + items: + $ref: '#/components/schemas/QosFlowSetupItem' + minItems: 1 + hSmfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pduSessionSmfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + pduSessionSmfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + pduSessionSmfBinding: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/SbiBindingLevel' + enablePauseCharging: + type: boolean + default: false + ueIpv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + epsPdnCnxInfo: + $ref: '#/components/schemas/EpsPdnCnxInfo' + epsBearerInfo: + type: array + items: + $ref: '#/components/schemas/EpsBearerInfo' + minItems: 1 + maxIntegrityProtectedDataRate: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + alwaysOnGranted: + type: boolean + default: false + upSecurity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UpSecurity' + hSmfServiceInstanceId: + type: string + smfServiceInstanceId: + type: string + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + forwardingInd: + type: boolean + default: false + psaTunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + chargingId: + type: string + pattern: '^(0|([1-9]{1}[0-9]{0,9}))$' + smfChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmfChargingId' + chargingInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ChargingInformation' + roamingChargingProfile: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/RoamingChargingProfile' + nefExtBufSupportInd: + type: boolean + default: false + ipv6Index: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/IpIndex' + dnAaaAddress: + $ref: '#/components/schemas/IpAddress' + redundantPduSessionInfo: + $ref: '#/components/schemas/RedundantPduSessionInformation' + ranTunnelInfo: + $ref: '#/components/schemas/QosFlowTunnel' + addRanTunnelInfo: + type: array + items: + $ref: '#/components/schemas/QosFlowTunnel' + minItems: 1 + redRanTunnelInfo: + $ref: '#/components/schemas/QosFlowTunnel' + addRedRanTunnelInfo: + type: array + items: + $ref: '#/components/schemas/QosFlowTunnel' + minItems: 1 + nspuSupportInd: + type: boolean + smfBindingInfo: + type: string + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + sscMode: + type: string + pattern: '^[0-7]$' + dlsetSupportInd: + type: boolean + n9fscSupportInd: + type: boolean + anchorSmfOauth2Required: + type: boolean + fullDnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + hrsboAuthReqInd: + type: boolean + hDnsAddr: + $ref: '#/components/schemas/IpAddress' + hPlmnAddr: + $ref: '#/components/schemas/IpAddress' + vplmnOffloadingInfoList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VplmnOffloadingInfo' + minItems: 1 + offloadIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OffloadIdentifier' + minItems: 1 + easIpReplacementInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + pendingUpdateInfoList: + type: array + items: + $ref: '#/components/schemas/PendingUpdateInfo' + minItems: 1 + easInfoToRefresh: + $ref: '#/components/schemas/EasInfoToRefresh' + pduSetSupportInd: + type: boolean + required: + - pduSessionId + - dnn + - sNssai + - pduSessionType + - sessionAmbr + - qosFlowsList + + ExemptionInd: + description: Exemption Indication + type: object + properties: + dnnCongestion: + type: boolean + default: false + snssaiOnlyCongestion: + type: boolean + default: false + snssaiDnnCongestion: + type: boolean + default: false + + PsaInformation: + description: PSA Information + type: object + properties: + psaInd: + $ref: '#/components/schemas/PsaIndication' + dnaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + ueIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + psaUpfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + DnaiInformation: + description: DNAI Information + type: object + properties: + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + noDnaiChangeInd: + type: boolean + noLocalPsaChangeInd: + type: boolean + required: + - dnai + + N4Information: + description: N4 Information + type: object + properties: + n4MessageType: + $ref: '#/components/schemas/N4MessageType' + n4MessagePayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + n4DnaiInfo: + $ref: '#/components/schemas/DnaiInformation' + psaUpfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ulClBpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + n9UlPdrIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + minItems: 1 + required: + - n4MessageType + - n4MessagePayload + + IndirectDataForwardingTunnelInfo: + description: Indirect Data Forwarding Tunnel Information + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + gtpTeid: + $ref: '#/components/schemas/Teid' + drbId: + $ref: '#/components/schemas/DrbId' + additionalTnlNb: + $ref: '#/components/schemas/AdditionalTnlNb' + required: + - gtpTeid + not: + required: [ drbId, additionalTnlNb ] + + SendMoDataReqData: + description: Data within Send MO Data Request + type: object + properties: + moData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + moExpDataCounter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MoExpDataCounter' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + required: + - moData + + CnAssistedRanPara: + description: SMF derived CN assisted RAN parameters tuning + type: object + properties: + stationaryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StationaryIndication' + communicationDurationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + periodicTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + scheduledCommunicationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTime' + scheduledCommunicationType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationType' + trafficProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficProfile' + batteryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BatteryIndication' + + UlclBpInformation: + description: UL CL or BP Information + type: object + properties: + ulclBpUpfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + TransferMoDataReqData: + description: Data within Transfer MO Data Request + type: object + properties: + moData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + moExpDataCounter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MoExpDataCounter' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + required: + - moData + + TransferMtDataReqData: + description: Data within Transfer MT Data Request + type: object + properties: + mtData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - mtData + + TransferMtDataError: + description: Transfer MT Data Error Response + allOf: + - $ref: '#/components/schemas/ExtProblemDetails' + - $ref: '#/components/schemas/TransferMtDataAddInfo' + + TransferMtDataAddInfo: + description: Transfer MT Data Error Response Additional Information + type: object + properties: + maxWaitingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + VplmnQos: + description: VPLMN QoS + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + maxFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxFbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + 5qiPL: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + + DdnFailureSubs: + description: DDN Failure Subscription + type: object + properties: + ddnFailureSubsInd: + type: boolean + default: false + ddnFailureSubsInfoList: + type: array + items: + $ref: '#/components/schemas/DdnFailureSubInfo' + minItems: 1 + + DdnFailureSubInfo: + description: DDN Failure Subscription Information + type: object + required: + - notifyCorrelationId + properties: + notifyCorrelationId: + type: string + dddTrafficDescriptorList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + + RetrieveData: + description: Data within Retrieve Request + type: object + properties: + smallDataRateStatusReq: + type: boolean + default: false + pduSessionContextType: + $ref: '#/components/schemas/PduSessionContextType' + + RetrievedData: + description: Data within Retrieve Response + type: object + properties: + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + afCoordinationInfo: + $ref: '#/components/schemas/AfCoordinationInfo' + + SecurityResult: + description: Security Result + type: object + properties: + integrityProtectionResult: + $ref: '#/components/schemas/ProtectionResult' + confidentialityProtectionResult: + $ref: '#/components/schemas/ProtectionResult' + + UpSecurityInfo: + description: User Plane Security Information + type: object + properties: + upSecurity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UpSecurity' + maxIntegrityProtectedDataRateUl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + maxIntegrityProtectedDataRateDl: + $ref: '#/components/schemas/MaxIntegrityProtectedDataRate' + securityResult: + $ref: '#/components/schemas/SecurityResult' + required: + - upSecurity + + AlternativeQosProfile: + description: Alternative QoS Profile + type: object + properties: + index: + type: integer + minimum: 1 + maximum: 8 + guaFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetErrRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + maxDataBurstVol: + type: integer + minimum: 1 + maximum: 2000000 + required: + - index + + ExtProblemDetails: + description: Extended Problem Details + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ProblemDetailsAddInfo' + + ProblemDetailsAddInfo: + description: Problem Details Additional Information + type: object + properties: + remoteError: + type: boolean + + QosMonitoringInfo: + description: QoS Monitoring Information + type: object + properties: + qosMonitoringInd: + type: boolean + default: false + + IpAddress: + description: IP Address + type: object + oneOf: + - required: + - ipv4Addr + - required: + - ipv6Addr + - required: + - ipv6Prefix + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ipv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + + RedundantPduSessionInformation: + description: Redundant PDU Session Information + type: object + properties: + rsn: + $ref: '#/components/schemas/Rsn' + pduSessionPairId: + type: integer + minimum: 0 + maximum: 255 + required: + - rsn + + QosFlowTunnel: + description: Tunnel Information per QoS Flow + type: object + properties: + qfiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + minItems: 1 + tunnelInfo: + $ref: '#/components/schemas/TunnelInfo' + required: + - qfiList + - tunnelInfo + + TargetDnaiInfo: + description: Target DNAI Information + type: object + properties: + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + smfSelectionType: + $ref: '#/components/schemas/SmfSelectionType' + required: + - smfSelectionType + + AfCoordinationInfo: + description: AF Coordination Information + type: object + properties: + sourceDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + sourceUeIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + sourceUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + notificationInfoList: + type: array + items: + $ref: '#/components/schemas/NotificationInfo' + minItems: 1 + + NotificationInfo: + description: > + Notification Correlation ID and Notification URI provided by the NF service consumer + type: object + properties: + notifId: + type: string + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + upBufferInd: + type: boolean + default: false + required: + - notifId + - notifUri + + AnchorSmfFeatures: + description: Anchor SMF supported features + type: object + properties: + psetrSupportInd: + type: boolean + + HrsboInfoFromVplmn: + description: HR-SBO Information in request message + type: object + properties: + hrsboAuthReqInd: + type: boolean + enum: + - true + vEasdfAddr: + $ref: '#/components/schemas/IpAddress' + localDnsAddr: + $ref: '#/components/schemas/IpAddress' + easRediscoveryInd: + type: boolean + enum: + - true + easInfoToRefresh: + $ref: '#/components/schemas/EasInfoToRefresh' + storedOffloadIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OffloadIdentifier' + minItems: 1 + + HrsboInfoFromHplmn: + description: HR-SBO Information in response message + type: object + properties: + hrsboAuthResult: + type: boolean + hDnsAddr: + $ref: '#/components/schemas/IpAddress' + hPlmnAddr: + $ref: '#/components/schemas/IpAddress' + vplmnOffloadingInfoList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VplmnOffloadingInfo' + offloadIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OffloadIdentifier' + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + easIpReplacementInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + + EasInfoToRefresh: + description: EAS information to be refreshed for EAS re-discovery + type: object + properties: + ipv4AddressRanges: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddressRange' + minItems: 1 + ipv6AddressRanges: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6AddressRange' + minItems: 1 + fqdnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + + EcnMarkingCongestInfoReq: + description: ECN Marking or Congestion Information Request + type: object + properties: + ecnMarkingReq: + $ref: '#/components/schemas/EcnMarkingReq' + congestionInfoReq: + $ref: '#/components/schemas/CongestionInfoReq' + oneOf: + - required: [ ecnMarkingReq ] + - required: [ congestionInfoReq ] + + EcnMarkingCongestionInfoStatus: + description: ECN Marking or Congestion Information Status + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + activationStatus: + $ref: '#/components/schemas/ActivationStatus' + required: + - qfi + - activationStatus + + TscAssistanceInformation: + description: TSC Assistance Information + type: object + properties: + periodicity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + n6JitterInformation: + $ref: '#/components/schemas/N6JitterInformation' + + N6JitterInformation: + description: Jitter information associated with the Periodicity in downlink + type: object + properties: + lowerJitterInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Int32' + higherJitterInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Int32' + +# +# SIMPLE DATA TYPES +# + ProcedureTransactionId: + description: Procedure Transaction Identifier + type: integer + minimum: 0 + maximum: 255 + + EpsBearerId: + description: EPS Bearer Identifier + type: integer + minimum: 0 + maximum: 15 + + EpsPdnCnxContainer: + description: UE EPS PDN Connection container from SMF to AMF + type: string + format: byte + + EpsBearerContainer: + description: EPS Bearer container from SMF to AMF + type: string + format: byte + + Teid: + type: string + description: GTP Tunnel Endpoint Identifier + pattern: '^[A-Fa-f0-9]{8}$' + + EpsBearerContextStatus: + description: EPS bearer context status + type: string + pattern: '^[A-Fa-f0-9]{4}$' + + DrbId: + description: Data Radio Bearer Identity + type: integer + minimum: 1 + maximum: 32 + + AdditionalTnlNb: + description: indicates first, second or third additional indirect data forwarding tunnel + type: integer + minimum: 1 + maximum: 3 + + ForwardingBearerContainer: + description: Forwarding Bearer Container + type: string + format: byte + + SecondaryRatUsageDataReportContainer: + description: Secondary Rat Usage Data Report Container + type: string + format: byte + +# +# ENUMERATIONS +# + UpCnxState: + anyOf: + - type: string + enum: + - ACTIVATED + - DEACTIVATED + - ACTIVATING + - SUSPENDED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + User Plane Connection State. Possible values are + - ACTIVATED + - DEACTIVATED + - ACTIVATING + - SUSPENDED + + HoState: + anyOf: + - type: string + enum: + - NONE + - PREPARING + - PREPARED + - COMPLETED + - CANCELLED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Handover state. Possible values are + - NONE + - PREPARING + - PREPARED + - COMPLETED + - CANCELLED + + RequestType: + anyOf: + - type: string + enum: + - INITIAL_REQUEST + - EXISTING_PDU_SESSION + - INITIAL_EMERGENCY_REQUEST + - EXISTING_EMERGENCY_PDU_SESSION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Request Type in Create (SM context) service operation. Possible values are + - INITIAL_REQUEST + - EXISTING_PDU_SESSION + - INITIAL_EMERGENCY_REQUEST + - EXISTING_EMERGENCY_PDU_SESSION + + RequestIndication: + anyOf: + - type: string + enum: + - UE_REQ_PDU_SES_MOD + - UE_REQ_PDU_SES_REL + - PDU_SES_MOB + - NW_REQ_PDU_SES_AUTH + - NW_REQ_PDU_SES_MOD + - NW_REQ_PDU_SES_REL + - EBI_ASSIGNMENT_REQ + - REL_DUE_TO_5G_AN_REQUEST + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Request Indication in Update (SM context) service operation. Possible values are + - UE_REQ_PDU_SES_MOD + - UE_REQ_PDU_SES_REL + - PDU_SES_MOB + - NW_REQ_PDU_SES_AUTH + - NW_REQ_PDU_SES_MOD + - NW_REQ_PDU_SES_REL + - EBI_ASSIGNMENT_REQ + - REL_DUE_TO_5G_AN_REQUEST + + NotificationCause: + anyOf: + - type: string + enum: + - QOS_FULFILLED + - QOS_NOT_FULFILLED + - UP_SEC_FULFILLED + - UP_SEC_NOT_FULFILLED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Cause for generating a notification. Possible values are + - QOS_FULFILLED + - QOS_NOT_FULFILLED + - UP_SEC_FULFILLED + - UP_SEC_NOT_FULFILLED + + Cause: + anyOf: + - type: string + enum: + - REL_DUE_TO_HO + - EPS_FALLBACK + - REL_DUE_TO_UP_SEC + - DNN_CONGESTION + - S_NSSAI_CONGESTION + - REL_DUE_TO_REACTIVATION + - 5G_AN_NOT_RESPONDING + - REL_DUE_TO_SLICE_NOT_AVAILABLE + - REL_DUE_TO_DUPLICATE_SESSION_ID + - PDU_SESSION_STATUS_MISMATCH + - HO_FAILURE + - INSUFFICIENT_UP_RESOURCES + - PDU_SESSION_HANDED_OVER + - PDU_SESSION_RESUMED + - CN_ASSISTED_RAN_PARAMETER_TUNING + - ISMF_CONTEXT_TRANSFER + - SMF_CONTEXT_TRANSFER + - REL_DUE_TO_PS_TO_CS_HO + - REL_DUE_TO_SUBSCRIPTION_CHANGE + - HO_CANCEL + - REL_DUE_TO_SLICE_NOT_AUTHORIZED + - PDU_SESSION_HAND_OVER_FAILURE + - DDN_FAILURE_STATUS + - REL_DUE_TO_CP_ONLY_NOT_APPLICABLE + - NOT_SUPPORTED_WITH_ISMF + - CHANGED_ANCHOR_SMF + - CHANGED_INTERMEDIATE_SMF + - TARGET_DNAI_NOTIFICATION + - REL_DUE_TO_VPLMN_QOS_FAILURE + - REL_DUE_TO_SMF_NOT_SUPPORT_PSETR + - REL_DUE_TO_SNPN_SNPN_MOBILITY + - REL_DUE_TO_NO_HR_AGREEMENT + - REL_DUE_TO_UNSPECIFIED_REASON + - REL_DUE_TO_MOB_ACCESS_RESTRICTIONS + - REL_DUE_TO_SLICE_INACTIVITY + - REL_DUE_TO_NSI_NOT_AVAILABLE + - REL_DUE_TO_DNN_DENIED + - REL_DUE_TO_PDUTYPE_DENIED + - REL_DUE_TO_SSC_DENIED + - REL_DUE_TO_SUBSCRIPTION_DENIED + - REL_DUE_TO_DNN_NOT_SUPPORTED + - REL_DUE_TO_PDUTYPE_NOT_SUPPORTED + - REL_DUE_TO_SSC_NOT_SUPPORTED + - REL_DUE_TO_INSUFFICIENT_RESOURCES_SLICE + - REL_DUE_TO_INSUFFICIENT_RESOURCES_SLICE_DNN + - REL_DUE_TO_DNN_CONGESTION + - REL_DUE_TO_S_NSSAI_CONGESTION + - REL_DUE_TO_PEER_NOT_RESPONDING + - REL_DUE_TO_NETWORK_FAILURE + - REL_DUE_TO_UPF_NOT_RESPONDING + - REL_DUE_TO_NO_EPS_5GS_CONTINUITY + - REL_DUE_TO_NOT_SUPPORTED_WITH_ISMF + - REL_DUE_TO_EXCEEDED_UE_SLICE_DATA_RATE + - REL_DUE_TO_EXCEEDED_SLICE_DATA_RATE + - REL_DUE_TO_CONTEXT_NOT_FOUND + - REL_DUE_TO_MBSR_NOT_AUTHORIZED + - DEACT_DUE_TO_UE_OUT_OF_SLICE_SUPPORT_AREA + - REJECT_DUE_TO_N1_SM_ERROR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Cause information. Possible values are + - REL_DUE_TO_HO + - EPS_FALLBACK + - REL_DUE_TO_UP_SEC + - DNN_CONGESTION + - S_NSSAI_CONGESTION + - REL_DUE_TO_REACTIVATION + - 5G_AN_NOT_RESPONDING + - REL_DUE_TO_SLICE_NOT_AVAILABLE + - REL_DUE_TO_DUPLICATE_SESSION_ID + - PDU_SESSION_STATUS_MISMATCH + - HO_FAILURE + - INSUFFICIENT_UP_RESOURCES + - PDU_SESSION_HANDED_OVER + - PDU_SESSION_RESUMED + - CN_ASSISTED_RAN_PARAMETER_TUNING + - ISMF_CONTEXT_TRANSFER + - SMF_CONTEXT_TRANSFER + - REL_DUE_TO_PS_TO_CS_HO + - REL_DUE_TO_SUBSCRIPTION_CHANGE + - HO_CANCEL + - REL_DUE_TO_SLICE_NOT_AUTHORIZED + - PDU_SESSION_HAND_OVER_FAILURE + - DDN_FAILURE_STATUS + - REL_DUE_TO_CP_ONLY_NOT_APPLICABLE + - NOT_SUPPORTED_WITH_ISMF + - CHANGED_ANCHOR_SMF + - CHANGED_INTERMEDIATE_SMF + - TARGET_DNAI_NOTIFICATION + - REL_DUE_TO_VPLMN_QOS_FAILURE + - REL_DUE_TO_SMF_NOT_SUPPORT_PSETR + - REL_DUE_TO_SNPN_SNPN_MOBILITY + - REL_DUE_TO_NO_HR_AGREEMENT + - REL_DUE_TO_UNSPECIFIED_REASON + - REL_DUE_TO_MOB_ACCESS_RESTRICTIONS + - REL_DUE_TO_SLICE_INACTIVITY + - REL_DUE_TO_NSI_NOT_AVAILABLE + - REL_DUE_TO_DNN_DENIED + - REL_DUE_TO_PDUTYPE_DENIED + - REL_DUE_TO_SSC_DENIED + - REL_DUE_TO_SUBSCRIPTION_DENIED + - REL_DUE_TO_DNN_NOT_SUPPORTED + - REL_DUE_TO_PDUTYPE_NOT_SUPPORTED + - REL_DUE_TO_SSC_NOT_SUPPORTED + - REL_DUE_TO_INSUFFICIENT_RESOURCES_SLICE + - REL_DUE_TO_INSUFFICIENT_RESOURCES_SLICE_DNN + - REL_DUE_TO_DNN_CONGESTION + - REL_DUE_TO_S_NSSAI_CONGESTION + - REL_DUE_TO_PEER_NOT_RESPONDING + - REL_DUE_TO_NETWORK_FAILURE + - REL_DUE_TO_UPF_NOT_RESPONDING + - REL_DUE_TO_NO_EPS_5GS_CONTINUITY + - REL_DUE_TO_NOT_SUPPORTED_WITH_ISMF + - REL_DUE_TO_EXCEEDED_UE_SLICE_DATA_RATE + - REL_DUE_TO_EXCEEDED_SLICE_DATA_RATE + - REL_DUE_TO_CONTEXT_NOT_FOUND + - REL_DUE_TO_MBSR_NOT_AUTHORIZED + - DEACT_DUE_TO_UE_OUT_OF_SLICE_SUPPORT_AREA + - REJECT_DUE_TO_N1_SM_ERROR + + ResourceStatus: + anyOf: + - type: string + enum: + - RELEASED + - UNCHANGED + - TRANSFERRED + - UPDATED + - ALT_ANCHOR_SMF + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Status of SM context or PDU session resource. Possible values are + - RELEASED + - UNCHANGED + - TRANSFERRED + - UPDATED + - ALT_ANCHOR_SMF + + DnnSelectionMode: + anyOf: + - type: string + enum: + - VERIFIED + - UE_DNN_NOT_VERIFIED + - NW_DNN_NOT_VERIFIED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + DNN Selection Mode. Possible values are + - VERIFIED + - UE_DNN_NOT_VERIFIED + - NW_DNN_NOT_VERIFIED + + EpsInterworkingIndication: + anyOf: + - type: string + enum: + - NONE + - WITH_N26 + - WITHOUT_N26 + - IWK_NON_3GPP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + EPS Interworking Indication. Possible values are + - NONE + - WITH_N26 + - WITHOUT_N26 + - IWK_NON_3GPP + + N2SmInfoType: + anyOf: + - type: string + enum: + - PDU_RES_SETUP_REQ + - PDU_RES_SETUP_RSP + - PDU_RES_SETUP_FAIL + - PDU_RES_REL_CMD + - PDU_RES_REL_RSP + - PDU_RES_MOD_REQ + - PDU_RES_MOD_RSP + - PDU_RES_MOD_FAIL + - PDU_RES_NTY + - PDU_RES_NTY_REL + - PDU_RES_MOD_IND + - PDU_RES_MOD_CFM + - PATH_SWITCH_REQ + - PATH_SWITCH_SETUP_FAIL + - PATH_SWITCH_REQ_ACK + - PATH_SWITCH_REQ_FAIL + - HANDOVER_REQUIRED + - HANDOVER_CMD + - HANDOVER_PREP_FAIL + - HANDOVER_REQ_ACK + - HANDOVER_RES_ALLOC_FAIL + - SECONDARY_RAT_USAGE + - PDU_RES_MOD_IND_FAIL + - UE_CONTEXT_RESUME_REQ + - UE_CONTEXT_RESUME_RSP + - UE_CONTEXT_SUSPEND_REQ + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + N2 SM Information Type. Possible values are + - PDU_RES_SETUP_REQ + - PDU_RES_SETUP_RSP + - PDU_RES_SETUP_FAIL + - PDU_RES_REL_CMD + - PDU_RES_REL_RSP + - PDU_RES_MOD_REQ + - PDU_RES_MOD_RSP + - PDU_RES_MOD_FAIL + - PDU_RES_NTY + - PDU_RES_NTY_REL + - PDU_RES_MOD_IND + - PDU_RES_MOD_CFM + - PATH_SWITCH_REQ + - PATH_SWITCH_SETUP_FAIL + - PATH_SWITCH_REQ_ACK + - PATH_SWITCH_REQ_FAIL + - HANDOVER_REQUIRED + - HANDOVER_CMD + - HANDOVER_PREP_FAIL + - HANDOVER_REQ_ACK + - HANDOVER_RES_ALLOC_FAIL + - SECONDARY_RAT_USAGE + - PDU_RES_MOD_IND_FAIL + - UE_CONTEXT_RESUME_REQ + - UE_CONTEXT_RESUME_RSP + - UE_CONTEXT_SUSPEND_REQ + + MaxIntegrityProtectedDataRate: + anyOf: + - type: string + enum: + - 64_KBPS + - MAX_UE_RATE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Maximum Integrity Protected Data Rate. Possible values are + - 64_KBPS + - MAX_UE_RATE + + MaReleaseIndication: + anyOf: + - type: string + enum: + - REL_MAPDU_OVER_3GPP + - REL_MAPDU_OVER_N3GPP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Multi-Access PDU session release Indication. Possible values are + - REL_MAPDU_OVER_3GPP + - REL_MAPDU_OVER_N3GPP + + SmContextType: + anyOf: + - type: string + enum: + - EPS_PDN_CONNECTION + - SM_CONTEXT + - AF_COORDINATION_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Type of SM Context information. Possible values are + - EPS_PDN_CONNECTION + - SM_CONTEXT + - AF_COORDINATION_INFO + + PsaIndication: + anyOf: + - type: string + enum: + - PSA_INSERTED + - PSA_REMOVED + - PSA_INSERTED_ONLY + - PSA_REMOVED_ONLY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indication of whether a PSA is inserted or removed. Possible values are + - PSA_INSERTED + - PSA_REMOVED + - PSA_INSERTED_ONLY + - PSA_REMOVED_ONLY + + N4MessageType: + anyOf: + - type: string + enum: + - PFCP_SES_EST_REQ + - PFCP_SES_EST_RSP + - PFCP_SES_MOD_REQ + - PFCP_SES_MOD_RSP + - PFCP_SES_DEL_REQ + - PFCP_SES_DEL_RSP + - PFCP_SES_REP_REQ + - PFCP_SES_REP_RSP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + N4 Message Type. Possible values are + - PFCP_SES_EST_REQ + - PFCP_SES_EST_RSP + - PFCP_SES_MOD_REQ + - PFCP_SES_MOD_RSP + - PFCP_SES_DEL_REQ + - PFCP_SES_DEL_RSP + - PFCP_SES_REP_REQ + - PFCP_SES_REP_RSP + + QosFlowAccessType: + anyOf: + - type: string + enum: + - 3GPP + - NON_3GPP + - 3GPP_AND_NON_3GPP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Access type associated with a QoS Flow. Possible values are + - 3GPP + - NON_3GPP + - 3GPP_AND_NON_3GPP + + UnavailableAccessIndication: + anyOf: + - type: string + enum: + - 3GA_UNAVAILABLE + - N3GA_UNAVAILABLE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the access type of a MA PDU session that is unavailable. Possible values are + - 3GA_UNAVAILABLE + - N3GA_UNAVAILABLE + + ProtectionResult: + anyOf: + - type: string + enum: + - PERFORMED + - NOT_PERFORMED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Protection Result of the security policy indicated as "preferred". Possible values are + - PERFORMED + - NOT_PERFORMED + + QosMonitoringReq: + anyOf: + - type: string + enum: + - UL + - DL + - BOTH + - NONE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + QoS monitoring request. Possible values are + - UL + - DL + - BOTH + - NONE + + Rsn: + anyOf: + - type: string + enum: + - V1 + - V2 + - NONE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Redundancy Sequence Number. Possible values are + - V1 + - V2 + - NONE + + SmfSelectionType: + anyOf: + - type: string + enum: + - CURRENT_PDU_SESSION + - NEXT_PDU_SESSION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Smf Selection Type. Possible values are + - CURRENT_PDU_SESSION + - NEXT_PDU_SESSION + + PduSessionContextType: + anyOf: + - type: string + enum: + - AF_COORDINATION_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Type of PDU Session information. Possible values are + - AF_COORDINATION_INFO + + PendingUpdateInfo: + anyOf: + - type: string + enum: + - UE_LOCATION + - TIMEZONE + - ACCESS_TYPE + - RAT_TYPE + - AMF_ID + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Pending Update Information. Possible values are + - UE_LOCATION + - TIMEZONE + - ACCESS_TYPE + - RAT_TYPE + - AMF_ID + + EstablishmentRejectionCause: + anyOf: + - type: string + enum: + - OPERATOR_DETERMINED_BARRING + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + PDU Session Establishment Rejection Cause. Possible values are + - OPERATOR_DETERMINED_BARRING + + EcnMarkingReq: + anyOf: + - type: string + enum: + - UL + - DL + - BOTH + - STOP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + ECN Marking Request Type. Possible values are + - UL + - DL + - BOTH + - STOP + + CongestionInfoReq: + anyOf: + - type: string + enum: + - UL + - DL + - BOTH + - STOP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Congestion Information Request Type. Possible values are + - UL + - DL + - BOTH + - STOP + + ActivationStatus: + anyOf: + - type: string + enum: + - ACTIVE + - NOT_ACTIVE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Activation Status. Possible values are + - ACTIVE + - NOT_ACTIVE + +# +# HTTP request bodies +# + requestBodies: + 'VsmfUpdateRequestBody': + description: representation of updates to apply to the PDU session + required: true + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/VsmfUpdateData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/VsmfUpdateData' + binaryDataN1SmInfoToUe: + type: string + format: binary + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + binaryDataN4InformationExt3: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoToUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt3: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + + 'NotifyStatusRequestBody': + description: representation of the status notification + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusNotification' + +# +# HTTP responses +# + responses: + 'VsmfUpdateResponse200': + description: successful update of a PDU session with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/VsmfUpdatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/VsmfUpdatedData' + binaryDataN1SmInfoFromUe: + type: string + format: binary + binaryDataUnknownN1SmInfo: + type: string + format: binary + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + binaryDataN4InformationExt3: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoFromUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataUnknownN1SmInfo: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt3: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + + 'PduSessionCreateError': + description: unsuccessful creation of a PDU session + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/PduSessionCreateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/PduSessionCreateError' + binaryDataN1SmInfoToUe: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoToUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + + 'HsmfUpdateError': + description: unsuccessful update of a PDU session + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/HsmfUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/HsmfUpdateError' + binaryDataN1SmInfoToUe: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoToUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + + 'VsmfUpdateError': + description: unsuccessful update of a PDU session + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/VsmfUpdateError' + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/VsmfUpdateError' + binaryDataN1SmInfoFromUe: + type: string + format: binary + binaryDataUnknownN1SmInfo: + type: string + format: binary + binaryDataN4Information: + type: string + format: binary + binaryDataN4InformationExt1: + type: string + format: binary + binaryDataN4InformationExt2: + type: string + format: binary + binaryDataN4InformationExt3: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1SmInfoFromUe: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataUnknownN1SmInfo: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN4Information: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt1: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt2: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + binaryDataN4InformationExt3: + contentType: application/vnd.3gpp.pfcp + headers: + Content-Id: + schema: + type: string + + '400': + description: Bad request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '401': + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '404': + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '413': + description: Content Too Large + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '415': + description: Unsupported Media Type + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '429': + description: Too Many Requests + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '500': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '502': + description: Bad Gateway + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + diff --git a/TS29503_Nudm_EE.yaml b/TS29503_Nudm_EE.yaml new file mode 100644 index 0000000..9c3f8e4 --- /dev/null +++ b/TS29503_Nudm_EE.yaml @@ -0,0 +1,1048 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.5' + title: 'Nudm_EE' + description: | + Nudm Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-ee/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-ee + - {} + +paths: + /{ueIdentity}/ee-subscriptions: + post: + summary: Subscribe + operationId: CreateEeSubscription + tags: + - Create EE Subscription + security: + - {} + - oAuth2ClientCredentials: + - nudm-ee + - oAuth2ClientCredentials: + - nudm-ee + - nudm-ee:subscription:create + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the subscription is applied. Contains the GPSI of the user or the external group ID or any UE. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+|anyUE)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedEeSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-ee/v1/{ueIdentity}/ee-subscriptions/{subscriptionId}' + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/EeSubscriptionError' + '404': + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/EeSubscriptionError' + '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': + description: Not Implemented + content: + application/problem+json: + schema: + $ref: '#/components/schemas/EeSubscriptionError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + eventOccurrenceNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MonitoringReport' + minItems: 1 + responses: + '204': + description: Successful Notification response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + monitoringRevocationNotification: + '{request.body#/secondCallbackRef}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EeMonitoringRevoked' + responses: + '204': + description: Successful Notification response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + + /{ueIdentity}/ee-subscriptions/{subscriptionId}: + delete: + summary: Unsubscribe + operationId: DeleteEeSubscription + tags: + - Delete EE Subscription + security: + - {} + - oAuth2ClientCredentials: + - nudm-ee + - oAuth2ClientCredentials: + - nudm-ee + - nudm-ee:subscription:modify + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the subscription is applied. Contains the GPSI of the user or the external group ID or any UE. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+|anyUE)$' + - name: subscriptionId + in: path + description: Id of the EE Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: Patch + operationId: UpdateEeSubscription + tags: + - Update EE Subscription + security: + - {} + - oAuth2ClientCredentials: + - nudm-ee + - oAuth2ClientCredentials: + - nudm-ee + - nudm-ee:subscription:modify + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the subscription is applied. Contains the GPSI of the user or the external group ID or any UE. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+|anyUE)$' + - name: subscriptionId + in: path + description: Id of the EE Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-ee: Access to the nudm-ee API + nudm-ee:subscription:create: Access to create EE Subscriptions + nudm-ee:subscription:modify: Access to update EE Subscriptions + + + schemas: + +# COMPLEX TYPES: + + CreatedEeSubscription: + type: object + required: + - eeSubscription + properties: + eeSubscription: + $ref: '#/components/schemas/EeSubscription' + numberOfUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + eventReports: + type: array + items: + $ref: '#/components/schemas/MonitoringReport' + minItems: 1 + epcStatusInd: + type: boolean + 5gOnlyInd: + type: boolean + enum: + - true + failedMonitoringConfigs: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + failedMoniConfigsEPC: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration, the key value "ALL" may + be used to identify a map entry which contains the failed cause of the EE subscription + was not successful in EPC domain. + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + resetIds: + type: array + items: + type: string + minItems: 1 + currentStatusNotAvailableList: + type: array + items: + $ref: '#/components/schemas/EventType' + minItems: 1 + + + FailedMonitoringConfiguration: + description: Contains the event type and failed cause of the failed Monitoring Configuration in the EE subscription + type: object + required: + - eventType + - failedCause + properties: + eventType: + $ref: '#/components/schemas/EventType' + failedCause: + $ref: '#/components/schemas/FailedCause' + + + EeSubscription: + type: object + required: + - callbackReference + - monitoringConfigurations + properties: + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoringConfigurations: + description: A map (list of key-value pairs where ReferenceId serves as key) of MonitoringConfigurations + type: object + additionalProperties: + $ref: '#/components/schemas/MonitoringConfiguration' + minProperties: 1 + reportingOptions: + $ref: '#/components/schemas/ReportingOptions' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + subscriptionId: + type: string + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + epcAppliedInd: + type: boolean + default: false + scefDiamHost: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + scefDiamRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + notifyCorrelationId: + type: string + secondCallbackRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + excludeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + includeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udrRestartInd: + type: boolean + default: false + + MonitoringConfiguration: + type: object + required: + - eventType + properties: + eventType: + $ref: '#/components/schemas/EventType' + immediateFlag: + type: boolean + locationReportingConfiguration: + $ref: '#/components/schemas/LocationReportingConfiguration' + associationType: + $ref: '#/components/schemas/AssociationType' + datalinkReportCfg: + $ref: '#/components/schemas/DatalinkReportingConfiguration' + lossConnectivityCfg: + $ref: '#/components/schemas/LossConnectivityCfg' + maximumLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + suggestedPacketNumDl: + type: integer + minimum: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pduSessionStatusCfg: + $ref: '#/components/schemas/PduSessionStatusCfg' + reachabilityForSmsCfg: + $ref: '#/components/schemas/ReachabilityForSmsConfiguration' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + afId: + type: string + reachabilityForDataCfg: + $ref: '#/components/schemas/ReachabilityForDataConfiguration' + idleStatusInd: + type: boolean + default: false + monitoringSuspension: + $ref: '#/components/schemas/MonitoringSuspension' + + MonitoringSuspension: + type: object + properties: + suspendedInsidePlmnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + suspendedOutsidePlmnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + + LossConnectivityCfg: + type: object + properties: + maxDetectionTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + LocationReportingConfiguration: + type: object + required: + - currentLocation + properties: + currentLocation: + type: boolean + oneTime: + type: boolean + accuracy: + $ref: '#/components/schemas/LocationAccuracy' + n3gppAccuracy: + $ref: '#/components/schemas/LocationAccuracy' + + ReportingOptions: + type: object + properties: + reportMode: + $ref: '#/components/schemas/EventReportMode' + maxNumOfReports: + $ref: '#/components/schemas/MaxNumOfReports' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + samplingRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + guardTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + reportPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + mutingExcInstructions: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingNotSettings: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + varRepPeriodInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarRepPeriod' + minItems: 1 + + MonitoringReport: + type: object + required: + - referenceId + - eventType + - timeStamp + properties: + referenceId: + $ref: '#/components/schemas/ReferenceId' + eventType: + $ref: '#/components/schemas/EventType' + report: + $ref: '#/components/schemas/Report' + reachabilityForSmsReport: + $ref: '#/components/schemas/ReachabilityForSmsReport' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reachabilityReport: + $ref: '#/components/schemas/ReachabilityReport' + + Report: + oneOf: + - $ref: '#/components/schemas/ChangeOfSupiPeiAssociationReport' + - $ref: '#/components/schemas/RoamingStatusReport' + - $ref: '#/components/schemas/CnTypeChangeReport' + - $ref: '#/components/schemas/CmInfoReport' + - $ref: '#/components/schemas/LossConnectivityReport' + - $ref: '#/components/schemas/LocationReport' + - $ref: '#/components/schemas/PdnConnectivityStatReport' + - $ref: '#/components/schemas/GroupMembListChanges' + + ReachabilityForSmsReport: + type: object + required: + - smsfAccessType + properties: + smsfAccessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + maxAvailabilityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ChangeOfSupiPeiAssociationReport: + type: object + required: + - newPei + properties: + newPei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + + RoamingStatusReport: + type: object + required: + - roaming + - newServingPlmn + properties: + roaming: + type: boolean + newServingPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + purged: + type: boolean + enum: + - true + + CnTypeChangeReport: + type: object + required: + - newCnType + properties: + newCnType: + $ref: '#/components/schemas/CnType' + oldCnType: + $ref: '#/components/schemas/CnType' + + DatalinkReportingConfiguration: + type: object + properties: + dddTrafficDes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + slice: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dddStatusList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + + CmInfoReport: + type: object + properties: + oldCmInfoList: + type: array + items: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmInfo' + minItems: 1 + maxItems: 2 + newCmInfoList: + type: array + items: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmInfo' + minItems: 1 + maxItems: 2 + required: + - newCmInfoList + + PduSessionStatusCfg: + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + + ReachabilityReport: + type: object + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + accessTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + reachability: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/UeReachability' + maxAvailabilityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + idleStatusIndication: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/IdleStatusIndication' + + ReachabilityForDataConfiguration: + type: object + required: + - reportCfg + properties: + reportCfg: + $ref: '#/components/schemas/ReachabilityForDataReportConfig' + minInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + EeMonitoringRevoked: + type: object + required: + - revokedMonitoringEventList + properties: + revokedMonitoringEventList: + description: A map (list of key-value pairs where ReferenceId serves as key) of MonitoringEvents + type: object + additionalProperties: + $ref: '#/components/schemas/MonitoringEvent' + minProperties: 1 + removedGpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + excludeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + + MonitoringEvent: + type: object + required: + - eventType + properties: + eventType: + $ref: '#/components/schemas/EventType' + revokedCause: + $ref: '#/components/schemas/RevokedCause' + + LossConnectivityReport: + type: object + required: + - lossOfConnectReason + properties: + lossOfConnectReason: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/LossOfConnectivityReason' + + LocationReport: + type: object + required: + - location + properties: + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + + PdnConnectivityStatReport: + type: object + required: + - pdnConnStat + properties: + pdnConnStat: + $ref: '#/components/schemas/PdnConnectivityStatus' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + pduSeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + pduSessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + + GroupMembListChanges: + description: Represents information on the change(s) to a group's members list. + type: object + properties: + addedUEs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + removedUEs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + anyOf: + - required: [addedUEs] + - required: [removedUEs] + + EeSubscriptionErrorAddInfo: + description: Additional Information for EE Subscription Error. + type: object + properties: + subType: + $ref: '#/components/schemas/SubscriptionType' + failedMonitoringConfigs: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + failedMoniConfigsEPC: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration, the key value "ALL" may + be used to identify a map entry which contains the failed cause of the EE subscription + was not successful in EPC domain. + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + + EeSubscriptionError: + description: EE Subscription Error. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/EeSubscriptionErrorAddInfo' + + +# SIMPLE TYPES: + + ReferenceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + + MaxNumOfReports: + type: integer + + +# ENUMS: + + ReachabilityForSmsConfiguration: + description: > + Indicates the configuration for report of reachability status for SMS. + anyOf: + - type: string + enum: + - REACHABILITY_FOR_SMS_OVER_NAS + - REACHABILITY_FOR_SMS_OVER_IP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + EventType: + description: Indicates the event type of UDM Event Exposure service. + anyOf: + - type: string + enum: + - LOSS_OF_CONNECTIVITY + - UE_REACHABILITY_FOR_DATA + - UE_REACHABILITY_FOR_SMS + - LOCATION_REPORTING + - CHANGE_OF_SUPI_PEI_ASSOCIATION + - ROAMING_STATUS + - COMMUNICATION_FAILURE + - AVAILABILITY_AFTER_DDN_FAILURE + - CN_TYPE_CHANGE + - DL_DATA_DELIVERY_STATUS + - PDN_CONNECTIVITY_STATUS + - UE_CONNECTION_MANAGEMENT_STATE + - ACCESS_TYPE_REPORT + - REGISTRATION_STATE_REPORT + - CONNECTIVITY_STATE_REPORT + - TYPE_ALLOCATION_CODE_REPORT + - FREQUENT_MOBILITY_REGISTRATION_REPORT + - PDU_SES_REL + - PDU_SES_EST + - UE_MEMORY_AVAILABLE_FOR_SMS + - GROUP_MEMBER_LIST_CHANGE + - QOS_MON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + LocationAccuracy: + description: Indicates the location accuracy level. + anyOf: + - type: string + enum: + - CELL_LEVEL + - RAN_NODE_LEVEL + - TA_LEVEL + - N3IWF_LEVEL + - UE_IP + - UE_PORT + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + CnType: + description: Indicates the core network type. + anyOf: + - type: string + enum: + - SINGLE_4G + - SINGLE_5G + - DUAL_4G5G + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AssociationType: + description: > + Indicates association type to be included to identify + whether it is IMSI-IMEI or IMSI-IMEISV. + anyOf: + - type: string + enum: + - IMEI_CHANGE + - IMEISV_CHANGE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + EventReportMode: + description: Event report mode. + anyOf: + - type: string + enum: + - PERIODIC + - ON_EVENT_DETECTION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ReachabilityForDataReportConfig: + description: > + Indicates the configuration for report of + reachability status for data. + anyOf: + - type: string + enum: + - DIRECT_REPORT + - INDIRECT_REPORT + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + RevokedCause: + description: Revocation Cause for the monitoring event. + anyOf: + - type: string + enum: + - NOT_ALLOWED + - EXCLUDED_FROM_GROUP + - GPSI_REMOVED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + FailedCause: + description: > + Contains the Failed cause of the failed monitoring configuration in the EE subscription. + event monitoring. + anyOf: + - type: string + enum: + - AF_NOT_ALLOWED + - MTC_PROVIDER_NOT_ALLOWED + - MONITORING_NOT_ALLOWED + - UNSUPPORTED_MONITORING_EVENT_TYPE + - UNSUPPORTED_MONITORING_REPORT_OPTIONS + - UNSPECIFIED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + PdnConnectivityStatus: + description: PDN Connectivity Status. + anyOf: + - type: string + enum: + - ESTABLISHED + - RELEASED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + SubscriptionType: + description: UE Subscription Type. + anyOf: + - type: string + enum: + - 5G + - 4G_5G + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + diff --git a/TS29503_Nudm_MT.yaml b/TS29503_Nudm_MT.yaml new file mode 100644 index 0000000..42be9cf --- /dev/null +++ b/TS29503_Nudm_MT.yaml @@ -0,0 +1,230 @@ +openapi: 3.0.0 +info: + version: '1.2.0-alpha.1' + title: 'Nudm_MT' + description: | + UDM MT Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-mt/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-mt + - {} + +paths: + /{supi}: + get: + summary: Query Information for the UE + operationId: QueryUeInfo + tags: + - Query UE Info + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: fields + in: query + description: attributes to be retrieved + required: true + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '501': + $ref: 'TS29571_CommonData.yaml#/components/responses/501' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/loc-info/provide-loc-info: + post: + summary: Provides the UE's 5GS location information + operationId: ProvideLocationInfo + tags: + - Provide UE Location + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocationInfoResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-mt: Access to the nudm-mt API + + + schemas: + +# COMPLEX TYPES: + + UeInfo: + description: Represents UE information. + type: object + properties: + tadsInfo: + $ref: 'TS29518_Namf_MT.yaml#/components/schemas/UeContextInfo' + userState: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/5GsUserState' + 5gSrvccInfo: + $ref: '#/components/schemas/5GSrvccInfo' + + 5GSrvccInfo: + description: Represents 5G SRVCC information for a UE. + type: object + required: + - ue5GSrvccCapability + properties: + ue5GSrvccCapability: + type: boolean + stnSr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StnSr' + cMsisdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CMsisdn' + + LocationInfoRequest: + description: Represents information to be sent in a location information request. It contains the requested information, i.e. current location, local time zone, RAT type, or serving node identity only. + type: object + properties: + req5gsLoc: + type: boolean + default: false + reqCurrentLoc: + type: boolean + default: false + reqRatType: + type: boolean + default: false + reqTimeZone: + type: boolean + default: false + reqServingNode: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + LocationInfoResult: + description: Represents the requested location information. + type: object + properties: + vPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smsfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + currentLoc: + type: boolean + geoInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + locationAge: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + timezone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + +# SIMPLE TYPES: + + +# ENUMS: diff --git a/TS29503_Nudm_NIDDAU.yaml b/TS29503_Nudm_NIDDAU.yaml new file mode 100644 index 0000000..2b59249 --- /dev/null +++ b/TS29503_Nudm_NIDDAU.yaml @@ -0,0 +1,235 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.2' + title: 'Nudm_NIDDAU' + description: | + Nudm NIDD Authorization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.1.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-niddau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-niddau + - {} + +paths: + /{ueIdentity}/authorize: + post: + summary: Authorize the NIDD configuration request. + operationId: AuthorizeNiddData + tags: + - Authorize the NIDD configuration request + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the NIDD configuration are authorized. Contains the GPSI of the user or the external group ID. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationInfo' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationData' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + niddAuthUpdateNotification: + '{request.body#/authUpdateCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddAuthUpdateNotification' + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-niddau: Access to the nudm-niddau API + + schemas: + +# COMPLEX TYPES: +# + AuthorizationData: + description: Represents NIDD authorization data. + type: object + required: + - authorizationData + properties: + authorizationData: + type: array + items: + $ref: '#/components/schemas/UserIdentifier' + minItems: 1 + uniqueItems: true + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + UserIdentifier: + description: Represents the user identifier. + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + NiddAuthUpdateInfo: + description: Represents NIDD authorization update information. + type: object + required: + - authorizationData + properties: + authorizationData: + $ref: '#/components/schemas/AuthorizationData' + invalidityInd: + type: boolean + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + niddCause: + $ref: '#/components/schemas/NiddCause' + + NiddAuthUpdateNotification: + description: Represents a NIDD authorization update notification. + type: object + required: + - niddAuthUpdateInfoList + properties: + niddAuthUpdateInfoList: + type: array + items: + $ref: '#/components/schemas/NiddAuthUpdateInfo' + minItems: 1 + + AuthorizationInfo: + description: Represents NIDD authorization information. + type: object + required: + - snssai + - dnn + - mtcProviderInformation + - authUpdateCallbackUri + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + authUpdateCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + afId: + type: string + nefId: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NefId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + + +# SIMPLE TYPES: + + + +# ENUMS: + + NiddCause: + description: Indicates the usage for Subscription Withdrawal. + anyOf: + - type: string + enum: + - SUBSCRIPTION_WITHDRAWAL + - DNN_REMOVED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. diff --git a/TS29503_Nudm_PP.yaml b/TS29503_Nudm_PP.yaml new file mode 100644 index 0000000..4034e21 --- /dev/null +++ b/TS29503_Nudm_PP.yaml @@ -0,0 +1,1266 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.4' + title: 'Nudm_PP' + description: | + Nudm Parameter Provision Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-pp + - {} + +paths: + /{ueId}/pp-data: + patch: + summary: provision parameters + operationId: Update + tags: + - Subscription Data Update + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PpData' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /5g-vn-groups/{extGroupId}: + put: + summary: create a 5G VN Group + operationId: Create 5G VN Group + tags: + - 5G VN Group Creation + parameters: + - name: extGroupId + in: path + description: External Identifier of the Group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/5GVnGroupConfiguration' + required: true + responses: + '201': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete a 5G VN Group + operationId: Delete 5G VN Group + tags: + - 5G VN Group Deletion + parameters: + - name: extGroupId + in: path + description: External Identifier of the Group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: mtc-provider-info + in: query + description: MTC Provider Information that originated the service operation + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + - name: af-id + in: query + description: AF ID that originated the service operation + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify a 5G VN Group + operationId: Modify 5G VN Group + tags: + - 5G VN Group Modification + parameters: + - name: extGroupId + in: path + description: External Identifier of the group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/5GVnGroupConfigurationModification' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: get 5G VN Group + operationId: Get 5G VN Group + tags: + - 5G VN Group Modification + parameters: + - name: extGroupId + in: path + description: External Identifier of the group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/5GVnGroupConfiguration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/pp-data-store/{afInstanceId}: + put: + summary: Create a Provisioning Parameter Data Entry + operationId: Create PP Data Entry + tags: + - ParameterProvisioningDataEntry (Document) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PpDataEntry' + required: true + responses: + '201': + description: Indicating a successful creation of the resource + content: + application/json: + schema: + $ref: '#/components/schemas/PpDataEntry' + '204': + description: Indicating a successful update of the resource + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: Delete a Provisioning Parameter Data Entry + operationId: Delete PP Data Entry + tags: + - ParameterProvisioningDataEntry (Document) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: get Parameter Provisioning Data Entry + operationId: Get PP Data Entry + tags: + - ParameterProvisioningDataEntry (Document) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PpDataEntry' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + /mbs-group-membership/{extGroupId}: + put: + summary: create a 5G MBS Group + operationId: Create 5G MBS Group + tags: + - 5G MBS Group Creation + parameters: + - name: extGroupId + in: path + description: External Identifier of the Group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MulticastMbsGroupMemb' + required: true + responses: + '201': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete a 5G MBS Group + operationId: Delete 5G MBS Group + tags: + - 5G MBS Group Deletion + parameters: + - name: extGroupId + in: path + description: External Identifier of the Group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify a 5G MBS Group + operationId: Modify 5G MBS Group + tags: + - 5G MBS Group Modification + parameters: + - name: extGroupId + in: path + description: External Identifier of the group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MulticastMbsGroupMemb' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: get 5G MBS Group + operationId: Get 5G MBS Group + tags: + - 5G MBS Group Modification + parameters: + - name: extGroupId + in: path + description: External Identifier of the group + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/MulticastMbsGroupMemb' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-pp: Access to the nudm-pp API + + + schemas: + +# COMPLEX TYPES: + + PpData: + type: object + properties: + communicationCharacteristics: + $ref: '#/components/schemas/CommunicationCharacteristics' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + expectedUeBehaviourParameters: + $ref: '#/components/schemas/ExpectedUeBehaviour' + expectedUeBehaviourExtension: + $ref: '#/components/schemas/ExpectedUeBehaviourExtension' + ecRestriction: + $ref: '#/components/schemas/EcRestriction' + acsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AcsInfoRm' + stnSr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StnSrRm' + lcsPrivacy: + $ref: '#/components/schemas/LcsPrivacy' + sorInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SorInfo' + 5mbsAuthorizationInfo: + $ref: '#/components/schemas/5MbsAuthorizationInfo' + dnnSnssaiSpecificGroup: + $ref: '#/components/schemas/DnnSnssaiSpecificGroup' + mbsAssistanceInfo: + $ref: '#/components/schemas/MbsAssistanceInfo' + appSpecificExpectedUeBehaviour: + $ref: '#/components/schemas/AppSpecificExpectedUeBehaviour' + sliceUsageControlInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceUsageControlInfo' + minItems: 1 + nullable: true + + MbsAssistanceInfo: + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + assistanceInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + required: + - mbsSessionId + + CommunicationCharacteristics: + type: object + properties: + ppSubsRegTimer: + $ref: '#/components/schemas/PpSubsRegTimer' + ppActiveTime: + $ref: '#/components/schemas/PpActiveTime' + ppDlPacketCount: + $ref: '#/components/schemas/PpDlPacketCount' + ppDlPacketCountExt: + $ref: '#/components/schemas/PpDlPacketCountExt' + ppMaximumResponseTime: + $ref: '#/components/schemas/PpMaximumResponseTime' + ppMaximumLatency: + $ref: '#/components/schemas/PpMaximumLatency' + nullable: true + + PpSubsRegTimer: + type: object + required: + - subsRegTimer + - afInstanceId + - referenceId + properties: + subsRegTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + PpActiveTime: + type: object + required: + - activeTime + - afInstanceId + - referenceId + properties: + activeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + 5GVnGroupConfiguration: + type: object + properties: + 5gVnGroupData: + $ref: '#/components/schemas/5GVnGroupData' + members: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + afInstanceId: + type: string + internalGroupIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + membersData: + description: > + Contains the list of 5G VN Group members, each member is identified by GPSI. + A map (list of key-value pairs where Gpsi serves as key) of GpsiInfo. + The value in each entries of the map shall be an empty JSON object. + type: object + additionalProperties: + $ref: '#/components/schemas/GpsiInfo' + minProperties: 1 + + 5GVnGroupConfigurationModification: + description: > + Contains the attributes to modify on the 5GVnGroupConfiguration data structure; + the attributes to be deleted need to be set to the null value. + type: object + properties: + 5gVnGroupData: + $ref: '#/components/schemas/5GVnGroupDataModification' + afInstanceId: + type: string + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + members: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + nullable: true + membersData: + description: > + Contains the list of 5G VN Group members, each member is identified by GPSI. + A map (list of key-value pairs where Gpsi serves as key) of GpsiInfo. + The value in each entries of the map shall be an empty JSON object. + type: object + additionalProperties: + $ref: '#/components/schemas/GpsiInfo' + minProperties: 1 + nullable: true + + 5GVnGroupData: + type: object + required: + - dnn + - sNssai + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + pduSessionTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + minItems: 1 + appDescriptors: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AppDescriptor' + minItems: 1 + secondaryAuth: + type: boolean + dnAaaIpAddressAllocation: + type: boolean + dnAaaAddress: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + additionalDnAaaAddresses: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + minItems: 1 + dnAaaFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + 5gVnGroupCommunicationInd: + type: boolean + maxGroupDataRate: + $ref: '#/components/schemas/MaxGroupDataRate' + + 5GVnGroupDataModification: + description: > + Contains the attributes to modify on the 5GVnGroupData data structure; + the attributes to be deleted need to be set to the null value. + type: object + properties: + appDescriptors: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AppDescriptor' + minItems: 1 + nullable: true + secondaryAuth: + type: boolean + nullable: true + dnAaaIpAddressAllocation: + type: boolean + nullable: true + dnAaaAddress: + type: object + nullable: true + allOf: + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + additionalDnAaaAddresses: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + minItems: 1 + nullable: true + dnAaaFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnRm' + 5gVnGroupCommunicationInd: + type: boolean + nullable: true + maxGroupDataRate: + type: object + nullable: true + allOf: + - $ref: '#/components/schemas/MaxGroupDataRate' + nullable: true + + ExpectedUeBehaviour: + type: object + required: + - afInstanceId + - referenceId + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + stationaryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StationaryIndicationRm' + communicationDurationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + scheduledCommunicationType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTypeRm' + periodicTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + scheduledCommunicationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTimeRm' + expectedUmts: + type: array + items: + $ref: '#/components/schemas/LocationArea' + minItems: 1 + nullable: true + description: > + Identifies the UE's expected geographical movement. The attribute is only + applicable in 5G. + trafficProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficProfileRm' + batteryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BatteryIndicationRm' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + LocationArea: + type: object + properties: + geographicAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 0 + description: Identifies a list of geographic area of the user where the UE is located. + civicAddresses: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 0 + description: Identifies a list of civic addresses of the user where the UE is located. + nwAreaInfo: + $ref: '#/components/schemas/NetworkAreaInfo' + umtTime: + $ref: '#/components/schemas/UmtTime' + + UmtTime: + type: object + required: + - timeOfDay + - dayOfWeek + properties: + timeOfDay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeOfDay' + dayOfWeek: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DayOfWeek' + + NetworkAreaInfo: + description: > + Describes a network area information in which the NF service consumer requests + the number of UEs. + type: object + properties: + ecgis: + description: Contains a list of E-UTRA cell identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + minItems: 1 + ncgis: + description: Contains a list of NR cell identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + minItems: 1 + gRanNodeIds: + description: Contains a list of NG RAN nodes. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + tais: + description: Contains a list of tracking area identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + + EcRestriction: + type: object + required: + - afInstanceId + - referenceId + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + plmnEcInfos: + type: array + items: + $ref: '#/components/schemas/PlmnEcInfo' + minItems: 1 + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + PlmnEcInfo: + type: object + required: + - plmnId + properties: + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + ecRestrictionDataWb: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/EcRestrictionDataWb' + ecRestrictionDataNb: + type: boolean + default: false + + + PpDlPacketCountExt: + type: object + required: + - afInstanceId + - referenceId + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + PpMaximumResponseTime: + type: object + required: + - maximumResponseTime + - afInstanceId + - referenceId + properties: + maximumResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + PpMaximumLatency: + type: object + required: + - maximumLatency + - afInstanceId + - referenceId + properties: + maximumLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + LcsPrivacy: + type: object + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + lpi: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/Lpi' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + evtRptExpectedArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + areaUsageInd: + allOf: + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AreaUsageInd' + default: POSITIVE_SENSE + upLocRepIndAf: + allOf: + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UpLocRepIndAf' + default: USER_PLANE_REPORT_NOT_ALLOWED + nullable: true + + PpDataEntry: + type: object + properties: + communicationCharacteristics: + $ref: '#/components/schemas/CommunicationCharacteristicsAF' + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + ecsAddrConfigInfo: + $ref: '#/components/schemas/EcsAddrConfigInfo' + additionalEcsAddrConfigInfos: + type: array + items: + $ref: '#/components/schemas/EcsAddrConfigInfo' + minItems: 1 + ecsAddrConfigInfoPerPlmn: + description: > + A map (list of key-value pairs) where the key of the map is the serving PLMN id; + and the value is an array of EcsAddrConfigInfo for that serving PLMN. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/EcsAddrConfigInfo' + minItems: 1 + minProperties: 1 + ecRestriction: + $ref: '#/components/schemas/EcRestriction' + sliceUsageControlInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceUsageControlInfo' + minItems: 1 + nullable: true + + CommunicationCharacteristicsAF: + type: object + properties: + ppDlPacketCount: + $ref: '#/components/schemas/PpDlPacketCount' + maximumResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maximumLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + nullable: true + + EcsAddrConfigInfo: + type: object + properties: + ecsServerAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EcsServerAddr' + spatialValidityCond: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SpatialValidityCond' + nullable: true + + 5MbsAuthorizationInfo: + type: object + properties: + 5mbsSessionIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + minItems: 1 + nullable: true + + MulticastMbsGroupMemb: + type: object + required: + - multicastGroupMemb + properties: + multicastGroupMemb: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + afInstanceId: + type: string + internalGroupIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + + + DnnSnssaiSpecificGroup: + type: object + required: + - dnn + - snssai + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + defQos: + $ref: '#/components/schemas/AfReqDefaultQoS' + afReqServArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + nullable: true + + AfReqDefaultQoS: + type: object + required: + - 5qi + - arp + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + + + ExpectedUeBehaviourExtension: + type: object + required: + - afInstanceId + - referenceId + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + expectedUeBehaviourData: + description: A map(list of key-value pairs) where a valid JSON pointer serves as key + type: object + additionalProperties: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExpectedUeBehaviourData' + minProperties: 1 + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + nullable: true + + AppSpecificExpectedUeBehaviour: + type: object + required: + - afInstanceId + - referenceId + - appSpecificExpectedUeBehaviourData + properties: + afInstanceId: + type: string + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + appSpecificExpectedUeBehaviourData: + description: A map(list of key-value pairs) where a valid JSON pointer serves as key + type: object + additionalProperties: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AppSpecificExpectedUeBehaviourData' + minProperties: 1 + nullable: true + + MaxGroupDataRate: + description: > + The limits of the total bit rate across all sessions of the 5G VN group + (uplink and downlink) + type: object + properties: + uplink: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + downlink: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + GpsiInfo: + description: > + In this version of this specificiaiton, this data type does not contain any attributes, + it is used to convey an empty JSON objects as the value of the entries in the membersData map. + type: object + nullable: true + + +# SIMPLE TYPES: + + + PpDlPacketCount: + type: integer + nullable: true + + + +# ENUMS: + diff --git a/TS29503_Nudm_RSDS.yaml b/TS29503_Nudm_RSDS.yaml new file mode 100644 index 0000000..619975f --- /dev/null +++ b/TS29503_Nudm_RSDS.yaml @@ -0,0 +1,107 @@ +openapi: 3.0.0 +info: + version: '1.2.0-alpha.1' + title: 'Nudm_ReportSMDeliveryStatus' + description: | + UDM Report SM Delivery Status Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-rsds/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-rsds + - {} + +paths: + /{ueIdentity}/sm-delivery-status: + post: + summary: Report the SM Delivery Status + operationId: ReportSMDeliveryStatus + tags: + - Report SM Delivery Status + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the Service Specific Parameters are authorized. Contains the GPSI of the user or the external group ID. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmDeliveryStatus' + required: true + responses: + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-rsds: Access to the nudm-rsds API + + + schemas: + +# COMPLEX TYPES: + + SmDeliveryStatus: + description: Represents SM Delivery Status. + type: object + required: + - gpsi + - smStatusReport + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + smStatusReport: + type: string + + +# SIMPLE TYPES: + + +# ENUMS: diff --git a/TS29503_Nudm_SDM.yaml b/TS29503_Nudm_SDM.yaml new file mode 100644 index 0000000..eb4cf59 --- /dev/null +++ b/TS29503_Nudm_SDM.yaml @@ -0,0 +1,5406 @@ +openapi: 3.0.0 + +info: + version: '2.3.0-alpha.5' + title: 'Nudm_SDM' + description: | + Nudm Subscriber Data Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-sdm/v2' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-sdm + - {} + +paths: + /{supi}: + get: + summary: retrieve multiple data sets + operationId: GetDataSets + tags: + - Retrieval of multiple data sets + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:multi-data-sets:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: dataset-names + in: query + style: form + explode: false + description: List of dataset names + required: true + schema: + $ref: '#/components/schemas/DatasetNames' + - name: plmn-id + in: query + description: serving PLMN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + - name: adjacent-plmns + in: query + description: List of PLMNs adjacent to the UE's serving PLMN + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: uc-purpose + in: query + description: User consent purpose + schema: + $ref: '#/components/schemas/UcPurpose' + - name: disaster-roaming-ind + in: query + description: Indication whether Disaster Roaming service is applied or not + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionDataSets' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/nssai: + get: + summary: retrieve a UE's subscribed NSSAI + operationId: GetNSSAI + tags: + - Slice Selection Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:nssai:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: serving PLMN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: disaster-roaming-ind + in: query + description: Indication whether Disaster Roaming service is applied or not + required: false + schema: + type: boolean + default: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Nssai' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/ue-context-in-amf-data: + get: + summary: retrieve a UE's UE Context In AMF Data + operationId: GetUeCtxInAmfData + tags: + - UE Context In AMF Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:ue-context-in-amf-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextInAmfData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data: + get: + summary: retrieve a UE's Access and Mobility Subscription Data + operationId: GetAmData + tags: + - Access and Mobility Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:am-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: Serving PLMN ID or SNPN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + - name: adjacent-plmns + in: query + description: List of PLMNs adjacent to the UE's serving PLMN + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + - name: disaster-roaming-ind + in: query + description: Indication whether Disaster Roaming service is applied or not + required: false + schema: + type: boolean + default: false + - name: shared-data-ids + in: query + description: > + List of IDs identifying shared Access and Mobility Subscription Data already + available at the NF service consumer + schema: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + style: form + explode: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilitySubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/ecr-data: + get: + summary: retrieve a UE's subscribed Enhanced Coverage Restriction Data + operationId: GetEcrData + tags: + - Enhanced Coverage Restriction Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:ecr-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EnhancedCoverageRestrictionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '466': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/smf-select-data: + get: + summary: retrieve a UE's SMF Selection Subscription Data + operationId: GetSmfSelData + tags: + - SMF Selection Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:smf-select-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: serving PLMN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: disaster-roaming-ind + in: query + description: Indication whether Disaster Roaming service is applied or not + required: false + schema: + type: boolean + default: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSelectionSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/ue-context-in-smf-data: + get: + summary: retrieve a UE's UE Context In SMF Data + operationId: GetUeCtxInSmfData + tags: + - UE Context In SMF Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:ue-context-in-smf-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextInSmfData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/ue-context-in-smsf-data: + get: + summary: retrieve a UE's UE Context In SMSF Data + operationId: GetUeCtxInSmsfData + tags: + - UE Context In SMSF Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:ue-context-in-smsf-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextInSmsfData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/trace-data: + get: + summary: retrieve a UE's Trace Configuration Data + operationId: GetTraceConfigData + tags: + - Trace Configuration Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:trace-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: serving PLMN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/TraceDataResponse' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/sm-data: + get: + summary: retrieve a UE's Session Management Subscription Data + operationId: GetSmData + tags: + - Session Management Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sm-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: plmn-id + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: disaster-roaming-ind + in: query + description: Indication whether Disaster Roaming service is applied or not + required: false + schema: + type: boolean + default: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmSubsData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/sms-data: + get: + summary: retrieve a UE's SMS Subscription Data + operationId: GetSmsData + tags: + - SMS Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sms-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/sms-mng-data: + get: + summary: retrieve a UE's SMS Management Subscription Data + operationId: GetSmsMngtData + tags: + - SMS Management Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sms-mng-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsManagementSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{ueId}/lcs-privacy-data: + get: + summary: retrieve a UE's LCS Privacy Subscription Data + operationId: GetLcsPrivacyData + tags: + - LCS Privacy Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:lcs-privacy-data:read + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsPrivacyData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/lcs-mo-data: + get: + summary: retrieve a UE's LCS Mobile Originated Subscription Data + operationId: GetLcsMoData + tags: + - LCS Mobile Originated Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:lcs-mo-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsMoData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/lcs-bca-data: + get: + summary: retrieve a UE's LCS Broadcast Assistance Data Types Subscription Data + operationId: GetLcsBcaData + tags: + - LCS Broadcast Assistance Data Types Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:lcs-bca-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsBroadcastAssistanceTypesData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/lcs-subscription-data: + get: + summary: retrieve a UE's LCS Subscription Data + operationId: GetLcsSubscriptionData + tags: + - LCS Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:lcs-subscription-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/v2x-data: + get: + summary: retrieve a UE's V2X Subscription Data + operationId: GetV2xData + tags: + - V2X Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:v2x-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/V2xSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/prose-data: + get: + summary: retrieve a UE's ProSe Subscription Data + operationId: GetProseData + tags: + - Prose Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:prose-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProseSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/5mbs-data: + get: + summary: retrieve a UE's 5MBS Subscription Data + operationId: GetMbsData + tags: + - 5MBS Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:5mbs-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/uc-data: + get: + summary: retrieve a UE's User Consent Subscription Data + operationId: GetUcData + tags: + - User Consent Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:uc-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: uc-purpose + in: query + description: User consent purpose + schema: + $ref: '#/components/schemas/UcPurpose' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UcSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/sdm-subscriptions: + post: + summary: subscribe to notifications + operationId: Subscribe + tags: + - Subscription Creation + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sdm-subscriptions:create + parameters: + - name: ueId + in: path + description: Identity of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: shared-data-ids + in: query + description: > + List of IDs identifying shared Data already available at and + subscribed by the NF service consumer + schema: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + style: form + explode: false + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-sdm//{ueId}/sdm-subscriptions/{subscriptionId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/sdm-subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications + operationId: Unsubscribe + tags: + - Subscription Deletion + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sdm-subscriptions:modify + parameters: + - name: ueId + in: path + description: Identity of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subscriptionId + in: path + description: Id of the SDM Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify the subscription + operationId: Modify + tags: + - Subscription Modification + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sdm-subscriptions:modify + parameters: + - name: ueId + in: path + description: Identity of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subscriptionId + in: path + description: Id of the SDM Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SdmSubsModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SdmSubscription' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{ueId}/id-translation-result: + get: + summary: retrieve a UE's SUPI or GPSI + operationId: GetSupiOrGpsi + tags: + - GPSI to SUPI Translation or SUPI to GPSI translation + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:id-translation-result:read + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: af-id + in: query + description: AF identifier + schema: + type: string + - name: app-port-id + in: query + description: Application port identifier + content: + application/json: + schema: + $ref: '#/components/schemas/AppPortId' + - name: af-service-id + in: query + description: AF Service Identifier + schema: + type: string + - name: mtc-provider-info + in: query + description: MTC Provider Information + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + - name: requested-gpsi-type + in: query + description: Requested GPSI Type + schema: + $ref: '#/components/schemas/GpsiType' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/IdTranslationResult' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/sor-ack: + put: + summary: Nudm_Sdm Info service operation + operationId: SorAckInfo + tags: + - Providing acknowledgement of Steering of Roaming + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:sor-ack:write + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcknowledgeInfo' + responses: + '204': + description: Successful acknowledgement + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/upu-ack: + put: + summary: Nudm_Sdm Info for UPU service operation + operationId: UpuAck + tags: + - Providing acknowledgement of UE Parameters Update + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:upu-ack:write + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcknowledgeInfo' + responses: + '204': + description: Successful acknowledgement + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/subscribed-snssais-ack: + put: + summary: Nudm_Sdm Info operation for S-NSSAIs acknowledgement + operationId: S-NSSAIs Ack + tags: + - Providing acknowledgement of S-NSSAIs Update + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:subscribed-nssais-ack:write + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcknowledgeInfo' + responses: + '204': + description: Successful acknowledgement + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/cag-ack: + put: + summary: Nudm_Sdm Info operation for CAG acknowledgement + operationId: CAG Ack + tags: + - Providing acknowledgement of CAG Update + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:cag-ack:write + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AcknowledgeInfo' + responses: + '204': + description: Successful acknowledgement + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/am-data/update-sor: + post: + summary: Nudm_Sdm custom operation to trigger SOR info update + operationId: Update SOR Info + tags: + - Trigger SOR info update + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:update-sor:invoke + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SorUpdateInfo' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SorInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /shared-data: + get: + summary: retrieve shared data + operationId: GetSharedData + tags: + - Retrieval of shared data + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:shared-data:read + parameters: + - name: shared-data-ids + in: query + description: List of shared data ids + required: true + style: form + explode: false + schema: + $ref: '#/components/schemas/SharedDataIds' + - name: supportedFeatures + in: query + deprecated: true + description: Supported Features; this query parameter should not be used + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SharedData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /shared-data-subscriptions: + post: + summary: subscribe to notifications for shared data + operationId: SubscribeToSharedData + tags: + - Subscription Creation for shared data + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:shared-data-subscriptions:create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-sdm//shared-data-subscriptions/{subscriptionId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /shared-data-subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications for shared data + operationId: UnsubscribeForSharedData + tags: + - Subscription Deletion for shared data + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:shared-data-subscriptions:modify + parameters: + - name: subscriptionId + in: path + description: Id of the Shared data Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify the subscription + operationId: ModifySharedDataSubs + tags: + - Subscription Modification + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:shared-data-subscriptions:modify + parameters: + - name: subscriptionId + in: path + description: Id of the SDM Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SdmSubsModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/SdmSubscription' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /group-data/group-identifiers: + get: + summary: Mapping of Group Identifiers + operationId: GetGroupIdentifiers + tags: + - Group Identifiers + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:group-identifiers:read + parameters: + - name: ext-group-id + in: query + description: External Group Identifier + required: false + schema: + $ref: '#/components/schemas/ExtGroupId' + - name: int-group-id + in: query + description: Internal Group Identifier + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: ue-id-ind + in: query + description: Indication whether UE identifiers are required or not + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: af-id + in: query + description: AF identifier + schema: + type: string + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/GroupIdentifiers' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /shared-data/{sharedDataId}: + get: + summary: retrieve the individual shared data + operationId: GetIndividualSharedData + tags: + - Retrieval of the individual shared data + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:shared-data:read + parameters: + - name: sharedDataId + in: path + description: Id of the Shared data + required: true + schema: + $ref: '#/components/schemas/SharedDataIds' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SharedData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /multiple-identifiers: + get: + summary: Mapping of UE Identifiers + operationId: GetMultipleIdentifiers + tags: + - Multiple Identifiers + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:multiple-identifiers:read + parameters: + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: gpsi-list + in: query + description: list of the GPSIs + required: true + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdentifiers' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/time-sync-data: + get: + summary: retrieve a UE's Time Synchronization Subscription Data + operationId: GetTimeSyncSubscriptionData + tags: + - Time Sync Subscription Data Retrieval + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/ranging-slpos-data: + get: + summary: retrieve a UE's Ranging and Sidelink Positioning Subscription Data + operationId: GetRangingSlPosData + tags: + - Ranging and Sidelink Positioning Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:ranging-slpos:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RangingSlPosSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/a2x-data: + get: + summary: retrieve a UE's A2X Subscription Data + operationId: GetA2xData + tags: + - A2X Subscription Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nudm-sdm + - oAuth2ClientCredentials: + - nudm-sdm + - nudm-sdm:a2x-data:read + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/A2xSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 2.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 2.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-sdm: Access to the nudm-sdm API + nudm-sdm:multi-data-sets:read: Access to read multiple data sets + nudm-sdm:nssai:read: Access to read NSSAI + nudm-sdm:ue-context-in-amf-data:read: Access to read UE context in AMF data + nudm-sdm:am-data:read: Access to read Access and Mobility Subscription data + nudm-sdm:ecr-data:read: Access to read ECR data + nudm-sdm:smf-select-data:read: Access to read SMF Selection data + nudm-sdm:ue-context-in-smf-data:read: Access to read UE context in SMF data + nudm-sdm:ue-context-in-smsf-data:read: Access to read UE context in SMSF data + nudm-sdm:trace-data:read: Access to read Trace data + nudm-sdm:sm-data:read: Access to read Session Management data + nudm-sdm:sms-data:read: Access to read SMS data + nudm-sdm:sms-mng-data:read: Access to read SMS Management data + nudm-sdm:lcs-privacy-data:read: Access to read LCS privacy data + nudm-sdm:lcs-mo-data:read: Access to read LCS MO data + nudm-sdm:lcs-subscription-data:read: Access to read (other) LCS Subscription data + nudm-sdm:lcs-bca-data:read: Access to read LCS BCA data + nudm-sdm:v2x-data:read: Access to read V2X data + nudm-sdm:prose-data:read: Access to read Prose data + nudm-sdm:5mbs-data:read: Access to read 5MBS data + nudm-sdm:uc-data:read: Access to read User Consent data + nudm-sdm:sdm-subscriptions:create: Access create SDM subscriptions + nudm-sdm:sdm-subscriptions:modify: Access to update SDM subscriptions + nudm-sdm:id-translation-result:read: Access to read ID Translation Results + nudm-sdm:sor-ack:write: Access to write SOR acknowledgements + nudm-sdm:upu-ack:write: Access to write UPU acknowledgements + nudm-sdm:subscribed-nssais-ack:write: Access to write Subscribed NSSAIs acknowledgements + nudm-sdm:cag-ack:write: Access to write CAG acknowledgements + nudm-sdm:update-sor:invoke: Access to invoke SOR info update + nudm-sdm:shared-data:read: Access to read Shared Data + nudm-sdm:shared-data-subscriptions:create: Access to create shared data subscriptions + nudm-sdm:shared-data-subscriptions:modify: Access to update shared data subscriptions + nudm-sdm:group-identifiers:read: Access to read Group Identifiers + nudm-sdm:multiple-identifiers:read: Access to read multiple Identifiers + nudm-sdm:ranging-slpos-data:read: Access to read Ranging and Sidelink Positioning data + nudm-sdm:a2x-data:read: Access to read A2X data + + + schemas: + +# COMPLEX TYPES: + + DatasetNames: + type: array + items: + $ref: '#/components/schemas/DataSetName' + minItems: 2 + uniqueItems: true + + SubscriptionDataSets: + type: object + properties: + amData: + $ref: '#/components/schemas/AccessAndMobilitySubscriptionData' + smfSelData: + $ref: '#/components/schemas/SmfSelectionSubscriptionData' + uecAmfData: + $ref: '#/components/schemas/UeContextInAmfData' + uecSmfData: + $ref: '#/components/schemas/UeContextInSmfData' + uecSmsfData: + $ref: '#/components/schemas/UeContextInSmsfData' + smsSubsData: + $ref: '#/components/schemas/SmsSubscriptionData' + smData: + $ref: '#/components/schemas/SmSubsData' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + smsMngData: + $ref: '#/components/schemas/SmsManagementSubscriptionData' + lcsPrivacyData: + $ref: '#/components/schemas/LcsPrivacyData' + lcsMoData: + $ref: '#/components/schemas/LcsMoData' + lcsSubscriptionData: + $ref: '#/components/schemas/LcsSubscriptionData' + v2xData: + $ref: '#/components/schemas/V2xSubscriptionData' + lcsBroadcastAssistanceTypesData: + $ref: '#/components/schemas/LcsBroadcastAssistanceTypesData' + proseData: + $ref: '#/components/schemas/ProseSubscriptionData' + mbsData: + $ref: '#/components/schemas/MbsSubscriptionData' + ucData: + $ref: '#/components/schemas/UcSubscriptionData' + a2xData: + $ref: '#/components/schemas/A2xSubscriptionData' + + UeContextInSmsfData: + type: object + properties: + smsfInfo3GppAccess: + $ref: '#/components/schemas/SmsfInfo' + smsfInfoNon3GppAccess: + $ref: '#/components/schemas/SmsfInfo' + + SmsfInfo: + type: object + required: + - smsfInstanceId + - plmnId + properties: + smsfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + smsfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + + + AccessAndMobilitySubscriptionData: + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + hssGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + sharedVnGroupDataIds: + description: A map(list of key-value pairs) where GroupId serves as key of SharedDataId + type: object + additionalProperties: + $ref: '#/components/schemas/SharedDataId' + minProperties: 1 + subscribedUeAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmbrRm' + nssai: + $ref: '#/components/schemas/Nssai' + ratRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + forbiddenAreas: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Area' + serviceAreaRestriction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + coreNetworkTypeRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CoreNetworkType' + accessTypeRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + maxItems: 2 + rfspIndex: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndexRm' + subsRegTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + ueUsageType: + $ref: '#/components/schemas/UeUsageType' + mpsPriority: + $ref: '#/components/schemas/MpsPriorityIndicator' + mcsPriority: + $ref: '#/components/schemas/McsPriorityIndicator' + activeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + sorInfo: + $ref: '#/components/schemas/SorInfo' + sorInfoExpectInd: + type: boolean + sorafRetrieval: + type: boolean + default: false + sorUpdateIndicatorList: + type: array + items: + $ref: '#/components/schemas/SorUpdateIndicator' + minItems: 1 + upuInfo: + $ref: '#/components/schemas/UpuInfo' + routingIndicator: + type: string + pattern: '^[0-9]{1,4}$' + micoAllowed: + $ref: '#/components/schemas/MicoAllowed' + sharedAmDataIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + odbPacketServices: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OdbPacketServices' + subscribedDnnList: + type: array + items: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn' + serviceGapTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + mdtUserConsent: + $ref: '#/components/schemas/MdtUserConsent' + mdtConfiguration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MdtConfiguration' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + cagData: + $ref: '#/components/schemas/CagData' + stnSr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StnSr' + cMsisdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CMsisdn' + nbIoTUePriority: + $ref: '#/components/schemas/NbIoTUePriority' + nssaiInclusionAllowed: + type: boolean + default: false + rgWirelineCharacteristics: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RgWirelineCharacteristics' + aun3DeviceConnectivityAllowed: + type: boolean + default: false + ecRestrictionDataWb: + $ref: '#/components/schemas/EcRestrictionDataWb' + ecRestrictionDataNb: + type: boolean + default: false + expectedUeBehaviourList: + $ref: '#/components/schemas/ExpectedUeBehaviourData' + expectedUeBehaviourData: + description: A map(list of key-value pairs) where a valid JSON pointer serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/ExpectedUeBehaviourData' + minProperties: 1 + primaryRatRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + secondaryRatRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + edrxParametersList: + type: array + items: + $ref: '#/components/schemas/EdrxParameters' + minItems: 1 + ptwParametersList: + type: array + items: + $ref: '#/components/schemas/PtwParameters' + minItems: 1 + iabOperationAllowed: + type: boolean + default: false + adjacentPlmnRestrictions: + description: A map (list of key-value pairs where PlmnId serves as key) of PlmnRestriction + type: object + additionalProperties: + $ref: '#/components/schemas/PlmnRestriction' + minProperties: 1 + wirelineForbiddenAreas: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineArea' + wirelineServiceAreaRestriction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + pcfSelectionAssistanceInfos: + type: array + items: + $ref: '#/components/schemas/PcfSelectionAssistanceInfo' + minItems: 1 + aerialUeSubInfo: + $ref: '#/components/schemas/AerialUeSubscriptionInfo' + roamingRestrictions: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RoamingRestrictions' + remoteProvInd: + type: boolean + default: false + 3gppChargingCharacteristics: + $ref: '#/components/schemas/3GppChargingCharacteristics' + timeSyncData: + $ref: '#/components/schemas/TimeSyncData' + sharedDataList: + type: array + items: + $ref: '#/components/schemas/SharedData' + minItems: 1 + qmcConfigInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/QmcConfigInfo' + mbsrOperationAllowed: + $ref: '#/components/schemas/MbsrOperationAllowed' + ladnServiceAreas: + description: A map(list of key-value pairs where singleNssai serves as key) of DnnLadnServiceAreas + type: object + additionalProperties: + $ref: '#/components/schemas/DnnLadnServiceAreas' + + DnnLadnServiceAreas: + type: object + required: + - dnnLadnServiceAreas + properties: + dnnLadnServiceAreas: + type: array + items: + $ref: '#/components/schemas/DnnLadnServiceArea' + minItems: 1 + + DnnLadnServiceArea: + type: object + required: + - dnn + - ladnServiceArea + properties: + dnn: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn' + ladnServiceArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + + TimeSyncData: + type: object + required: + - authorized + properties: + authorized: + type: boolean + uuTimeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tempVals: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + coverageArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + clockQualityDetailLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityDetailLevel' + clockQualityAcceptanceCriteria: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityAcceptanceCriterion' + minItems: 1 + + + PcfSelectionAssistanceInfo: + type: object + required: + - dnn + - singleNssai + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + PlmnRestriction: + type: object + properties: + ratRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + forbiddenAreas: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Area' + serviceAreaRestriction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + coreNetworkTypeRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CoreNetworkType' + accessTypeRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + maxItems: 2 + primaryRatRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + secondaryRatRestrictions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + uniqueItems: true + + ProseSubscriptionData: + description: Contains the ProSe Subscription Data. + type: object + properties: + proseServiceAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProseServiceAuth' + nrUePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + proseAllowedPlmn: + type: array + items: + $ref: '#/components/schemas/ProSeAllowedPlmn' + minItems: 1 + + ProSeAllowedPlmn: + description: Contains the PLMN identities where the Prose services are authorised to use and the authorised Prose services on this given PLMNs. + type: object + required: + - visitedPlmn + properties: + visitedPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + proseDirectAllowed: + type: array + items: + $ref: '#/components/schemas/ProseDirectAllowed' + minItems: 1 + + CagData: + type: object + required: + - cagInfos + properties: + cagInfos: + description: A map (list of key-value pairs where PlmnId serves as key) of CagInfo + type: object + additionalProperties: + $ref: '#/components/schemas/CagInfo' + conditionalCagInfos: + description: A map (list of key-value pairs where PlmnId serves as key) of CagInfo + type: object + additionalProperties: + $ref: '#/components/schemas/ConditionalCagInfo' + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + CagInfo: + type: object + required: + - allowedCagList + properties: + allowedCagList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + cagOnlyIndicator: + type: boolean + + SmfSelectionSubscriptionData: + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + subscribedSnssaiInfos: + description: A map(list of key-value pairs) where singleNssai serves as key of SnssaiInfo + type: object + additionalProperties: + $ref: '#/components/schemas/SnssaiInfo' + sharedSnssaiInfosId: + $ref: '#/components/schemas/SharedDataId' + hssGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + + SnssaiInfo: + type: object + required: + - dnnInfos + properties: + dnnInfos: + type: array + items: + $ref: '#/components/schemas/DnnInfo' + minItems: 1 + + DnnInfo: + type: object + required: + - dnn + properties: + dnn: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn' + defaultDnnIndicator: + $ref: '#/components/schemas/DnnIndicator' + lboRoamingAllowed: + $ref: '#/components/schemas/LboRoamingAllowed' + iwkEpsInd: + $ref: '#/components/schemas/IwkEpsInd' + dnnBarred: + type: boolean + invokeNefInd: + type: boolean + smfList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + sameSmfInd: + type: boolean + hrSboAllowed: + type: boolean + default: false + + Nssai: + type: object + required: + - defaultSingleNssais + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + defaultSingleNssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + singleNssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + additionalSnssaiData: + description: A map(list of key-value pairs) where singleNssai serves as key of AdditionalSnssaiData + type: object + additionalProperties: + $ref: '#/components/schemas/AdditionalSnssaiData' + minProperties: 1 + suppressNssrgInd: + type: boolean + nullable: true + + UeContextInAmfData: + type: object + properties: + epsInterworkingInfo: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/EpsInterworkingInfo' + amfInfo: + description: AMF information + type: array + items: + $ref: '#/components/schemas/AmfInfo' + minItems: 1 + maxItems: 2 + + UeContextInSmfData: + type: object + properties: + pduSessions: + description: A map (list of key-value pairs where PduSessionId serves as key) of PduSessions + type: object + additionalProperties: + $ref: '#/components/schemas/PduSession' + pgwInfo: + type: array + items: + $ref: '#/components/schemas/PgwInfo' + minItems: 1 + emergencyInfo: + $ref: '#/components/schemas/EmergencyInfo' + + EmergencyInfo: + type: object + oneOf: + - required: + - pgwFqdn + - required: + - pgwIpAddress + properties: + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pgwIpAddress: + $ref: '#/components/schemas/IpAddress' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + epdgInd: + type: boolean + default: false + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + + + PduSession: + type: object + required: + - dnn + - smfInstanceId + - plmnId + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + AmfInfo: + type: object + required: + - amfInstanceId + - guami + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + + PgwInfo: + type: object + required: + - dnn + - pgwFqdn + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pgwIpAddr: + $ref: '#/components/schemas/IpAddress' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + epdgInd: + type: boolean + default: false + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + wildcardInd: + type: boolean + + SessionManagementSubscriptionData: + type: object + required: + - singleNssai + properties: + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnnConfigurations: + description: A map (list of key-value pairs where Dnn, or optionally the Wildcard DNN, serves as key) of DnnConfigurations + type: object + additionalProperties: + $ref: '#/components/schemas/DnnConfiguration' + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + sharedVnGroupDataIds: + description: A map(list of key-value pairs) where GroupId serves as key of SharedDataId + type: object + additionalProperties: + $ref: '#/components/schemas/SharedDataId' + minProperties: 1 + sharedDnnConfigurationsId: + $ref: '#/components/schemas/SharedDataId' + odbPacketServices: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OdbPacketServices' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + sharedTraceDataId: + $ref: '#/components/schemas/SharedDataId' + expectedUeBehavioursList: + description: A map(list of key-value pairs) where Dnn serves as key of ExpectedUeBehaviourData + type: object + additionalProperties: + $ref: '#/components/schemas/ExpectedUeBehaviourData' + minProperties: 1 + expectedUeBehaviourData: + description: A map(list of key-value pairs) where DNN serves as key + type: object + additionalProperties: + description: A map(list of key-value pairs) where a valid JSON Pointer serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/ExpectedUeBehaviourData' + minProperties: 1 + minProperties: 1 + appSpecificExpectedUeBehaviourData: + description: A map(list of key-value pairs) where DNN serves as key + type: object + additionalProperties: + description: A map(list of key-value pairs) where a valid JSON Pointer serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/AppSpecificExpectedUeBehaviourData' + minProperties: 1 + minProperties: 1 + suggestedPacketNumDlList: + description: A map(list of key-value pairs) where Dnn serves as key of SuggestedPacketNumDl + type: object + additionalProperties: + $ref: '#/components/schemas/SuggestedPacketNumDl' + minProperties: 1 + 3gppChargingCharacteristics: + $ref: '#/components/schemas/3GppChargingCharacteristics' + nsacMode: + $ref: '#/components/schemas/NsacAdmissionMode' + sessInactTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + onDemand: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + additionalSharedDnnConfigurationsIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + + DnnConfiguration: + type: object + required: + - pduSessionTypes + - sscModes + properties: + pduSessionTypes: + $ref: '#/components/schemas/PduSessionTypes' + sscModes: + $ref: '#/components/schemas/SscModes' + iwkEpsInd: + $ref: '#/components/schemas/IwkEpsInd' + 5gQosProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SubscribedDefaultQos' + sessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + 3gppChargingCharacteristics: + $ref: '#/components/schemas/3GppChargingCharacteristics' + staticIpAddress: + type: array + items: + $ref: '#/components/schemas/IpAddress' + minItems: 1 + maxItems: 2 + upSecurity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UpSecurity' + pduSessionContinuityInd: + $ref: '#/components/schemas/PduSessionContinuityInd' + niddNefId: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NefId' + niddInfo: + $ref: '#/components/schemas/NiddInformation' + redundantSessionAllowed: + type: boolean + acsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AcsInfo' + ipv4FrameRouteList: + type: array + items: + $ref: '#/components/schemas/FrameRouteInfo' + minItems: 1 + ipv6FrameRouteList: + type: array + items: + $ref: '#/components/schemas/FrameRouteInfo' + minItems: 1 + atsssAllowed: + type: boolean + default: false + secondaryAuth: + type: boolean + uavSecondaryAuth: + type: boolean + default: false + dnAaaIpAddressAllocation: + type: boolean + dnAaaAddress: + $ref: '#/components/schemas/IpAddress' + additionalDnAaaAddresses: + type: array + items: + $ref: '#/components/schemas/IpAddress' + minItems: 1 + dnAaaFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + iptvAccCtrlInfo: + type: string + ipv4Index: + $ref: '#/components/schemas/IpIndex' + ipv6Index: + $ref: '#/components/schemas/IpIndex' + ecsAddrConfigInfo: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/EcsAddrConfigInfo' + additionalEcsAddrConfigInfos: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/EcsAddrConfigInfo' + minItems: 1 + sharedEcsAddrConfigInfo: + $ref: '#/components/schemas/SharedDataId' + additionalSharedEcsAddrConfigInfoIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + easDiscoveryAuthorized: + type: boolean + default: false + onboardingInd: + type: boolean + default: false + aerialUeInd: + $ref: '#/components/schemas/AerialUeIndication' + subscribedMaxIpv6PrefixSize: + type: integer + hrSboAuthorized: + type: boolean + default: false + + NiddInformation: + type: object + required: + - afId + properties: + afId: + type: string + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + extGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + + IpAddress: + type: object + oneOf: + - required: + - ipv4Addr + - required: + - ipv6Addr + - required: + - ipv6Prefix + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ipv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + + PduSessionTypes: + type: object + properties: + defaultSessionType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + allowedSessionTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + minItems: 1 + + SscModes: + type: object + required: + - defaultSscMode + properties: + defaultSscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + allowedSscModes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + minItems: 1 + maxItems: 2 + + SmsSubscriptionData: + type: object + properties: + smsSubscribed: + $ref: '#/components/schemas/SmsSubscribed' + sharedSmsSubsDataId: + $ref: '#/components/schemas/SharedDataId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SmsManagementSubscriptionData: + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + mtSmsSubscribed: + type: boolean + mtSmsBarringAll: + type: boolean + mtSmsBarringRoaming: + type: boolean + moSmsSubscribed: + type: boolean + moSmsBarringAll: + type: boolean + moSmsBarringRoaming: + type: boolean + sharedSmsMngDataIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + + SdmSubscription: + type: object + required: + - nfInstanceId + - callbackReference + - monitoredResourceUris + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + implicitUnsubscribe: + type: boolean + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amfServiceName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + subscriptionId: + type: string + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + immediateReport: + type: boolean + default: false + report: + $ref: '#/components/schemas/ImmediateReport' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + contextInfo: + $ref: '#/components/schemas/ContextInfo' + nfChangeFilter: + type: boolean + default: false + uniqueSubscription: + type: boolean + resetIds: + type: array + items: + type: string + minItems: 1 + ueConSmfDataSubFilter: + $ref: '#/components/schemas/UeContextInSmfDataSubFilter' + adjacentPlmns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + disasterRoamingInd: + type: boolean + default: false + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udrRestartInd: + type: boolean + default: false + expectedUeBehaviourThresholds: + description: A map(list of key-value pairs) where a valid JSON pointer serves as key of expectedUeBehaviourThresholds + type: object + additionalProperties: + $ref: '#/components/schemas/ExpectedUeBehaviourThreshold' + minProperties: 1 + + SdmSubsModification: + type: object + properties: + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + expectedUeBehaviourThresholds: + description: A map(list of key-value pairs) where a valid JSON pointer serves as key of expectedUeBehaviourThresholds + type: object + additionalProperties: + $ref: '#/components/schemas/ExpectedUeBehaviourThreshold' + minProperties: 1 + + ModificationNotification: + type: object + required: + - notifyItems + properties: + notifyItems: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotifyItem' + minItems: 1 + subscriptionId: + type: string + + IdTranslationResult: + type: object + required: + - supi + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + additionalSupis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + additionalGpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + + AcknowledgeInfo: + type: object + required: + - provisioningTime + properties: + sorMacIue: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SorMac' + upuMacIue: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuMac' + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sorTransparentContainer: + $ref: '#/components/schemas/SorTransparentContainer' + ueNotReachable: + type: boolean + default: false + upuTransparentContainer: + $ref: '#/components/schemas/UpuTransparentContainer' + + SorInfo: + type: object + properties: + steeringContainer: + $ref: '#/components/schemas/SteeringContainer' + ackInd: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/AckInd' + sorMacIausf: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SorMac' + countersor: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/CounterSor' + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sorTransparentContainer: + $ref: '#/components/schemas/SorTransparentContainer' + sorCmci: + $ref: '#/components/schemas/SorCmci' + sorSnpnSi: + $ref: '#/components/schemas/SorSnpnSi' + sorSnpnSiLs: + $ref: '#/components/schemas/SorSnpnSiLs' + storeSorCmciInMe: + type: boolean + usimSupportOfSorCmci: + type: boolean + required: + - ackInd + - provisioningTime + + SharedDataIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + uniqueItems: true + + UpuInfo: + type: object + properties: + upuDataList: + type: array + items: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuData' + minItems: 1 + upuRegInd: + $ref: '#/components/schemas/UpuRegInd' + upuAckInd: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuAckInd' + upuMacIausf: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuMac' + counterUpu: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/CounterUpu' + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + upuTransparentContainer: + $ref: '#/components/schemas/UpuTransparentContainer' + required: + - provisioningTime + + + SharedData: + type: object + required: + - sharedDataId + properties: + sharedDataId: + $ref: '#/components/schemas/SharedDataId' + sharedAmData: + $ref: '#/components/schemas/AccessAndMobilitySubscriptionData' + sharedSmsSubsData: + $ref: '#/components/schemas/SmsSubscriptionData' + sharedSmsMngSubsData: + $ref: '#/components/schemas/SmsManagementSubscriptionData' + sharedDnnConfigurations: + description: A map(list of key-value pairs) where Dnn, or optionally the Wildcard DNN, serves as key of DnnConfiguration + type: object + additionalProperties: + $ref: '#/components/schemas/DnnConfiguration' + minProperties: 1 + sharedTraceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + sharedSnssaiInfos: + description: A map(list of key-value pairs) where singleNssai serves as key of SnssaiInfo + type: object + additionalProperties: + $ref: '#/components/schemas/SnssaiInfo' + minProperties: 1 + sharedVnGroupDatas: + description: A map(list of key-value pairs) where GroupId serves as key of VnGroupData + type: object + additionalProperties: + $ref: '#/components/schemas/VnGroupData' + minProperties: 1 + treatmentInstructions: + description: A map(list of key-value pairs) where JSON pointer pointing to an attribute within the SharedData serves as key of SharedDataTreatmentInstruction + type: object + additionalProperties: + $ref: '#/components/schemas/SharedDataTreatmentInstruction' + minProperties: 1 + sharedSmSubsData: + $ref: '#/components/schemas/SessionManagementSubscriptionData' + sharedEcsAddrConfigInfo: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/EcsAddrConfigInfo' + + TraceDataResponse: + type: object + properties: + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + sharedTraceDataId: + $ref: '#/components/schemas/SharedDataId' + + SteeringContainer: + oneOf: + - type: array + items: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SteeringInfo' + minItems: 1 + - $ref: '#/components/schemas/SecuredPacket' + + GroupIdentifiers: + type: object + properties: + extGroupId: + $ref: '#/components/schemas/ExtGroupId' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + ueIdList: + type: array + items: + $ref: '#/components/schemas/UeId' + minItems: 1 + + VnGroupData: + type: object + properties: + pduSessionTypes: + $ref: '#/components/schemas/PduSessionTypes' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appDescriptors: + type: array + items: + $ref: '#/components/schemas/AppDescriptor' + minItems: 1 + secondaryAuth: + type: boolean + dnAaaIpAddressAllocation: + type: boolean + dnAaaAddress: + $ref: '#/components/schemas/IpAddress' + additionalDnAaaAddresses: + type: array + items: + $ref: '#/components/schemas/IpAddress' + minItems: 1 + dnAaaFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + AppDescriptor: + type: object + properties: + osId: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/OsId' + appId: + type: string + + AdditionalSnssaiData: + type: object + properties: + requiredAuthnAuthz: + type: boolean + subscribedUeSliceMbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceMbrRm' + subscribedNsSrgList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsSrg' + minItems: 1 + nsacMode: + $ref: '#/components/schemas/NsacAdmissionMode' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + deregInactTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + onDemand: + type: boolean + default: false + + AppPortId: + type: object + properties: + destinationPort: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + originatorPort: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + + LcsPrivacyData: + type: object + properties: + lpi: + $ref: '#/components/schemas/Lpi' + unrelatedClass: + $ref: '#/components/schemas/UnrelatedClass' + plmnOperatorClasses: + type: array + items: + $ref: '#/components/schemas/PlmnOperatorClass' + minItems: 1 + evtRptExpectedArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + areaUsageInd: + allOf: + - $ref: '#/components/schemas/AreaUsageInd' + default: INSIDE_REPORTING + upLocRepIndAf: + allOf: + - $ref: '#/components/schemas/UpLocRepIndAf' + default: USER_PLANE_REPORT_NOT_ALLOWED + + Lpi: + type: object + required: + - locationPrivacyInd + properties: + locationPrivacyInd: + $ref: '#/components/schemas/LocationPrivacyInd' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + UnrelatedClass: + type: object + required: + - defaultUnrelatedClass + properties: + defaultUnrelatedClass: + $ref: '#/components/schemas/DefaultUnrelatedClass' + externalUnrelatedClass: + $ref: '#/components/schemas/ExternalUnrelatedClass' + serviceTypeUnrelatedClasses: + type: array + items: + $ref: '#/components/schemas/ServiceTypeUnrelatedClass' + minItems: 1 + + PlmnOperatorClass: + type: object + required: + - lcsClientClass + - lcsClientIds + properties: + lcsClientClass: + $ref: '#/components/schemas/LcsClientClass' + lcsClientIds: + type: array + items: + $ref: '#/components/schemas/LcsClientId' + minItems: 1 + + ValidTimePeriod: + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + ExternalUnrelatedClass: + properties: + lcsClientExternals: + type: array + items: + $ref: '#/components/schemas/LcsClientExternal' + minItems: 1 + afExternals: + type: array + items: + $ref: '#/components/schemas/AfExternal' + minItems: 1 + lcsClientGroupExternals: + type: array + items: + $ref: '#/components/schemas/LcsClientGroupExternal' + minItems: 1 + + AfExternal: + type: object + properties: + afId: + $ref: '#/components/schemas/AfId' + allowedGeographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + privacyCheckRelatedAction: + $ref: '#/components/schemas/PrivacyCheckRelatedAction' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + LcsClientExternal: + type: object + properties: + allowedGeographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + privacyCheckRelatedAction: + $ref: '#/components/schemas/PrivacyCheckRelatedAction' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + LcsClientGroupExternal: + type: object + properties: + lcsClientGroupId: + $ref: '#/components/schemas/ExtGroupId' + allowedGeographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + privacyCheckRelatedAction: + $ref: '#/components/schemas/PrivacyCheckRelatedAction' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + ServiceTypeUnrelatedClass: + type: object + required: + - serviceType + properties: + serviceType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsServiceType' + allowedGeographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + privacyCheckRelatedAction: + $ref: '#/components/schemas/PrivacyCheckRelatedAction' + codeWordInd: + $ref: '#/components/schemas/CodeWordInd' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + codeWordList: + type: array + items: + $ref: '#/components/schemas/CodeWord' + minItems: 1 + + LcsMoData: + type: object + required: + - allowedServiceClasses + properties: + allowedServiceClasses: + type: array + items: + $ref: '#/components/schemas/LcsMoServiceClass' + minItems: 1 + moAssistanceDataTypes: + $ref: '#/components/schemas/LcsBroadcastAssistanceTypesData' + + LcsSubscriptionData: + type: object + properties: + configuredLmfId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + pruInd: + $ref: '#/components/schemas/PruInd' + lpHapType: + $ref: 'TS29518_Namf_Location.yaml#/components/schemas/LpHapType' + userPlanePosIndLmf: + type: boolean + default: false + + + LcsBroadcastAssistanceTypesData: + type: object + required: + - locationAssistanceType + properties: + locationAssistanceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Binary' + + EcRestrictionDataWb: + type: object + anyOf: + - required: [ ecModeARestricted ] + - required: [ ecModeBRestricted ] + properties: + ecModeARestricted: + type: boolean + ecModeBRestricted: + type: boolean + + ExpectedUeBehaviourData: + type: object + properties: + stationaryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StationaryIndication' + communicationDurationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + periodicTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + scheduledCommunicationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTime' + scheduledCommunicationType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationType' + expectedUmts: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/LocationArea' + minItems: 1 + description: Identifies the UE's expected geographical movement. The attribute is only applicable in 5G. + trafficProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficProfile' + batteryIndication: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BatteryIndication' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + confidenceLevel: + type: string + pattern: '^[0]\.[0-9]{2}$|^1\.00$' + accuracyLevel: + type: string + pattern: '^[0]\.[0-9]{2}$|^1\.00$' + + SuggestedPacketNumDl: + type: object + required: + - suggestedPacketNumDl + properties: + suggestedPacketNumDl: + type: integer + minimum: 1 + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + FrameRouteInfo: + type: object + properties: + ipv4Mask: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrMask' + ipv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + + SorUpdateInfo: + type: object + required: + - vplmnId + properties: + vplmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + EnhancedCoverageRestrictionData: + type: object + properties: + plmnEcInfoList: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PlmnEcInfo' + minItems: 1 + + EdrxParameters: + type: object + required: + - ratType + - edrxValue + properties: + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + edrxValue: + type: string + pattern: '^([0-1]{4})$' + + PtwParameters: + type: object + required: + - operationMode + - ptwValue + properties: + operationMode: + $ref: '#/components/schemas/OperationMode' + ptwValue: + type: string + pattern: '^([0-1]{4})$' + extendedPtwValue: + type: string + pattern: '^([0-1]{8})$' + + UeId: + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + + V2xSubscriptionData: + type: object + properties: + nrV2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NrV2xAuth' + lteV2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LteV2xAuth' + nrUePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ltePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + DefaultUnrelatedClass: + type: object + properties: + allowedGeographicArea: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + privacyCheckRelatedAction: + $ref: '#/components/schemas/PrivacyCheckRelatedAction' + codeWordInd: + $ref: '#/components/schemas/CodeWordInd' + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + codeWordList: + type: array + items: + $ref: '#/components/schemas/CodeWord' + minItems: 1 + + ContextInfo: + type: object + properties: + origHeaders: + type: array + items: + type: string + minItems: 1 + requestHeaders: + type: array + items: + type: string + minItems: 1 + + AerialUeSubscriptionInfo: + description: Contains the Aerial UE Subscription Information, it at least contains the Aerial UE Indication. + type: object + required: + - aerialUeInd + properties: + aerialUeInd: + $ref: '#/components/schemas/AerialUeIndication' + 3gppUavId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + + SmSubsData: + oneOf: + - type: array + items: + $ref: '#/components/schemas/SessionManagementSubscriptionData' + minItems: 1 + - $ref: '#/components/schemas/ExtendedSmSubsData' + + ExtendedSmSubsData: + description: Contains identifiers of shared Session Management Subscription Data and optionally individual Session Management Subscription Data. + type: object + required: + - sharedSmSubsDataIds + properties: + sharedSmSubsDataIds: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + minItems: 1 + individualSmSubsData: + type: array + items: + $ref: '#/components/schemas/SessionManagementSubscriptionData' + + ImmediateReport: + oneOf: + - $ref: '#/components/schemas/SubscriptionDataSets' + - type: array + items: + $ref: '#/components/schemas/SharedData' + minItems: 0 + + MbsSubscriptionData: + description: Contains the 5MBS Subscription Data. + type: object + properties: + mbsAllowed: + type: boolean + default: false + mbsSessionIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + minItems: 1 + ueMbsAssistanceInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + minItems: 1 + + UcSubscriptionData: + description: Contains the User Consent Subscription Data. + type: object + properties: + userConsentPerPurposeList: + description: A map(list of key-value pairs) where user consent purpose serves as key of user consent + type: object + additionalProperties: + $ref: '#/components/schemas/UserConsent' + minProperties: 1 + + UeContextInSmfDataSubFilter: + description: UE Context In Smf Data Subscription Filter. + type: object + properties: + dnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + snssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + emergencyInd: + type: boolean + default: false + + UeIdentifiers: + description: A map(list of key-value pairs) where Gpsi serves as key of arrays of Supi + type: object + additionalProperties: + $ref: '#/components/schemas/SupiInfo' + minProperties: 1 + + SupiInfo: + description: List of Supis. + type: object + required: + - supiList + properties: + supiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + + TimeSyncSubscriptionData: + description: UE Time Synchronization Subscription Data + type: object + required: + - afReqAuthorizations + - serviceIds + properties: + afReqAuthorizations: + type: array + items: + $ref: '#/components/schemas/AfRequestAuthorization' + minItems: 1 + serviceIds: + type: array + items: + $ref: '#/components/schemas/TimeSyncServiceId' + minItems: 1 + + AfRequestAuthorization: + description: AF Request Authorization + type: object + properties: + gptpAllowedInfo: + $ref: '#/components/schemas/GptpAllowedInfo' + astiAllowedInfo: + $ref: '#/components/schemas/AstiAllowedInfo' + oneOf: + - required: [ gptpAllowedInfo ] + - required: [ astiAllowedInfo ] + + GptpAllowedInfo: + description: AF authorization information for gPTP + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + gtptAllowed: + type: boolean + coverageArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + uuTimeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tempVals: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + required: + - gtptAllowed + + AstiAllowedInfo: + description: AF authorization information for ASTI + type: object + properties: + astiAllowed: + type: boolean + coverageArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + uuTimeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tempVals: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + required: + - astiAllowed + + TimeSyncServiceId: + description: Time Synchronization Service ID + type: object + required: + - reference + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + reference: + type: string + tempVals: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + coverageArea: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + uuTimeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + ConditionalCagInfo: + type: object + required: + - allowedCagList + properties: + allowedCagList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + minItems: 1 + cagOnlyIndicator: + type: boolean + validTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + AppSpecificExpectedUeBehaviourData: + type: object + anyOf: + - required: [ appId ] + - required: [ trafficFilters ] + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + trafficFilters: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + expectedInactivityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + confidenceLevel: + type: string + pattern: '^[0]\.[0-9]{2}$|^1\.00$' + accuracyLevel: + type: string + pattern: '^[0]\.[0-9]{2}$|^1\.00$' + + ExpectedUeBehaviourThreshold: + type: object + properties: + expecedUeBehaviourDatasets: + type: array + items: + $ref: '#/components/schemas/ExpecedUeBehaviourDataset' + minItems: 1 + singleNssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + confidenceLevel: + type: string + accuracyLevel: + type: string + + A2xSubscriptionData: + type: object + properties: + nrA2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NrA2xAuth' + lteA2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LteA2xAuth' + nrUePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ltePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + RangingSlPosQos: + type: object + properties: + hAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + vAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + relativeHAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + relativeVAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + distanceAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + directionAccuracy: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Accuracy' + verticalRequested: + type: boolean + responseTime: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ResponseTime' + lcsQosClass: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsQosClass' + + MbsrOperationAllowed: + type: object + properties: + mbsrOperationAllowedInd: + type: boolean + mbsrValidTimePeriod: + $ref: '#/components/schemas/ValidTimePeriod' + + +# SIMPLE TYPES: + + UeUsageType: + type: integer + + MpsPriorityIndicator: + type: boolean + + McsPriorityIndicator: + type: boolean + + DnnIndicator: + type: boolean + + LboRoamingAllowed: + type: boolean + + SmsSubscribed: + type: boolean + + 3GppChargingCharacteristics: + type: string + + MicoAllowed: + type: boolean + + SharedDataId: + type: string + pattern: '^[0-9]{5,6}-.+$' + + IwkEpsInd: + type: boolean + + SecuredPacket: + type: string + format: byte + + UpuRegInd: + type: boolean + + ExtGroupId: + type: string + pattern: '^extgroupid-[^@]+@[^@]+$' + + NbIoTUePriority: + type: integer + minimum: 0 + maximum: 255 + + CodeWord: + type: string + + AfId: + type: string + + LcsClientId: + type: string + + SorTransparentContainer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + UpuTransparentContainer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + IpIndex: + description: Represents the IP Index to be sent from UDM to the SMF (its value can be either an integer or a string) + anyOf: + - type: integer + - type: string + + SorCmci: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + SorSnpnSi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + SorSnpnSiLs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + RangingSlPosSubscriptionData: + description: Contains the Ranging/SL positioning Subscription Data. + type: object + properties: + rangingSlPosAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RangingSlPosAuth' + rangingSlPosPlmn: + type: array + items: + $ref: '#/components/schemas/RangingSlPosPlmn' + minItems: 1 + rangingSlPosQos: + $ref: '#/components/schemas/RangingSlPosQos' + + RangingSlPosPlmn: + description: Contains the PLMN identities where the Ranging/SL Positioning services are authorised to use and the authorised Ranging/SL Positioning services on this given PLMNs. + type: object + required: + - rangingSlPosPlmn + properties: + rangingSlPosPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + rangingSlPosAllowed: + type: array + items: + $ref: '#/components/schemas/RangingSlPosAllowed' + minItems: 1 + +# ENUMS: + + DataSetName: + description: Indicates the requested data set name. + anyOf: + - type: string + enum: + - AM + - SMF_SEL + - UEC_SMF + - UEC_SMSF + - SMS_SUB + - SM + - TRACE + - SMS_MNG + - LCS_PRIVACY + - LCS_MO + - LCS_SUB + - UEC_AMF + - V2X + - LCS_BCA + - PROSE + - UC + - MBS + - A2X + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + + UcPurpose: + description: Indicates the purpose of the user consent. + anyOf: + - type: string + enum: + - ANALYTICS + - MODEL_TRAINING + - NW_CAP_EXPOSURE + - EDGEAPP_UE_LOCATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + UserConsent: + description: Indicates user’s consent. + anyOf: + - type: string + enum: + - CONSENT_NOT_GIVEN + - CONSENT_GIVEN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + PduSessionContinuityInd: + description: > + It indicates the handling of PDU session when + the UE moves in and out of NB-IoT. + In its absence, the local policy should be used. + anyOf: + - type: string + enum: + - MAINTAIN_PDUSESSION + - RECONNECT_PDUSESSION + - RELEASE_PDUSESSION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + LocationPrivacyInd: + description: > + Indicates one of the mutually exclusive global settings + (if the location is allowed or disallowed). + anyOf: + - type: string + enum: + - LOCATION_DISALLOWED + - LOCATION_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + PrivacyCheckRelatedAction: + description: Indicates actions related to privacy check. + anyOf: + - type: string + enum: + - LOCATION_NOT_ALLOWED + - LOCATION_ALLOWED_WITH_NOTIFICATION + - LOCATION_ALLOWED_WITHOUT_NOTIFICATION + - LOCATION_ALLOWED_WITHOUT_RESPONSE + - LOCATION_RESTRICTED_WITHOUT_RESPONSE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + LcsClientClass: + description: Indicates LCS Client class. + anyOf: + - type: string + enum: + - BROADCAST_SERVICE + - OM_IN_HPLMN + - OM_IN_VPLMN + - ANONYMOUS_LOCATION_SERVICE + - SPECIFIC_SERVICE + - NWDAF_IN_HPLMN + - NWDAF_IN_VPLMN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + LcsMoServiceClass: + description: > + Indicates the requirement of the UE to request + its own location. + anyOf: + - type: string + enum: + - BASIC_SELF_LOCATION + - AUTONOMOUS_SELF_LOCATION + - TRANSFER_TO_THIRD_PARTY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + + OperationMode: + description: > + Indicates the Operation Mode. + anyOf: + - type: string + enum: + - WB_S1 + - NB_S1 + - WB_N1 + - NB_N1 + - NR_N1 + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + SorUpdateIndicator: + description: Indicates serving node PLMN identity. + anyOf: + - type: string + enum: + - INITIAL_REGISTRATION + - EMERGENCY_REGISTRATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + CodeWordInd: + description: > + Indicates that the codeword shall be checked in UE + or one or more codeword values to be checked in GMLC. + anyOf: + - type: string + enum: + - CODEWORD_CHECK_IN_UE + - CODEWORD_CHECK_IN_GMLC + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + MdtUserConsent: + description: > + Indicates the user has given his consent for MDT activation. + anyOf: + - type: string + enum: + - CONSENT_NOT_GIVEN + - CONSENT_GIVEN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + SharedDataTreatmentInstruction: + description: > + Indicates the presence of this attribute in the individual data. + Otherwise, the individual data takes precedence, by default. + anyOf: + - type: string + enum: + - USE_IF_NO_CLASH + - OVERWRITE + - MAX + - MIN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + GpsiType: + description: Type of GPSI (MSISDN or External-ID) + anyOf: + - type: string + enum: + - MSISDN + - EXT_ID + - EXT_GROUP_ID + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AerialUeIndication: + description: > + Indicates the Aerial service for the UE is allowed or not allowed, possible values are + - AERIAL_UE_ALLOWED: Aerial service for the UE is allowed. + - AERIAL_UE_NOT_ALLOWED: Aerial service for the UE is not allowed. + anyOf: + - type: string + enum: + - AERIAL_UE_ALLOWED + - AERIAL_UE_NOT_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ProseDirectAllowed: + description: > + Indicates the 5G ProSe Direct services that can be authorised to + use in the given PLMN for the UE. + anyOf: + - type: string + enum: + - ANNOUNCE + - MONITOR + - RESTRICTD_ANNOUNCE + - RESTRICTD_MONITOR + - DISCOVERER + - DISCOVEREE + - BROADCAST + - GROUPCAST + - UNICAST + - LAYER2_RELAY + - LAYER3_RELAY + - LAYER3_REMOTE + - LAYER2_UE_RELAY + - LAYER3_UE_RELAY + - LAYER2_END + - LAYER3_END + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + NsacAdmissionMode: + description: > + Indicates the NSAC admission mode applied in roaming case. + anyOf: + - type: string + enum: + - VPLMN_ADMISSION + - VPLMN_WITH_HPLMN_ASSISTANCE + - HPLMN_ADMISSION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + PruInd: + description: > + Indicates whether the UE can act as a PRU or the type of PRU. + anyOf: + - type: string + enum: + - NON_PRU + - STATIONARY_PRU + - NON_STATIONARY_PRU + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AreaUsageInd: + description: > + Indicates one of the mutually exclusive global settings + (whether the UE is allowed to generate and send the reports inside or outside the event + report expected area). + anyOf: + - type: string + enum: + - INSIDE_REPORTING + - OUTSIDE_REPORTING + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + + RangingSlPosAllowed: + description: > + Indicates the Ranging/SL positioning services that can be authorised to + use in the given PLMN for the UE. + anyOf: + - type: string + enum: + - PC5 + - ANNOUNCE + - MONITOR + - DISCOVERER + - DISCOVEREE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ExpecedUeBehaviourDataset: + anyOf: + - type: string + enum: + - STATIONARY_INDICATION + - COMMUNICATION_DURATION_TIME + - PERIODIC_TIME + - SCHEDULED_COMMUNICATION_TIME + - SCHEDULED_COMMUNICATION_TYPE + - EXPECTED_UMTS + - TRAFFIC_PROFILE + - BATTERY_INDICATION + - EXPECTED_INACTIVITY_TIME + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + UpLocRepIndAf: + description: > + Indicates one of the mutually exclusive global settings for location reporting over user + plane connectivity to an LCS client or AF. + anyOf: + - type: string + enum: + - USER_PLANE_REPORT_ALLOWED + - USER_PLANE_REPORT_NOT_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. diff --git a/TS29503_Nudm_SSAU.yaml b/TS29503_Nudm_SSAU.yaml new file mode 100644 index 0000000..2b4dc3c --- /dev/null +++ b/TS29503_Nudm_SSAU.yaml @@ -0,0 +1,323 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.1' + title: 'Nudm_SSAU' + description: | + Nudm Service Specific Authorization Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-ssau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-ssau + - {} + +paths: + /{ueIdentity}/{serviceType}/authorize: + post: + summary: Authorization for the Service specific parameters in the request. + operationId: ServiceSpecificAuthorization + tags: + - Service specific authorization request + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the Service Specific Parameters are authorized. Contains the GPSI of the user or the external group ID. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + - name: serviceType + in: path + description: Represents the specific service for which the Service Specific Parameters are authorized. + required: true + schema: + $ref: '#/components/schemas/ServiceType' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationInfo' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationData' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + authUpdateNotification: + '{request.body#/authUpdateCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AuthUpdateNotification' + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueIdentity}/{serviceType}/remove: + post: + summary: Remove the authorization of specific service's configuration. + operationId: ServiceSpecificAuthorizationRemoval + tags: + - Service specific authorization remove + parameters: + - name: ueIdentity + in: path + description: Represents the scope of the UE for which the Service Specific configuration authorization to be removed. Contains the GPSI of the user or the external group ID. + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + - name: serviceType + in: path + description: Represents the specific service for which the Service Specific configuration authorization to be removed. + required: true + schema: + $ref: '#/components/schemas/ServiceType' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationRemoveData' + required: true + responses: + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-ssau: Access to the nudm-ssau API + + schemas: + +# COMPLEX TYPES: +# + AuthUpdateNotification: + description: Represents an authorization update notification. + type: object + required: + - serviceType + - authUpdateInfoList + properties: + serviceType: + $ref: '#/components/schemas/ServiceType' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + authUpdateInfoList: + type: array + items: + $ref: '#/components/schemas/AuthUpdateInfo' + minItems: 1 + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + afId: + type: string + + AuthUpdateInfo: + description: Represents authorization update information. + type: object + required: + - authorizationData + properties: + authorizationData: + $ref: '#/components/schemas/ServiceSpecificAuthorizationData' + invalidityInd: + type: boolean + invalidCause: + $ref: '#/components/schemas/InvalidCause' + + + ServiceSpecificAuthorizationInfo: + description: Authorization information for a specific service + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + authUpdateCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + afId: + type: string + nefId: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NefId' + + ServiceSpecificAuthorizationData: + description: Authorization Response for a specific service. + type: object + properties: + authorizationUeId: + $ref: '#/components/schemas/AuthorizationUeId' + extGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + authId: + type: string + + AuthorizationUeId: + description: UE Id of the Authorization Data. + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + + ServiceSpecificAuthorizationRemoveData: + description: Information for Authorization removal of a specific service. + type: object + required: + - authId + properties: + authId: + type: string + + + +# SIMPLE TYPES: + + + +# ENUMS: + + ServiceType: + anyOf: + - type: string + enum: + - AF_GUIDANCE_FOR_URSP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Possible values are + - AF_GUIDANCE_FOR_URSP + + InvalidCause: + anyOf: + - type: string + enum: + - SUBSRIPTION_WITHDRAWAL + - DNN_REMOVED + - SLICE_REMOVED + - AUTHORIZATION_REVOKED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Possible values are + - SUBSRIPTION_WITHDRAWAL + - DNN_REMOVED + - SLICE_REMOVED + - AUTHORIZATION_REVOKED diff --git a/TS29503_Nudm_UEAU.yaml b/TS29503_Nudm_UEAU.yaml new file mode 100644 index 0000000..2fa3d15 --- /dev/null +++ b/TS29503_Nudm_UEAU.yaml @@ -0,0 +1,1033 @@ +openapi: 3.0.0 +info: + version: '1.3.0-alpha.4' + title: 'Nudm_UEAU' + description: | + UDM UE Authentication Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-ueau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-ueau + - {} + +paths: + /{supiOrSuci}/security-information/generate-auth-data: + post: + summary: Generate authentication data for the UE + operationId: GenerateAuthData + tags: + - Generate Auth Data + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:security-information:generate-auth-data:invoke + parameters: + - name: supiOrSuci + in: path + description: SUPI or SUCI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupiOrSuci' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationInfoResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supiOrSuci}/security-information-rg: + get: + summary: Get authentication data for the FN-RG + operationId: GetRgAuthData + tags: + - Get Auth Data for FN-RG + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:security-information-rg:read + parameters: + - name: supiOrSuci + in: path + description: SUPI or SUCI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupiOrSuci' + - name: authenticated-ind + in: query + description: Authenticated indication + required: true + schema: + $ref: '#/components/schemas/AuthenticatedInd' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: serving PLMN ID + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 3.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RgAuthCtx' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/auth-events: + post: + summary: Create a new confirmation event + operationId: ConfirmAuth + tags: + - Confirm Auth + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:auth-events:create + parameters: + - name: supi + in: path + description: SUPI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthEvent' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthEvent' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-ueau/v1/{supi}/auth-events/{authEventId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/hss-security-information/{hssAuthType}/generate-av: + post: + summary: Generate authentication data for the UE in EPS or IMS domain + operationId: GenerateAv + tags: + - Generate HSS Authentication Vectors + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:hss-security-information:generate-av:invoke + parameters: + - name: supi + in: path + description: SUPI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: hssAuthType + in: path + description: Type of AV requested by HSS + required: true + schema: + $ref: '#/components/schemas/HssAuthTypeInUri' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HssAuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/HssAuthenticationInfoResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supi}/auth-events/{authEventId}: + put: + summary: Deletes the authentication result in the UDM + operationId: DeleteAuth + tags: + - Delete Auth + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:auth-event-id:modify + parameters: + - name: supi + in: path + description: SUPI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: authEventId + in: path + description: authEvent Id + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthEvent' + required: true + responses: + '204': + description: Expected response to a successful authentication result removal + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{supi}/gba-security-information/generate-av: + post: + summary: Generate authentication data for the UE in GBA domain + operationId: GenerateGbaAv + tags: + - Generate GBA Authentication Vectors + security: + - {} + - oAuth2ClientCredentials: + - nudm-ueau + - oAuth2ClientCredentials: + - nudm-ueau + - nudm-ueau:gba-security-information:generate-av:invoke + parameters: + - name: supi + in: path + description: SUPI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GbaAuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/GbaAuthenticationInfoResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{supiOrSuci}/prose-security-information/generate-av: + post: + summary: Generate authentication data for ProSe + operationId: GenerateProseAV + tags: + - Generate ProSe Authentication Vectors + parameters: + - name: supiOrSuci + in: path + description: SUPI or SUCI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupiOrSuci' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeAuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeAuthenticationInfoResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-ueau: Access to the nudm-ueau API + nudm-ueau:security-information:generate-auth-data:invoke: Acess to invoke the "generate-auth-data" custom operation on the "security-information" resource + nudm-ueau:security-information-rg:read: Access to read the "security-information-rg" resource + nudm-ueau:auth-events:create: Access to create a new child resource on the "auth-events" collection resource + nudm-ueau:auth-event-id:modify: Access to modify (delete) an "auth-event-id" individual resource + nudm-ueau:hss-security-information:generate-av:invoke: Acess to invoke the "generate-av" custom operation on the "hss-security-information" resource + nudm-ueau:gba-security-information:generate-av:invoke: Acess to invoke the "generate-av" custom operation on the "gba-security-information" resource + + + schemas: + +# COMPLEX TYPES: + + AuthenticationInfoRequest: + type: object + required: + - servingNetworkName + - ausfInstanceId + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + servingNetworkName: + $ref: '#/components/schemas/ServingNetworkName' + resynchronizationInfo: + $ref: '#/components/schemas/ResynchronizationInfo' + ausfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + cellCagInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + minItems: 1 + n5gcInd: + type: boolean + default: false + nswoInd: + type: boolean + default: false + disasterRoamingInd: + type: boolean + default: false + aun3Ind: + type: boolean + default: false + + AuthenticationInfoResult: + type: object + required: + - authType + properties: + authType: + $ref: '#/components/schemas/AuthType' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + authenticationVector: + $ref: '#/components/schemas/AuthenticationVector' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + akmaInd: + type: boolean + default: false + authAaa: + type: boolean + default: false + routingId: + type: string + pattern: '^[0-9]{1,4}$' + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + mskInd: + type: boolean + default: false + + AuthenticationVector: + oneOf: + - $ref: '#/components/schemas/AvEapAkaPrime' + - $ref: '#/components/schemas/Av5GHeAka' + discriminator: + propertyName: avType + mapping: + 5G_HE_AKA: '#/components/schemas/Av5GHeAka' + EAP_AKA_PRIME: '#/components/schemas/AvEapAkaPrime' + + AvEapAkaPrime: + type: object + required: + - avType + - rand + - xres + - autn + - ckPrime + - ikPrime + properties: + avType: + $ref: '#/components/schemas/AvType' + rand: + $ref: '#/components/schemas/Rand' + xres: + $ref: '#/components/schemas/Xres' + autn: + $ref: '#/components/schemas/Autn' + ckPrime: + $ref: '#/components/schemas/CkPrime' + ikPrime: + $ref: '#/components/schemas/IkPrime' + + Av5GHeAka: + type: object + required: + - avType + - rand + - xresStar + - autn + - kausf + properties: + avType: + $ref: '#/components/schemas/AvType' + rand: + $ref: '#/components/schemas/Rand' + xresStar: + $ref: '#/components/schemas/XresStar' + autn: + $ref: '#/components/schemas/Autn' + kausf: + $ref: '#/components/schemas/Kausf' + + ResynchronizationInfo: + type: object + required: + - rand + - auts + properties: + rand: + $ref: '#/components/schemas/Rand' + auts: + $ref: '#/components/schemas/Auts' + + AuthEvent: + type: object + required: + - nfInstanceId + - success + - timeStamp + - authType + - servingNetworkName + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + success: + $ref: '#/components/schemas/Success' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + authType: + $ref: '#/components/schemas/AuthType' + servingNetworkName: + $ref: '#/components/schemas/ServingNetworkName' + authRemovalInd: + type: boolean + default: false + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + resetIds: + type: array + items: + type: string + minItems: 1 + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udrRestartInd: + type: boolean + default: false + + RgAuthCtx: + type: object + required: + - authInd + properties: + authInd: + type: boolean + default: false + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + HssAuthenticationInfoRequest: + type: object + required: + - hssAuthType + - numOfRequestedVectors + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + hssAuthType: + $ref: '#/components/schemas/HssAuthType' + numOfRequestedVectors: + $ref: '#/components/schemas/NumOfRequestedVectors' + requestingNodeType: + $ref: '#/components/schemas/NodeType' + servingNetworkId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + resynchronizationInfo: + $ref: '#/components/schemas/ResynchronizationInfo' + anId: + $ref: '#/components/schemas/AccessNetworkId' + + HssAuthenticationInfoResult: + type: object + required: + - hssAuthenticationVectors + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + hssAuthenticationVectors: + $ref: '#/components/schemas/HssAuthenticationVectors' + + HssAuthenticationVectors: + oneOf: + - type: array + items: + $ref: '#/components/schemas/AvEpsAka' + minItems: 1 + maxItems: 5 + - type: array + items: + $ref: '#/components/schemas/AvImsGbaEapAka' + minItems: 1 + maxItems: 5 + - type: array + items: + $ref: '#/components/schemas/AvEapAkaPrime' + minItems: 1 + maxItems: 5 + + AvEpsAka: + type: object + required: + - avType + - rand + - xres + - autn + - kasme + properties: + avType: + $ref: '#/components/schemas/HssAvType' + rand: + $ref: '#/components/schemas/Rand' + xres: + $ref: '#/components/schemas/Xres' + autn: + $ref: '#/components/schemas/Autn' + kasme: + $ref: '#/components/schemas/Kasme' + + AvImsGbaEapAka: + type: object + required: + - avType + - rand + - xres + - autn + - ck + - ik + properties: + avType: + $ref: '#/components/schemas/HssAvType' + rand: + $ref: '#/components/schemas/Rand' + xres: + $ref: '#/components/schemas/Xres' + autn: + $ref: '#/components/schemas/Autn' + ck: + $ref: '#/components/schemas/ConfidentialityKey' + ik: + $ref: '#/components/schemas/IntegrityKey' + + GbaAuthenticationInfoRequest: + type: object + required: + - authType + properties: + authType: + $ref: '#/components/schemas/GbaAuthType' + resynchronizationInfo: + $ref: 'TS29562_Nhss_imsUEAU.yaml#/components/schemas/ResynchronizationInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + GbaAuthenticationInfoResult: + type: object + properties: + 3gAkaAv: + $ref: 'TS29562_Nhss_imsUEAU.yaml#/components/schemas/3GAkaAv' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ProSeAuthenticationInfoRequest: + type: object + required: + - servingNetworkName + - relayServiceCode + properties: + servingNetworkName: + $ref: '#/components/schemas/ServingNetworkName' + relayServiceCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + resynchronizationInfo: + $ref: '#/components/schemas/ResynchronizationInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ProSeAuthenticationInfoResult: + type: object + required: + - authType + properties: + authType: + $ref: '#/components/schemas/AuthType' + proseAuthenticationVectors: + $ref: '#/components/schemas/ProSeAuthenticationVectors' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ProSeAuthenticationVectors: + oneOf: + - type: array + items: + $ref: '#/components/schemas/AvEapAkaPrime' + minItems: 1 + maxItems: 5 + + + +# SIMPLE TYPES: + + Autn: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + Auts: + type: string + pattern: '^[A-Fa-f0-9]{28}$' + + CkPrime: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + IkPrime: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + Kausf: + type: string + pattern: '^[A-Fa-f0-9]{64}$' + + Rand: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + Xres: + type: string + pattern: '^[A-Fa-f0-9]{8,32}$' + + XresStar: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + ServingNetworkName: + type: string + pattern: '^(5G:mnc[0-9]{3}[.]mcc[0-9]{3}[.]3gppnetwork[.]org(:[A-F0-9]{11})?)|5G:NSWO$' + + Success: + type: boolean + + AuthenticatedInd: + type: boolean + + ConfidentialityKey: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + IntegrityKey: + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + Kasme: + type: string + pattern: '^[A-Fa-f0-9]{64}$' + + NumOfRequestedVectors: + type: integer + minimum: 1 + maximum: 5 + + +# ENUMS: + + AuthType: + description: Indicates the authentication method. + anyOf: + - type: string + enum: + - 5G_AKA + - EAP_AKA_PRIME + - EAP_TLS + - NONE + - EAP_TTLS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AvType: + description: Indicates the type of authentication vector. + anyOf: + - type: string + enum: + - 5G_HE_AKA + - EAP_AKA_PRIME + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + HssAuthType: + description: Indicates the authentication method. + anyOf: + - type: string + enum: + - EPS_AKA + - EAP_AKA + - EAP_AKA_PRIME + - IMS_AKA + - GBA_AKA + - UMTS_AKA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + HssAvType: + description: Indicates a type of authentication vector. + anyOf: + - type: string + enum: + - EPS_AKA + - EAP_AKA + - IMS_AKA + - GBA_AKA + - UMTS_AKA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + HssAuthTypeInUri: + description: Indicates a type of authentication method. + anyOf: + - type: string + enum: + - eps-aka + - eap-aka + - eap-aka-prime + - ims-aka + - gba-aka + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + AccessNetworkId: + description: > + Indicates the contents of Access Network ID. + Used in the derivation of authentication vectors in EAP-AKA. + anyOf: + - type: string + enum: + - HRPD + - WIMAX + - WLAN + - ETHERNET + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + NodeType: + description: > + Indicates Indicates the requesting node type. + anyOf: + - type: string + enum: + - AUSF + - VLR + - SGSN + - S_CSCF + - BSF + - GAN_AAA_SERVER + - WLAN_AAA_SERVER + - MME + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + GbaAuthType: + description: Indicates the authentication method. + anyOf: + - type: string + enum: + - DIGEST_AKAV1_MD5 + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + diff --git a/TS29503_Nudm_UECM.yaml b/TS29503_Nudm_UECM.yaml new file mode 100644 index 0000000..677355b --- /dev/null +++ b/TS29503_Nudm_UECM.yaml @@ -0,0 +1,3589 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.5' + title: 'Nudm_UECM' + description: | + Nudm Context Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-uecm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-uecm + - {} + +paths: + /{ueId}/registrations: + get: + summary: retrieve UE registration data sets + operationId: GetRegistrations + tags: + - UECM Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: registration-dataset-names + in: query + style: form + explode: false + description: List of UECM registration dataset names + required: true + schema: + $ref: '#/components/schemas/RegistrationDatasetNames' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RegistrationDataSets' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/send-routing-info-sm: + post: + summary: Retreive addressing information for SMS delivery + operationId: SendRoutingInfoSm + tags: + - SendRoutingInfoSM (Custom Operation) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RoutingInfoSmRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RoutingInfoSmResponse' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/amf-3gpp-access: + put: + summary: register as AMF for 3GPP access + operationId: 3GppRegistration + tags: + - AMF registration for 3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/amf-3gpp-access' + required: true + schema: + type: string + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + deregistrationNotification: + '{request.body#/deregCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationData' + responses: + '204': + description: Successful Notification response + '200': + description: Successful Notification response with information to UDM + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationRespData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + pcscfRestorationNotification: + '{request.body#/pcscfRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcscfRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + reauthNotification: + '{request.body#/reauthNotifyCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ReauthNotificationInfo' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + patch: + summary: Update a parameter in the AMF registration for 3GPP access + operationId: Update3GppRegistration + tags: + - Parameter update in the AMF registration for 3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: retrieve the AMF registration for 3GPP access information + operationId: Get3GppRegistration + tags: + - AMF 3Gpp-access Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/amf-3gpp-access/dereg-amf: + post: + summary: trigger AMF for 3GPP access deregistration + operationId: deregAMF + tags: + - Trigger AMF for 3GPP access deregistration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfDeregInfo' + required: true + responses: + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/amf-3gpp-access/pei-update: + post: + summary: Updates the PEI in the 3GPP access registration context + operationId: PeiUpdate + tags: + - PEI Update + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PeiUpdateInfo' + required: true + responses: + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/amf-3gpp-access/roaming-info-update: + post: + summary: Update the Roaming Information + operationId: UpdateRoamingInformation + tags: + - Roaming Information Update + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:roaming-info-update:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RoamingInfoUpdate' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/RoamingInfoUpdate' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm//{ueId}/registrations/amf-3gpp-access/roaming-info-update' + required: true + schema: + type: string + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/amf-non-3gpp-access: + put: + summary: register as AMF for non-3GPP access + operationId: Non3GppRegistration + tags: + - AMF registration for non-3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/amf-non-3gpp-access' + required: true + schema: + type: string + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + '204': + description: No Content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + deregistrationNotification: + '{request.body#/deregCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationData' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + pcscfRestorationNotification: + '{request.body#/pcscfRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcscfRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + reauthNotification: + '{request.body#/reauthNotifyCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ReauthNotificationInfo' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + patch: + summary: update a parameter in the AMF registration for non-3GPP access + operationId: UpdateNon3GppRegistration + tags: + - Parameter update in the AMF registration for non-3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:amf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: retrieve the AMF registration for non-3GPP access information + operationId: GetNon3GppRegistration + tags: + - AMF non-3GPP-access Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/smf-registrations: + get: + summary: retrieve the SMF registration information + operationId: GetSmfRegistration + tags: + - SMF SmfRegistration + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistrationInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/smf-registrations/{pduSessionId}: + put: + summary: register as SMF + operationId: Registration + tags: + - SMF SmfRegistration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: pduSessionId + in: path + description: Identifier of the PDU session + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/smf-registrations/{pduSessionId}' + required: true + schema: + type: string + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + deregistrationNotification: + '{request.body#/deregCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationData' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + pcscfRestorationNotification: + '{request.body#/pcscfRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcscfRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + staleCheckNotification: + '{request.body#/staleCheckCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionIds' + responses: + '200': + description: Partial Success + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionIds' + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete an SMF registration + operationId: SmfDeregistration + tags: + - SMF Deregistration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: pduSessionId + in: path + description: Identifier of the PDU session + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + - name: smf-set-id + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: smf-instance-id + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: smf-events-implicitly-unsubscribed + in: query + description: Indication on SMF event subscriptions implicitly unsubscribed. + required: false + schema: + type: boolean + enum: + - true + responses: + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: get an SMF registration + operationId: RetrieveSmfRegistration + tags: + - Retrieve SMF Registration + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: pduSessionId + in: path + description: Identifier of the PDU session + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: update a parameter in the SMF registration + operationId: UpdateSmfRegistration + tags: + - Parameter update in the SMF registration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: pduSessionId + in: path + description: Identifier of the PDU session + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SmfRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/smsf-3gpp-access: + put: + summary: register as SMSF for 3GPP access + operationId: 3GppSmsfRegistration + tags: + - SMSF registration for 3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/smsf-3gpp-access' + required: true + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + schema: + type: string + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + schema: + type: string + '204': + description: No content + headers: + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete the SMSF registration for 3GPP access + operationId: 3GppSmsfDeregistration + tags: + - SMSF Deregistration for 3GPP Access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: smsf-set-id + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: If-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 9110, 3.1 + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: retrieve the SMSF registration for 3GPP access information + operationId: Get3GppSmsfRegistration + tags: + - SMSF 3GPP access Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: update a parameter in the SMSF registration for 3GPP access + operationId: UpdateSmsf3GppRegistration + tags: + - Parameter update in the SMSF registration for 3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SmsfRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/smsf-non-3gpp-access: + put: + summary: register as SMSF for non-3GPP access + operationId: Non3GppSmsfRegistration + tags: + - SMSF registration for non-3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/smsf-non-3gpp-access' + required: true + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + schema: + type: string + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + schema: + type: string + '204': + description: No content + headers: + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 9110, 2.3 + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + dataRestorationNotification: + '{request.body#/dataRestorationCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete SMSF registration for non 3GPP access + operationId: Non3GppSmsfDeregistration + tags: + - SMSF Deregistration for non-3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: smsf-set-id + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: If-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 9110, 3.1 + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: retrieve the SMSF registration for non-3GPP access information + operationId: GetNon3GppSmsfRegistration + tags: + - SMSF non-3GPP access Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: update a parameter in the SMSF registration for non-3GPP access + operationId: UpdateSmsfNon3GppRegistration + tags: + - Parameter update in the SMSF registration for non-3GPP access + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:smsf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SmsfRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/ip-sm-gw: + put: + summary: Register an IP-SM-GW + operationId: IpSmGwRegistration + tags: + - IP-SM-GW registration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:ip-sm-gw-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudm-uecm/v1/{ueId}/registrations/ip-sm-gw' + required: true + schema: + type: string + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: Delete the IP-SM-GW registration + operationId: IpSmGwDeregistration + tags: + - IP-SM-GW Deregistration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:ip-sm-gw-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: Retrieve the IP-SM-GW registration information + operationId: GetIpSmGwRegistration + tags: + - IP-SM-GW Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /restore-pcscf: + post: + summary: Trigger the Restoration of the P-CSCF + operationId: Trigger P-CSCF Restoration + tags: + - Trigger P-CSCF Restoration + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/TriggerRequest' + required: true + responses: + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/location: + get: + summary: retrieve the target UE's location information + operationId: GetLocationInfo + tags: + - UE Location Information retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocationInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/nwdaf-registrations: + get: + summary: retrieve the NWDAF registration + operationId: GetNwdafRegistration + tags: + - NWDAF Registration Info Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: analytics-ids + in: query + description: List of analytics Id(s) provided by the consumers of NWDAF. + schema: + type: array + items: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NwdafRegistration' + minItems: 1 + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/nwdaf-registrations/{nwdafRegistrationId}: + put: + summary: register as NWDAF + operationId: NwdafRegistration + tags: + - NWDAF registration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:nwdaf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: nwdafRegistrationId + in: path + description: NWDAF registration identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafRegistration' + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafRegistration' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + delete: + summary: delete an NWDAF registration + operationId: NwdafDeregistration + tags: + - NWDAF Deregistration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:nwdaf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: nwdafRegistrationId + in: path + description: NWDAF registration identifier + required: true + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + patch: + summary: Update a parameter in the NWDAF registration + operationId: UpdateNwdafRegistration + tags: + - Parameter update in the NWDAF registration + security: + - {} + - oAuth2ClientCredentials: + - nudm-uecm + - oAuth2ClientCredentials: + - nudm-uecm + - nudm-uecm:nwdaf-registration:write + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: nwdafRegistrationId + in: path + description: NWDAF registration identifier + required: true + schema: + type: string + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/NwdafRegistrationModification' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/NwdafRegistration' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/registrations/auth-trigger: + get: + summary: trigger the primary (re-)authentication + operationId: authTrigger + tags: + - Trigger the primary (re-)authentication + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthTriggerInfo' + required: true + responses: + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-uecm: Access to the nudm-uecm API + nudm_uecm:amf-registration:write: Write access (update/modify) to representations of the Amf3GppAccessRegistration and AmfNon3GppAccessRegistration resources + nudm_uecm:smf-registration:write: Write access (create/delete/modify) to the representations of individualSmfRegistration resources + nudm_uecm:smsf-registration:write: Write access (create/delete/modify) to representations of the Smsf3GppAccessRegistration and SmsfNon3GppAccessRegistration resources + nudm_uecm:ip-sm-gw-registration:write: Write access (create/delete/modify) to the representation of the IpSmGwRegistration resource + nudm_uecm:nwdaf-registration:write: Write access (create/delete/modify) to the representation of the NwdafRegistration resource + + + schemas: + +# COMPLEX TYPES: + + Amf3GppAccessRegistration: + description: > + This datatype contains the set of information relevant to the AMF where the UE + has registered via 3GPP access. + type: object + required: + - amfInstanceId + - deregCallbackUri + - guami + - ratType + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + purgeFlag: + $ref: '#/components/schemas/PurgeFlag' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + imsVoPs: + $ref: '#/components/schemas/ImsVoPs' + deregCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amfServiceNameDereg: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + pcscfRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amfServiceNamePcscfRest: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + initialRegistrationInd: + type: boolean + emergencyRegistrationInd: + type: boolean + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + minItems: 1 + drFlag: + $ref: '#/components/schemas/DualRegistrationFlag' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + urrpIndicator: + type: boolean + amfEeSubscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + epsInterworkingInfo: + $ref: '#/components/schemas/EpsInterworkingInfo' + ueSrvccCapability: + type: boolean + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + vgmlcAddress: + $ref: '#/components/schemas/VgmlcAddress' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + noEeSubscriptionInd: + type: boolean + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ueReachableInd: + $ref: '#/components/schemas/UeReachableInd' + reRegistrationRequired: + type: boolean + adminDeregSubWithdrawn: + type: boolean + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + disasterRoamingInd: + type: boolean + default: false + ueMINTCapability: + type: boolean + sorSnpnSiSupported: + type: boolean + default: false + udrRestartInd: + type: boolean + default: false + lastSynchronizationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + + Amf3GppAccessRegistrationModification: + description: > + This datatype contains the set of attributes obtained from type + Amf3GppAccessRegistration by deleting attributes that are not subject to + modification by HTTP PATCH method. + type: object + required: + - guami + properties: + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + purgeFlag: + $ref: '#/components/schemas/PurgeFlag' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + imsVoPs: + $ref: '#/components/schemas/ImsVoPs' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + epsInterworkingInfo: + $ref: '#/components/schemas/EpsInterworkingInfo' + ueSrvccCapability: + type: boolean + nullable: true + ueMINTCapability: + type: boolean + + EpsInterworkingInfo: + description: > + This information element contains the associations between APN/DNN and PGW-C+SMF + selected by the AMF for EPS interworking. + type: object + properties: + epsIwkPgws: + description: A map (list of key-value pairs where Dnn serves as key) of EpsIwkPgws + type: object + additionalProperties: + $ref: '#/components/schemas/EpsIwkPgw' + + EpsIwkPgw: + description: + This datatype signifies the PGW FQDN, SMF instance ID and the PLMNId location. + type: object + required: + - pgwFqdn + - smfInstanceId + properties: + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + + AmfNon3GppAccessRegistration: + description: > + Represents the complete set of information relevant to the AMF when the UE has registered + via non 3GPP access. + type: object + required: + - amfInstanceId + - imsVoPs + - deregCallbackUri + - guami + - ratType + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + purgeFlag: + $ref: '#/components/schemas/PurgeFlag' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + imsVoPs: + $ref: '#/components/schemas/ImsVoPs' + deregCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amfServiceNameDereg: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + pcscfRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amfServiceNamePcscfRest: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + minItems: 1 + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + urrpIndicator: + type: boolean + amfEeSubscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + vgmlcAddress: + $ref: '#/components/schemas/VgmlcAddress' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + noEeSubscriptionInd: + type: boolean + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + reRegistrationRequired: + type: boolean + adminDeregSubWithdrawn: + type: boolean + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + disasterRoamingInd: + type: boolean + default: false + sorSnpnSiSupported: + type: boolean + default: false + udrRestartInd: + type: boolean + default: false + lastSynchronizationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + AmfNon3GppAccessRegistrationModification: + description: > + This data type contains attributes of AmfNon3GppAccessRegistration that can be + modified using PATCH. + type: object + required: + - guami + properties: + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + purgeFlag: + $ref: '#/components/schemas/PurgeFlag' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + imsVoPs: + $ref: '#/components/schemas/ImsVoPs' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + + SmfRegistration: + description: > + This datatype contains a complete set of mandatory information relevant to an SMF + serving the UE. + type: object + required: + - smfInstanceId + - pduSessionId + - singleNssai + - plmnId + properties: + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + singleNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + emergencyServices: + type: boolean + pcscfRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pgwIpAddr: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + epdgInd: + type: boolean + default: false + deregCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + registrationReason: + $ref: '#/components/schemas/RegistrationReason' + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + udrRestartInd: + type: boolean + default: false + lastSynchronizationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pduSessionReActivationRequired: + type: boolean + default: false + staleCheckCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + udmStaleCheckCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + wildcardInd: + type: boolean + + PduSessionIds: + type: object + properties: + pduSessionIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + + SmsfRegistration: + description: > + This datatype contains SMSF registration for 3GPP access that is created or updated + with the received information. + type: object + required: + - smsfInstanceId + - plmnId + properties: + smsfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smsfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + smsfMAPAddress: + $ref: '#/components/schemas/E164Number' + smsfDiameterAddress: + $ref: '#/components/schemas/NetworkNodeDiameterAddress' + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + dataRestorationCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + smsfSbiSupInd: + type: boolean + default: false + udrRestartInd: + type: boolean + default: false + lastSynchronizationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueMemoryAvailableInd: + type: boolean + enum: + - true + + DeregistrationData: + description: > + This datatype is supported by the POST HTTP method, and it includes the + deregistration data. + type: object + required: + - deregReason + properties: + deregReason: + $ref: '#/components/schemas/DeregistrationReason' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + newSmfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + PcscfRestorationNotification: + description: > + This datatype contains the SUPI optionally addresses the failed P-CSCF. It is + supported by the POST HTTP method. + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + failedPcscf: + $ref: '#/components/schemas/PcscfAddress' + + NetworkNodeDiameterAddress: + description: > + This data type is a part of smsfDiameterAddress and it should be present + whenever smsf supports Diameter protocol. + type: object + required: + - name + - realm + properties: + name: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + realm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + + TriggerRequest: + description: > + This data type identifies if the NF service consumer requires to trigger P-CSCF + restoration. + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + failedPcscf: + $ref: '#/components/schemas/PcscfAddress' + + SmfRegistrationInfo: + description: This data type provides information about the SMF registration information. + type: object + required: + - smfRegistrationList + properties: + smfRegistrationList: + type: array + items: + $ref: '#/components/schemas/SmfRegistration' + minItems: 1 + + IpSmGwRegistration: + description: This data type contains the IP-SW-GW routing information. + type: object + anyOf: + - required: [ ipSmGwMapAddress ] + - required: [ ipSmGwDiameterAddress ] + - required: [ ipsmgwIpv4 ] + - required: [ ipsmgwIpv6 ] + - required: [ ipsmgwFqdn ] + properties: + ipSmGwMapAddress: + $ref: '#/components/schemas/E164Number' + ipSmGwDiameterAddress: + $ref: '#/components/schemas/NetworkNodeDiameterAddress' + ipsmgwIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipsmgwIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ipsmgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + unriIndicator: + type: boolean + default: false + resetIds: + type: array + items: + type: string + minItems: 1 + ipSmGwSbiSupInd: + type: boolean + default: false + + + AmfDeregInfo: + description: This data type contains the reason of deregistration. + type: object + required: + - deregReason + properties: + deregReason: + $ref: '#/components/schemas/DeregistrationReason' + + LocationInfo: + description: This data type contains the UE's location information in 5GC. + type: object + required: + - registrationLocationInfoList + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + registrationLocationInfoList: + type: array + items: + $ref: '#/components/schemas/RegistrationLocationInfo' + minItems: 1 + maxItems: 2 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + RegistrationLocationInfo: + description: > + This data type contains the information about serving AMF, optional VGMLC and + access type related information used by (H)GMLC. + type: object + required: + - amfInstanceId + - accessTypeList + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + vgmlcAddress: + $ref: '#/components/schemas/VgmlcAddress' + accessTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + maxItems: 2 + + VgmlcAddress: + description: > + This data type contains the address(es) of VGMLC. + Depending on the names of Vgmlcaddress, it could indicate either VGMLC IPv4 or IPv6 + address. + type: object + properties: + vgmlcAddressIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + vgmlcAddressIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + vgmlcFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + PeiUpdateInfo: + description: This data type contains information about the PEI. + type: object + required: + - pei + properties: + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + + RegistrationDatasetNames: + description: Represents the UECM registration dataset names. + type: array + items: + $ref: '#/components/schemas/RegistrationDataSetName' + minItems: 2 + uniqueItems: true + + RegistrationDataSets: + description: > + This data type contains all the attributes related to 3GPP access and + non-access registration. + type: object + properties: + amf3Gpp: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + amfNon3Gpp: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + smfRegistration: + $ref: '#/components/schemas/SmfRegistrationInfo' + smsf3Gpp: + $ref: '#/components/schemas/SmsfRegistration' + smsfNon3Gpp: + $ref: '#/components/schemas/SmsfRegistration' + ipSmGw: + $ref: '#/components/schemas/IpSmGwRegistration' + nwdafRegistration: + $ref: '#/components/schemas/NwdafRegistrationInfo' + + NwdafRegistration: + description: The complete set of information relevant to an NWDAF serving the UE + type: object + required: + - nwdafInstanceId + - analyticsIds + properties: + nwdafInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + analyticsIds: + type: array + items: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventId' + minItems: 1 + nwdafSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + registrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + + NwdafRegistrationModification: + description: Contains attributes of NwdafRegistration that can be modified using PATCH + type: object + required: + - nwdafInstanceId + properties: + nwdafInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nwdafSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + analyticsIds: + type: array + items: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SmfRegistrationModification: + description: Contains attributes of SmfRegistration that can be modified using PATCH + type: object + required: + - smfInstanceId + properties: + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnRm' + + DataRestorationNotification: + description: Contains identities representing those UEs potentially affected by a data-loss event at the UDR + type: object + properties: + lastReplicationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + supiRanges: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SupiRange' + minItems: 1 + gpsiRanges: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IdentityRange' + minItems: 1 + resetIds: + type: array + items: + type: string + minItems: 1 + sNssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + dnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + + RoamingInfoUpdate: + description: Contains the Roaming Information Update + type: object + required: + - servingPlmn + properties: + roaming: + type: + boolean + servingPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + + PcscfAddress: + description: Contains the addressing information (IP addresses and/or FQDN) of the P-CSCF + type: object + anyOf: + - required: [ipv4Addrs] + - required: [ipv6Addrs] + - required: [fqdn] + properties: + ipv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + NwdafRegistrationInfo: + description: List of NwdafRegistration + type: object + required: + - nwdafRegistrationList + properties: + nwdafRegistrationList: + type: array + items: + $ref: '#/components/schemas/NwdafRegistration' + minItems: 1 + + RoutingInfoSmRequest: + description: Request body of the send-routing-info-sm custom operation + type: object + properties: + ipSmGwInd: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + RoutingInfoSmResponse: + description: Addressing information of available nodes for SMS delivery + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + smsf3Gpp: + $ref: '#/components/schemas/SmsfRegistration' + smsfNon3Gpp: + $ref: '#/components/schemas/SmsfRegistration' + ipSmGw: + $ref: '#/components/schemas/IpSmGwInfo' + smsRouter: + $ref: '#/components/schemas/SmsRouterInfo' + + IpSmGwInfo: + description: Contains the IP-SM-GW Information + type: object + properties: + ipSmGwRegistration: + $ref: '#/components/schemas/IpSmGwRegistration' + ipSmGwGuidance: + $ref: '#/components/schemas/IpSmGwGuidance' + + IpSmGwGuidance: + description: > + Contains guidance information (e.g. minimum and recommended delivery times) of the IP-SM-GW + type: object + required: + - minDeliveryTime + - recommDeliveryTime + properties: + minDeliveryTime: + type: integer + minimum: 30 + maximum: 600 + recommDeliveryTime: + type: integer + minimum: 30 + maximum: 600 + + SmsRouterInfo: + description: Addressing information of the SMS Router configured at the UDM + type: object + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + diameterAddress: + $ref: '#/components/schemas/NetworkNodeDiameterAddress' + mapAddress: + $ref: '#/components/schemas/E164Number' + routerIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + routerIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + routerFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + SmsfRegistrationModification: + description: Contains attributes of SmsfRegistration that can be modified using PATCH + type: object + required: + - smsfInstanceId + properties: + smsfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + smsfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + ueMemoryAvailableInd: + type: boolean + enum: + - true + + ReauthNotificationInfo: + description: Contains the SUPI to identify the UE that is subject to reauthentication + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + + AuthTriggerInfo: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + + DeregistrationRespData: + type: object + properties: + smfEventRemovedInd: + type: boolean + enum: + - true + +# SIMPLE TYPES: + + PurgeFlag: + description: > + This flag indicates whether an AMF is deregistered. This attribute may be included + in notifications sent by the UDR to the UDM if purgeFlag is also set to true in the + same notification. + type: boolean + + E164Number: + description: > + This data type mentions International E.164 number of the SMSF; shall be present if + the SMSF supports MAP. + type: string + pattern: '^[0-9]{1,15}$' + + DualRegistrationFlag: + description: > + This data type indicates that the UDM+HSS is requested not to send S6a-CLR + to the registered MME/SGSN (if any). + type: boolean + +# ENUMS: + + ImsVoPs: + description: > + It represents the information indicating homogeneity of + IMS Voice over PS Sessions support for the UE + anyOf: + - type: string + enum: + - HOMOGENEOUS_SUPPORT + - HOMOGENEOUS_NON_SUPPORT + - NON_HOMOGENEOUS_OR_UNKNOWN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + DeregistrationReason: + description: > + It represents the reason of Deregistration Notification. + anyOf: + - type: string + enum: + - UE_INITIAL_REGISTRATION + - UE_REGISTRATION_AREA_CHANGE + - SUBSCRIPTION_WITHDRAWN + - 5GS_TO_EPS_MOBILITY + - 5GS_TO_EPS_MOBILITY_UE_INITIAL_REGISTRATION + - REREGISTRATION_REQUIRED + - SMF_CONTEXT_TRANSFERRED + - DUPLICATE_PDU_SESSION + - PDU_SESSION_REACTIVATION_REQUIRED + - DISASTER_CONDITION_TERMINATED + - OPERATOR_DETERMINED_BARRING + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + + RegistrationReason: + description: > + Indicates NF registration reason. + anyOf: + - type: string + enum: + - SMF_CONTEXT_TRANSFERRED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + RegistrationDataSetName: + description: > + Indicates the names of registration data sets to be retrieved. + anyOf: + - type: string + enum: + - AMF_3GPP + - AMF_NON_3GPP + - SMF_PDU_SESSIONS + - SMSF_3GPP + - SMSF_NON_3GPP + - IP_SM_GW + - NWDAF + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + UeReachableInd: + description: UE Reachable Indication + anyOf: + - type: string + enum: + - REACHABLE + - NOT_REACHABLE + - UNKNOWN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + diff --git a/TS29503_Nudm_UEID.yaml b/TS29503_Nudm_UEID.yaml new file mode 100644 index 0000000..239904e --- /dev/null +++ b/TS29503_Nudm_UEID.yaml @@ -0,0 +1,98 @@ +openapi: 3.0.0 +info: + version: '1.0.0' + title: 'Nudm_UEIdentifier' + description: | + UDM UE Identifier Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.503 Unified Data Management Services, version 17.10.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.503/' + +servers: + - url: '{apiRoot}/nudm-ueid/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nudm-ueid + - {} + +paths: + /deconceal: + post: + summary: Deconceal the SUCI to the SUPI + operationId: Deconceal + tags: + - Deconceal + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeconcealReqData' + required: true + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/DeconcealRspData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '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: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudm-ueid: Access to the nudm-ueid API + + + schemas: + +# COMPLEX TYPES: + + DeconcealReqData: + description: Deconceal Request Data + type: object + required: + - suci + properties: + suci: + $ref: 'TS29509_Nausf_UEAuthentication.yaml#/components/schemas/Suci' + + DeconcealRspData: + description: Deconceal Response Data + type: object + required: + - supi + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + +# SIMPLE TYPES: + + +# ENUMS: diff --git a/TS29504_CustomHeaders.abnf b/TS29504_CustomHeaders.abnf new file mode 100644 index 0000000..bfe7238 --- /dev/null +++ b/TS29504_CustomHeaders.abnf @@ -0,0 +1,109 @@ +; ---------------------------------------- +; RFC 5234 +; ---------------------------------------- + +HTAB = %x09 ; horizontal tab + +LF = %x0A ; linefeed + +CR = %x0D ; carriage return + +SP = %x20 + +DQUOTE = %x22 ; " (Double Quote) + +DIGIT = %x30-39 ; 0-9 + +ALPHA = %x41-5A / %x61-7A ; A-Z / a-z + +VCHAR = %x21-7E ; visible (printing) characters + +WSP = SP / HTAB ; white space + +CRLF = CR LF ; Internet standard newline + + + +; ---------------------------------------- +; RFC 5322 +; ---------------------------------------- + +obs-FWS = 1*WSP *( CRLF 1*WSP ) + +FWS = ( [ *WSP CRLF ] 1*WSP ) / obs-FWS + +obs-NO-WS-CTL = %d1-8 / %d11 / %d12 / %d14-31 / %d127 + +obs-ctext = obs-NO-WS-CTL + +ctext = %d33-39 / %d42-91 / %d93-126 / obs-ctext + +obs-qp = "\" ( obs-NO-WS-CTL / LF / CR ) + +quoted-pair = ( "\" ( VCHAR / WSP ) ) / obs-qp + +ccontent = ctext / quoted-pair / comment + +comment = "(" *( [ FWS ] ccontent ) [ FWS ] ")" + + + +; ---------------------------------------- +; RFC 7230 +; ---------------------------------------- + +OWS = *( SP / HTAB ) + +tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" / "+" / "-" + / "." / "^" / "_" / "`" / "|" / "~" / DIGIT / ALPHA + +token = 1*tchar + +obs-text = %x80-FF + + + +; ---------------------------------------- +; RFC 7232 +; ---------------------------------------- + +entity-tag = [ weak ] opaque-tag + +weak = %x57.2F ; "W/", case-sensitive + +opaque-tag = DQUOTE *etagc DQUOTE + +etagc = %x21 / %x23-7E / obs-text ; VCHAR except double quotes, plus obs-text + + + +; ---------------------------------------- +; 3GPP TS 29.504 +; +; Version: 18.3.0 (September 2023) +; +; (c) 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). +; ---------------------------------------- + +; +; Header: 3gpp-Sbi-Notification-Correlation +; + +Sbi-Notification-Correlation-Header = "3gpp-Sbi-Notification-Correlation:" OWS subscriptionId + *( OWS "," OWS subscriptionId ) OWS + +subscriptionId = token + + + +; +; Header: 3gpp-Sbi-Etags +; + +Sbi-Etags-Header = "3gpp-Sbi-Etags:" OWS datasetEtag *( OWS "," OWS datasetEtag ) OWS + +datasetEtag = dataSetName "=" entity-tag + +dataSetName = UeSubscribedDataSetName + +UeSubscribedDataSetName = 1*( ALPHA / DIGIT / "_" ) diff --git a/TS29504_Nudr_DR.yaml b/TS29504_Nudr_DR.yaml new file mode 100644 index 0000000..8080d2d --- /dev/null +++ b/TS29504_Nudr_DR.yaml @@ -0,0 +1,419 @@ +openapi: 3.0.0 + +info: + version: 2.3.0-alpha.5 + title: 'Nudr_DataRepository API OpenAPI file' + description: | + Unified Data Repository Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.504 V18.4.0; 5G System; Unified Data Repository Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.504/' + +servers: + - description: API root + url: '{apiRoot}/nudr-dr/v2' + variables: + apiRoot: + default: https://example.com + +security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + +paths: + /subscription-data/{ueId}/authentication-data/authentication-subscription: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1authentication-data~1authentication-subscription' + /subscription-data/{ueId}/authentication-data/authentication-status: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1authentication-data~1authentication-status' + /subscription-data/{ueId}/authentication-data/authentication-status/{servingNetworkName}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1authentication-data~1authentication-status~1%7BservingNetworkName%7D' + /subscription-data/{ueId}/ue-update-confirmation-data/sor-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ue-update-confirmation-data~1sor-data' + /subscription-data/{ueId}/ue-update-confirmation-data/upu-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ue-update-confirmation-data~1upu-data' + /subscription-data/{ueId}/ue-update-confirmation-data/subscribed-cag: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ue-update-confirmation-data~1subscribed-cag' + /subscription-data/{ueId}/ue-update-confirmation-data/subscribed-snssais: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ue-update-confirmation-data~1subscribed-snssais' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/am-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1am-data' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/smf-selection-subscription-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1smf-selection-subscription-data' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sm-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1sm-data' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/lcs-bca-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1lcs-bca-data' + /subscription-data/{ueId}/context-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data' + /subscription-data/{ueId}/context-data/amf-3gpp-access: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1amf-3gpp-access' + /subscription-data/{ueId}/context-data/amf-non-3gpp-access: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1amf-non-3gpp-access' + /subscription-data/{ueId}/context-data/smf-registrations: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1smf-registrations' + /subscription-data/{ueId}/context-data/smf-registrations/{pduSessionId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1smf-registrations~1%7BpduSessionId%7D' + /subscription-data/{ueId}/operator-specific-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1operator-specific-data' + /subscription-data/{ueId}/context-data/smsf-3gpp-access: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1smsf-3gpp-access' + /subscription-data/{ueId}/context-data/smsf-non-3gpp-access: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1smsf-non-3gpp-access' + /subscription-data/{ueId}/context-data/location: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1location' + /subscription-data/{ueId}/context-data/ip-sm-gw: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ip-sm-gw' + /subscription-data/{ueId}/context-data/mwd: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1mwd' + /subscription-data/{ueId}/context-data/roaming-information: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1roaming-information' + /subscription-data/{ueId}/context-data/pei-info: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1pei-info' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sms-mng-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1sms-mng-data' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sms-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1sms-data' + /subscription-data/{ueId}/lcs-privacy-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1lcs-privacy-data' + /subscription-data/{ueId}/lcs-mo-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1lcs-mo-data' + /subscription-data/{ueId}/lcs-subscription-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1lcs-subscription-data' + /subscription-data/{ueId}/pp-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1pp-data' + /subscription-data/{ueId}/context-data/ee-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ee-subscriptions' + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ee-subscriptions~1%7BsubsId%7D' + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/amf-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ee-subscriptions~1%7BsubsId%7D~1amf-subscriptions' + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/smf-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ee-subscriptions~1%7BsubsId%7D~1smf-subscriptions' + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/hss-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1ee-subscriptions~1%7BsubsId%7D~1hss-subscriptions' + /subscription-data/group-data/{ueGroupId}/ee-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-subscriptions' + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-subscriptions~1%7BsubsId%7D' + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/amf-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-subscriptions~1%7BsubsId%7D~1amf-subscriptions' + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/smf-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-subscriptions~1%7BsubsId%7D~1smf-subscriptions' + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/hss-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-subscriptions~1%7BsubsId%7D~1hss-subscriptions' + /subscription-data/group-data/{ueGroupId}/ee-profile-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1%7BueGroupId%7D~1ee-profile-data' + /subscription-data/group-data/5g-vn-groups: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~15g-vn-groups' + /subscription-data/group-data/5g-vn-groups/{externalGroupId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~15g-vn-groups~1%7BexternalGroupId%7D' + /subscription-data/group-data/5g-vn-groups/internal: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~15g-vn-groups~1internal' + /subscription-data/group-data/5g-vn-groups/pp-profile-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~15g-vn-groups~1pp-profile-data' + /subscription-data/group-data/mbs-group-membership: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1mbs-group-membership' + /subscription-data/group-data/mbs-group-membership/{externalGroupId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1mbs-group-membership~1%7BexternalGroupId%7D' + /subscription-data/group-data/mbs-group-membership/internal: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1mbs-group-membership~1internal' + /subscription-data/group-data/mbs-group-membership/pp-profile-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1mbs-group-membership~1pp-profile-data' + /subscription-data/{ueId}/ee-profile-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ee-profile-data' + /subscription-data/{ueId}/context-data/sdm-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1sdm-subscriptions' + /subscription-data/{ueId}/context-data/sdm-subscriptions/{subsId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1sdm-subscriptions~1%7BsubsId%7D' + /subscription-data/{ueId}/context-data/nidd-authorizations: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1nidd-authorizations' + /subscription-data/{ueId}/context-data/sdm-subscriptions/{subsId}/hss-sdm-subscriptions: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1sdm-subscriptions~1%7BsubsId%7D~1hss-sdm-subscriptions' + /subscription-data/shared-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1shared-data' + /subscription-data/shared-data/{sharedDataId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1shared-data~1%7BsharedDataId%7D' + /subscription-data/subs-to-notify: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1subs-to-notify' + /subscription-data/subs-to-notify/{subsId}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1subs-to-notify~1%7BsubsId%7D' + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/trace-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1%7BservingPlmnId%7D~1provisioned-data~1trace-data' + /subscription-data/{ueId}/identity-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1identity-data' + /subscription-data/{ueId}/operator-determined-barring-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1operator-determined-barring-data' + /subscription-data/{ueId}/nidd-authorization-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1nidd-authorization-data' + /subscription-data/{ueId}/service-specific-authorization-data/{serviceType}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1service-specific-authorization-data~1%7BserviceType%7D' + /subscription-data/{ueId}/v2x-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1v2x-data' + /subscription-data/{ueId}/pp-profile-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1pp-profile-data' + /subscription-data/{ueId}/coverage-restriction-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1coverage-restriction-data' + /subscription-data/group-data/group-identifiers: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1group-data~1group-identifiers' + /subscription-data/{ueId}/prose-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1prose-data' + /subscription-data/{ueId}/pp-data-store: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1pp-data-store' + /subscription-data/{ueId}/context-data/service-specific-authorizations/{serviceType}: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1context-data~1service-specific-authorizations~1%7BserviceType%7D' + /subscription-data/{ueId}/5mbs-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~15mbs-data' + /subscription-data/{ueId}/uc-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1uc-data' + /subscription-data/{ueId}/time-sync-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1time-sync-data' + /subscription-data/{ueId}/ranging-slpos-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1ranging-slpos-data' + /subscription-data/{ueId}/a2x-data: + $ref: 'TS29505_Subscription_Data.yaml#/paths/~1subscription-data~1%7BueId%7D~1a2x-data' + /policy-data/ues/{ueId}: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D' + /policy-data/ues/{ueId}/am-data: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D~1am-data' + /policy-data/ues/{ueId}/ue-policy-set: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D~1ue-policy-set' + /policy-data/ues/{ueId}/sm-data: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D~1sm-data' + /policy-data/ues/{ueId}/sm-data/{usageMonId}: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D~1sm-data~1%7BusageMonId%7D' + /policy-data/sponsor-connectivity-data/{sponsorId}: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1sponsor-connectivity-data~1%7BsponsorId%7D' + /policy-data/bdt-data: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1bdt-data' + /policy-data/bdt-data/{bdtReferenceId}: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1bdt-data~1%7BbdtReferenceId%7D' + /policy-data/subs-to-notify: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1subs-to-notify' + /policy-data/subs-to-notify/{subsId}: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1subs-to-notify~1%7BsubsId%7D' + /policy-data/ues/{ueId}/operator-specific-data: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1ues~1%7BueId%7D~1operator-specific-data' + /application-data/pfds: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1pfds' + /application-data/pfds/{appId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1pfds~1%7BappId%7D' + /application-data/influenceData: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1influenceData' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/influenceData/{influenceId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1influenceData~1%7BinfluenceId%7D' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /policy-data/plmns/{plmnId}/ue-policy-set: + $ref: 'TS29519_Policy_Data.yaml#/paths/~1policy-data~1plmns~1%7BplmnId%7D~1ue-policy-set' + /application-data/bdtPolicyData: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1bdtPolicyData' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/bdtPolicyData/{bdtPolicyId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1bdtPolicyData~1%7BbdtPolicyId%7D' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/iptvConfigData: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1iptvConfigData' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/iptvConfigData/{configurationId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1iptvConfigData~1%7BconfigurationId%7D' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/serviceParamData: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1serviceParamData' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/serviceParamData/{serviceParamId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1serviceParamData~1%7BserviceParamId%7D' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/influenceData/subs-to-notify: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1influenceData~1subs-to-notify' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/influenceData/subs-to-notify/{subscriptionId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1influenceData~1subs-to-notify~1%7BsubscriptionId%7D' +# The path segment is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + /application-data/subs-to-notify: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1subs-to-notify' + /application-data/subs-to-notify/{subsId}: + $ref: 'TS29519_Application_Data.yaml#/paths/~1application-data~1subs-to-notify~1%7BsubsId%7D' + /exposure-data/{ueId}/access-and-mobility-data: + $ref: 'TS29519_Exposure_Data.yaml#/paths/~1exposure-data~1%7BueId%7D~1access-and-mobility-data' + /exposure-data/{ueId}/session-management-data/{pduSessionId}: + $ref: 'TS29519_Exposure_Data.yaml#/paths/~1exposure-data~1%7BueId%7D~1session-management-data~1%7BpduSessionId%7D' + /exposure-data/subs-to-notify: + $ref: 'TS29519_Exposure_Data.yaml#/paths/~1exposure-data~1subs-to-notify' + /exposure-data/subs-to-notify/{subId}: + $ref: 'TS29519_Exposure_Data.yaml#/paths/~1exposure-data~1subs-to-notify~1%7BsubId%7D' + /data-restoration-events: + post: + # This is a pseudo operation, clients shall NOT invoke this method! + summary: subscribe to data restoration notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: {} + responses: + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + restorationNotification: + '{dataRestorationCallbackUri}': + # The URI in {dataRestorationCallbackUri} is the default endpoint discovered from NRF. + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataRestorationNotification' + responses: + '204': + description: No Content, Notification was succesfull + '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 NF service consumer' + 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 NF service consumer' + required: true + schema: + type: string + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudr-dr: Access to the Nudr_DataRepository API + nudr-dr:subscription-data: Access to the SubscriptionData data set + nudr-dr:subscription-data:authentication-subscription:read: Access to read the AuthenticationSubscription resource of the SubscriptionData data set + nudr-dr:subscription-data:authentication-subscription:modify: Access to update the AuthenticationSubscription resource of the SubscriptionData data set + nudr-dr:subscription-data:registrations:write: Write access to NF registration resources of the SubscriptionData data set + nudr-dr:policy-data: Access to the PolicyData data set + nudr-dr:policy-data:ues:read: Access to read the UEs resource + nudr-dr:policy-data:ues:am-data:read: Access to read the UEs Access and Mobility policy data + nudr-dr:policy-data:ues:ue-policy-set:read: Access to read the UEs Policy Set data + nudr-dr:policy-data:ues:ue-policy-set:create: Access to create the UEs Policy Set data + nudr-dr:policy-data:ues:ue-policy-set:modify: Access to update the UEs Policy Set data + nudr-dr:policy-data:ues:sm-data:read: Access to read the UEs Session Management Policy data + nudr-dr:policy-data:ues:sm-data:modify: Access to update the UEs Session Management Policy data + nudr-dr:policy-data:ues:sm-data:create: Access to create the UEs Session Management Policy data + nudr-dr:policy-data:sponsor-connectivity-data:read: Access to read the sponsored Connectivity Data + nudr-dr:policy-data:bdt-data:read: Access to read the BDT data resource + nudr-dr:policy-data:bdt-data:create: Access to create the BDT data resource + nudr-dr:policy-data:bdt-data:modify: Access to update the BDT data resource + nudr-dr:policy-data:subs-to-notify:create: Access to create Subscriptions resources + nudr-dr:policy-data:subs-to-notify:modify: Access to update Subscriptions resources + nudr-dr:policy-data:ues:operator-specific-data:read: Access to read the UEs operator specific policy data + nudr-dr:policy-data:ues:operator-specific-data:modify: Access to update the UEs operator specific policy data + nudr-dr:policy-data:ues:operator-specific-data:create: Access to create the UEs operator specific policy data + nudr-dr:policy-data:slice-control-data:read: Access to read Slice specific Policy Control Data + nudr-dr:policy-data:slice-control-data:modify: Access to update Slice specific Policy Control Data + nudr-dr:policy-data:group-control-data:read: Access to read Group Control Data + nudr-dr:policy-data:group-control-data:modify: Access to update Group Control Data + nudr-dr:exposure-data: Access to the ExposureData data set + nudr-dr:exposure-data:access-and-mobility-data:create: Access to create ExposureData + nudr-dr:exposure-data:access-and-mobility-data:read: Access to read ExposureData + nudr-dr:exposure-data:access-and-mobility-data:modify: Access to update ExposureData + nudr-dr:exposure-data:session-management-data:create: Access to create ExposureData + nudr-dr:exposure-data:session-management-data:read: Access to read ExposureData + nudr-dr:exposure-data:session-management-data:modify: Access to update ExposureData + nudr-dr:exposure-data:subs-to-notify:create: Access to create Subscriptions resources + nudr-dr:exposure-data:subs-to-notify:modify: Access to update Subscriptions resources + nudr-dr:application-data: Access to the ApplicationData data set + nudr-dr:application-data:pfds:read: Access to read PFDData + nudr-dr:application-data:pfds:modify: Access to update PFDData + nudr-dr:application-data:pfds:create: Access to create PFDData + nudr-dr:application-data:influence-data:read: Access to read Traffic Influence Data + nudr-dr:application-data:influence-data:create: Access to create Traffic Influence Data. + nudr-dr:application-data:influence-data:modify: Access to update Traffic Influence Data + nudr-dr:application-data:influence-data:subscriptions:read: Access to read Traffic Influence Data Subscriptions + nudr-dr:application-data:influence-data:subscriptions:create: Access to create Traffic Influence Data Subscriptions + nudr-dr:application-data:influence-data:subscriptions:modify: Access to update Traffic Influence Data Subscriptions + nudr-dr:application-data:bdt-policy-data:read: Access to read BDT Policy Data + nudr-dr:application-data:bdt-policy-data:create: Access to create BDT Policy Data + nudr-dr:application-data:bdt-policy-data:modify: Access to update BDT Policy Data + nudr-dr:application-data:iptv-config-data:read: Access to read IPTV Configuration Data + nudr-dr:application-data:iptv-config-data:create: Access to create IPTV Configuration Data + nudr-dr:application-data:iptv-config-data:modify: Access to update IPTV Configuration Data + nudr-dr:application-data:service-param-data:read: Access to read Service Parameter Data + nudr-dr:application-data:service-param-data:create: Access to create Service Parameter Data + nudr-dr:application-data:service-param-data:modify: Access to update Service Parameter Data + nudr-dr:application-data:am-influence-data:read: Access to read AM Influence Data + nudr-dr:application-data:am-influence-data:create: Access to create AM Influence Data + nudr-dr:application-data:am-influence-data:modify: Access to update AM Influence Data + nudr-dr:application-data:subs-to-notify:create: Access to create Subscriptions resources + nudr-dr:application-data:subs-to-notify:read: Access to read Subscriptions resources + nudr-dr:application-data:subs-to-notify:modify: Access to update Subscriptions resources + nudr-dr:application-data:eas-deploy-data:read: Access to read EAS Deployment Information Data + nudr-dr:application-data:eas-deploy-data:create: Access to create EAS Deployment Information Data + nudr-dr:application-data:eas-deploy-data:modify: Access to update EAS Deployment Information Data + nudr-dr:application-data:ecs-address-roaming:read: Access to read ECS Address Roaming Data + nudr-dr:application-data:ecs-address-roaming:create: Access to create ECS Address Roaming Data + nudr-dr:application-data:ecs-address-roaming:modify: Access to update ECS Address Roaming Data + nudr-dr:application-data:dnai-eas:read: Access to read DNAI-EAS Mapping Data + nudr-dr:application-data:af-qos-data-sets:read: Access to read AF Qos Data Sets + nudr-dr:application-data:af-qos-data-sets:create: Access to create AF Qos Data Sets + nudr-dr:application-data:af-qos-data-sets:modify: Access to update AF Qos Data Sets + + schemas: + DataRestorationNotification: + description: Contains identities representing those UEs potentially affected by a data-loss event at the UDR + type: object + properties: + supiRanges: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SupiRange' + minItems: 1 + gpsiRanges: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IdentityRange' + minItems: 1 + resetIds: + type: array + items: + type: string + minItems: 1 + sNssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + dnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + udrGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' diff --git a/TS29504_Nudr_GroupIDmap.yaml b/TS29504_Nudr_GroupIDmap.yaml new file mode 100644 index 0000000..4626eb1 --- /dev/null +++ b/TS29504_Nudr_GroupIDmap.yaml @@ -0,0 +1,173 @@ +openapi: 3.0.0 + +info: + version: 1.2.0-alpha.2 + title: 'Nudr_GroupIDmap' + description: | + Unified Data Repository Service for NF-Group ID retrieval. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.504 V18.4.0; 5G System; Unified Data Repository Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.504/' + +servers: + - description: API root + url: '{apiRoot}/nudr-group-id-map/v1' + variables: + apiRoot: + default: https://example.com + +security: + - {} + - oAuth2ClientCredentials: + - nudr-group-id-map + +paths: + /nf-group-ids: + get: + summary: Retrieves NF-Group IDs for provided Subscriber and NF types + operationId: GetNfGroupIDs + tags: + - NF Group IDs (Document) + parameters: + - name: nf-type + in: query + description: Type of NF + required: true + style: form + explode: false + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + minItems: 1 + - name: subscriberId +# The name of this query parameter is left not following the naming convention as defined in 3GPP TS 29.501 due to backward compatibility consideration. + in: query + description: Identifier of the subscriber + required: true + schema: + $ref: '#/components/schemas/SubscriberId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NfGroupIdMapResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /routing-ids: + get: + summary: Retrieves Routing Indicators for the provided NF type and NF Group ID + operationId: GetRoutingIDs + tags: + - Routing IDs (Document) + parameters: + - name: nf-type + in: query + description: Type of NF + required: true + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - name: nf-group-id + in: query + description: Identifier of the NF Group + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RoutingIdResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudr-group-id-map: Access to the Nudr_GroupIDmap API + + + + schemas: + +# STRUCTURED TYPES: + + NfGroupIdMapResult: + description: > + Contains the NFGroupIds for the requested NF types. The NFType is the key of the map. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + minProperties: 1 + + RoutingIdResult: + description: > + Contains the Routing Indicators for the requested NF type and NF Group ID. + type: object + properties: + routingIndicators: + type: array + items: + type: string + pattern: '^[0-9]{1,4}$' + minItems: 1 + +# SIMPLE TYPES: + + SubscriberId: + description: > + Represents the Subscription Identifier SUPI or GPSI or IMPI or IMPU, or Routing Indicator. + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|impi-.+|impu-.+|rid-[0-9]{1,4}|.+)$' + +# ENUMS: + diff --git a/TS29505_Subscription_Data.yaml b/TS29505_Subscription_Data.yaml new file mode 100644 index 0000000..9323872 --- /dev/null +++ b/TS29505_Subscription_Data.yaml @@ -0,0 +1,11126 @@ +openapi: 3.0.0 +info: + version: '-' + title: 'Unified Data Repository Service API file for subscription data' + description: | + Unified Data Repository Service (subscription data). + The API version is defined in 3GPP TS 29.504. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.505 V18.4.0; 5G System; Usage of the Unified Data Repository Service for subscription data; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.505/' + +paths: + + /subscription-data/{ueId}/authentication-data/authentication-subscription: + get: + summary: Retrieves the authentication subscription data of a UE + operationId: QueryAuthSubsData + tags: + - Authentication Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:authentication-subscription:read + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the authentication subscription data of a UE + operationId: ModifyAuthenticationSubscription + tags: + - Authentication Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:authentication-subscription:modify + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/authentication-data/authentication-status: + put: + summary: To store the Authentication Status data of a UE + operationId: CreateAuthenticationStatus + tags: + - Authentication Status (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AuthEvent' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the Authentication Status of a UE + operationId: QueryAuthenticationStatus + tags: + - AuthEvent (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + description: Supported Features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AuthEvent' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove the Authentication Status of a UE + operationId: DeleteAuthenticationStatus + tags: + - AuthEvent (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/authentication-data/authentication-status/{servingNetworkName}: + put: + summary: To store the individual Authentication Status data of a UE + operationId: CreateIndividualAuthenticationStatus + tags: + - Individual Authentication Status (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: servingNetworkName + in: path + description: Serving Network Name + required: true + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AuthEvent' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the Individual Authentication Status of a UE + operationId: QueryIndividualAuthenticationStatus + tags: + - Individual AuthEvent (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: servingNetworkName + in: path + description: Serving Network Name + required: true + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + description: Supported Features + in: query + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AuthEvent' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove the Individual Authentication Status of a UE + operationId: DeleteIndividualAuthenticationStatus + tags: + - Individual AuthEvent (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: servingNetworkName + in: path + description: Serving Network Name + required: true + schema: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ue-update-confirmation-data: + get: + summary: Retrieves the complete UE Update Confirmation data + operationId: QueryUeUpdConf + tags: + - UE Update Confirmation (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeUpdConfData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ue-update-confirmation-data/sor-data: + put: + summary: > + To store the SoR acknowledgement information of a UE, ME support of SOR CMCI, + and ME support of SOR-SNPN-SI and ME support of SOR-SNPN-SI-LS. + operationId: CreateAuthenticationSoR + tags: + - Authentication SoR (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SorData' + required: true + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: > + Retrieves the SoR acknowledgement information of a UE, ME support of SOR CMCI + ME support of SOR-SNPN-SI and ME support of SOR-SNPN-SI-LS + operationId: QueryAuthSoR + tags: + - Authentication SoR (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SorData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: > + Updates the ME support of SOR CMCI ME support of SOR-SNPN-SI + and ME support of SOR-SNPN-SI-LS information of a UE + operationId: UpdateAuthenticationSoR + tags: + - Authentication SoR (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ue-update-confirmation-data/upu-data: + put: + summary: To store the UPU acknowledgement information of a UE + operationId: CreateAuthenticationUPU + tags: + - Authentication UPU (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpuData' + required: true + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the UPU acknowledgement information of a UE + operationId: QueryAuthUPU + tags: + - Authentication UPU (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UpuData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ue-update-confirmation-data/subscribed-snssais: + put: + summary: To store the NSSAI update acknowledgement information of a UE + operationId: CreateOrUpdateNssaiAck + tags: + - NSSAI update ack (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NssaiAckData' + required: true + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the UPU acknowledgement information of a UE + operationId: QueryNssaiAck + tags: + - NSSAI ACK (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NssaiAckData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ue-update-confirmation-data/subscribed-cag: + put: + summary: To store the CAG update acknowledgement information of a UE + operationId: CreateCagUpdateAck + tags: + - CAG update ack (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CagAckData' + required: true + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the CAG acknowledgement information of a UE + operationId: QueryCagAck + tags: + - CAG ACK (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CagAckData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data: + get: + summary: Retrieve multiple provisioned data sets of a UE + operationId: QueryProvisionedData + tags: + - Provisioned Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: dataset-names + in: query + description: List of dataset names + style: form + explode: false + schema: + $ref: '#/components/schemas/ProvisionedDatasetNames' + - name: adjacent-plmns + in: query + description: List of PLMNs adjacent to the UE's serving PLMN + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + style: form + explode: false + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: '#/components/schemas/VarSnssai' + description: single NSSAI + required: false + - name: dnn + in: query + description: DNN + required: false + schema: + $ref: '#/components/schemas/Dnn' + - name: ext-group-ids + in: query + description: List of external VN group identifiers + schema: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + minItems: 1 + style: form + explode: false + - name: uc-purpose + in: query + description: User consent purpose + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcPurpose' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProvisionedDataSets' + headers: + 3gpp-Sbi-Etags: + description: A comma-separated list of ProvisionedDatasetName = Etag pairs + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/am-data: + get: + summary: Retrieves the access and mobility subscription data of a UE + operationId: QueryAmData + tags: + - Access And Mobility Subscription Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: adjacent-plmns + in: query + description: List of PLMNs adjacent to the UE's serving PLMN + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + style: form + explode: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.29110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.39110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilitySubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 91119111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.39110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.29110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/smf-selection-subscription-data: + get: + summary: Retrieves the SMF selection subscription data of a UE + operationId: QuerySmfSelectData + tags: + - SMF Selection Subscription Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.29110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.39110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSelectionSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 91119111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.39110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.29110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sm-data: + get: + summary: Retrieves the Session Management subscription data of a UE + operationId: QuerySmData + tags: + - Session Management Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: '#/components/schemas/VarSnssai' + description: single NSSAI + required: false + - name: dnn + in: query + description: DNN + required: false + schema: + $ref: '#/components/schemas/Dnn' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.29110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.39110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmSubsData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 91119111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.39110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.29110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/amf-3gpp-access: + get: + summary: Retrieves the AMF context data of a UE using 3gpp access + operationId: QueryAmfContext3gpp + tags: + - AMF 3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: To store the AMF context data of a UE using 3gpp access in the UDR + operationId: CreateAmfContext3gpp + tags: + - AMF 3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/amf-3gpp-access' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: To modify the AMF context data of a UE using 3gpp access in the UDR + operationId: AmfContext3gpp + tags: + - AMF 3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/amf-non-3gpp-access: + get: + summary: Retrieves the AMF context data of a UE using non-3gpp access + operationId: QueryAmfContextNon3gpp + tags: + - AMF Non-3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: To store the AMF context data of a UE using non-3gpp access in the UDR + operationId: CreateAmfContextNon3gpp + tags: + - AMF Non-3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/amf-non-3gpp-access' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: To modify the AMF context data of a UE using non 3gpp access in the UDR + operationId: AmfContextNon3gpp + tags: + - AMF Non-3GPP Access Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/smf-registrations: + get: + summary: Retrieves the SMF registration list of a UE + operationId: QuerySmfRegList + tags: + - SMF Registrations (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegList' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/smf-registrations/{pduSessionId}: + get: + summary: Retrieves the individual SMF registration of a UE + operationId: QuerySmfRegistration + tags: + - SMF Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: To create an individual SMF context data of a UE in the UDR + operationId: CreateOrUpdateSmfRegistration + tags: + - SMF Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + required: true + responses: + '201': + description: Upon success, a response body containing a representation of the created Individual SmfRegistration resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/SmfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/smf-registrations/{pduSessionId}' + required: true + schema: + type: string + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + staleCheckNotification: + '{request.body#/udmStaleCheckCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/SmfRegistrationInfo' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + delete: + summary: To remove an individual SMF context data of a UE the UDR + operationId: DeleteSmfRegistration + tags: + - SMF Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: To modify the SMF context data of a UE in the UDR + operationId: UpdateSmfContext + tags: + - SMF Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/operator-specific-data: + get: + summary: Retrieves the operator specific data of a UE + operationId: QueryOperSpecData + tags: + - Operator-Specific Data Container (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + description: A map(list of key-value pairs) where operator specific data element name serves as key + additionalProperties: + $ref: '#/components/schemas/OperatorSpecificDataContainer' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: To modify operator specific data of a UE + operationId: ModifyOperSpecData + tags: + - Operator-Specific Data Container (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: To create an operator-specific data resource of a UE + operationId: CreateOperSpecData + tags: + - Operator-Specific Data Container (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + type: object + description: A map (list of key-value pairs) where operator specific data element name serves as key + additionalProperties: + $ref: '#/components/schemas/OperatorSpecificDataContainer' + required: true + responses: + '201': + description: Upon success, a response body containing a representation of the created Operator Specific Data resource shall be returned + content: + application/json: + schema: + type: object + description: A map (list of key-value pairs) where operator specific data element name serves as key + additionalProperties: + $ref: '#/components/schemas/OperatorSpecificDataContainer' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/operator-specific-data' + required: true + schema: + type: string + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove an operator-specific data resource of a UE + operationId: DeleteOperSpecData + tags: + - Operator-Specific Data Container (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/smsf-3gpp-access: + put: + summary: Create the SMSF context data of a UE via 3GPP access + operationId: CreateSmsfContext3gpp + tags: + - SMSF 3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/smsf-3gpp-access' + required: true + schema: + type: string + '200': + description: Updated + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove the SMSF context data of a UE via 3GPP access + operationId: DeleteSmsfContext3gpp + tags: + - SMSF 3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the SMSF context data of a UE using 3gpp access + operationId: QuerySmsfContext3gpp + tags: + - SMSF 3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/smsf-non-3gpp-access: + put: + summary: Create the SMSF context data of a UE via non-3GPP access + operationId: CreateSmsfContextNon3gpp + tags: + - SMSF Non-3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/smsf-non-3gpp-access' + required: true + schema: + type: string + '200': + description: Updated + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove the SMSF context data of a UE via non-3GPP access + operationId: DeleteSmsfContextNon3gpp + tags: + - SMSF Non-3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the SMSF context data of a UE using non-3gpp access + operationId: QuerySmsfContextNon3gpp + tags: + - SMSF Non-3GPP Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsfRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/ip-sm-gw: + put: + summary: Create the IP-SM-GW context data of a UE + operationId: CreateIpSmGwContext + tags: + - IP-SM-GW Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: To remove the IP-SM-GW context data of a UE + operationId: DeleteIpSmGwContext + tags: + - IP-SM-GW Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify the IP-SM-GW context data of a UE + operationId: ModifyIpSmGwContext + tags: + - IP-SM-GW Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data:registrations:write + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the IP-SM-GW context data of a UE + operationId: QueryIpSmGwContext + tags: + - IP-SM-GW Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwRegistration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/mwd: + put: + summary: Create the Message Waiting Data of the UE + operationId: CreateMessageWaitingData + tags: + - Message Waiting Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MessageWaitingData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/MessageWaitingData' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/mwd' + required: true + schema: + type: string + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + delete: + summary: To remove the Message Waiting Data of the UE + operationId: DeleteMessageWaitingData + tags: + - Message Waiting Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify the Message Waiting Data of the UE + operationId: ModifyMessageWaitingData + tags: + - Message Waiting Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the Message Waiting Data of the UE + operationId: QueryMessageWaitingData + tags: + - Message Waiting Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/MessageWaitingData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sms-mng-data: + get: + summary: Retrieves the SMS management subscription data of a UE + operationId: QuerySmsMngData + tags: + - SMS Management Subscription Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsManagementSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/sms-data: + get: + summary: Retrieves the SMS subscription data of a UE + operationId: QuerySmsData + tags: + - SMS Subscription Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/pp-data: + get: + summary: Read the profile of a given UE + operationId: GetppData + tags: + - Parameter Provision (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: pp data for a UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PpData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the provisioned parameter data + operationId: ModifyPpData + tags: + - ProvisionedParameterData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: pp data for a UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/pp-profile-data: + get: + summary: Retrieves the parameter provision profile data of a UE + operationId: QueryPPData + tags: + - Parameter Provision profile Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PpProfileData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/pp-data-store/{afInstanceId}: + put: + summary: create a Provisioning Parameter Data Entry + operationId: Create PP Data Entry + tags: + - ProvisionedParameterDataEntry (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PpDataEntry' + required: true + responses: + '201': + description: Indicating a successful creation of the resource. + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PpDataEntry' + '204': + description: Indicating a successful creation of the resource. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + delete: + summary: Delete a Provisioning Parameter Data Entry + operationId: Delete PP Data Entry + tags: + - ProvisionedParameterDataEntry (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + responses: + '204': + description: Expected response to a valid request + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + get: + summary: get a Parameter Provisioning Data Entry + operationId: Get PP Data Entry + tags: + - ProvisionedParameterDataEntry (Document) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: afInstanceId + in: path + description: Application Function Instance Identifier + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PpDataEntry' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /subscription-data/{ueId}/pp-data-store: + get: + summary: get a list of Parameter Provisioning Data Entries + operationId: Get Multiple PP Data Entries + tags: + - ProvisionedParameterDataEntries (Collection) + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - type: string + pattern: '^anyUE$' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PpDataEntryList' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /subscription-data/{ueId}/context-data/ee-subscriptions: + get: + summary: Retrieves the ee subscriptions of a UE + operationId: Queryeesubscriptions + tags: + - Event Exposure Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: event-types + in: query + required: false + description: Event Types + schema: + type: array + items: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EventType' + minItems: 1 + style: form + explode: false + - name: nf-identifiers + in: query + description: NF Identifiers + schema: + type: array + items: + $ref: '#/components/schemas/NfIdentifier' + minItems: 1 + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EeSubscriptionExt' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Create individual EE subscription + operationId: CreateEeSubscriptions + tags: + - Event Exposure Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}: + put: + summary: Update an individual ee subscriptions of a UE + operationId: UpdateEesubscriptions + tags: + - Event Exposure Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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': + description: update of non-existing resource is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a eeSubscription + operationId: RemoveeeSubscriptions + tags: + - Event Exposure Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an individual ee subscription of a UE + operationId: ModifyEesubscription + tags: + - Event Exposure Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve a eeSubscription + operationId: QueryeeSubscription + tags: + - Event Exposure Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + items: + $ref: '#/components/schemas/EeSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/amf-subscriptions: + put: + summary: Create AmfSubscriptions for an individual ee subscriptions of a UE + operationId: Create AMF Subscriptions + tags: + - AMF Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes AMF Subscription Info for an eeSubscription + operationId: RemoveAmfSubscriptionsInfo + tags: + - Event AMF Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the AMF Subscription Info + operationId: ModifyAmfSubscriptionInfo + tags: + - AmfSubscriptionInfo (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve AMF subscription Info + operationId: GetAmfSubscriptionInfo + tags: + - Query AMF Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/smf-subscriptions: + put: + summary: Create SMF Subscription Info + operationId: Create SMF Subscriptions + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete SMF Subscription Info + operationId: RemoveSmfSubscriptionsInfo + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify SMF Subscription Info + operationId: ModifySmfSubscriptionInfo + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve SMF Subscription Info + operationId: GetSmfSubscriptionInfo + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/ee-subscriptions/{subsId}/hss-subscriptions: + put: + summary: Create HSS Subscription Info + operationId: Create HSS Subscriptions + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete HSS Subscription Info + operationId: RemoveHssSubscriptionsInfo + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify HSS Subscription Info + operationId: ModifyHssSubscriptionInfo + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve HSS Subscription Info + operationId: GetHssSubscriptionInfo + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-subscriptions: + get: + summary: Retrieves the ee subscriptions of a group of UEs or any UE + operationId: QueryEeGroupSubscriptions + tags: + - Event Exposure Group Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + description: Group of UEs or any UE + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EeSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Create individual EE subscription for a group of UEs or any UE + operationId: CreateEeGroupSubscriptions + tags: + - Event Exposure Group Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + description: Group of UEs or any UE + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/group-data/{ueGroupId}/ee-subscriptions' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}: + put: + summary: Update an individual ee subscription of a group of UEs or any UE + operationId: UpdateEeGroupSubscriptions + tags: + - Event Exposure Group Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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': + description: update of non-existing resource is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a eeSubscription for a group of UEs or any UE + operationId: RemoveEeGroupSubscriptions + tags: + - Event Exposure Group Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an individual ee subscription for a group of a UEs + operationId: ModifyEeGroupSubscription + tags: + - Event Exposure Group Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve a individual eeSubscription for a group of UEs or any UE + operationId: QueryEeGroupSubscription + tags: + - Event Exposure Group Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + items: + $ref: '#/components/schemas/EeSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-profile-data: + get: + summary: Retrieves the ee profile data profile data of a group or anyUE + operationId: QueryGroupEEData + tags: + - Event Exposure Data for a group (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + description: Group of UEs or any UE + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EeGroupProfileData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ee-profile-data: + get: + summary: Retrieves the ee profile data of a UE + operationId: QueryEEData + tags: + - Event Exposure Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EeProfileData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/sdm-subscriptions: + get: + summary: Retrieves the sdm subscriptions of a UE + operationId: Querysdmsubscriptions + tags: + - SDM Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SdmSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Create individual sdm subscription + operationId: CreateSdmSubscriptions + tags: + - SDM Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/sdm-subscriptions/{subsId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/sdm-subscriptions/{subsId}: + put: + summary: Update an individual sdm subscriptions of a UE + operationId: Updatesdmsubscriptions + tags: + - SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SdmSubscription' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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': + description: update of non-existing resource is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a sdmsubscriptions + operationId: RemovesdmSubscriptions + tags: + - SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an individual sdm subscription + operationId: ModifysdmSubscription + tags: + - SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves a individual sdmSubscription identified by subsId + operationId: QuerysdmSubscription + tags: + - SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + description: Unique ID of the subscription to retrieve + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + items: + $ref: '#/components/schemas/SdmSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/sdm-subscriptions/{subsId}/hss-sdm-subscriptions: + put: + summary: Create HSS SDM Subscription Info + operationId: Create HSS SDM Subscriptions + tags: + - HSS SDM Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete HSS SDM Subscription Info + operationId: RemoveHssSDMSubscriptionsInfo + tags: + - HSS SDM Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify HSS SDM Subscription Info + operationId: ModifyHssSDMSubscriptionInfo + tags: + - HSS SDM Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve HSS SDM Subscription Info + operationId: GetHssSDMSubscriptionInfo + tags: + - HSS SDM Subscription Info (Document) + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/shared-data: + get: + summary: retrieve shared data + operationId: GetSharedData + tags: + - Retrieval of shared data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: shared-data-ids + in: query + description: List of shared data ids + required: true + style: form + explode: false + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedDataIds' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/shared-data/{sharedDataId}: + get: + summary: retrieve individual shared data + operationId: GetIndividualSharedData + tags: + - Retrieval of individual shared data + parameters: + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + - name: sharedDataId + in: path + description: Id of the Shared Data + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedDataId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/subs-to-notify: + post: + summary: Subscription data subscriptions + operationId: SubscriptionDataSubscriptions + tags: + - Subs To Notify (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/subs-to-notify/{subsId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + onDataChange: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataChangeNotify' + responses: + '204': + description: Expected response to a valid request + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves the list of subscriptions + operationId: QuerySubsToNotify + tags: + - Subs To Notify (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ue-id + in: query + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes subscriptions identified by a given ue-id parameter + operationId: RemoveMultipleSubscriptionDataSubscriptions + tags: + - Subs To Notify (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ue-id + in: query + required: true + description: UE ID + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: nf-instance-id + in: query + required: false + description: NF Instance ID + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: delete-all-nfs + in: query + required: false + description: Flag to delete subscriptions from all NFs + schema: + type: boolean + - name: implicit-unsubscribe-indication + in: query + required: false + description: Implicit Unsubscribe Indication + schema: + type: boolean + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/subs-to-notify/{subsId}: + delete: + summary: Deletes a subscriptionDataSubscriptions + operationId: RemovesubscriptionDataSubscriptions + tags: + - Subs To Notify (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: subsId + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an individual subscriptionDataSubscription + operationId: ModifysubscriptionDataSubscription + tags: + - Subs To Notify (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '204': + description: Successful response + '200': + description: Expected response to a valid request + content: + application/json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + - $ref: '#/components/schemas/SubscriptionDataSubscriptions' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves a individual subscriptionDataSubscription identified by subsId + operationId: QuerySubscriptionDataSubscriptions + tags: + - Subs To Notify (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: subsId + in: path + required: true + description: Unique ID of the subscription to retrieve + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + items: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/trace-data: + get: + summary: Retrieves the trace configuration data of a UE + operationId: QueryTraceData + tags: + - Trace Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/TraceDataOrSharedTraceDataId' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/identity-data: + get: + summary: Retrieve identity data by SUPI or GPSI + operationId: GetIdentityData + tags: + - Query Identity Data by SUPI or GPSI (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: app-port-id + in: query + description: Application port identifier + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AppPortId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/IdentityData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/operator-determined-barring-data: + get: + summary: Retrieve ODB Data data by SUPI or GPSI + operationId: GetOdbData + tags: + - Query ODB Data by SUPI or GPSI (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OdbData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data: + get: + summary: Retrieve multiple context data sets of a UE + operationId: QueryContextData + tags: + - Context Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: context-dataset-names + in: query + description: List of context dataset names + style: form + explode: false + required: true + schema: + $ref: '#/components/schemas/ContextDatasetNames' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ContextDataSets' + headers: + 3gpp-Sbi-Etags: + description: A comma-separated list of ProvisionedDatasetName = Etag pairs + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/group-identifiers: + get: + summary: Mapping of Group Identifiers + operationId: GetGroupIdentifiers + tags: + - Group Identifiers + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ext-group-id + in: query + description: External Group Identifier + required: false + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: int-group-id + in: query + description: Internal Group Identifier + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: ue-id-ind + in: query + description: Indication whether UE identifiers are required or not + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/GroupIdentifiers' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/5g-vn-groups: + get: + summary: Retrieves the data of a 5G VN Group + operationId: Query5GVnGroup + tags: + - 5G-VN-Groups (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: gpsis + in: query + description: List of GPSIs + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + description: A map(list of key-value pairs) where ExtGroupId serves as key + additionalProperties: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5GVnGroupConfiguration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/5g-vn-groups/{externalGroupId}: + put: + summary: Create an individual 5G VN Grouop + operationId: Create5GVnGroup + tags: + - 5GVnGroupConfiguration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5GVnGroupConfiguration' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5GVnGroupConfiguration' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes the 5GVnGroup + operationId: Delete5GVnGroup + tags: + - Delete 5GVnGroup + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '204': + description: Expected response to a successful group removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the 5GVnGroup + operationId: Modify5GVnGroup + tags: + - Modify 5GVnGroup + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve a 5GVnGroup configuration + operationId: Get5GVnGroupConfiguration + tags: + - Query 5GVnGroupConfiguration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5GVnGroupConfiguration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/lcs-privacy-data: + get: + summary: Retrieves the LCS Privacy subscription data of a UE + operationId: QueryLcsPrivacyData + tags: + - LCS Privacy Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsPrivacyData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/lcs-subscription-data: + get: + summary: Retrieves the LCS subscription data of a UE + operationId: QueryLcsSubscriptionData + tags: + - LCS Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/lcs-mo-data: + get: + summary: Retrieves the LCS Mobile Originated subscription data of a UE + operationId: QueryLcsMoData + tags: + - LCS Mobile Originated Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsMoData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/nidd-authorization-data: + get: + summary: Retrieve NIDD Authorization Data GPSI or External Group identifier + operationId: GetNiddAuData + tags: + - Query NIDD Authorization Data GPSI or External Group identifier (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: '#/components/schemas/VarSnssai' + description: single NSSAI + required: true + - name: dnn + in: query + description: DNN + required: true + schema: + $ref: '#/components/schemas/Dnn' + - name: mtc-provider-information + in: query + description: MTC Provider Information + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + - name: af-id + in: query + description: Application Function Identifier + schema: + type: string + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/coverage-restriction-data: + get: + summary: Retrieves the subscribed enhanced Coverage Restriction Data of a UE + operationId: QueryCoverageRestrictionData + tags: + - Enhanced Coverage Restriction Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/EnhancedCoverageRestrictionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/location: + get: + summary: Retrieves the UE's Location Information + operationId: QueryUeLocation + tags: + - UE's Location Information (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocationInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/v2x-data: + get: + summary: Retrieves the subscribed V2X Data of a UE + operationId: QueryV2xData + tags: + - V2X Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/V2xSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/prose-data: + get: + summary: Retrieves the subscribed ProSe service Data of a UE + operationId: QueryPorseData + tags: + - ProSe Service Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ProseSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/{servingPlmnId}/provisioned-data/lcs-bca-data: + get: + summary: Retrieves the LCS Broadcast Assistance subscription data of a UE + operationId: QueryLcsBcaData + tags: + - LCS Broadcast Assistance Subscription Data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: servingPlmnId + in: path + description: PLMN ID + required: true + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LcsBroadcastAssistanceTypesData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + + /subscription-data/group-data/5g-vn-groups/internal: + get: + summary: Retrieves the data of 5G VN Group + operationId: Query5GVnGroupInternal + tags: + - 5G-VN-Groups-Internal (Document) + parameters: + - name: internal-group-ids + in: query + description: List of Internal Group IDs + required: true + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + description: A map (list of key-value pairs) where ExtGroupId serves as key + additionalProperties: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5GVnGroupConfiguration' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/5g-vn-groups/pp-profile-data: + get: + summary: Retrieves the parameter provision profile data for 5G VN Group + operationId: Query5GVNGroupPPData + tags: + - Parameter Provision profile Data for 5G VN Group(Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ext-group-ids + in: query + description: List of external VN group identifiers + schema: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pp5gVnGroupProfileData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/nidd-authorizations: + put: + summary: Create NIDD Authorization Info + operationId: CreateNIDDAuthorizationInfo + tags: + - NIDD Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NiddAuthorizationInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/NiddAuthorizationInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete NIDD Authorization Info + operationId: RemoveNiddAuthorizationInfo + tags: + - NIDD Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify NIDD Authorization Info + operationId: ModifyNiddAuthorizationInfo + tags: + - NIDD Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve NIDD Authorization Info + operationId: GetNiddAuthorizationInfo + tags: + - NIDD Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/NiddAuthorizationInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/5mbs-data: + get: + summary: Retrieves the 5mbs subscription data of a UE + operationId: Query5mbsData + tags: + - 5MBSSubscriptionData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/MbsSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}: + get: + summary: Retrieve multiple subscribed data sets of a UE + operationId: QueryUeSubscribedData + tags: + - UE Subscribed Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE Id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: dataset-names + in: query + description: List of dataset names + style: form + explode: false + schema: + $ref: '#/components/schemas/UeSubscribedDatasetNames' + - name: serving-plmn + in: query + description: Serving PLMN Id + schema: + $ref: '#/components/schemas/VarPlmnId' + - name: adjacent-plmns + in: query + description: List of PLMNs adjacent to the UE's serving PLMN + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + style: form + explode: false + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: '#/components/schemas/VarSnssai' + description: single NSSAI + required: false + - name: dnn + in: query + description: DNN + required: false + schema: + $ref: '#/components/schemas/Dnn' + - name: ext-group-ids + in: query + description: List of external VN group identifiers + schema: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + minItems: 1 + style: form + explode: false + - name: uc-purpose + in: query + description: User consent purpose + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcPurpose' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeSubscribedDataSets' + headers: + 3gpp-Sbi-Etags: + description: A comma-separated list of ProvisionedDatasetName = Etag pairs + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/service-specific-authorization-data/{serviceType}: + get: + summary: Retrieve ServiceSpecific Authorization Data + operationId: GetSSAuData + tags: + - Query Service Specific Authorization Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE ID + required: true + schema: + type: string + pattern: '^(msisdn-[0-9]{5,15}|.+|extid-[^@]+@[^@]+|extgroupid-[^@]+@[^@]+)$' + - name: serviceType + in: path + description: Service Type + required: true + schema: + $ref: 'TS29503_Nudm_SSAU.yaml#/components/schemas/ServiceType' + - name: single-nssai + in: query + content: + application/json: + schema: + $ref: '#/components/schemas/VarSnssai' + description: single NSSAI + required: true + - name: dnn + in: query + description: DNN + required: true + schema: + $ref: '#/components/schemas/Dnn' + - name: mtc-provider-information + in: query + description: MTC Provider Information + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + - name: af-id + in: query + description: Application Function Identifier + schema: + type: string + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/service-specific-authorizations/{serviceType}: + put: + summary: Create Service Specific Authorization Info + operationId: CreateServiceSpecificAuthorizationInfo + tags: + - Service Specific Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: serviceType + in: path + description: Service Type + required: true + schema: + $ref: 'TS29503_Nudm_SSAU.yaml#/components/schemas/ServiceType' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete Service Specific Authorization Info + operationId: RemoveServiceSpecificAuthorizationInfo + tags: + - Service Specific Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: serviceType + in: path + description: Service Type + required: true + schema: + $ref: 'TS29503_Nudm_SSAU.yaml#/components/schemas/ServiceType' + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify Service Specific Authorization Info + operationId: ModifyServiceSpecificAuthorizationInfo + tags: + - Service Specific Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: serviceType + in: path + description: Service Type + required: true + schema: + $ref: 'TS29503_Nudm_SSAU.yaml#/components/schemas/ServiceType' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve Service Specific Authorization Info + operationId: GetServiceSpecificAuthorizationInfo + tags: + - Service Specific Authorization Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: serviceType + in: path + description: Service Type + required: true + schema: + $ref: 'TS29503_Nudm_SSAU.yaml#/components/schemas/ServiceType' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSpecificAuthorizationInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/roaming-information: + put: + summary: Update the Roaming Information of the EPC domain + operationId: UpdateRoamingInformation + tags: + - Update the Roaming Information of the EPC domain (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/RoamingInfoUpdate' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/RoamingInfoUpdate' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/roaming-information' + required: true + schema: + type: string + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + get: + summary: Retrieves the Roaming Information of the EPC domain + operationId: QueryRoamingInformation + tags: + - Retrieve the Roaming Information of the EPC domain (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/RoamingInfoUpdate' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/context-data/pei-info: + put: + summary: Update the PEI Information of the 5GC/EPC domains + operationId: CreateOrUpdatePeiInformation + tags: + - Update the PEI Information of the 5GC/EPC domains (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/PeiUpdateInfo' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/PeiUpdateInfo' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nudr-dr//subscription-data/{ueId}/context-data/pei-info' + required: true + schema: + type: string + '204': + description: Upon success, an empty response body shall be returned + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + get: + summary: Retrieves the PEI Information of the 5GC/EPC domains + operationId: QueryPeiInformation + tags: + - Retrieve the Roaming Information of the 5GC/EPC domains (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/PeiUpdateInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/amf-subscriptions: + put: + summary: Create AmfSubscriptions for a group of UEs or any UE + operationId: CreateAmfGroupSubscriptions + tags: + - AMF Group Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes AMF Subscription Info for an eeSubscription for a group of UEs or any UE + operationId: RemoveAmfGroupSubscriptions + tags: + - Event AMF Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the AMF Subscription Info + operationId: ModifyAmfGroupSubscriptions + tags: + - AmfSubscriptionInfo (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve AMF subscription Info for a group of UEs or any UE + operationId: GetAmfGroupSubscriptions + tags: + - Query AMF Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/smf-subscriptions: + put: + summary: Create SMF Subscription Info for a group of UEs or any YE + operationId: CreateSmfGroupSubscriptions + tags: + - SMF Event Group Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete SMF Subscription Info for a group of UEs or any UE + operationId: RemoveSmfGroupSubscriptions + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify SMF Subscription Info for a group of UEs or any UE + operationId: ModifySmfGroupSubscriptions + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve SMF Subscription Info for a group of UEs or any UE + operationId: GetSmfGroupSubscriptions + tags: + - SMF Event Subscription Info (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueGroupId + in: path + required: true + schema: + $ref: '#/components/schemas/VarUeGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SmfSubscriptionInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/{ueGroupId}/ee-subscriptions/{subsId}/hss-subscriptions: + put: + summary: Create HSS Subscription Info for a group of UEs + operationId: CreateHssGroupSubscriptions + tags: + - HSS Event Group Subscription Info (Document) + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: subsId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + required: true + responses: + '204': + description: Upon success, an empty response body shall be returned + '201': + description: Upon successful creation, the created resource shall be returned + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete HSS Subscription Info + operationId: RemoveHssGroupSubscriptions + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify HSS Subscription Info + operationId: ModifyHssGroupSubscriptions + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: subsId + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve HSS Subscription Info + operationId: GetHssGroupSubscriptions + tags: + - HSS Event Subscription Info (Document) + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: subsId + in: path + required: true + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/HssSubscriptionInfo' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/uc-data: + get: + summary: Retrieves the subscribed User Consent Data of a UE + operationId: QueryUserConsentData + tags: + - User Consent Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: ucPurpose + in: query + description: User consent purpose + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcPurpose' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/UcSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/time-sync-data: + get: + summary: Retrieves the time synchronization subscription data of a UE + operationId: QueryTimeSyncSubscriptionData + tags: + - TimeSyncSubscriptionData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/TimeSyncSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /subscription-data/group-data/mbs-group-membership: + get: + summary: Retrieves the data of a 5G MBS Group + operationId: Query5GmbsGroup + tags: + - 5G-MBS-Group (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: gpsis + in: query + description: List of GPSIs + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + description: A map(list of key-value pairs) where ExtGroupId serves as key + additionalProperties: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/MulticastMbsGroupMemb' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/mbs-group-membership/{externalGroupId}: + put: + summary: Create an individual 5G MBS Grouop + operationId: Create5GmbsGroup + tags: + - MulticastMbsGroupMemb (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + requestBody: + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/MulticastMbsGroupMemb' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/MulticastMbsGroupMemb' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes the 5GmbsGroup + operationId: Delete5GmbsGroup + tags: + - Delete 5GmbsGroup + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '204': + description: Expected response to a successful group removal + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: modify the 5GmbsGroup + operationId: Modify5GmbsGroup + tags: + - Modify 5GmbsGroup + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: Expected response to a valid request + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: modification is rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve a 5GmbsGroup + operationId: GetMulticastMbsGroupMemb + tags: + - Query MulticastMbsGroupMemb (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: externalGroupId + in: path + required: true + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/MulticastMbsGroupMemb' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/mbs-group-membership/internal: + get: + summary: Retrieves the data of 5G MBS Group + operationId: Query5GMbsGroupInternal + tags: + - 5G-MBS-Groups-Internal (Document) + parameters: + - name: internal-group-ids + in: query + description: List of Internal Group IDs + required: true + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + style: form + explode: false + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + description: A map (list of key-value pairs) where ExtGroupId serves as key + additionalProperties: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/MulticastMbsGroupMemb' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/group-data/mbs-group-membership/pp-profile-data: + get: + summary: Retrieves the parameter provision profile data for 5G MBS Group + operationId: Query5GMbsGroupPPData + tags: + - Parameter Provision profile Data for 5G MBS Group(Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ext-group-ids + in: query + description: List of external MBS group identifiers + schema: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Pp5gMbsGroupProfileData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/ranging-slpos-data: + get: + summary: Retrieves the subscribed Ranging and Sidelink Positioning service Data of a UE + operationId: QueryRangingSlPosData + tags: + - Ranging and Sidelink Positioning Service Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/RangingSlPosSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscription-data/{ueId}/a2x-data: + get: + summary: Retrieves the subscribed A2X Data of a UE + operationId: QueryA2xData + tags: + - A2X Subscription Data + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:subscription-data + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/A2xSubscriptionData' + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + 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' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + AuthenticationSubscription: + description: A UE's authentication data. + type: object + required: + - authenticationMethod + properties: + authenticationMethod: + $ref: '#/components/schemas/AuthMethod' + encPermanentKey: + type: string + protectionParameterId: + type: string + sequenceNumber: + $ref: '#/components/schemas/SequenceNumber' + authenticationManagementField: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + algorithmId: + type: string + encOpcKey: + type: string + encTopcKey: + type: string + vectorGenerationInHss: + type: boolean + default: false + hssGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + n5gcAuthMethod: + $ref: '#/components/schemas/AuthMethod' + rgAuthenticationInd: + type: boolean + default: false + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + akmaAllowed: + type: boolean + default: false + routingId: + type: string + pattern: '^[0-9]{1,4}$' + + SequenceNumber: + description: Contains the SQN. + type: object + properties: + sqnScheme: + $ref: '#/components/schemas/SqnScheme' + sqn: + type: string + pattern: '^[A-Fa-f0-9]{12}$' + lastIndexes: + type: object + additionalProperties: + type: integer + minimum: 0 + description: A map(list of key-value pairs) where type of node serves as key + indLength: + type: integer + minimum: 0 + difSign: + $ref: '#/components/schemas/Sign' + + SqnScheme: + description: Scheme for generation of Sequence Numbers. + anyOf: + - type: string + enum: + - GENERAL + - NON_TIME_BASED + - TIME_BASED + - type: string + Sign: + description: Sign of the DIF value. + type: string + enum: + - POSITIVE + - NEGATIVE + VarPlmnId: + description: PLMN Id (MCC, MNC) or SNPN Id (MCC, MNC, NID). + type: string + pattern: '^[0-9]{5,6}(-[A-Fa-f0-9]{11})?$' + ProvisionedDatasetNames: + description: The list of names of data sets. + type: array + items: + $ref: '#/components/schemas/ProvisionedDataSetName' + minItems: 1 + uniqueItems: true + + ProvisionedDataSetName: + description: The name of data set. + anyOf: + - type: string + enum: + - AM + - SMF_SEL + - SMS_SUB + - SM + - TRACE + - SMS_MNG + - LCS_PRIVACY + - LCS_MO + - LCS_BCA + - LCS_SUB + - V2X + - PROSE + - ODB + - EE_PROF + - PP_PROF + - NIDD_AUTH + - USER_CONSENT + - MBS + - PP_DATA + - A2X + - type: string + + UeSubscribedDatasetNames: + description: The list of names of data sets. + type: array + items: + $ref: '#/components/schemas/UeSubscribedDataSetName' + minItems: 1 + uniqueItems: true + + UeSubscribedDataSetName: + description: All values defined as ProvisionedDataSetName or ContextDataSetName are applicable + anyOf: + - $ref: '#/components/schemas/ContextDataSetName' + - $ref: '#/components/schemas/ProvisionedDataSetName' + - type: string + enum: + - UE_UPD_CONF + + + ProvisionedDataSets: + description: Contains the provisioned data sets. + type: object + properties: + amData: + $ref: '#/components/schemas/AccessAndMobilitySubscriptionData' + smfSelData: + $ref: '#/components/schemas/SmfSelectionSubscriptionData' + smsSubsData: + $ref: '#/components/schemas/SmsSubscriptionData' + smData: + $ref: '#/components/schemas/SmSubsData' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + smsMngData: + $ref: '#/components/schemas/SmsManagementSubscriptionData' + lcsPrivacyData: + $ref: '#/components/schemas/LcsPrivacyData' + lcsMoData: + $ref: '#/components/schemas/LcsMoData' + lcsSubscriptionData: + $ref: '#/components/schemas/LcsSubscriptionData' + lcsBcaData: + $ref: '#/components/schemas/LcsBroadcastAssistanceTypesData' + v2xData: + $ref: '#/components/schemas/V2xSubscriptionData' + proseData: + $ref: '#/components/schemas/ProseSubscriptionData' + odbData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/OdbData' + eeProfileData: + $ref: '#/components/schemas/EeProfileData' + ppProfileData: + $ref: '#/components/schemas/PpProfileData' + niddAuthData: + $ref: '#/components/schemas/AuthorizationData' + ucData: + $ref: '#/components/schemas/UcSubscriptionData' + mbsSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/MbsSubscriptionData' + ppData: + $ref: '#/components/schemas/PpData' + a2xData: + $ref: '#/components/schemas/A2xSubscriptionData' + + AccessAndMobilitySubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/AccessAndMobilitySubscriptionData' + SmfSelectionSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SmfSelectionSubscriptionData' + VarSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + Dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + SmSubsData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SmSubsData' + Amf3GppAccessRegistration: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/Amf3GppAccessRegistration' + AmfNon3GppAccessRegistration: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/AmfNon3GppAccessRegistration' + SmfRegistration: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/SmfRegistration' + SmsfRegistration: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/SmsfRegistration' + LocationInfo: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/LocationInfo' + SmsManagementSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SmsManagementSubscriptionData' + SmsSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SmsSubscriptionData' + LcsPrivacyData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/LcsPrivacyData' + LcsMoData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/LcsMoData' + LcsSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/LcsSubscriptionData' + A2xSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/A2xSubscriptionData' + + AuthorizationData: + description: NIDD Authorization Information + required: + - authorizationData + properties: + authorizationData: + type: array + items: + $ref: 'TS29503_Nudm_NIDDAU.yaml#/components/schemas/UserIdentifier' + minItems: 1 + uniqueItems: true + allowedDnnList: + type: array + items: + anyOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/WildcardDnn' + allowedSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + allowedMtcProviders: + type: array + items: + $ref: '#/components/schemas/MtcProvider' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + EnhancedCoverageRestrictionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/EnhancedCoverageRestrictionData' + V2xSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/V2xSubscriptionData' + ProseSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ProseSubscriptionData' + UcSubscriptionData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcSubscriptionData' + LcsBroadcastAssistanceTypesData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/LcsBroadcastAssistanceTypesData' + OperatorSpecificDataContainer: + description: Container for operator specific data. + type: object + required: + - dataType + - value + properties: + dataType: + type: string + enum: + - string + - integer + - number + - boolean + - object + - array + dataTypeDefinition: + type: string + value: + oneOf: + - type: string + - type: integer + - type: number + - type: boolean + - type: object + - type: array + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + + AuthMethod: + description: Contains the Authentication Method. + anyOf: + - type: string + enum: + - 5G_AKA + - EAP_AKA_PRIME + - EAP_TLS + - EAP_TTLS + - NONE + - type: string + PpData: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PpData' + EeSubscription: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EeSubscription' + VarUeGroupId: + description: UE group Id or any UE. + type: string + pattern: '^(extgroupid-[^@]+@[^@]+|anyUE)$' + SdmSubscription: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SdmSubscription' + SmfRegList: + description: The list of all the SMF registrations of a UE. + type: array + items: + $ref: '#/components/schemas/SmfRegistration' + SubscriptionDataSubscriptions: + description: A subscription to notifications. + type: object + required: + - monitoredResourceUris + - callbackReference + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + originalCallbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sdmSubscription: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SdmSubscription' + hssSubscriptionInfo: + $ref: '#/components/schemas/HssSubscriptionInfo' + subscriptionId: + type: string + uniqueSubscription: + type: boolean + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + immediateReport: + type: boolean + default: false + report: + $ref: '#/components/schemas/ImmediateReport' + additionalDataRefs: + type: array + items: + $ref: '#/components/schemas/AdditionalDataRef' + + AdditionalDataRef: + description: References to additional data requested to be sent in notifications + type: object + required: + - monitoredResourceUris + - additionalDataUris + properties: + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + additionalDataUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + + DataChangeNotify: + description: Container for data which have changed and notification was requested when changed. + type: object + properties: + originalCallbackReference: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + notifyItems: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotifyItem' + minItems: 1 + sdmSubscription: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SdmSubscription' + additionalSdmSubscriptions: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SdmSubscription' + minItems: 1 + subscriptionDataSubscriptions: + type: array + items: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + additionalData: + description: A map (list of key-value pairs where URI serves as key) of Any Type. + type: object + additionalProperties: + oneOf: + - type: string + - type: integer + - type: number + - type: boolean + - type: object + - type: array + minProperties: 1 + + IdentityData: + description: Identity data corresponds to the provided ueId. + type: object + properties: + supiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + allowedAfIds: + type: array + items: + type: string + minItems: 1 + applicationPortIds: + description: A map (list of key-value pairs where AppPortId serves as key) of GPSIs. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minProperties: 1 + + UeUpdConfData: + description: The complete UE Update Confirmation Data. + type: object + properties: + sorData: + $ref: '#/components/schemas/SorData' + upuData: + $ref: '#/components/schemas/UpuData' + nssaiAckData: + $ref: '#/components/schemas/NssaiAckData' + cagAckData: + $ref: '#/components/schemas/CagAckData' + + SorData: + description: Used to store the status of the latest SOR data update. + type: object + properties: + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueUpdateStatus: + $ref: '#/components/schemas/UeUpdateStatus' + sorXmacIue: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SorMac' + sorMacIue: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SorMac' + meSupportOfSorCmci: + type: boolean + meSupportOfSorSnpnSi: + type: boolean + default: false + meSupportOfSorSnpnSiLs: + type: boolean + default: false + required: + - provisioningTime + - ueUpdateStatus + + UpuData: + description: Used to store the status of the latest UPU data update. + type: object + properties: + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueUpdateStatus: + $ref: '#/components/schemas/UeUpdateStatus' + upuXmacIue: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuMac' + upuMacIue: + $ref: 'TS29509_Nausf_UPUProtection.yaml#/components/schemas/UpuMac' + required: + - provisioningTime + - ueUpdateStatus + + NssaiAckData: + description: Used to store the status of the latest NSSAI data update. + type: object + properties: + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueUpdateStatus: + $ref: '#/components/schemas/UeUpdateStatus' + required: + - provisioningTime + - ueUpdateStatus + + CagAckData: + description: Used to store the status of the latest CAG data update. + type: object + properties: + provisioningTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueUpdateStatus: + $ref: '#/components/schemas/UeUpdateStatus' + required: + - provisioningTime + - ueUpdateStatus + + UeUpdateStatus: + description: Status of the procedure. + type: string + enum: + - NOT_SENT + - SENT_NO_ACK_REQUIRED + - WAITING_FOR_ACK + - ACK_RECEIVED + - NEGATIVE_ACK_RECEIVED + + EeProfileData: + description: Event Exposure Profile Data. + type: object + properties: + restrictedEventTypes: + type: array + items: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EventType' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + allowedMtcProvider: + description: A map (list of key-value pairs where EventType serves as key) of MTC provider lists. In addition to defined EventTypes, the key value "ALL" may be used to identify a map entry which contains a list of MtcProviders that are allowed monitoring all Event Types. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/MtcProvider' + minItems: 1 + minProperties: 1 + iwkEpcRestricted: + type: boolean + default: false + imsi: + type: string + pattern: '^[0-9]{5,15}$' + hssGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + + AmfSubscriptionInfo: + description: Information the UDR stores and retrieves related to active subscriptions at the AMF(s). + type: object + required: + - amfInstanceId + - subscriptionId + properties: + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + subsChangeNotifyCorrelationId: + type: string + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + + ContextDatasetNames: + description: The name of context data set. + type: array + items: + $ref: '#/components/schemas/ContextDataSetName' + minItems: 2 + uniqueItems: true + ContextDataSetName: + anyOf: + - type: string + enum: + - AMF_3GPP + - AMF_NON_3GPP + - SDM_SUBSCRIPTIONS + - EE_SUBSCRIPTIONS + - SMSF_3GPP + - SMSF_NON_3GPP + - SUBS_TO_NOTIFY + - SMF_REG + - IP_SM_GW + - ROAMING_INFO + - PEI_INFO + - type: string + ContextDataSets: + description: Contains the context data sets. + type: object + properties: + amf3Gpp: + $ref: '#/components/schemas/Amf3GppAccessRegistration' + amfNon3Gpp: + $ref: '#/components/schemas/AmfNon3GppAccessRegistration' + sdmSubscriptions: + type: array + items: + $ref: '#/components/schemas/SdmSubscription' + minItems: 1 + eeSubscriptions: + type: array + items: + $ref: '#/components/schemas/EeSubscription' + minItems: 1 + smsf3GppAccess: + $ref: '#/components/schemas/SmsfRegistration' + smsfNon3GppAccess: + $ref: '#/components/schemas/SmsfRegistration' + subscriptionDataSubscriptions: + type: array + items: + $ref: '#/components/schemas/SubscriptionDataSubscriptions' + minItems: 1 + smfRegistrations: + $ref: '#/components/schemas/SmfRegList' + ipSmGw: + $ref: '#/components/schemas/IpSmGwRegistration' + roamingInfo: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/RoamingInfoUpdate' + peiInfo: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/PeiUpdateInfo' + + IpSmGwRegistration: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/IpSmGwRegistration' + + MessageWaitingData: + description: Message Waiting Data list. + type: object + properties: + mwdList: + type: array + items: + $ref: '#/components/schemas/SmscData' + minItems: 1 + + SmscData: + description: Addresses of SM-Service Center entities with SMS wating to be delivered to the UE. + type: object + anyOf: + - required: [ smscMapAddress ] + - required: [ smscDiameterAddress ] + properties: + smscMapAddress: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/E164Number' + smscDiameterAddress: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/NetworkNodeDiameterAddress' + + SmfSubscriptionInfo: + description: Information related to active subscriptions at the SMF(s) + type: object + required: + - smfSubscriptionList + properties: + smfSubscriptionList: + type: array + items: + $ref: '#/components/schemas/SmfSubscriptionItem' + minItems: 1 + + SmfSubscriptionItem: + description: Contains info about a single SMF event subscription + type: object + required: + - smfInstanceId + - subscriptionId + properties: + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + + MtcProvider: + description: MTC provider information. + type: object + properties: + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + afId: + type: string + + HssSubscriptionInfo: + description: Information related to active subscriptions at the HSS(s) + type: object + required: + - hssSubscriptionList + properties: + hssSubscriptionList: + type: array + items: + $ref: '#/components/schemas/HssSubscriptionItem' + minItems: 1 + + HssSubscriptionItem: + description: Contains info about a single HSS event subscription + type: object + required: + - hssInstanceId + - subscriptionId + properties: + hssInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + contextInfo: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ContextInfo' + + EeGroupProfileData: + type: object + properties: + restrictedEventTypes: + type: array + items: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EventType' + allowedMtcProvider: + description: A map (list of key-value pairs where EventType serves as key) of MTC provider lists. In addition to defined EventTypes, the key value "ALL" may be used to identify a map entry which contains a list of MtcProviders that are allowed monitoring all Event Types. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/MtcProvider' + minItems: 1 + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + iwkEpcRestricted: + type: boolean + default: false + extGroupId: + type: string + pattern: '^extgroupid-[^@]+@[^@]+$' + hssGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + + Pp5gVnGroupProfileData: + type: object + properties: + allowedMtcProviders: + description: A map (list of key-value pairs where external VN group identifier serves as key) of AllowedMtcProviderInfo lists. In addition to defined external VN group identifier, the key value "ALL" may be used to identify a map entry which contains a list of AllowedMtcProviderInfo that are allowed operating all the external group identifiers. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AllowedMtcProviderInfo' + minItems: 1 + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + PpProfileData: + type: object + properties: + allowedMtcProviders: + description: A map (list of key-value pairs where PpDataType serves as key) of AllowedMtcProviderInfo lists. In addition to defined PpDataType, the key value "ALL" may be used to identify a map entry which contains a list of AllowedMtcProviderInfo that are allowed to provision all types of the PP data for the user using UDM ParameterProvision service. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AllowedMtcProviderInfo' + minItems: 1 + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AllowedMtcProviderInfo: + type: object + properties: + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + afId: + type: string + + PpDataType: + anyOf: + - type: string + enum: + - COMMUNICATION_CHARACTERISTICS + - EXPECTED_UE_BEHAVIOUR + - EC_RESTRICTION + - ACS_INFO + - TRACE + - STN_SR + - LCS_PRIVACY + - SOR_INFO + - type: string + + GroupIdentifiers: + description: External or Internal Group Identifier with a list of group members + type: object + properties: + extGroupId: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + ueIdList: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UeId' + minItems: 1 + allowedAfIds: + type: array + items: + type: string + minItems: 1 + + NiddAuthorizationInfo: + description: Information related to active NIDD Authorizations + type: object + required: + - niddAuthorizationList + properties: + niddAuthorizationList: + type: array + items: + $ref: 'TS29503_Nudm_NIDDAU.yaml#/components/schemas/AuthorizationInfo' + minItems: 1 + + PpDataEntryList: + description: Contains a list of the Provisioned Parameters entries + type: object + properties: + ppDataEntryList: + type: array + items: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/PpDataEntry' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UeSubscribedDataSets: + description: Contains the subscribed data sets of a UE. + allOf: + - $ref: '#/components/schemas/ProvisionedDataSets' + - $ref: '#/components/schemas/ContextDataSets' + - $ref: '#/components/schemas/UeUpdConfData' + + ServiceSpecificAuthorizationInfo: + description: Information related to active Service Specific Authorizations + type: object + required: + - serviceSpecificAuthorizationList + properties: + serviceSpecificAuthorizationList: + type: array + items: + $ref: 'TS29503_Nudm_NIDDAU.yaml#/components/schemas/AuthorizationInfo' + minItems: 1 + + NfIdentifier: + type: object + required: + - nfType + properties: + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + EeSubscriptionExt: + allOf: + - $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EeSubscription' + - $ref: '#/components/schemas/AdditionalEeSubsInfo' + + AdditionalEeSubsInfo: + type: object + properties: + amfSubscriptionInfoList: + type: array + items: + $ref: '#/components/schemas/AmfSubscriptionInfo' + minItems: 1 + maxItems: 2 + smfSubscriptionInfo: + $ref: '#/components/schemas/SmfSubscriptionInfo' + hssSubscriptionInfo: + $ref: '#/components/schemas/HssSubscriptionInfo' + + ImmediateReport: + oneOf: + - $ref: '#/components/schemas/ProvisionedDataSets' + - type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedData' + minItems: 0 + + Pp5gMbsGroupProfileData: + type: object + properties: + allowedMbsInfos: + description: A map (list of key-value pairs where external VN group identifier serves as key) of AllowedMbsInfos lists. In addition to defined external MBS group identifier, the key value "ALL" may be used to identify a map entry which contains a list of AllowedMbsInfo that are allowed operating all the external group identifiers. + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AllowedMbsInfo' + minItems: 1 + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AllowedMbsInfo: + type: object + properties: + afId: + type: string + + TraceDataOrSharedTraceDataId: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + - $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedDataId' diff --git a/TS29507_Npcf_AMPolicyControl.yaml b/TS29507_Npcf_AMPolicyControl.yaml new file mode 100644 index 0000000..64f58d9 --- /dev/null +++ b/TS29507_Npcf_AMPolicyControl.yaml @@ -0,0 +1,1021 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.4 + title: Npcf_AMPolicyControl + description: | + Access and Mobility Policy Control Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.507 V18.3.0; 5G System; Access and Mobility Policy Control Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.507/' + +servers: + - url: '{apiRoot}/npcf-am-policy-control/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npcf-am-policy-control + +paths: + /policies: + post: + operationId: CreateIndividualAMPolicyAssociation + summary: Create individual AM policy association. + tags: + - AM Policy Associations (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociationRequest' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociation' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/npcf-am-policy-control/v1/policies/{polAssoId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + policyUpdateNotification: + '{$request.body#/notificationUri}/update': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyUpdate' + responses: + '200': + description: > + OK. The current applicable values corresponding to the policy control request + trigger is reported + content: + application/json: + schema: + $ref: '#/components/schemas/AmRequestedValueRep' + '204': + description: No Content, Notification was successful. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + policyAssocitionTerminationRequestNotification: + '{$request.body#/notificationUri}/terminate': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TerminationNotification' + responses: + '204': + description: No Content, Notification was successful. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /policies/{polAssoId}: + get: + operationId: ReadIndividualAMPolicyAssociation + summary: Read individual AM policy association. + tags: + - Individual AM Policy Association (Document) + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualAMPolicyAssociation + summary: Delete individual AM policy association. + tags: + - Individual AM Policy Association (Document) + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /policies/{polAssoId}/update: + post: + operationId: ReportObservedEventTriggersForIndividualAMPolicyAssociation + summary: > + Report observed event triggers and obtain updated policies for an individual AM + policy association. + tags: + - Individual AM Policy Association (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociationUpdateRequest' + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '200': + description: OK. Updated policies are returned + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyUpdate' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-am-policy-control: Access to the Npcf_AMPolicyControl API + schemas: + PolicyAssociation: + description: Represents an individual AM Policy Association resource. + type: object + properties: + request: + $ref: '#/components/schemas/PolicyAssociationRequest' + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + description: Request Triggers that the PCF subscribes. + servAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + wlServAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + rfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + rfspValTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + targetRfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + smfSelInfo: + $ref: '#/components/schemas/SmfSelectionData' + ueAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + ueSliceMbrs: + type: array + items: + $ref: '#/components/schemas/UeSliceMbr' + minItems: 1 + description: > + One or more UE-Slice-MBR(s) for S-NSSAI(s) of serving PLMN as part of the + AMF Access and Mobility Policy as determined by the PCF. + pras: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains the presence reporting area(s) for which reporting was requested. + The praId attribute within the PresenceInfo data type is the key of the map. + pcfUeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + matchPdus: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionInfo' + nullable: true + asTimeDisParam: + $ref: '#/components/schemas/AsTimeDistributionParam' + sliceUsgCtrlInfoSets: + type: object + additionalProperties: + $ref: '#/components/schemas/SliceUsgCtrlInfo' + minProperties: 1 + description: > + Represents the network slice usage control information. + The key of the map is the on-demand S-NSSAI (within the "snssai" attribute of the + corresponding map value) to which the network slice usage control information is + related. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suppFeat + + PolicyAssociationRequest: + description: > + Information which the NF service consumer provides when requesting the creation of a policy + association. The serviveName property corresponds to the serviceName in the main body + of the specification. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altNotifIpv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + description: Alternate or backup IPv4 Address(es) where to send Notifications. + altNotifIpv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + description: Alternate or backup IPv6 Address(es) where to send Notifications. + altNotifFqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + description: Alternate or backup FQDN(s) where to send Notifications. + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + servingPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + ratTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 1 + groupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + servAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + wlServAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + rfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + ueAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + ueSliceMbrs: + type: array + items: + $ref: '#/components/schemas/UeSliceMbr' + minItems: 1 + description: > + The subscribed UE Slice-MBR for each subscribed S-NSSAI of the home PLMN mapping to + a S-NSSAI of the serving PLMN Shall be provided when available. + allowedSnssais: + description: array of allowed S-NSSAIs for the 3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + partAllowedNssai: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartiallyAllowedSnssai' + minProperties: 1 + description: > + Represents the Partially Allowed NSSAI. The "snssai" attribute within the + PartiallyAllowedSnssai data type shall be the key of the map. + snssaisPartRejected: + type: object + additionalProperties: + $ref: '#/components/schemas/SnssaiPartRejected' + minProperties: 1 + description: > + Represents the set of S-NSSAI(s) partially rejected in the RA. + The "snssai" attribute within the SnssaiPartRejected data type shall be the key of the + map. + rejectedSnssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + pendingNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + targetSnssais: + description: array of target S-NSSAIs. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + mappingSnssais: + description: > + mapping of each S-NSSAI of the Allowed NSSAI to the corresponding S-NSSAI of the HPLMN. + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/MappingOfSnssai' + minItems: 1 + n3gAllowedSnssais: + description: array of allowed S-NSSAIs for the Non-3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + serviveName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + traceReq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + nwdafDatas: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/NwdafData' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - notificationUri + - suppFeat + - supi + + PolicyAssociationUpdateRequest: + description: > + Represents information that the NF service consumer provides when requesting the update of + a policy association. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altNotifIpv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + description: Alternate or backup IPv4 Address(es) where to send Notifications. + altNotifIpv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + description: Alternate or backup IPv6 Address(es) where to send Notifications. + altNotifFqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + description: Alternate or backup FQDN(s) where to send Notifications. + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + description: Request Triggers that the NF service consumer observes. + servAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + wlServAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + rfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + smfSelInfo: + $ref: '#/components/schemas/SmfSelectionData' + ueAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + ueSliceMbrs: + type: array + items: + $ref: '#/components/schemas/UeSliceMbr' + minItems: 1 + description: > + The subscribed UE-Slice-MBR for each subscribed S-NSSAI of the home PLMN mapping + to a S-NSSAI of the serving PLMN Shall be provided for the "UE_SLICE_MBR_CH" + policy control request trigger. + praStatuses: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains the UE presence status for tracking area for which changes of the UE presence + occurred. The praId attribute within the PresenceInfo data type is the key of the map. + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + allowedSnssais: + description: array of allowed S-NSSAIs for the 3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + partAllowedNssai: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartiallyAllowedSnssai' + minProperties: 1 + description: > + Represents the Partially Allowed NSSAI. The "snssai" attribute within the + PartiallyAllowedSnssai data type shall be the key of the map. + snssaisPartRejected: + type: object + additionalProperties: + $ref: '#/components/schemas/SnssaiPartRejected' + minProperties: 1 + description: > + Represents the set of S-NSSAI(s) partially rejected in the RA. + The "snssai" attribute within the SnssaiPartRejected data type shall be the key of the + map. + rejectedSnssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + pendingNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + targetSnssais: + description: array of target S-NSSAIs. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + mappingSnssais: + description: > + mapping of each S-NSSAI of the Allowed NSSAI to the corresponding S-NSSAI of the HPLMN. + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/MappingOfSnssai' + minItems: 1 + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + ratTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 1 + n3gAllowedSnssais: + description: array of allowed S-NSSAIs for the Non-3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + unavailSnssais: + description: > + Represents the unavailable S-NSSAI(s) from the UE's Allowed NSSAI and/or + Partially Allowed NSSAI that require network slice replacement. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + traceReq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + nwdafDatas: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/NwdafData' + minItems: 1 + nullable: true + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + PolicyUpdate: + description: > + Represents updated policies that the PCF provides in a notification or in a reply to an + Update Request. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + nullable: true + description: Request Triggers that the PCF subscribes. + servAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + wlServAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + rfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + rfspValTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + targetRfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + smfSelInfo: + $ref: '#/components/schemas/SmfSelectionData' + ueAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + ueSliceMbrs: + type: array + items: + $ref: '#/components/schemas/UeSliceMbr' + minItems: 1 + description: > + One or more UE-Slice-MBR(s) for S-NSSAI(s) of serving PLMN the allowed NSSAI as + part of the AMF Access and Mobility Policy as determined by the PCF. + pras: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfoRm' + description: > + Contains the presence reporting area(s) for which reporting was requested. The praId + attribute within the PresenceInfo data type is the key of the map. + minProperties: 1 + nullable: true + pcfUeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + matchPdus: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionInfo' + nullable: true + asTimeDisParam: + $ref: '#/components/schemas/AsTimeDistributionParam' + snssaiReplInfos: + nullable: true + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SnssaiReplaceInfo' + minProperties: 1 + description: > + Contains the network slice replacement information. + The key of the map is the concerned unavailable S-NSSAI (within the "snssai" attribute + of the corresponding map value) to which the network slice replacement information is + related. + sliceUsgCtrlInfoSets: + type: object + additionalProperties: + $ref: '#/components/schemas/SliceUsgCtrlInfo' + minProperties: 1 + description: > + Represents the updated network slice usage control information. + The key of the map is the on-demand S-NSSAI (within the "snssai" attribute of the + corresponding map value) to which the network slice usage control information is + related. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - resourceUri + + TerminationNotification: + description: > + Represents a request to terminate a policy Association that the PCF provides in a + notification. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + cause: + $ref: '#/components/schemas/PolicyAssociationReleaseCause' + required: + - resourceUri + - cause + + SmfSelectionData: + description: Represents the SMF Selection information that may be replaced by the PCF. + type: object + properties: + unsuppDnn: + type: boolean + candidates: + type: object + additionalProperties: + $ref: '#/components/schemas/CandidateForReplacement' + minProperties: 1 + description: > + Contains the list of DNNs per S-NSSAI that are candidates for replacement. The snssai + attribute within the CandidateForReplacement data type is the key of the map. + nullable: true + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + mappingSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + nullable: true + CandidateForReplacement: + description: Represents a list of candidate DNNs for replacement for an S-NSSAI. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + nullable: true + required: + - snssai + nullable: true + + AmRequestedValueRep: + description: > + Represents the current applicable values corresponding to the policy control request + triggers. + type: object + properties: + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + praStatuses: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains the UE presence statuses for tracking areas. The praId attribute within the + PresenceInfo data type is the key of the map. + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + ratTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + allowedSnssais: + description: array of allowed S-NSSAIs for the 3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + n3gAllowedSnssais: + description: array of allowed S-NSSAIs for the Non-3GPP access. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + partAllowedNssai: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartiallyAllowedSnssai' + minProperties: 1 + description: > + Represents the Partially Allowed NSSAI. The "snssai" attribute within the + PartiallyAllowedSnssai data type shall be the key of the map. + snssaisPartRejected: + type: object + additionalProperties: + $ref: '#/components/schemas/SnssaiPartRejected' + minProperties: 1 + description: > + Represents the set of S-NSSAI(s) partially rejected in the RA. + The "snssai" attribute within the SnssaiPartRejected data type shall be the key of the + map. + rejectedSnssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + pendingNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + + AsTimeDistributionParam: + description: Contains the 5G acess stratum time distribution parameters. + type: object + properties: + asTimeDistInd: + type: boolean + uuErrorBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + clkQltDetLvl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityDetailLevel' + clkQltAcptCri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityAcceptanceCriterion' + nullable: true + + UeSliceMbr: + description: Contains a UE-Slice-MBR and the related information. + type: object + properties: + sliceMbr: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceMbr' + minProperties: 1 + description: Contains the MBR for uplink and the MBR for downlink. + servingSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + mappedHomeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - sliceMbr + - servingSnssai + nullable: true + + SliceUsgCtrlInfo: + description: Represents network slice usage control information. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + deregInactivTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + required: + - snssai + + SnssaiPartRejected: + description: Represents the list of the S-NSSAI(s) partially rejected in the RA. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + allowedTaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + rejectedTaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + required: + - snssai + oneOf: + - required: [ allowedTaiList ] + - required: [ rejectedTaiList ] + + RequestTrigger: + anyOf: + - type: string + enum: + - LOC_CH + - PRA_CH + - SERV_AREA_CH + - RFSP_CH + - ALLOWED_NSSAI_CH + - UE_AMBR_CH + - UE_SLICE_MBR_CH + - SMF_SELECT_CH + - ACCESS_TYPE_CH + - NWDAF_DATA_CH + - TARGET_NSSAI + - SLICE_REPLACE_MGMT + - FEAT_RENEG + - PARTIALLY_ALLOWED_NSSAI_CH + - SNSSAIS_PARTIALLY_REJECTED_CH + - REJECTED_SNSSAIS_CH + - PENDING_NSSAI_CH + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the possible request triggers. + Possible values are: + - LOC_CH: Location change (tracking area). The tracking area of the UE has changed. + - PRA_CH: Change of UE presence in PRA. The AMF reports the current presence status + of the UE in a Presence Reporting Area, and notifies that the UE enters/leaves the + Presence Reporting Area. + - SERV_AREA_CH: Service Area Restriction change. The UDM notifies the AMF that the + subscribed service area restriction information has changed. + - RFSP_CH: RFSP index change. The UDM notifies the AMF that the subscribed RFSP index has + changed. + - ALLOWED_NSSAI_CH: Allowed NSSAI change. The AMF notifies that the set of UE allowed + S-NSSAIs has changed. + - UE_AMBR_CH: UE-AMBR change. The UDM notifies the AMF that the subscribed UE-AMBR has + changed. + - SMF_SELECT_CH: SMF selection information change. The UE requested for an unsupported + DNN or UE requested for a DNN within the list of DNN candidates for replacement per + S-NSSAI. + - ACCESS_TYPE_CH: Access Type change. The AMF notifies that the access type and the RAT + type combinations available in the AMF for a UE with simultaneous 3GPP and non-3GPP + connectivity has changed. + - UE_SLICE_MBR_CH: UE-Slice-MBR change. The NF service consumer notifies any changes + in the subscribed UE-Slice-MBR for each subscribed S-NSSAI of the home PLMN mapping + to a S-NSSAI of the serving PLMN. + - NWDAF_DATA_CH: NDWAF DATA CHANGE. The AMF notifies that the NWDAF instance IDs used + for the UE and/or associated Analytics IDs used for the UE and available in the AMF + have changed. + - TARGET_NSSAI: Generation of Target NSSAI. The NF service consumer notifies that the + Target NSSAI was generated. + - SLICE_REPLACE_MGMT: Indicates that slice replacement is needed for one or more S-NSSAI(s) + of the UE's Allowed NSSAI and/or Partially Allowed NSSAI and the AMF cannot determine the + Alternative S-NSSAI(s) for these S-NSSAI(s). + - FEAT_RENEG: The NF service consumer notifies that the target AMF is requesting feature + re-negotiation. + - PARTIALLY_ALLOWED_NSSAI_CH: Partially Allowed NSSAI change. The NF service consumer + notifies that the set of Partially Allowed S-NSSAI(s) of the UE has changed. + - SNSSAIS_PARTIALLY_REJECTED_CH: Change of the S-NSSAI(s) partially rejected in the RA. The + NF service consumer notifies that the set of S-NSSAI(s) partially rejected in the RA for + the UE has changed. + - REJECTED_SNSSAIS_CH: Change of the Rejected S-NSSAI(s) in the RA. The NF service consumer + notifies that the set of the Rejected S-NSSAI(s) in the RA for the UE has changed. + - PENDING_NSSAI_CH: Pending NSSAI change. The NF service consumer notifies that the set of + Pending S-NSSAI(s) of the UE has changed. + + PolicyAssociationReleaseCause: + anyOf: + - type: string + enum: + - UNSPECIFIED + - UE_SUBSCRIPTION + - INSUFFICIENT_RES + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the cause why the PCF requests the termination of the policy association. + Possible values are: + - UNSPECIFIED: This value is used for unspecified reasons. + - UE_SUBSCRIPTION: This value is used to indicate that the session needs to be + terminated because the subscription of UE has changed (e.g. was removed). + - INSUFFICIENT_RES: This value is used to indicate that the server is overloaded and + needs to abort the session. diff --git a/TS29508_Nsmf_EventExposure.yaml b/TS29508_Nsmf_EventExposure.yaml new file mode 100644 index 0000000..49c2773 --- /dev/null +++ b/TS29508_Nsmf_EventExposure.yaml @@ -0,0 +1,990 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Nsmf_EventExposure + description: | + Session Management Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.508 V18.4.0; 5G System; Session Management Event Exposure Service. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.508/ + +servers: + - url: '{apiRoot}/nsmf-event-exposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nsmf-event-exposure + +paths: + /subscriptions: + post: + operationId: CreateIndividualSubcription + summary: Create an individual subscription for event notifications from the SMF + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposure' + responses: + '201': + description: Created. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nsmf-event-exposure/v1/subscriptions/{subId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposure' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposureNotification' + responses: + '204': + description: No Content, Notification was successful. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + afAcknowledgement: + '{request.body#/ackUri}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AckOfNotify' + responses: + '204': + description: No Content (successful acknowledgement) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subId}: + get: + operationId: GetIndividualSubcription + summary: Read an individual subscription for event notifications from the SMF + tags: + - IndividualSubscription (Document) + parameters: + - name: subId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposure' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + operationId: ReplaceIndividualSubcription + summary: Replace an individual subscription for event notifications from the SMF + tags: + - IndividualSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposure' + parameters: + - name: subId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was successfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/NsmfEventExposure' + '204': + description: No Content. Resource was successfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualSubcription + summary: Delete an individual subscription for event notifications from the SMF + tags: + - IndividualSubscription (Document) + parameters: + - name: subId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nsmf-event-exposure: Access to the Nsmf_EventExposure API + + schemas: + + NsmfEventExposure: + description: > + Represents an Individual SMF Notification Subscription resource. The serviveName property + corresponds to the serviceName in the main body of the specification. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + anyUeInd: + type: boolean + description: > + Any UE indication. This IE shall be present if the event subscription is applicable to + any UE. Default value "false" is used, if not present. + groupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + pduSeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + ssId: + type: string + description: SSID that the PDU session is related to. + bssId: + type: string + description: BSSID that the PDU session is related to. + upfId: + type: string + description: UPF identity. + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + subId: + $ref: '#/components/schemas/SubId' + notifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altNotifIpv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + description: Alternate or backup IPv4 address(es) where to send Notifications. + minItems: 1 + altNotifIpv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + description: Alternate or backup IPv6 address(es) where to send Notifications. + minItems: 1 + altNotifFqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + description: Alternate or backup FQDN(s) where to send Notifications. + eventSubs: + type: array + items: + $ref: '#/components/schemas/EventSubscription' + minItems: 1 + description: Subscribed events + eventNotifs: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + ImmeRep: + type: boolean + notifMethod: + $ref: '#/components/schemas/NotificationMethod' + maxReportNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + serviveName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + sampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + partitionCriteria: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartitioningCriteria' + minItems: 1 + description: Criteria for partitioning the UEs before applying the sampling ratio. + grpRepTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + notifFlagInstruct: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingSetting: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + defQosSupp: + type: boolean + description: > + Indicates whether the NF service consumer requests to receive QoS Flow performance + information for the QoS Flow associated with the default QoS rule if there are no + measurements available for the provided Application Identifier included in the appIds + attribute. + qosMonPending: + type: boolean + description: > + Indicates that the reporting will be activated when the measurements are enabled by a + PCC rule. It shall always be set to true when present. It may only be provided in the + response. + required: + - notifId + - notifUri + - eventSubs + + NsmfEventExposureNotification: + description: Represents notifications on events that occurred. + type: object + properties: + notifId: + type: string + description: Notification correlation ID + eventNotifs: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + description: Notifications about Individual Events + ackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - notifId + - eventNotifs + + EventSubscription: + description: Represents a subscription to a single event. + type: object + properties: + event: + $ref: '#/components/schemas/SmfEvent' + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + dddTraDescriptors: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + dddStati: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + targetPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + transacDispInd: + type: boolean + description: > + Indicates the subscription for UE transaction dispersion collectionon, if it is included + and set to "true". Default value is "false". + transacMetrics: + type: array + items: + $ref: '#/components/schemas/TransactionMetric' + description: Indicates Session Management Transaction metrics. + minItems: 1 + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + upfEvents: + type: array + items: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/UpfEvent' + description: Indicates UPF event exposure information. + minItems: 1 + required: + - event + + EventNotification: + description: Represents a notification related to a single event that occurred. + type: object + properties: + event: + $ref: '#/components/schemas/SmfEvent' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + transacInfos: + type: array + items: + $ref: '#/components/schemas/TransactionInfo' + description: Transaction Information. + minItems: 1 + sourceDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + candidateDnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + description: The candidate DNAI(s) for the PDU Session. + candDnaisPrioInd: + type: boolean + description: > + If provided and set to true, it indicates that the candidate DNAIs provided + in the candidateDnais attribute are in descending priority order, i.e., + the lower the array index the higher the priority of the respective DNAI. + If omitted, the default value is false. + easRediscoverInd: + type: boolean + description: > + Indication of EAS re-discovery. If present and set to "true", it indicates the EAS + re-discovery is performed, e.g. due to change of common EAS. Default value is "false" if + omitted. + trafCorreInfo: + $ref: '#/components/schemas/TrafficCorrelationNotification' + sourceUeIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + sourceUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + targetUeIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + targetUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + sourceTraRouting: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + targetTraRouting: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + adIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + adIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + reIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + reIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + accType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + pduAccTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + pduSeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + dddStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + dddTraDescriptor: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + maxWaitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + commFailure: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CommunicationFailure' + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + pduSessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ethFlowDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: > + Descriptor(s) for non-IP traffic. It allows the encoding of multiple UL and/or DL flows. + Each entry of the array describes a single Ethernet flow. + ethfDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + maxItems: 2 + description: > + Contains the UL and/or DL Ethernet flows. Each entry of the array describes a single + Ethernet flow. + flowDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + description: > + Descriptor(s) for IP traffic. It allows the encoding of multiple UL and/or DL flows. + Each entry of the array describes a single IP flow. + fDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + maxItems: 2 + description: > + Contains the UL and/or DL IP flows. Each entry of the array describes a single + IP flow. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ulDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + dlDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + rtDelays: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + ulCongInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dlCongInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + cimf: + type: boolean + description: Represents the congestion information measurement failure indicator. + ulDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + timeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + smNasFromUe: + $ref: '#/components/schemas/SmNasFromUe' + smNasFromSmf: + $ref: '#/components/schemas/SmNasFromSmf' + upRedTrans: + type: boolean + description: > + Indicates whether the redundant transmission is setup or terminated. Set to "true" if + the redundant transmission is setup, otherwise set to "false" if the redundant + transmission is terminated. Default value is set to "false". + ssId: + type: string + bssId: + type: string + startWlan: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endWlan: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pduSessInfos: + type: array + items: + $ref: '#/components/schemas/PduSessionInformation' + minItems: 1 + upfInfo: + $ref: '#/components/schemas/UpfInformation' + pdmf: + type: boolean + description: Represents the packet delay measurement failure indicator. + satBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + targetAfId: + type: string + description: Identifier of the Application Function responsible for the target DNAI. + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + required: + - event + - timeStamp + not: + required: [ipv6Prefixes,ipv6Addrs] + + SubId: + type: string + format: SubId + description: > + Identifies an Individual SMF Notification Subscription. To enable that the value is used as + part of a URI, the string shall only contain characters allowed according to the + "lower-with-hyphen" naming convention defined in 3GPP TS 29.501. In an OpenAPI schema, the + format shall be designated as "SubId". + + AckOfNotify: + description: Represents an acknowledgement information of an event notification. + type: object + properties: + notifId: + type: string + ackResult: + $ref: 'TS29522_TrafficInfluence.yaml#/components/schemas/AfResultInfo' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + required: + - notifId + - ackResult + + SmNasFromUe: + description: > + Represents information on the SM NAS messages that SMF receives from UE for PDU Session. + type: object + properties: + smNasType: + type: string + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - smNasType + - timeStamp + + SmNasFromSmf: + description: > + Represents information on the SM congestion control applied SM NAS messages that SMF sends + to UE for PDU Session. + type: object + properties: + smNasType: + type: string + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + backoffTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + appliedSmccType: + $ref: '#/components/schemas/AppliedSmccType' + required: + - smNasType + - timeStamp + - backoffTimer + - appliedSmccType + + TransactionInfo: + description: Represents SMF Transaction Information. + type: object + properties: + transaction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + transacMetrics: + type: array + items: + $ref: '#/components/schemas/TransactionMetric' + minItems: 1 + required: + - transaction + + PduSessionInformation: + description: Represents the PDU session related information. + type: object + properties: + pduSessId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + sessInfo: + $ref: '#/components/schemas/PduSessionInfo' + + PduSessionInfo: + description: Represents session information. + type: object + properties: + n4SessId: + type: string + description: The identifier of the N4 session for the reported PDU Session. + sessInactiveTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + pduSessStatus: + $ref: '#/components/schemas/PduSessionStatus' + + UpfInformation: + description: Represents the ID/address/FQDN of the UPF. + type: object + properties: + upfId: + type: string + upfAddr: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + + TrafficCorrelationNotification: + description: Represents notifications for 5GC determined Traffic Correlation Information. + type: object + properties: + smfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + tfcCorrId: + type: string + description: > + Identification of a set of UEs accessing the application identified by the + Application Identifier or traffic filtering information. + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + easFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + easIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + pduSessionNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - smfId + - pduSessionNbr + - tfcCorrId + anyOf: + - required: [dnais] + - anyOf: + - required: [easFqdn] + - required: [easIpAddr] + + SmfEvent: + anyOf: + - type: string + enum: + - AC_TY_CH + - UP_PATH_CH + - PDU_SES_REL + - PLMN_CH + - UE_IP_CH + - RAT_TY_CH + - DDDS + - COMM_FAIL + - PDU_SES_EST + - QFI_ALLOC + - QOS_MON + - SMCC_EXP + - DISPERSION + - RED_TRANS_EXP + - WLAN_INFO + - UPF_INFO + - UP_STATUS_INFO + - SATB_CH + - TRAFFIC_CORRELATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the types of events that can be subscribed. + Possible values are: + - AC_TY_CH: Access Type Change. + - UP_PATH_CH: UP Path Change. + - PDU_SES_REL: PDU Session Release. + - PLMN_CH: PLMN Change. + - UE_IP_CH: UE IP address change. + - RAT_TY_CH: RAT Type Change. + - DDDS: Downlink data delivery status. + - COMM_FAIL: Communication Failure. + - PDU_SES_EST: PDU Session Establishment. + - QFI_ALLOC: QFI allocation. + - QOS_MON: QoS Monitoring. + - SMCC_EXP: SM congestion control experience for PDU Session. + - DISPERSION: Session Management transaction dispersion. + - RED_TRANS_EXP: Redundant transmission experience for PDU Session. + - WLAN_INFO: WLAN information on PDU session for which Access Type is NON_3GPP_ACCESS and + RAT Type is TRUSTED_WLAN. + - UPF_INFO: The UPF information, including the UPF ID/address/FQDN information. + - UP_STATUS_INFO: The User Plane status information. + - SATB_CH: Satellite backhaul category change. + - TRAFFIC_CORRELATION: Indicates that the SMF provides 5GC determined traffic correlation + information for a set of UEs identified by Traffic Correlation ID. + + NotificationMethod: + anyOf: + - type: string + enum: + - PERIODIC + - ONE_TIME + - ON_EVENT_DETECTION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the notification methods that can be subscribed. + Possible values are: + - PERIODIC + - ONE_TIME + - ON_EVENT_DETECTION + + AppliedSmccType: + anyOf: + - type: string + enum: + - DNN_CC + - SNSSAI_CC + description: > + This string indicates the type of applied SM congestion control. + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the type of applied SM congestion control. + Possible values are: + - DNN_CC: Indicates the DNN based congestion control. + - SNSSAI_CC: Indicates the S-NSSAI based congestion control. + + TransactionMetric: + anyOf: + - type: string + enum: + - PDU_SES_EST + - PDU_SES_AUTH + - PDU_SES_MODIF + - PDU_SES_REL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + description: | + Represents the metric on UE Session Management transactions. + Possible values are: + - PDU_SES_EST: PDU Session Establishment + - PDU_SES_AUTH: PDU Session Authentication + - PDU_SES_MODIF: PDU Session Modification + - PDU_SES_REL: PDU Session Release + + PduSessionStatus: + anyOf: + - type: string + enum: + - ACTIVATED + - DEACTIVATED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + description: | + Represents the status of the PDU Session. + Possible values are: + - ACTIVATED: PDU Session status is activated. + - DEACTIVATED: PDU Session status is deactivated. + diff --git a/TS29509_Nausf_SoRProtection.yaml b/TS29509_Nausf_SoRProtection.yaml new file mode 100644 index 0000000..5df2aad --- /dev/null +++ b/TS29509_Nausf_SoRProtection.yaml @@ -0,0 +1,198 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.1 + title: Nausf_SoRProtection Service + description: | + AUSF SoR Protection Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.509 V18.0.0; 5G System; Authentication Server Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.509' + +servers: + - url: '{apiRoot}/nausf-sorprotection/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nausf-sorprotection + +paths: + /{supi}/ue-sor: + post: + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SorInfo' + required: true + responses: + '200': + description: SorSecurityInfo + content: + application/json: + schema: + $ref: '#/components/schemas/SorSecurityInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nausf-sorprotection: Access to the Nausf_SoRProtection API + schemas: + +# +# COMPLEX TYPES: +# + + SorInfo: + description: Contains the Steering Information. + type: object + properties: + steeringContainer: + $ref: '#/components/schemas/SteeringContainer' + ackInd: + $ref: '#/components/schemas/AckInd' + sorHeader: + $ref: '#/components/schemas/SorHeader' + sorTransparentInfo: + $ref: '#/components/schemas/SorTransparentInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ackInd + + SorSecurityInfo: + description: Contains the material generated for securing of SoR. It contains at least the SoR-MAC-IAUSF and CounterSoR. + type: object + properties: + sorMacIausf: + $ref: '#/components/schemas/SorMac' + counterSor: + $ref: '#/components/schemas/CounterSor' + sorXmacIue: + $ref: '#/components/schemas/SorMac' + required: + - sorMacIausf + - counterSor + + SteeringContainer: + description: Contains the information sent to UE. + oneOf: + - type: array + items: + $ref: '#/components/schemas/SteeringInfo' + minItems: 1 + - $ref: '#/components/schemas/SecuredPacket' + + SteeringInfo: + description: Contains a combination of one PLMN identity and zero or more access technologies. + type: object + properties: + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + accessTechList: + type: array + items: + $ref: '#/components/schemas/AccessTech' + minItems: 1 + required: + - plmnId + +# +# SIMPLE TYPES: +# + + SorMac: + description: MAC value for protecting SOR procedure (SoR-MAC-IAUSF and SoR-XMAC-IUE). + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + CounterSor: + description: CounterSoR. + type: string + pattern: '^[A-Fa-f0-9]{4}$' + + AckInd: + description: Contains indication whether the acknowledgement from UE is needed. + type: boolean + + SecuredPacket: + description: Contains a secure packet. + type: string + format: byte + + SorHeader: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + SorTransparentInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + +# +# ENUMS: + + AccessTech: + description: Represents the access technology + anyOf: + - type: string + enum: + - NR + - EUTRAN_IN_WBS1_MODE_AND_NBS1_MODE + - EUTRAN_IN_NBS1_MODE_ONLY + - EUTRAN_IN_WBS1_MODE_ONLY + - UTRAN + - GSM_AND_ECGSM_IoT + - GSM_WITHOUT_ECGSM_IoT + - ECGSM_IoT_ONLY + - CDMA_1xRTT + - CDMA_HRPD + - GSM_COMPACT + - type: string diff --git a/TS29509_Nausf_UEAuthentication.yaml b/TS29509_Nausf_UEAuthentication.yaml new file mode 100644 index 0000000..9f25a82 --- /dev/null +++ b/TS29509_Nausf_UEAuthentication.yaml @@ -0,0 +1,969 @@ +openapi: 3.0.0 +info: + version: 1.3.0-alpha.3 + title: AUSF API + description: | + AUSF UE Authentication Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.509 V18.2.0; 5G System; 3GPP TS Authentication Server services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.509' + +servers: + - url: '{apiRoot}/nausf-auth/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + +paths: + /ue-authentications: + post: + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationInfo' + required: true + responses: + '201': + description: UEAuthenticationCtx + content: + application/3gppHal+json: + schema: + $ref: '#/components/schemas/UEAuthenticationCtx' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nausf-auth//ue-authentications/{authCtxId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request from the AMF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden due to serving network not authorized + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: User does not exist in the HPLMN + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '501': + description: Received protection scheme is not supported by HPLMN + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + /ue-authentications/deregister: + post: + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationInfo' + required: true + responses: + '204': + description: Expected response to a successful removal of security context + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + /ue-authentications/{authCtxId}/5g-aka-confirmation: + put: + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ConfirmationData' + responses: + '200': + description: Request processed (EAP success or Failure) + content: + application/json: + schema: + $ref: '#/components/schemas/ConfirmationDataResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + delete: + summary: Deletes the authentication result in the UDM + operationId: Delete5gAkaAuthenticationResult + tags: + - Authentication Result Deletion + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful authentication result removal + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /ue-authentications/{authCtxId}/eap-session: + post: + operationId: EapAuthMethod + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EapSession' + responses: + '200': + description: Use to handle or close the EAP session + content: + application/json: + schema: + $ref: '#/components/schemas/EapSession' + + application/3gppHal+json: + schema: + type: object + properties: + eapPayload: + $ref: '#/components/schemas/EapPayload' + _links: + type: object + description: 'URI : /{eapSessionUri}, a map(list of key-value pairs) where member serves as key' + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + minProperties: 1 + required: + - eapPayload + - _links + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + delete: + summary: Deletes the authentication result in the UDM + operationId: DeleteEapAuthenticationResult + tags: + - Authentication Result Deletion + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:ue-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful authentication result removal + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /rg-authentications: + post: + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:rg-authentications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RgAuthenticationInfo' + required: true + responses: + '201': + description: RgAuthCtx + content: + application/json: + schema: + $ref: '#/components/schemas/RgAuthCtx' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nausf-auth//rg-authentications/{authCtxId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request from the AMF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: The UE is not allowed to be authenticated + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: User does not exist in the HPLMN + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + + /prose-authentications: + post: + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:prose-authentications + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeAuthenticationInfo' + required: true + responses: + '200': + description: Successful authentication with CP-PRUK ID + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeAuthenticationResult' + '201': + description: ProSeAuthenticationCtx + content: + application/3gppHal+json: + schema: + $ref: '#/components/schemas/ProSeAuthenticationCtx' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nausf-auth//prose-authentications/{authCtxId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + /prose-authentications/{authCtxId}/prose-auth: + post: + operationId: proseAuth + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:prose-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeEapSession' + responses: + '200': + description: Use to handle or close the EAP session for 5G ProSe Remote UE + content: + application/json: + schema: + $ref: '#/components/schemas/ProSeEapSession' + application/3gppHal+json: + schema: + type: object + properties: + eapPayload: + $ref: '#/components/schemas/EapPayload' + _links: + type: object + description: 'URI : /{eapSessionUri}, a map(list of key-value pairs) where member serves as key' + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + minProperties: 1 + required: + - eapPayload + - _links + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + delete: + summary: Deletes the authentication result in the UDM + operationId: DeleteProSeAuthenticationResult + tags: + - Authentication Result Deletion + security: + - {} + - oAuth2ClientCredentials: + - nausf-auth + - oAuth2ClientCredentials: + - nausf-auth + - nausf-auth:prose-authentications + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + responses: + '204': + description: Expected response to a successful authentication result removal + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nausf-auth: Access to Nausf_UEAuthentication API + nausf-auth:ue-authentications: > + Access to service operations applying to the collection of the ue-authentication + resources and the subresources, i.e. 5g-aka-confirmation and eap-session + nausf-auth:rg-authentications: > + Access to service operations applying to the collection of the rg-authentication + resources + nausf-auth:prose-authentications: > + Access to service operations applying to the collection of the prose-authentication + resources and the subresources, i.e. prose-auth. + + schemas: + AuthenticationInfo: + description: Contains the UE id (i.e. SUCI or SUPI) and the Serving Network Name. + type: object + properties: + supiOrSuci: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupiOrSuci' + servingNetworkName: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + resynchronizationInfo: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ResynchronizationInfo' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + pattern: '^[0-9]{1,4}$' + cellCagInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + minItems: 1 + n5gcInd: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + nswoInd: + type: boolean + default: false + disasterRoamingInd: + type: boolean + default: false + onboardingInd: + type: boolean + default: false + aun3Ind: + type: boolean + default: false + required: + - supiOrSuci + - servingNetworkName + + UEAuthenticationCtx: + description: Contains the information related to the resource generated to handle the UE authentication. It contains at least the UE id, Serving Network, the Authentication Method and related EAP information or related 5G-AKA information. + type: object + properties: + authType: + $ref: '#/components/schemas/AuthType' + 5gAuthData: + oneOf: + - $ref: '#/components/schemas/Av5gAka' + - $ref: '#/components/schemas/EapPayload' + _links: + type: object + description: A map(list of key-value pairs) where member serves as key + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + servingNetworkName: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + required: + - authType + - 5gAuthData + - _links + + Av5gAka: + description: Contains Authentication Vector for method 5G AKA. + type: object + required: + - rand + - hxresStar + - autn + properties: + rand: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Rand' + hxresStar: + $ref: '#/components/schemas/HxresStar' + autn: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Autn' + + ConfirmationData: + description: Contains the result of the authentication. + type: object + required: + - resStar + properties: + resStar: + $ref: '#/components/schemas/ResStar' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ConfirmationDataResponse: + description: Contains the result of the authentication + type: object + properties: + authResult: + $ref: '#/components/schemas/AuthResult' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + kseaf: + $ref: '#/components/schemas/Kseaf' + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + required: + - authResult + + EapSession: + description: Contains information related to the EAP session. + type: object + properties: + eapPayload: + $ref: '#/components/schemas/EapPayload' + kSeaf: + $ref: '#/components/schemas/Kseaf' + _links: + type: object + description: A map(list of key-value pairs) where member serves as key + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + authResult: + $ref: '#/components/schemas/AuthResult' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + msk: + $ref: '#/components/schemas/Msk' + required: + - eapPayload + + DeregistrationInfo: + description: Contains the UE id (i.e. SUPI). + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + + RgAuthenticationInfo: + description: Contains the UE id (i.e. SUCI) and the authenticated indication. + type: object + properties: + suci: + $ref: '#/components/schemas/Suci' + authenticatedInd: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suci + - authenticatedInd + + RgAuthCtx: + description: Contains the UE id (i.e. SUPI) and the authentication indication. + type: object + properties: + authResult: + $ref: '#/components/schemas/AuthResult' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + authInd: + type: boolean + default: false + required: + - authResult + + AuthResult: + description: Indicates the result of the authentication. + type: string + enum: + - AUTHENTICATION_SUCCESS + - AUTHENTICATION_FAILURE + - AUTHENTICATION_ONGOING + + EapPayload: + type: string + format: byte + description: contains an EAP packet + nullable: true + + Kseaf: + description: Contains the Kseaf. + type: string + pattern: '[A-Fa-f0-9]{64}' + + Msk: + description: Contains the Master Session Key. + type: string + pattern: '[A-Fa-f0-9]{128}' + + ResStar: + description: Contains the RES*. + type: string + pattern: '[A-Fa-f0-9]{32}' + nullable: true + + HxresStar: + description: Contains the HXRES*. + type: string + pattern: "[A-Fa-f0-9]{32}" + + Suci: + description: Contains the SUCI. + type: string + pattern: '^(suci-(0-[0-9]{3}-[0-9]{2,3}|[1-7]-.+)-[0-9]{1,4}-(0-0-.+|[a-fA-F1-9]-([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])-[a-fA-F0-9]+)|.+)$' + + AuthType: + description: Indicates the authentication method used. + anyOf: + - type: string + enum: + - 5G_AKA + - EAP_AKA_PRIME + - EAP_TLS + - EAP_TTLS + - type: string + + ProSeAuthenticationInfo: + description: > + Contains the UE id (i.e. SUCI) or CP-PRUK ID, Relay Service Code and Nonce_1. + type: object + properties: + supiOrSuci: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupiOrSuci' + 5gPrukId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GPrukId' + relayServiceCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + nonce1: + $ref: '#/components/schemas/Nonce1' + servingNetworkName: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - relayServiceCode + - nonce1 + - servingNetworkName + + ProSeAuthenticationCtx: + description: Contains the information related to the resource generated to handle the ProSe authentication. + type: object + properties: + authType: + $ref: '#/components/schemas/AuthType' + _links: + type: object + description: A map(list of key-value pairs) where member serves as key + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + proSeAuthData: + $ref: '#/components/schemas/ProSeAuthData' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - authType + - _links + - proSeAuthData + + ProSeEapSession: + description: Contains information related to the EAP session. If present the 5gPrukId IE shall carry the CP-PRUK ID. + type: object + properties: + eapPayload: + $ref: '#/components/schemas/EapPayload' + knrProSe: + $ref: '#/components/schemas/KnrProSe' + _links: + type: object + description: A map(list of key-value pairs) where member serves as key + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + authResult: + $ref: '#/components/schemas/AuthResult' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + nonce2: + $ref: '#/components/schemas/Nonce2' + 5gPrukId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GPrukId' + required: + - eapPayload + + ProSeAuthData: + description: Represents ProSe authentication related information. + oneOf: + - $ref: '#/components/schemas/EapPayload' + + ProSeAuthenticationResult: + description: Successful authentication for CP-PRUK ID. + type: object + properties: + knrProSe: + $ref: '#/components/schemas/KnrProSe' + nonce2: + $ref: '#/components/schemas/Nonce2' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + KnrProSe: + description: Contains the KNR_ProSe. + type: string + pattern: '[A-Fa-f0-9]{64}' + Nonce1: + type: string + format: byte + description: contains an Nonce1 + nullable: true + + Nonce2: + type: string + format: byte + description: contains an Nonce2 + nullable: true diff --git a/TS29509_Nausf_UPUProtection.yaml b/TS29509_Nausf_UPUProtection.yaml new file mode 100644 index 0000000..11984dc --- /dev/null +++ b/TS29509_Nausf_UPUProtection.yaml @@ -0,0 +1,169 @@ +openapi: 3.0.0 +info: + version: 1.3.0-alpha.1 + title: Nausf_UPUProtection Service + description: | + AUSF UPU Protection Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.509 V18.0.0; 5G System; Authentication Server Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.509' + +servers: + - url: '{apiRoot}/nausf-upuprotection/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nausf-upuprotection + +paths: + /{supi}/ue-upu: + post: + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpuInfo' + required: true + responses: + '200': + description: UpuSecurityInfo + content: + application/json: + schema: + $ref: '#/components/schemas/UpuSecurityInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nausf-upuprotection: Access to the Nausf_UPUProtection API + + schemas: + +# +# COMPLEX TYPES: +# + + UpuInfo: + description: Contains the UE parameters update Information. + type: object + properties: + upuDataList: + type: array + items: + $ref: '#/components/schemas/UpuData' + minItems: 1 + upuHeader: + $ref: '#/components/schemas/UpuHeader' + upuAckInd: + $ref: '#/components/schemas/UpuAckInd' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + upuTransparentInfo: + $ref: '#/components/schemas/UpuTransparentInfo' + required: + - upuDataList + - upuAckInd + + UpuSecurityInfo: + description: Contains the material generated for securing of UPU. It contains at least the UPU-MAC-IAUSF and CounterUPU. + type: object + properties: + upuMacIausf: + $ref: '#/components/schemas/UpuMac' + counterUpu: + $ref: '#/components/schemas/CounterUpu' + upuXmacIue: + $ref: '#/components/schemas/UpuMac' + required: + - upuMacIausf + - counterUpu + + UpuData: + description: Contains UE parameters update data set (e.g., the updated Routing ID Data or the Default configured NSSAI). + type: object + properties: + secPacket: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SecuredPacket' + defaultConfNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + routingId: + $ref: 'TS29544_Nspaf_SecuredPacket.yaml#/components/schemas/RoutingId' + +# +# SIMPLE TYPES: +# + + UpuMac: + description: MAC value for protecting UPU procedure (UPU-MAC-IAUSF and UPU-MAC-IUE). + type: string + pattern: '^[A-Fa-f0-9]{32}$' + + CounterUpu: + description: CounterUPU. + type: string + pattern: '^[A-Fa-f0-9]{4}$' + + UpuAckInd: + description: Contains the indication of whether the acknowledgement from UE is needed. + type: boolean + + UpuHeader: + description: Contains the "UPU Header" IE as specified in clause 9.11.3.53A of 3GPP TS 24.501 (octet 4), encoded as 2 hexadecimal characters. + type: string + pattern: '^[A-Fa-f0-9]{2}$' + + UpuTransparentInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' diff --git a/TS29510_Nnrf_AccessToken.yaml b/TS29510_Nnrf_AccessToken.yaml new file mode 100644 index 0000000..793c4ca --- /dev/null +++ b/TS29510_Nnrf_AccessToken.yaml @@ -0,0 +1,309 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.1' + title: 'NRF OAuth2' + description: | + NRF OAuth2 Authorization. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.510 V18.5.0; 5G System; Network Function Repository Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/' + +paths: + /oauth2/token: + post: + summary: Access Token Request + operationId: AccessTokenRequest + tags: + - Access Token Request + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + content: + application/x-www-form-urlencoded: + schema: + $ref: '#/components/schemas/AccessTokenReq' + encoding: + requesterPlmn: + contentType: application/json + requesterPlmnList: + contentType: application/json + requesterSnssaiList: + contentType: application/json + requesterSnpnList: + contentType: application/json + targetPlmn: + contentType: application/json + targetSnpn: + contentType: application/json + targetSnssaiList: + contentType: application/json + targetNsiList: + style: form + explode: true + required: true + responses: + '200': + description: Successful Access Token Request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenRsp' + headers: + Cache-Control: + $ref: '#/components/headers/cache-control' + Pragma: + $ref: '#/components/headers/pragma' + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + 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': + description: Error in the Access Token Request + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTokenErr' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + headers: + Cache-Control: + $ref: '#/components/headers/cache-control' + Pragma: + $ref: '#/components/headers/pragma' + '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: + headers: + cache-control: + required: true + schema: + type: string + enum: + - no-store + pragma: + required: true + schema: + type: string + enum: + - no-cache + + schemas: + AccessTokenReq: + description: Contains information related to the access token request + type: object + required: + - grant_type + - nfInstanceId + - scope + properties: + grant_type: + type: string + enum: + - client_credentials + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + targetNfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + scope: + type: string + pattern: '^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$' + targetNfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + requesterPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + requesterPlmnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 2 + requesterSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + requesterFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + requesterSnpnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + targetPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + targetSnpn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + targetSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + targetNsiList: + type: array + items: + type: string + minItems: 1 + targetNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + targetNfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + hnrfAccessTokenUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + sourceNfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + AccessTokenRsp: + description: Contains information related to the access token response + type: object + required: + - access_token + - token_type + properties: + access_token: + type: string + description: > + JWS Compact Serialized representation of JWS signed JSON object (AccessTokenClaims) + token_type: + type: string + enum: + - Bearer + expires_in: + type: integer + scope: + type: string + pattern: '^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$' + + AccessTokenClaims: + description: The claims data structure for the access token + type: object + required: + - iss + - sub + - aud + - scope + - exp + properties: + iss: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + sub: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + aud: + anyOf: + - $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + scope: + type: string + pattern: '^([a-zA-Z0-9_:-]+)( [a-zA-Z0-9_:-]+)*$' + exp: + type: integer + consumerPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + consumerSnpnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + producerPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + producerSnpnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + producerSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + producerNsiList: + type: array + items: + type: string + minItems: 1 + producerNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + producerNfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + sourceNfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + AccessTokenErr: + description: Error returned in the access token response message + type: object + required: + - error + properties: + error: + type: string + enum: + - invalid_request + - invalid_client + - invalid_grant + - unauthorized_client + - unsupported_grant_type + - invalid_scope + error_description: + type: string + error_uri: + type: string diff --git a/TS29510_Nnrf_Bootstrapping.yaml b/TS29510_Nnrf_Bootstrapping.yaml new file mode 100644 index 0000000..787238d --- /dev/null +++ b/TS29510_Nnrf_Bootstrapping.yaml @@ -0,0 +1,123 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'NRF Bootstrapping' + description: | + NRF Bootstrapping. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.510 V18.5.0; 5G System; Network Function Repository Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.510/' + +paths: + /bootstrapping: + get: + summary: Bootstrapping Info Request + operationId: BootstrappingInfoRequest + tags: + - Bootstrapping Request + parameters: + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 9110, 13.1.2 + schema: + type: string + responses: + '200': + description: Successful Bootstrapping Request + content: + application/3gppHal+json: + schema: + $ref: '#/components/schemas/BootstrappingInfo' + headers: + Cache-Control: + description: Cache-Control containing max-age, described in IETF RFC 9111, 5.2 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.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' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + BootstrappingInfo: + description: Information returned by NRF in the bootstrapping response message + type: object + required: + - _links + properties: + status: + $ref: '#/components/schemas/Status' + _links: + type: object + description: > + Map of link objects where the keys are the link relations defined in + 3GPP TS 29.510 clause 6.4.6.3.3 + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LinksValueSchema' + minProperties: 1 + nrfFeatures: + type: object + description: > + Map of features supported by the NRF, where the keys are the NRF services + as defined in 3GPP TS 29.510 clause 6.1.6.3.11 + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + minProperties: 1 + oauth2Required: + type: object + description: > + Map indicating whether the NRF requires Oauth2-based authorization for accessing + its services. The key of the map shall be the name of an NRF service, + e.g. "nnrf-nfm" or "nnrf-disc" + additionalProperties: + type: boolean + minProperties: 1 + nrfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + nrfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + Status: + description: Overal status of the NRF + anyOf: + - type: string + enum: + - OPERATIVE + - NON_OPERATIVE + - type: string diff --git a/TS29510_Nnrf_NFDiscovery.yaml b/TS29510_Nnrf_NFDiscovery.yaml new file mode 100644 index 0000000..31b9261 --- /dev/null +++ b/TS29510_Nnrf_NFDiscovery.yaml @@ -0,0 +1,2481 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.6' + title: 'NRF NFDiscovery Service' + description: | + NRF NFDiscovery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.510 V18.5.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-disc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnrf-disc + - oAuth2ClientCredentials: + - nnrf-disc + - nnrf-disc:nf-instances:read-complete-profile + +paths: + /nf-instances: + get: + summary: Search a collection of NF Instances + operationId: SearchNFInstances + tags: + - NF Instances (Store) + parameters: + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: target-nf-type + in: query + description: Type of the target NF + required: true + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - name: requester-nf-type + in: query + description: Type of the requester NF + required: true + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - name: preferred-collocated-nf-types + in: query + description: collocated NF types that candidate NFs should preferentially support + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/CollocatedNfType' + minItems: 1 + style: form + explode: false + - name: requester-nf-instance-id + in: query + description: NfInstanceId of the requester NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: service-names + in: query + description: Names of the services offered by the NF + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + minItems: 1 + uniqueItems: true + style: form + explode: false + - name: requester-nf-instance-fqdn + in: query + description: FQDN of the requester NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: target-plmn-list + in: query + description: > + Id of the PLMN of either the target NF, or in SNPN scenario the Credentials Holder + in the PLMN + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + - name: requester-plmn-list + in: query + description: Id of the PLMN where the NF issuing the Discovery request is located + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + - name: target-nf-instance-id + in: query + description: Identity of the NF instance being discovered + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: target-nf-instance-id-list + in: query + description: Identities of the NF instances being discovered + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 2 + style: form + explode: false + - name: target-nf-fqdn + in: query + description: FQDN of the NF instance being discovered + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: hnrf-uri + in: query + description: Uri of the home NRF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + - name: snssais + in: query + description: Slice info of the target NF + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: additional-snssais + in: query + description: Additional Slices supported by the target NF (Service) instances + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + - name: requester-snssais + in: query + description: Slice info of the requester NF + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + - name: plmn-specific-snssai-list + in: query + description: PLMN specific Slice info of the target NF + content: + application/json: + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/PlmnSnssai' + minItems: 1 + - name: requester-plmn-specific-snssai-list + in: query + description: PLMN-specific slice info of the NF issuing the Discovery request + content: + application/json: + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/PlmnSnssai' + minItems: 1 + - name: dnn + in: query + description: Dnn supported by the BSF, SMF or UPF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: ipv4-index + in: query + description: The IPv4 Index supported by the candidate UPF. + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpIndex' + - name: ipv6-index + in: query + description: The IPv6 Index supported by the candidate UPF. + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpIndex' + - name: nsi-list + in: query + description: NSI IDs that are served by the services being discovered + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: smf-serving-area + in: query + schema: + type: string + - name: mbsmf-serving-area + in: query + schema: + type: string + - name: tai + in: query + description: Tracking Area Identity + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + - name: amf-region-id + in: query + description: AMF Region Identity + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfRegionId' + - name: amf-set-id + in: query + description: AMF Set Identity + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfSetId' + - name: guami + in: query + description: Guami used to search for an appropriate AMF + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + - name: supi + in: query + description: SUPI of the user + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: ue-ipv4-address + in: query + description: IPv4 address of the UE + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + - name: ip-domain + in: query + description: IP domain of the UE, which supported by BSF + schema: + type: string + - name: ue-ipv6-prefix + in: query + description: IPv6 prefix of the UE + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + - name: pgw-ind + in: query + description: Combined PGW-C and SMF or a standalone SMF + schema: + type: boolean + - name: preferred-pgw-ind + in: query + description: Indicates combined PGW-C+SMF or standalone SMF are preferred + schema: + type: boolean + - name: pgw + in: query + description: PGW FQDN of a combined PGW-C and SMF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: pgw-ip + in: query + description: PGW IP Address of a combined PGW-C and SMF + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + - name: gpsi + in: query + description: GPSI of the user + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: external-group-identity + in: query + description: external group identifier of the user + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + - name: internal-group-identity + in: query + description: internal group identifier of the user + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: pfd-data + in: query + description: PFD data + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/PfdData' + - name: data-set + in: query + description: data set supported by the NF + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/DataSetId' + - name: routing-indicator + in: query + description: routing indicator in SUCI + schema: + type: string + pattern: '^[0-9]{1,4}$' + - name: group-id-list + in: query + description: Group IDs of the NFs being discovered + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + minItems: 1 + style: form + explode: false + - name: dnai-list + in: query + description: Data network access identifiers of the NFs being discovered + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + style: form + explode: false + - name: pdu-session-types + in: query + description: list of PDU Session Type required to be supported by the target NF + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + minItems: 1 + style: form + explode: false + - name: event-id-list + in: query + description: > + Analytics event(s) requested to be supported by the Nnwdaf_AnalyticsInfo service + schema: + type: array + items: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventId' + minItems: 1 + style: form + explode: false + - name: nwdaf-event-list + in: query + description: > + Analytics event(s) requested to be supported by the Nnwdaf_EventsSubscription service. + schema: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + minItems: 1 + style: form + explode: false + - name: upf-event-list + in: query + description: > + Event(s) requested to be supported by the Nupf_EventExposure service. + schema: + type: array + items: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/EventType' + minItems: 1 + style: form + explode: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: upf-iwk-eps-ind + in: query + description: UPF supporting interworking with EPS or not + schema: + type: boolean + - name: chf-supported-plmn + in: query + description: PLMN ID supported by a CHF + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: preferred-locality + in: query + description: preferred target NF location + schema: + type: string + - name: ext-preferred-locality + in: query + description: > + preferred target NF location + A map (list of key-value pairs) where the key of the map represents the relative + priority, for the requester, of each locality description among the list of locality + descriptions in this query parameter, encoded as "1" (highest priority"), "2", "3", …, + "n" (lowest priority) + content: + application/json: + schema: + type: object + additionalProperties: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/LocalityDescription' + minItems: 1 + minProperties: 1 + - name: access-type + in: query + description: AccessType supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + - name: limit + in: query + description: Maximum number of NFProfiles to return in the response + required: false + schema: + type: integer + minimum: 1 + - name: required-features + in: query + description: Features required to be supported by the target NF + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + minItems: 1 + style: form + explode: false + - name: complex-query + in: query + description: the complex query condition expression + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ComplexQuery' + - name: max-payload-size + in: query + description: Maximum content size of the response expressed in kilo octets + required: false + schema: + type: integer + maximum: 2000 + default: 124 + - name: max-payload-size-ext + in: query + description: > + Extended query for maximum content size of the response expressed in kilo octets + required: false + schema: + type: integer + default: 124 + - name: atsss-capability + in: query + description: ATSSS Capability + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AtsssCapability' + - name: upf-ue-ip-addr-ind + in: query + description: UPF supporting allocating UE IP addresses/prefixes + schema: + type: boolean + - name: client-type + in: query + description: Requested client type served by the NF + content: + application/json: + schema: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ExternalClientType' + - name: lmf-id + in: query + description: LMF identification to be discovered + content: + application/json: + schema: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + - name: an-node-type + in: query + description: Requested AN node type served by the NF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AnNodeType' + - name: rat-type + in: query + description: Requested RAT type served by the NF + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + - name: preferred-tai + in: query + description: preferred Tracking Area Identity + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + - name: preferred-nf-instances + in: query + description: preferred NF Instances + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + style: form + explode: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 9110, 13.1.2 + schema: + type: string + - name: target-snpn + in: query + description: Target SNPN Identity, or the Credentials Holder in the SNPN + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + - name: requester-snpn-list + in: query + description: SNPN ID(s) of the NF instance issuing the Discovery request + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + - name: af-ee-data + in: query + description: NEF exposured by the AF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AfEventExposureData' + - name: w-agf-info + in: query + description: UPF collocated with W-AGF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/WAgfInfo' + - name: tngf-info + in: query + description: UPF collocated with TNGF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TngfInfo' + - name: twif-info + in: query + description: UPF collocated with TWIF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TwifInfo' + - name: upf-select-epdg-info + in: query + description: The ePDG information to find a preferred UPF + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/EpdgInfo' + - name: target-nf-set-id + in: query + description: Target NF Set ID + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: target-nf-service-set-id + in: query + description: Target NF Service Set ID + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + - name: nef-id + in: query + description: NEF ID + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NefId' + - name: notification-type + in: query + description: Notification Type + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NotificationType' + - name: n1-msg-class + in: query + description: N1 Message Class + schema: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N1MessageClass' + - name: n2-info-class + in: query + description: N2 Information Class + schema: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InformationClass' + - name: serving-scope + in: query + description: areas that can be served by the target NF + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: imsi + in: query + description: IMSI of the requester UE to search for an appropriate NF (e.g. HSS, DCSF) + schema: + type: string + pattern: '^[0-9]{5,15}$' + - name: ims-private-identity + in: query + description: IMPI of the requester UE to search for a target HSS or DCSF + schema: + type: string + - name: ims-public-identity + in: query + description: IMS Public Identity of the requester UE to search for a target HSS or DCSF + schema: + type: string + - name: msisdn + in: query + description: MSISDN of the requester UE to search for a target HSS or DCSF + schema: + type: string + - name: preferred-api-versions + in: query + description: Preferred API version of the services to be discovered + content: + application/json: + schema: + description: A map (list of key-value pairs) where ServiceName serves as key + type: object + additionalProperties: + type: string + minProperties: 1 + - name: v2x-support-ind + in: query + description: PCF supports V2X + schema: + type: boolean + - name: redundant-gtpu + in: query + description: UPF supports redundant gtp-u to be discovered + schema: + type: boolean + - name: redundant-transport + in: query + description: UPF supports redundant transport path to be discovered + schema: + type: boolean + - name: ipups + in: query + description: UPF which is configured for IPUPS functionality to be discovered + schema: + type: boolean + - name: sxa-ind + in: query + description: UPF which is configured to support sxa interface + schema: + type: boolean + - name: scp-domain-list + in: query + description: SCP domains the target SCP or SEPP belongs to + schema: + type: array + items: + type: string + minItems: 1 + style: form + explode: false + - name: address-domain + in: query + description: Address domain reachable through the SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: ipv4-addr + in: query + description: IPv4 address reachable through the SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + - name: ipv6-prefix + in: query + description: IPv6 prefix reachable through the SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + - name: served-nf-set-id + in: query + description: NF Set ID served by the SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: remote-plmn-id + in: query + description: Id of the PLMN reachable through the SCP or SEPP + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: remote-snpn-id + in: query + description: Id of the SNPN reachable through the SCP or SEPP + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + - name: data-forwarding + in: query + description: UPF Instance(s) configured for data forwarding are requested + schema: + type: boolean + - name: preferred-full-plmn + in: query + description: NF Instance(s) serving the full PLMN are preferred + schema: + type: boolean + - name: requester-features + in: query + description: > + Features supported by the NF Service Consumer that is invoking + the Nnrf_NFDiscovery service + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: realm-id + in: query + description: realm-id to search for an appropriate UDSF + schema: + type: string + - name: storage-id + in: query + description: storage-id to search for an appropriate UDSF + schema: + type: string + - name: vsmf-support-ind + in: query + description: V-SMF capability supported by the target NF instance(s) + schema: + type: boolean + - name: ismf-support-ind + in: query + description: I-SMF capability supported by the target NF instance(s) + schema: + type: boolean + - name: nrf-disc-uri + in: query + description: Uri of the NRF holding the NF profile of a target NF Instance + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + - name: preferred-vendor-specific-features + in: query + description: Preferred vendor specific features of the services to be discovered + content: + application/json: + schema: + description: A map (list of key-value pairs) where ServiceName serves as key + type: object + additionalProperties: + 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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/VendorSpecificFeature' + minItems: 1 + minProperties: 1 + minProperties: 1 + - name: preferred-vendor-specific-nf-features + in: query + description: Preferred vendor specific features of the network function to be discovered + content: + application/json: + schema: + 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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/VendorSpecificFeature' + minItems: 1 + minProperties: 1 + - name: required-pfcp-features + in: query + description: PFCP features required to be supported by the target UPF + schema: + type: string + - name: home-pub-key-id + in: query + description: > + Indicates the Home Network Public Key ID which shall be able to be served + by the NF instance + schema: + type: integer + - name: prose-support-ind + in: query + description: PCF supports ProSe Capability + schema: + type: boolean + - name: analytics-aggregation-ind + in: query + description: analytics aggregation is supported by NWDAF or not + schema: + type: boolean + - name: serving-nf-set-id + in: query + description: NF Set Id served by target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + - name: serving-nf-type + in: query + description: NF type served by the target NF + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - name: ml-analytics-info-list + in: query + description: Lisf of ML Analytics Filter information of Nnwdaf_MLModelProvision service + content: + application/json: + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MlAnalyticsInfo' + minItems: 1 + - name: analytics-metadata-prov-ind + in: query + description: analytics matadata provisioning is supported by NWDAF or not + schema: + type: boolean + - name: nsacf-capability + in: query + description: the service capability supported by the target NSACF + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NsacfCapability' + - name: mbs-session-id-list + in: query + description: List of MBS Session ID(s) + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + minItems: 1 + - name: area-session-id + in: query + description: Area Session ID + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + - name: gmlc-number + in: query + description: The GMLC Number supported by the GMLC + schema: + type: string + pattern: '^[0-9]{5,15}$' + - name: upf-n6-ip + in: query + description: N6 IP address of PSA UPF supported by the EASDF + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + - name: tai-list + in: query + description: Tracking Area Identifiers of the NFs being discovered + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + - name: nf-tai-list-ind + in: query + description: the NF service consumer supports candidate nfs supporting a subset of TAIs + schema: + type: boolean + enum: + - true + - name: preferences-precedence + in: query + description: > + Indicates the precedence of the preference query parameters (from higher to lower) + schema: + type: array + items: + type: string + minItems: 2 + style: form + explode: false + - name: support-onboarding-capability + in: query + description: Indicating the support for onboarding. + schema: + type: boolean + default: false + - name: uas-nf-functionality-ind + in: query + description: UAS NF functionality is supported by NEF or not + schema: + type: boolean + - name: multi-mem-af-sess-qos-ind + in: query + description: Multi-member AF session with required QoS is supported by NEF or not + schema: + type: boolean + enum: + - true + - name: member-ue-sel-assist-ind + in: query + description: member UE selection assistance functionality is supported by NEF or not + schema: + type: boolean + enum: + - true + - name: v2x-capability + in: query + description: indicates the V2X capability that the target PCF needs to support. + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/V2xCapability' + - name: prose-capability + in: query + description: indicates the ProSe capability that the target PCF needs to support. + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ProSeCapability' + - name: shared-data-id + in: query + description: Identifier of shared data stored in the NF being discovered + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SharedDataId' + - name: target-hni + in: query + description: Home Network Identifier query. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: target-nw-resolution + in: query + description: Resolution of the identity of the target PLMN based on the GPSI of the UE + schema: + type: boolean + - name: exclude-nfinst-list + in: query + description: NF Instance IDs to be excluded from the NF Discovery procedure + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + style: form + explode: false + - name: exclude-nfservinst-list + in: query + description: NF service instance IDs to be excluded from the NF Discovery procedure + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NfServiceInstance' + minItems: 1 + - name: exclude-nfserviceset-list + in: query + description: NF Service Set IDs to be excluded from the NF Discovery procedure + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + minItems: 1 + style: form + explode: false + - name: exclude-nfset-list + in: query + description: NF Set IDs to be excluded from the NF Discovery procedure + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + style: form + explode: false + - name: preferred-analytics-delays + in: query + description: Preferred analytics delays supported by the NWDAF to be discovered + content: + application/json: + schema: + description: > + A map (list of key-value pairs) where EventId or NwdafEvent serves as key + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + minProperties: 1 + - name: high-latency-com + in: query + description: Indicating the support for High Latency communication. + schema: + type: boolean + enum: + - true + - name: nsac-sai + in: query + description: NSAC Service Area Identifier + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsacSai' + - name: complete-profile + in: query + description: request to discover the complete profile of NF instances + schema: + type: boolean + enum: + - true + - name: n32-purposes + in: query + description: N32 purposes to be supported by the SEPP + schema: + type: array + items: + $ref: 'TS29573_N32_Handshake.yaml#/components/schemas/N32Purpose' + minItems: 1 + style: form + explode: false + - name: preferred-features + in: query + description: Preferred features to be supported by the target Network Function. + content: + application/json: + schema: + description: > + A map (list of key-value pairs) where Service Name serves as the key. + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + minProperties: 1 + - name: remote-plmn-id-roaming + in: query + description: Id of the remote PLMN served by the target NF service producer + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: pru-tai + in: query + description: LMF(s) serving the TAI with PRU(s) existence + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + - name: pru-support-ind + in: query + description: Indicating the support of PRU function + schema: + type: boolean + - name: af-data + in: query + description: events supported by the trusted AFs being discovered + content: + application/json: + schema: + $ref: '#/components/schemas/AfData' + - name: ml-accuracy-checking-ind + in: query + description: Indicating the support for ML Model Accuracy checking. + schema: + type: boolean + enum: + - true + - name: analytics-accuracy-checking-ind + in: query + description: Indicating the support for Analytics Accuracy checking. + schema: + type: boolean + enum: + - true + - name: a2x-support-ind + in: query + description: PCF supports A2X + schema: + type: boolean + - name: a2x-capability + in: query + description: indicates the A2X capability that the target PCF needs to support. + content: + application/json: + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/A2xCapability' + - name: ml-model-storage-ind + in: query + description: Indicating the support for ML model storage and retrieval capability. + schema: + type: boolean + enum: + - true + - name: data-storage-ind + in: query + description: > + Indicating the support for data and analytics storage and retrieval capability. + schema: + type: boolean + enum: + - true + - name: data-subscription-relocation-support-ind + in: query + description: Indicating the support for relocation of data subscription. + schema: + type: boolean + enum: + - true + - name: ims-domain-name + in: query + description: Indicating the IMS domain name to search for a target DCSF. + schema: + type: string + - name: media-capability-list + in: query + description: Indicating the media capability list to search for a target MF, MRF or MRFP. + schema: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MediaCapability' + minItems: 1 + style: form + explode: false + - name: roaming-exchange-ind + in: query + description: Indicating the support for roaming exchange. + schema: + type: boolean + enum: + - true + - name: ranging-sl-pos-support-ind + in: query + description: PCF or LMF supports ranging and sidelink positioning Capability + schema: + type: boolean + enum: + - true + - name: preferred-up-positioning-ind + in: query + description: LMF supporting user plane positioning capability + schema: + type: boolean + enum: + - true + - name: complete-search-result + in: query + description: > + Indicates that all the NF profiles or NF Instance IDs matching the query parameters + are requested to be returned + schema: + type: boolean + enum: + - true + + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SearchResult' + links: + search: + operationId: RetrieveStoredSearch + parameters: + searchId: $response.body#/searchId + description: > + The 'searchId' parameter returned in the response can be used as the + 'searchId' parameter in the GET request to '/searches/{searchId}' + completeSearch: + operationId: RetrieveCompleteSearch + parameters: + searchId: $response.body#/searchId + description: > + The 'searchId' parameter returned in the response can be used as the + 'searchId' parameter in the GET request to '/searches/{searchId}/complete' + headers: + Cache-Control: + description: Cache-Control containing max-age, described in IETF RFC 9111, 5.2 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.3 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + 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' + + /searches/{searchId}: + get: + operationId: RetrieveStoredSearch + tags: + - Stored Search (Document) + parameters: + - $ref: '#/components/parameters/searchId' + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + responses: + '200': + $ref: '#/components/responses/200' + '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 + + /searches/{searchId}/complete: + get: + operationId: RetrieveCompleteSearch + tags: + - Complete Stored Search (Document) + parameters: + - $ref: '#/components/parameters/searchId' + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + responses: + '200': + $ref: '#/components/responses/200' + '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 + + /scp-domain-routing-info: + get: + operationId: SCPDomainRoutingInfoGet + tags: + - SCP Domain Routing Information (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-disc + - oAuth2ClientCredentials: + - nnrf-disc + - nnrf-disc:scp-domain:read + parameters: + - name: local + in: query + description: Indication of local SCP Domain Routing Information + required: false + schema: + type: boolean + default: false + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScpDomainRoutingInformation' + headers: + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + description: Temporary Redirect + 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' + + /scp-domain-routing-info-subs: + post: + summary: Create a new subscription + operationId: ScpDomainRoutingInfoSubscribe + tags: + - SCP Domain Routing Information Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-disc + - oAuth2ClientCredentials: + - nnrf-disc + - nnrf-disc:scp-domain-subs:write + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScpDomainRoutingInfoSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScpDomainRoutingInfoSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nnrf-disc/v1/scp-domain-routing-info-subs/{subscriptionID} + required: true + schema: + type: string + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + 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: + onScpDomainRoutingInformationChange: + '{$request.body#/callbackUri}': + post: + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Notification content + content: + application/json: + schema: + $ref: '#/components/schemas/ScpDomainRoutingInfoNotification' + responses: + '204': + description: Expected response to a successful callback processing + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + 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' + + /scp-domain-routing-info-subs/{subscriptionID}: + delete: + summary: Deletes a subscription + operationId: ScpDomainRoutingInfoUnsubscribe + tags: + - Individual SCP Domain Routing Information Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-disc + - oAuth2ClientCredentials: + - nnrf-disc + - nnrf-disc:scp-domain-subs:write + parameters: + - name: subscriptionID + in: path + required: true + description: Unique ID of the subscription to remove + schema: + type: string + responses: + '204': + description: Expected response to a successful subscription removal + '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-disc: Access to the Nnrf_NFDiscovery API + nnrf-disc:scp-domain:read: Access to read the scp-domain-routing-info resource + nnrf-disc:scp-domain-subs:write: Access to create/delete a scp-domain subscription resource + nnrf-disc:nf-instances:read-complete-profile: > + Access to the Nnrf_NFDiscovery API enabling the discovery of the complete profile + of NF instances + + parameters: + searchId: + name: searchId + in: path + description: Id of a stored search + required: true + schema: + type: string + + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/StoredSearchResult' + headers: + Cache-Control: + description: Cache-Control containing max-age, described in IETF RFC 9111, 5.2 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.3 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + + schemas: + + SearchResult: + description: Contains the list of NF Profiles returned in a Discovery response + type: object + required: + - validityPeriod + - nfInstances + properties: + validityPeriod: + type: integer + nfInstances: + type: array + items: + $ref: '#/components/schemas/NFProfile' + completeNfInstances: + type: array + items: + $ref: '#/components/schemas/NFProfile' + minItems: 1 + searchId: + type: string + numNfInstComplete: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + preferredSearch: + $ref: '#/components/schemas/PreferredSearch' + nrfSupportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + nfInstanceList: + description: List of matching NF instances. The key of the map is the NF instance ID. + type: object + additionalProperties: + $ref: '#/components/schemas/NfInstanceInfo' + minProperties: 1 + searchResultInfo: + $ref: '#/components/schemas/SearchResultInfo' + alteredPriorityInd: + type: boolean + noProfileMatchInfo: + $ref: '#/components/schemas/NoProfileMatchInfo' + ignoredQueryParams: + type: array + items: + type: string + minItems: 1 + + StoredSearchResult: + description: > + Contains a complete search result (i.e. a number of discovered NF Instances), + stored by NRF as a consequence of a prior search result + type: object + required: + - nfInstances + properties: + nfInstances: + type: array + items: + $ref: '#/components/schemas/NFProfile' + completeNfInstances: + type: array + items: + $ref: '#/components/schemas/NFProfile' + minItems: 1 + + NFProfile: + description: Information of an NF Instance discovered by the NRF + type: object + required: + - nfInstanceId + - nfType + - nfStatus + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfInstanceName: + type: string + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + nfStatus: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFStatus' + collocatedNfInstances: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/CollocatedNfInstance' + minItems: 1 + plmnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + sNssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + perPlmnSnssaiList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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 + allowedRuleSet: + description: A map (list of key-value pairs) where a valid JSON pointer Id serves as key + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/RuleSet' + minProperties: 1 + 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 + extLocality: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string serves + as key representing a type of locality + type: object + additionalProperties: + type: string + minProperties: 1 + priority: + type: integer + minimum: 0 + maximum: 65535 + udrInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/UdrInfo' + minProperties: 1 + udmInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/UdmInfo' + minProperties: 1 + ausfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AusfInfo' + minProperties: 1 + amfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AmfInfo' + minProperties: 1 + smfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SmfInfo' + minProperties: 1 + upfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/UpfInfo' + minProperties: 1 + pcfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/PcfInfo' + minProperties: 1 + bsfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/BsfInfo' + minProperties: 1 + chfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ChfInfo' + minProperties: 1 + udsfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/UdsfInfo' + minProperties: 1 + nwdafInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NwdafInfo' + minProperties: 1 + nefInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NefInfo' + pcscfInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of PcscfInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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 + defaultNotificationSubscriptions: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/DefaultNotificationSubscription' + lmfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/LmfInfo' + gmlcInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/GmlcInfo' + snpnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + 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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ScpInfo' + seppInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SeppInfo' + vendorId: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AanfInfo' + minProperties: 1 + mfafInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/EasdfInfo' + minProperties: 1 + dccfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TsctsfInfo' + minProperties: 1 + mbUpfInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MbUpfInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MbUpfInfo' + minProperties: 1 + trustAfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TrustAfInfo' + nssaafInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NssaafInfo' + hniList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + iwmscInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IwmscInfo' + mnpfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MnpfInfo' + smsfInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SmsfInfo' + dcsfInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of DcsfInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/DcsfInfo' + mrfInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MrfInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MrfInfo' + mrfpInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MrfpInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MrfpInfo' + mfInfoList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MfInfo + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/MfInfo' + adrfInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of AdrfInfo + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/AdrfInfo' + minProperties: 1 + selectionConditions: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SelectionConditions' + + NFService: + description: > + Information of a given NF Service Instance; it is part of the NFProfile + of an NF Instance discovered by the NRF + type: object + required: + - serviceInstanceId + - serviceName + - versions + - scheme + - nfServiceStatus + properties: + serviceInstanceId: + type: string + serviceName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + versions: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFServiceVersion' + minItems: 1 + scheme: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UriScheme' + nfServiceStatus: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFServiceStatus' + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + interPlmnFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + ipEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + apiPrefix: + type: string + callbackUriPrefixList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/CallbackUriPrefixItem' + minItems: 1 + defaultNotificationSubscriptions: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/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 + capacity: + type: integer + minimum: 0 + maximum: 65535 + load: + type: integer + minimum: 0 + maximum: 100 + loadTimeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + priority: + type: integer + minimum: 0 + maximum: 65535 + 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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/PlmnSnssai' + minItems: 1 + vendorId: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/VendorSpecificFeature' + minItems: 1 + minProperties: 1 + oauth2Required: + type: boolean + 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 + allowedOperationsPerNfInstanceOverrides: + type: boolean + default: false + allowedScopesRuleSet: + description: A map (list of key-value pairs) where a valid JSON pointer Id serves as key + type: object + additionalProperties: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/RuleSet' + minProperties: 1 + selectionConditions: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SelectionConditions' + + PreferredSearch: + description: > + Contains information on whether the returned NFProfiles match the preferred query parameters + type: object + properties: + preferredTaiMatchInd: + type: boolean + default: false + preferredFullPlmnMatchInd: + type: boolean + default: false + preferredApiVersionsMatchInd: + type: boolean + otherApiVersionsInd: + type: boolean + preferredLocalityMatchInd: + type: boolean + default: false + otherLocalityInd: + type: boolean + default: false + preferredVendorSpecificFeaturesInd: + type: boolean + default: false + preferredCollocatedNfTypeInd: + type: boolean + default: false + preferredPgwMatchInd: + type: boolean + preferredAnalyticsDelaysInd: + type: boolean + preferredFeaturesMatchInd: + type: boolean + noPreferredFeaturesInd: + type: boolean + + NfInstanceInfo: + description: Contains information on an NF profile matching a discovery request + type: object + properties: + nrfDiscApiUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + preferredSearch: + $ref: '#/components/schemas/PreferredSearch' + nrfAlteredPriorities: + description: > + The key of the map is the JSON Pointer of the priority IE in the NFProfile data type + that is altered by the NRF + type: object + additionalProperties: + type: integer + minimum: 0 + maximum: 65535 + minProperties: 1 + nrfSupportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ScpDomainRoutingInformation: + description: SCP Domain Routing Information + type: object + required: + - scpDomainList + properties: + scpDomainList: + description: | + This IE shall contain a map of SCP domain interconnection information, where + the key of the map is a SCP domain. The value of each entry shall be the + interconnectivity information of the the SCP domain indicated by the key. + An empty map indicates that there is no SCP domain currently registered in + the NRF. + type: object + additionalProperties: + $ref: '#/components/schemas/ScpDomainConnectivity' + + ScpDomainConnectivity: + description: SCP Domain Connectivity Information + type: object + required: + - connectedScpDomainList + properties: + connectedScpDomainList: + type: array + items: + type: string + + ScpDomainRoutingInfoSubscription: + description: SCP Domain Routing Information Subscription + type: object + required: + - callbackUri + properties: + callbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reqInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + localInd: + type: boolean + default: false + + ScpDomainRoutingInfoNotification: + description: SCP Domain Routing Information Notification + type: object + required: + - routingInfo + properties: + routingInfo: + $ref: '#/components/schemas/ScpDomainRoutingInformation' + localInd: + type: boolean + default: false + + NfServiceInstance: + description: NF service instance + type: object + oneOf: + - required: [ nfInstanceId ] + - required: [ nfServiceSetId ] + properties: + serviceInstanceId: + type: string + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + + NoProfileMatchInfo: + description: Provides the reason for not finding NF matching the search criteria + type: object + required: + - reason + properties: + reason: + $ref: '#/components/schemas/NoProfileMatchReason' + queryParamCombinationList: + type: array + items: + $ref: '#/components/schemas/QueryParamCombination' + minItems: 1 + + QueryParamCombination: + description: Contains a list of Query Parameters + type: object + required: + - queryParams + properties: + queryParams: + type: array + items: + $ref: '#/components/schemas/QueryParameter' + minItems: 1 + + QueryParameter: + description: Contains the name and value of a query parameter + type: object + required: + - name + - value + properties: + name: + type: string + value: + type: string + + NoProfileMatchReason: + description: No Profile Match Reason + anyOf: + - type: string + enum: + - REQUESTER_PLMN_NOT_ALLOWED + - TARGET_NF_SUSPENDED + - TARGET_NF_UNDISCOVERABLE + - QUERY_PARAMS_COMBINATION_NO_MATCH + - UNSPECIFIED + - type: string + + AfData: + description: Contains information supported by the trusted AF + type: object + properties: + afEvents: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent' + minItems: 1 + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + required: + - afEvents + + SearchResultInfo: + description: Contains additional information to the search result + type: object + properties: + unsatisfiedTaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 diff --git a/TS29510_Nnrf_NFManagement.yaml b/TS29510_Nnrf_NFManagement.yaml new file mode 100644 index 0000000..b92f9de --- /dev/null +++ b/TS29510_Nnrf_NFManagement.yaml @@ -0,0 +1,5292 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.6' + title: 'NRF NFManagement Service' + description: | + NRF NFManagement Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.510 V18.5.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 9110, 8.8.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 9110 + schema: + type: string + '204': + description: No Content + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + 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 9110, 8.8.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) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-nfm + - oAuth2ClientCredentials: + - nnrf-nfm + - nnrf-nfm:nf-instance:write + 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 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + 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 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.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 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.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) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-nfm + - oAuth2ClientCredentials: + - nnrf-nfm + - nnrf-nfm:nf-instance:write + 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 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: If-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 9110, 13.1.1 + 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 9110 + schema: + type: string + ETag: + description: > + Entity Tag containing a strong validator, described in IETF RFC 9110, 8.8.3 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '204': + description: Expected response with empty body + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + 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) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-nfm + - oAuth2ClientCredentials: + - nnrf-nfm + - nnrf-nfm:nf-instance:write + 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) + security: + - {} + - oAuth2ClientCredentials: + - nnrf-nfm + - oAuth2ClientCredentials: + - nnrf-nfm + - nnrf-nfm:subscriptions:subs-complete-profile + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + 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 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + 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 9110 + schema: + type: string + requestBody: + description: Notification content + 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 9110 + 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}-(x3Lf57A:nid=[A-Fa-f0-9]{11}:)?)?[^-]+$' + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + 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 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '204': + description: No Content + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + 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}-(x3Lf57A:nid=[A-Fa-f0-9]{11}:)?)?[^-]+$' + 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 + nnrf-nfm:subscriptions:subs-complete-profile: > + Access to subscribe to the complete profile of NF instances + nnrf-nfm:nf-instance:write: > + Access to write (create, update, delete) 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' + minItems: 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 + allowedRuleSet: + description: A map (list of key-value pairs) where a valid JSON pointer Id serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/RuleSet' + 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' + locality: + type: string + extLocality: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string serves + as key representing a type of locality + type: object + additionalProperties: + type: string + minProperties: 1 + 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 + nfProfilePartialUpdateChangesSupportInd: + 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' + smsfInfo: + $ref: '#/components/schemas/SmsfInfo' + dcsfInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of DcsfInfo + additionalProperties: + $ref: '#/components/schemas/DcsfInfo' + minProperties: 1 + mrfInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MrfInfo + additionalProperties: + $ref: '#/components/schemas/MrfInfo' + minProperties: 1 + mrfpInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MrfpInfo + additionalProperties: + $ref: '#/components/schemas/MrfpInfo' + minProperties: 1 + mfInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of MfInfo + additionalProperties: + $ref: '#/components/schemas/MfInfo' + minProperties: 1 + adrfInfoList: + type: object + description: > + A map (list of key-value pairs) where a (unique) valid JSON string + serves as key of AdrfInfo + additionalProperties: + $ref: '#/components/schemas/AdrfInfo' + minProperties: 1 + selectionConditions: + $ref: '#/components/schemas/SelectionConditions' + + + 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 + callbackUriPrefixList: + type: array + items: + $ref: '#/components/schemas/CallbackUriPrefixItem' + minItems: 1 + 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 + allowedOperationsPerNfInstanceOverrides: + type: boolean + default: false + allowedScopesRuleSet: + description: A map (list of key-value pairs) where a valid JSON pointer Id serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/RuleSet' + 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' + selectionConditions: + $ref: '#/components/schemas/SelectionConditions' + + 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 + - PANF + - DCSF + - MRF + - MRFP + - MF + - SLPKMF + - 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 + not: + required: [ ipv4Address, ipv6Address ] + 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}-(x3Lf57A:nid=[A-Fa-f0-9]{11}:)?)?[^-]+$' + 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/ExtSnssai' + 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 + extPreferredLocality: + description: > + A map (list of key-value pairs) where the key of the map represents the relative + priority, for the requester, of each locality description among the list of locality + descriptions in this query parameter, encoded as "1" (highest priority"), "2", "3", …, + "n" (lowest priority) + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/LocalityDescription' + minItems: 1 + minProperties: 1 + completeProfileSubscription: + type: boolean + default: false + writeOnly: true + + 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 + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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_AFQOS + - A_IPTV + - A_BDT + - A_SPD + - A_EASD + - A_AMI + - P_UE + - P_SCD + - P_BDT + - P_PLMNUE + - P_NSSCD + - P_PDTQ + - P_MBSCD + - P_GROUP + - 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 + highLatencyCom: + type: boolean + + 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 + deprecated: true + ismfSupportInd: + type: boolean + smfUPRPCapability: + type: boolean + default: false + + 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/ExtSnssai' + 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 + sxaInd: + type: boolean + 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' + preferredEpdgInfoList: + type: array + items: + $ref: '#/components/schemas/EpdgInfo' + minItems: 1 + preferredWAgfInfoList: + type: array + items: + $ref: '#/components/schemas/WAgfInfo' + minItems: 1 + preferredTngfInfoList: + type: array + items: + $ref: '#/components/schemas/TngfInfo' + minItems: 1 + preferredTwifInfoList: + type: array + items: + $ref: '#/components/schemas/TwifInfo' + minItems: 1 + 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 + upfEvents: + type: array + items: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/EventType' + minItems: 1 + + 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/ExtSnssai' + dnnUpfInfoList: + type: array + items: + $ref: '#/components/schemas/DnnUpfInfoItem' + minItems: 1 + redundantTransport: + type: boolean + default: false + interfaceUpfInfoList: + type: array + items: + $ref: '#/components/schemas/InterfaceUpfInfoItem' + minItems: 1 + + 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 + natedIpv4AddressRanges: + type: array + items: + $ref: '#/components/schemas/Ipv4AddressRange' + minItems: 1 + natedIpv6PrefixRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6PrefixRange' + minItems: 1 + ipv4IndexList: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpIndex' + minItems: 1 + ipv6IndexList: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpIndex' + minItems: 1 + networkInstance: + description: > + The N6 Network Instance associated with the S-NSSAI and DNN. + type: string + 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 + interfaceUpfInfoList: + type: array + items: + $ref: '#/components/schemas/InterfaceUpfInfoItem' + minItems: 1 + not: + required: [ networkInstance, dnaiNwInstanceList ] + + InterfaceUpfInfoItem: + description: Information of a given IP interface of an UPF + type: object + required: + - interfaceType + anyOf: + - required: [ endpointFqdn ] + - required: [ ipv4EndpointAddresses ] + - required: [ ipv6EndpointAddresses ] + 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 + - S1U + - S5U + - S8U + - S11U + - S12 + - S2AU + - S2BU + - N3TRUSTEDN3GPP + - N3UNTRUSTEDN3GPP + - N9ROAMING + - SGI + - N19 + - SXAU + - SXBU + - N4U + - type: string + + WAgfInfo: + description: Information of the W-AGF end-points + type: object + anyOf: + - required: [ endpointFqdn ] + - required: [ ipv4EndpointAddresses ] + - required: [ ipv6EndpointAddresses ] + 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 + anyOf: + - required: [ endpointFqdn ] + - required: [ ipv4EndpointAddresses ] + - required: [ ipv6EndpointAddresses ] + 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' + a2xSupportInd: + type: boolean + default: false + a2xCapability: + $ref: '#/components/schemas/A2xCapability' + rangingSlPosSupportInd: + type: boolean + default: false + upPositioningInd: + description: user plane positioning capability is supported by the LMF + type: boolean + default: false + + 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' + interPlmnCallbackUri: + $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' + serviceInfoList: + description: > + A map of service specific information. The name of the corresponding service (as + specified in ServiceName data type) is the key. + type: object + additionalProperties: + $ref: '#/components/schemas/DefSubServiceInfo' + minProperties: 1 + callbackUriPrefix: + type: string + + 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 + - LCS_KEY_DELIVERY_NOTIFICATION + - UUAA_MM_AUTH_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 one of 'nfProfile', 'profileChanges' or 'completeNfProfile' must be present + # + - anyOf: + - not: + properties: + event: + type: string + enum: + - NF_PROFILE_CHANGED + - oneOf: + - required: [ nfProfile ] + - required: [ profileChanges ] + - required: [ completeNfProfile ] + # + # Condition: If 'event' takes value 'NF_REGISTERED', + # then one of 'nfProfile' or 'completeNfProfile' must be present + # + - anyOf: + - not: + properties: + event: + type: string + enum: + - NF_REGISTERED + - oneOf: + - required: [ nfProfile ] + - required: [ completeNfProfile ] + properties: + event: + $ref: '#/components/schemas/NotificationEventType' + nfInstanceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nfProfile: + allOf: + - $ref: '#/components/schemas/NFProfile' + - 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: [ allowedPlmns ] + - not: + required: [ allowedSnpns ] + - not: + required: [ allowedNfTypes ] + - not: + required: [ allowedNfDomains ] + - not: + required: [ allowedNssais ] + nfServiceList: + type: object + additionalProperties: + allOf: + - $ref: '#/components/schemas/NFService' + - 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' + completeNfProfile: + $ref: '#/components/schemas/NFProfile' + + NFStatus: + description: Status of a given NF Instance stored in NRF + anyOf: + - type: string + enum: + - REGISTERED + - SUSPENDED + - UNDISCOVERABLE + - CANARY_RELEASE + - 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 + - nudm-rsds + - nudm-ueid + - 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 + - nnef-dnai-mapping + - nnef-traffic-influence-data + - nnef-ecs-addr-cfg-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 + - 3gpp-pdtq-policy-negotiation + - 3gpp-musa + - npcf-am-policy-control + - npcf-smpolicycontrol + - npcf-policyauthorization + - npcf-bdtpolicycontrol + - npcf-eventexposure + - npcf-ue-policy-control + - npcf-am-policyauthorization + - npcf-pdtq-policy-control + - npcf-mbspolicycontrol + - npcf-mbspolicyauth + - 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 + - nnwdaf-mlmodeltraining + - nnwdaf-mlmodelmonitor + - 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 + - nadrf-mlmodelmanagement + - nbsp-gba + - ntsctsf-time-sync + - ntsctsf-qos-tscai + - ntsctsf-asti + - npkmf-keyreq + - npkmf-userid + - npkmf-discovery + - nmnpf-npstatus + - niwmsc-smservice + - nmbsf-mbs-us + - nmbsf-mbs-ud-ingest + - nmbstf-distsession + - npanf-prosekey + - npanf-userid + - nupf-ee + - nupf-gueip + - naf-prose + - naf-eventexposure + - type: string + + N2InterfaceAmfInfo: + description: AMF N2 interface information + type: object + anyOf: + - required: [ ipv4EndpointAddress ] + - required: [ ipv6EndpointAddress ] + 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 + - CANARY_RELEASE + - 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 + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + multiMemAfSessQosInd: + type: boolean + default: false + memberUESelAssistInd: + 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 + pruExistenceInfo: + $ref: '#/components/schemas/PruExistenceInfo' + pruSupportInd: + type: boolean + default: false + rangingslposSupportInd: + type: boolean + default: false + + 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 + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + 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' + additionalDiamAddresses: + type: array + items: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/NetworkNodeDiameterAddress' + minItems: 1 + + ImsiRange: + description: > + A range of IMSIs (subscriber identities), either based on a numeric range, + or based on regular-expression matching + type: object + oneOf: + - required: [ start, end ] + - required: [ pattern ] + 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 + anyOf: + - required: [ endpointFqdn ] + - required: [ ipv4EndpointAddresses ] + - required: [ ipv6EndpointAddresses ] + 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 content 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: + seppPrefix: + type: string + 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 + n32Purposes: + description: N32 purposes supported by the SEPP + type: array + items: + $ref: 'TS29573_N32_Handshake.yaml#/components/schemas/N32Purpose' + 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 + mlModelAccuracyChecking: + type: boolean + default: false + analyticsAccuracyChecking: + type: boolean + default: false + roamingExchange: + 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 + dataSubsRelocInd: + type: boolean + default: false + + 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' + snssaiListForEntirePlmn: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + taiList: + deprecated: true + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + deprecated: true + type: array + items: + $ref: '#/components/schemas/TaiRange' + minItems: 1 + nsacSaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsacSai' + 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 + supportUeWithPduSAC: + description: | + Indicates the service capability of the NSACF to control the number of registered UEs + with at least one PDU session / PDN connection per network slice for the network slice + that is subject to NSAC, if EPS counting is supported by the NSACF. + 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 + mlModelInterInfo: + $ref: '#/components/schemas/MlModelInterInfo' + flCapabilityType: + $ref: '#/components/schemas/FlCapabilityType' + flTimeInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + nfTypeList: + type: array + items: + $ref: '#/components/schemas/NFType' + minItems: 1 + nfSetIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + 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 + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + minItems: 1 + + 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 + proseL2UetoUeRelay: + type: boolean + default: false + proseL3UetoUeRelay: + type: boolean + default: false + proseL2EndUe: + type: boolean + default: false + proseL3EndUe: + 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 + + DefSubServiceInfo: + description: Service Specific information for Default Notification Subscription. + type: object + properties: + versions: + type: array + items: + type: string + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + LocalityDescriptionItem: + description: Locality description item + type: object + properties: + localityType: + $ref: '#/components/schemas/LocalityType' + localityValue: + type: string + required: + - localityType + - localityValue + + LocalityDescription: + description: Locality description + type: object + properties: + localityType: + $ref: '#/components/schemas/LocalityType' + localityValue: + type: string + addlLocDescrItems: + type: array + items: + $ref: '#/components/schemas/LocalityDescriptionItem' + minItems: 1 + required: + - localityType + - localityValue + + LocalityType: + description: > + Type of locality description. An operator may define custom locality type values other + than those listed in this enumeration. + anyOf: + - type: string + enum: + - DATA_CENTER + - CITY + - COUNTY + - DISTRICT + - STATE + - CANTON + - REGION + - PROVINCE + - PREFECTURE + - COUNTRY + - type: string + + SmsfInfo: + description: Specific Data for SMSF + type: object + properties: + roamingUeInd: + type: boolean + remotePlmnRangeList: + type: array + items: + $ref: '#/components/schemas/PlmnRange' + minItems: 1 + + DcsfInfo: + description: Information of a DCSF NF Instance + type: object + properties: + imsDomianNameList: + type: array + items: + $ref: '#/components/schemas/ImsDomainName' + 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 + + ImsDomainName: + description: IMS Domain Name + type: string + + MlModelInterInfo: + description: ML Model Interoperability Information + type: object + properties: + vendorList: + type: array + items: + $ref: '#/components/schemas/VendorId' + minItems: 1 + + PruExistenceInfo: + description: PRU Existence Information + type: object + properties: + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + minItems: 1 + + FlCapabilityType: + description: > + Type of Federated Learning Capability. + anyOf: + - type: string + enum: + - FL_SERVER + - FL_CLIENT + - FL_SERVER_AND_CLIENT + - type: string + + MrfInfo: + description: Information of a Mrf NF Instance + type: object + properties: + mediaCapabilityList: + type: array + items: + $ref: '#/components/schemas/MediaCapability' + minItems: 1 + + MrfpInfo: + description: Information of a Mrfp NF Instance + type: object + properties: + mediaCapabilityList: + type: array + items: + $ref: '#/components/schemas/MediaCapability' + minItems: 1 + + MfInfo: + description: Information of a MF NF Instance + type: object + properties: + mediaCapabilityList: + type: array + items: + $ref: '#/components/schemas/MediaCapability' + minItems: 1 + + EpdgInfo: + description: Information of the ePDG end-points + type: object + anyOf: + - required: [ ipv4EndpointAddresses ] + - required: [ ipv6EndpointAddresses ] + 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 + + MediaCapability: + description: media capability offered by NF instance + type: string + pattern: '^[a-zA-Z0-9_]+$' + + A2xCapability: + description: Indicate the supported A2X Capability by the PCF. + type: object + properties: + lteA2x: + type: boolean + default: false + nrA2x: + type: boolean + default: false + + RuleSet: + type: object + required: + - priority + - action + properties: + priority: + type: integer + minimum: 0 + maximum: 65535 + plmns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + snpns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + nfTypes: + type: array + items: + $ref: '#/components/schemas/NFType' + minItems: 1 + nfDomains: + type: array + items: + type: string + minItems: 1 + nssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + nfInstances: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + scopes: + type: array + items: + type: string + minItems: 1 + action: + $ref: '#/components/schemas/RuleSetAction' + + RuleSetAction: + anyOf: + - type: string + enum: + - ALLOW + - DENY + - type: string + + AdrfInfo: + description: Information of an ADRF NF Instance + type: object + properties: + mlModelStorageInd: + type: boolean + default: false + dataStorageInd: + type: boolean + default: false + + SelectionConditions: + description: > + It contains the set of conditions that shall be evaluated to determine whether a consumer + shall select a given producer. The producer shall only be selected if the evaluation of + the conditions is . The set of conditions can be represented by a single + ConditionItem or by a ConditionGroup, where the latter contains a (recursive) list of + conditions joined by the "and" or "or" logical relationships. + oneOf: + - $ref: '#/components/schemas/ConditionItem' + - $ref: '#/components/schemas/ConditionGroup' + + ConditionGroup: + description: > + List (array) of conditions (joined by the "and" or "or" logical relationship), + under which an NF Instance with an NFStatus or NFServiceStatus value set to "CANARY_RELEASE" + shall be selected by an NF Service Consumer. + type: object + oneOf: + - required: [ and ] + - required: [ or ] + properties: + and: + type: array + items: + $ref: '#/components/schemas/SelectionConditions' + minItems: 1 + or: + type: array + items: + $ref: '#/components/schemas/SelectionConditions' + minItems: 1 + + ConditionItem: + description: > + A ConditionItem consists of a number of attributes representing individual conditions + (e.g. a SUPI range, or a TAI list). If several attributes/conditions are present, + the evaluation of the ConditionItem is if all attributes/conditions are evaluated + as (i.e., it follows the AND logical relationship). + type: object + properties: + consumerNfTypes: + type: array + items: + $ref: '#/components/schemas/NFType' + minItems: 1 + serviceFeature: + type: integer + minimum: 1 + vsServiceFeature: + type: integer + minimum: 1 + supiRangeList: + type: array + items: + $ref: '#/components/schemas/SupiRange' + minItems: 1 + gpsiRangeList: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + minItems: 1 + impuRangeList: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + minItems: 1 + impiRangeList: + type: array + items: + $ref: '#/components/schemas/IdentityRange' + minItems: 1 + peiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + minItems: 1 + taiRangeList: + type: array + items: + $ref: '#/components/schemas/TaiRange' + minItems: 1 + dnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + + CallbackUriPrefixItem: + description: callback URI prefix value to be used for specific notification types + type: object + properties: + callbackUriPrefix: + type: string + notificationTypes: + type: array + items: + type: string + required: + - callbackUriPrefix + - notificationTypes diff --git a/TS29511_N5g-eir_EquipmentIdentityCheck.yaml b/TS29511_N5g-eir_EquipmentIdentityCheck.yaml new file mode 100644 index 0000000..cb72d83 --- /dev/null +++ b/TS29511_N5g-eir_EquipmentIdentityCheck.yaml @@ -0,0 +1,120 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.1' + title: '5G-EIR Equipment Identity Check' + description: | + 5G-EIR Equipment Identity Check Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.511 V18.0.0; 5G System; Equipment Identity Register Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.511/' + +servers: + - url: '{apiRoot}/n5g-eir-eic/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - n5g-eir-eic + +paths: + /equipment-status: + get: + summary: Retrieves the status of the UE + operationId: GetEquipmentStatus + tags: + - Equipment Status (Document) + parameters: + - name: pei + in: query + description: PEI of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + - name: supi + in: query + description: SUPI of the UE + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: gpsi + in: query + description: GPSI of the UE + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: supported-features + in: query + description: supported features of the NF consumer + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/EirResponseData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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': + description: PEI Not Found + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + n5g-eir-eic: Access to the N5g-eir_EquipmentIdentityCheck API + schemas: + EirResponseData: + description: Represents equipment status data provided in an EIR response message. + type: object + required: + - status + properties: + status: + $ref: '#/components/schemas/EquipmentStatus' + EquipmentStatus: + description: Represents equipment status of the PEI. This data type is a string. + type: string + enum: + - WHITELISTED # PERMITTED + - BLACKLISTED # PROHIBITED + - GREYLISTED # TRACKING diff --git a/TS29512_Npcf_SMPolicyControl.yaml b/TS29512_Npcf_SMPolicyControl.yaml new file mode 100644 index 0000000..fc0bd0e --- /dev/null +++ b/TS29512_Npcf_SMPolicyControl.yaml @@ -0,0 +1,3164 @@ +openapi: 3.0.0 + +info: + title: Npcf_SMPolicyControl API + version: 1.3.0-alpha.5 + description: | + Session Management Policy Control Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.512 V18.4.0; 5G System; Session Management Policy Control Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.512/' + +security: + - {} + - oAuth2ClientCredentials: + - npcf-smpolicycontrol + +servers: + - url: '{apiRoot}/npcf-smpolicycontrol/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /sm-policies: + post: + summary: Create a new Individual SM Policy. + operationId: CreateSMPolicy + tags: + - SM Policies (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyContextData' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyDecision' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '308': + description: Permanent Redirect + headers: + Location: + description: > + Contains the URI of the PCF within the existing PCF binding information stored in + the BSF for the same UE ID, S-NSSAI and DNN combination. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + SmPolicyUpdateNotification: + '{$request.body#/notificationUri}/update': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyNotification' + responses: + '200': + description: > + OK. The current applicable values corresponding to the policy control request + trigger is reported. + content: + application/json: + schema: + oneOf: + - $ref: '#/components/schemas/UeCampingRep' + - type: array + items: + $ref: '#/components/schemas/PartialSuccessReport' + minItems: 1 + - type: array + items: + $ref: '#/components/schemas/PolicyDecisionFailureCode' + minItems: 1 + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request. + content: + application/json: + schema: + $ref: '#/components/schemas/ErrorReport' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + SmPolicyControlTerminationRequestNotification: + '{$request.body#/notificationUri}/terminate': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TerminationNotification' + responses: + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sm-policies/{smPolicyId}: + get: + summary: Read an Individual SM Policy + operationId: GetSMPolicy + tags: + - Individual SM Policy (Document) + parameters: + - name: smPolicyId + in: path + description: Identifier of a policy association. + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyControl' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sm-policies/{smPolicyId}/update: + post: + summary: Update an existing Individual SM Policy + operationId: UpdateSMPolicy + tags: + - Individual SM Policy (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyUpdateContextData' + parameters: + - name: smPolicyId + in: path + description: Identifier of a policy association. + required: true + schema: + type: string + responses: + '200': + description: OK. Updated policies are returned + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyDecision' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /sm-policies/{smPolicyId}/delete: + post: + summary: Delete an existing Individual SM Policy. + operationId: DeleteSMPolicy + tags: + - Individual SM Policy (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyDeleteData' + parameters: + - name: smPolicyId + in: path + description: Identifier of a policy association. + required: true + schema: + type: string + responses: + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-smpolicycontrol: Access to the Npcf_SMPolicyControl API + + schemas: + SmPolicyControl: + description: > + Contains the parameters used to request the SM policies and the SM policies authorized by + the PCF. + type: object + properties: + context: + $ref: '#/components/schemas/SmPolicyContextData' + policy: + $ref: '#/components/schemas/SmPolicyDecision' + required: + - context + - policy + + SmPolicyContextData: + description: Contains the parameters used to create an Individual SM policy resource. + type: object + properties: + accNetChId: + $ref: '#/components/schemas/AccNetChId' + chargEntityAddr: + $ref: '#/components/schemas/AccNetChargingAddress' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + invalidSupi: + type: boolean + description: > + When this attribute is included and set to true, it indicates that the supi attribute + contains an invalid value.This attribute shall be present if the SUPI is not available + in the SMF or the SUPI is unauthenticated. When present it shall be set to true for an + invalid SUPI and false (default) for a valid SUPI. + interGrpIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + pduSessionType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + chargingcharacteristics: + type: string + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + dnnSelMode: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/DnnSelectionMode' + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + addAccessInfo: + $ref: '#/components/schemas/AdditionalAccessInfo' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + userLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + ipv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6AddressPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + ipDomain: + type: string + description: Indicates the IPv4 address domain + subsSessAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + authProfIndex: + type: string + description: Indicates the DN-AAA authorization profile index + subsDefQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SubscribedDefaultQos' + vplmnQos: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/VplmnQos' + numOfPackFilter: + type: integer + description: Contains the number of supported packet filter for signalled QoS rules. + online: + type: boolean + description: > + If it is included and set to true, the online charging is applied to the PDU session. + offline: + type: boolean + description: > + If it is included and set to true, the offline charging is applied to the PDU session. + 3gppPsDataOffStatus: + type: boolean + description: > + If it is included and set to true, the 3GPP PS Data Off is activated by the UE. + refQosIndication: + type: boolean + description: If it is included and set to true, the reflective QoS is supported by the UE. + traceReq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + qosFlowUsage: + $ref: '#/components/schemas/QosFlowUsage' + servNfId: + $ref: '#/components/schemas/ServingNfIdentity' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + smfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + maPduInd: + $ref: '#/components/schemas/MaPduIndication' + atsssCapab: + $ref: '#/components/schemas/AtsssCapability' + ipv4FrameRouteList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrMask' + minItems: 1 + ipv6FrameRouteList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + pcfUeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + onboardInd: + type: boolean + description: > + If it is included and set to true, it indicates that the PDU session is used for + UE Onboarding. + nwdafDatas: + type: array + items: + $ref: '#/components/schemas/NwdafData' + minItems: 1 + urspEnfInfo: + $ref: '#/components/schemas/UrspEnforcementInfo' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + ueReqDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redundantPduSessionInfo: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/RedundantPduSessionInformation' + hrsboInd: + type: boolean + description: > + HR-SBO support indication. If present and set to "true", it indicates that the HR-SBO is + supported. Default value is "false" if omitted. + required: + - supi + - pduSessionId + - pduSessionType + - dnn + - notificationUri + - sliceInfo + + SmPolicyDecision: + description: Contains the SM policies authorized by the PCF. + type: object + properties: + sessRules: + type: object + additionalProperties: + $ref: '#/components/schemas/SessionRule' + minProperties: 1 + description: > + A map of Sessionrules with the content being the SessionRule as described in + clause 5.6.2.7. The key used in this map for each entry is the sessRuleId + attribute of the corresponding SessionRule. + pccRules: + type: object + additionalProperties: + $ref: '#/components/schemas/PccRule' + minProperties: 1 + description: > + A map of PCC rules with the content being the PCCRule as described in + clause 5.6.2.6. The key used in this map for each entry is the pccRuleId + attribute of the corresponding PccRule. + nullable: true + pcscfRestIndication: + type: boolean + description: > + If it is included and set to true, it indicates the P-CSCF Restoration is requested. + qosDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/QosData' + minProperties: 1 + description: > + Map of QoS data policy decisions. The key used in this map for each entry is the qosId + attribute of the corresponding QosData. + chgDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/ChargingData' + minProperties: 1 + description: > + Map of Charging data policy decisions. The key used in this map for each entry + is the chgId attribute of the corresponding ChargingData. + nullable: true + chargingInfo: + $ref: '#/components/schemas/ChargingInformation' + traffContDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/TrafficControlData' + minProperties: 1 + description: > + Map of Traffic Control data policy decisions. The key used in this map for each entry + is the tcId attribute of the corresponding TrafficControlData. + umDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonitoringData' + minProperties: 1 + description: > + Map of Usage Monitoring data policy decisions. The key used in this map for each entry + is the umId attribute of the corresponding UsageMonitoringData. + nullable: true + qosChars: + type: object + additionalProperties: + $ref: '#/components/schemas/QosCharacteristics' + minProperties: 1 + description: > + Map of QoS characteristics for non standard 5QIs. This map uses the 5QI values as keys. + qosMonDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/QosMonitoringData' + minProperties: 1 + description: > + Map of QoS Monitoring data policy decisions. The key used in this map for each entry + is the qmId attribute of the corresponding QosMonitoringData. + nullable: true + reflectiveQoSTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + conds: + type: object + additionalProperties: + $ref: '#/components/schemas/ConditionData' + minProperties: 1 + description: > + A map of condition data with the content being as described in clause 5.6.2.9. The key + used in this map for each entry is the condId attribute of the corresponding + ConditionData. + nullable: true + revalidationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + offline: + type: boolean + description: > + Indicates the offline charging is applicable to the PDU session when it is included and + set to true. + online: + type: boolean + description: > + Indicates the online charging is applicable to the PDU session when it is included and + set to true. + offlineChOnly: + type: boolean + default: false + description: > + Indicates that the online charging method shall never be used for any PCC rule activated + during the lifetime of the PDU session. + policyCtrlReqTriggers: + type: array + items: + $ref: '#/components/schemas/PolicyControlRequestTrigger' + minItems: 1 + description: Defines the policy control request triggers subscribed by the PCF. + nullable: true + lastReqRuleData: + type: array + items: + $ref: '#/components/schemas/RequestedRuleData' + minItems: 1 + description: Defines the last list of rule control data requested by the PCF. + lastReqUsageData: + $ref: '#/components/schemas/RequestedUsageData' + praInfos: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfoRm' + minProperties: 1 + description: > + Map of PRA information. The praId attribute within the PresenceInfo data type is the key + of the map. + nullable: true + ipv4Index: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/IpIndex' + ipv6Index: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/IpIndex' + qosFlowUsage: + $ref: '#/components/schemas/QosFlowUsage' + relCause: + $ref: '#/components/schemas/SmPolicyAssociationReleaseCause' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + tsnBridgeManCont: + $ref: '#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: '#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: '#/components/schemas/PortManagementContainer' + minItems: 1 + tscNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tscNotifCorreId: + type: string + description: > + Correlation identifier for TSC management information notifications. + redSessIndication: + type: boolean + description: > + Indicates whether the PDU session is a redundant PDU session. If absent it means the PDU + session is not a redundant PDU session. + uePolCont: + $ref: '#/components/schemas/UePolicyContainer' + sliceUsgCtrlInfo: + $ref: '#/components/schemas/SliceUsgCtrlInfo' + vplmnOffload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VplmnOffloadingInfo' + + SmPolicyNotification: + description: Represents a notification on the update of the SM policies. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smPolicyDecision: + $ref: '#/components/schemas/SmPolicyDecision' + + PccRule: + description: Contains a PCC rule information. + type: object + properties: + flowInfos: + type: array + items: + $ref: '#/components/schemas/FlowInformation' + minItems: 1 + description: An array of IP flow packet filter information. + appId: + type: string + description: A reference to the application detection filter configured at the UPF. + appDescriptor: + $ref: '#/components/schemas/ApplicationDescriptor' + contVer: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ContentVersion' + protoDesc: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ProtoDesc' + pccRuleId: + type: string + description: Univocally identifies the PCC rule within a PDU session. + precedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + afSigProtocol: + $ref: '#/components/schemas/AfSigProtocol' + appReloc: + type: boolean + description: Indication of application relocation possibility. + easRedisInd: + type: boolean + description: Indicates the EAS rediscovery is required. + refQosData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to the QosData policy decision type. It is the qosId described in + clause 5.6.2.8. + refAltQosParams: + type: array + items: + type: string + minItems: 1 + description: > + A Reference to the QosData policy decision type for the Alternative QoS parameter sets + of the service data flow. + refTcData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to the TrafficControlData policy decision type. It is the tcId described in + clause 5.6.2.10. + refChgData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to the ChargingData policy decision type. It is the chgId described in + clause 5.6.2.11. + nullable: true + refChgN3gData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to the ChargingData policy decision type only applicable to Non-3GPP access + if "ATSSS" feature is supported. It is the chgId described in clause 5.6.2.11. + nullable: true + refUmData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to UsageMonitoringData policy decision type. It is the umId described in + clause 5.6.2.12. + nullable: true + refUmN3gData: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to UsageMonitoringData policy decision type only applicable to Non-3GPP + access if "ATSSS" feature is supported. It is the umId described in clause 5.6.2.12. + nullable: true + refCondData: + type: string + description: > + A reference to the condition data. It is the condId described in clause 5.6.2.9. + nullable: true + refQosMon: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + description: > + A reference to the QosMonitoringData policy decision type. It is the qmId described in + clause 5.6.2.40. + nullable: true + addrPreserInd: + type: boolean + nullable: true + tscaiInputDl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TscaiInputContainer' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + capBatAdaptation: + type: boolean + description: > + Indicates the capability for AF to adjust the burst sending time, when it is provided + and set to "true". The default value is "false" if omitted. + ddNotifCtrl: + $ref: '#/components/schemas/DownlinkDataNotificationControl' + ddNotifCtrl2: + $ref: '#/components/schemas/DownlinkDataNotificationControlRm' + disUeNotif: + type: boolean + nullable: true + packFiltAllPrec: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nscSuppFeats: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + minProperties: 1 + description: > + Identifies a list of Network Function Service Consumer supported per service. The key + used in this map for each entry is the ServiceName value as defined in + 3GPP TS 29.510[29]. + callInfo: + $ref: '#/components/schemas/CallInfo' + traffParaData: + $ref: '#/components/schemas/TrafficParaData' + required: + - pccRuleId + nullable: true + + SessionRule: + description: Contains session level policy information. + type: object + properties: + authSessAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + authDefQos: + $ref: '#/components/schemas/AuthorizedDefaultQos' + sessRuleId: + type: string + description: Univocally identifies the session rule within a PDU session. + refUmData: + type: string + description: > + A reference to UsageMonitoringData policy decision type. It is the umId described in + clause 5.6.2.12. + nullable: true + refUmN3gData: + type: string + description: > + A reference to UsageMonitoringData policy decision type to apply for Non-3GPP access. It + is the umId described in clause 5.6.2.12. + nullable: true + refCondData: + type: string + description: > + A reference to the condition data. It is the condId described in clause 5.6.2.9. + nullable: true + required: + - sessRuleId + nullable: true + + QosData: + description: Contains the QoS parameters. + type: object + properties: + qosId: + type: string + description: Univocally identifies the QoS control policy data within a PDU session. + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + maxbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + qnc: + type: boolean + description: > + Indicates whether notifications are requested from 3GPP NG-RAN when the GFBR can no longer + (or again) be guaranteed for a QoS Flow during the lifetime of the QoS Flow. + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevelRm' + averWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindowRm' + maxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxDataBurstVolRm' + reflectiveQos: + type: boolean + description: > + Indicates whether the QoS information is reflective for the corresponding service data + flow. + sharingKeyDl: + type: string + description: > + Indicates, by containing the same value, what PCC rules may share resource in downlink + direction. + sharingKeyUl: + type: string + description: > + Indicates, by containing the same value, what PCC rules may share resource in uplink + direction. + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxPacketLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + defQosFlowIndication: + type: boolean + description: > + Indicates that the dynamic PCC rule shall always have its binding with the QoS Flow + associated with the default QoS rule + extMaxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVolRm' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetErrorRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosParaRm' + required: + - qosId + nullable: true + + ConditionData: + description: Contains conditions of applicability for a rule. + type: object + properties: + condId: + type: string + description: Uniquely identifies the condition data within a PDU session. + activationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + deactivationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + required: + - condId + nullable: true + + TrafficControlData: + description: > + Contains parameters determining how flows associated with a PCC Rule are treated (e.g. + blocked, redirected, etc). + type: object + properties: + tcId: + type: string + description: Univocally identifies the traffic control policy data within a PDU session. + l4sInd: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/UplinkDownlinkSupport' + flowStatus: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowStatus' + redirectInfo: + $ref: '#/components/schemas/RedirectInformation' + addRedirectInfo: + type: array + items: + $ref: '#/components/schemas/RedirectInformation' + minItems: 1 + muteNotif: + type: boolean + description: Indicates whether applicat'on's start or stop notification is to be muted. + trafficSteeringPolIdDl: + type: string + description: > + Reference to a pre-configured traffic steering policy for downlink traffic at the SMF. + nullable: true + trafficSteeringPolIdUl: + type: string + description: > + Reference to a pre-configured traffic steering policy for uplink traffic at the SMF. + nullable: true + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + routeToLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: A list of location which the traffic shall be routed to for the AF request + nullable: true + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + nullable: true + traffCorreInd: + type: boolean + tfcCorreInfo: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo' + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily maintained for the + source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + upPathChgEvent: + $ref: '#/components/schemas/UpPathChgEvent' + steerFun: + $ref: '#/components/schemas/SteeringFunctionality' + steerModeDl: + $ref: '#/components/schemas/SteeringMode' + steerModeUl: + $ref: '#/components/schemas/SteeringMode' + mulAccCtrl: + $ref: '#/components/schemas/MulticastAccessControl' + candDnaiInd: + type: boolean + description: > + Indication of reporting candidate DNAI(s). If it is included and set to "true", the + candidate DNAI(s) for the PDU session need to be reported. Otherwise set to "false" or + omitted. + datEndMarkInd: + type: boolean + description: > + The data burst end marking is enabled if it is set to "true". Default value is "false" if + omitted. + required: + - tcId + nullable: true + + ChargingData: + description: Contains charging related parameters. + type: object + properties: + chgId: + type: string + description: Univocally identifies the charging control policy data within a PDU session. + meteringMethod: + $ref: '#/components/schemas/MeteringMethod' + offline: + type: boolean + description: > + Indicates the offline charging is applicable to the PCC rule when it is included and set + to true. + online: + type: boolean + description: > + Indicates the online charging is applicable to the PCC rule when it is included and set + to true. + sdfHandl: + type: boolean + description: > + Indicates whether the service data flow is allowed to start while the SMF is waiting for + the response to the credit request. + ratingGroup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatingGroup' + reportingLevel: + $ref: '#/components/schemas/ReportingLevel' + serviceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceId' + sponsorId: + type: string + description: Indicates the sponsor identity. + appSvcProvId: + type: string + description: Indicates the application service provider identity. + afChargingIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + afChargId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationChargingId' + required: + - chgId + nullable: true + + UsageMonitoringData: + description: Contains usage monitoring related control information. + type: object + properties: + umId: + type: string + description: Univocally identifies the usage monitoring policy data within a PDU session. + volumeThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + volumeThresholdUplink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + volumeThresholdDownlink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + timeThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + monitoringTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + nextVolThreshold: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + nextVolThresholdUplink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + nextVolThresholdDownlink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/VolumeRm' + nextTimeThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + inactivityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + exUsagePccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + Contains the PCC rule identifier(s) which corresponding service data flow(s) shall be + excluded from PDU Session usage monitoring. It is only included in the + UsageMonitoringData instance for session level usage monitoring. + nullable: true + required: + - umId + nullable: true + + RedirectInformation: + description: Contains the redirect information. + type: object + properties: + redirectEnabled: + type: boolean + description: Indicates the redirect is enable. + redirectAddressType: + $ref: '#/components/schemas/RedirectAddressType' + redirectServerAddress: + type: string + description: > + Indicates the address of the redirect server. If "redirectAddressType" attribute + indicates the IPV4_ADDR, the encoding is the same as the Ipv4Addr data type defined in + 3GPP TS 29.571.If "redirectAddressType" attribute indicates the IPV6_ADDR, the encoding + is the same as the Ipv6Addr data type defined in 3GPP TS 29.571.If "redirectAddressType" + attribute indicates the URL or SIP_URI, the encoding is the same as the Uri data type + defined in 3GPP TS 29.571. + + FlowInformation: + description: Contains the flow information. + type: object + properties: + flowDescription: + $ref: '#/components/schemas/FlowDescription' + ethFlowDescription: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + packFiltId: + type: string + description: An identifier of packet filter. + packetFilterUsage: + type: boolean + description: The packet shall be sent to the UE. + tosTrafficClass: + type: string + description: > + Contains the Ipv4 Type-of-Service and mask field or the Ipv6 Traffic-Class field and + mask field. + nullable: true + spi: + type: string + description: the security parameter index of the IPSec packet. + nullable: true + flowLabel: + type: string + description: the Ipv6 flow label header field. + nullable: true + flowDirection: + $ref: '#/components/schemas/FlowDirectionRm' + + SmPolicyDeleteData: + description: > + Contains the parameters to be sent to the PCF when an individual SM policy is deleted. + type: object + properties: + userLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + userLocationInfoTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ranNasRelCauses: + type: array + items: + $ref: '#/components/schemas/RanNasRelCause' + minItems: 1 + description: Contains the RAN and/or NAS release cause. + accuUsageReports: + type: array + items: + $ref: '#/components/schemas/AccuUsageReport' + minItems: 1 + description: Contains the usage report + pduSessRelCause: + $ref: '#/components/schemas/PduSessionRelCause' + + QosCharacteristics: + description: Contains QoS characteristics for a non-standardized or a non-configured 5QI. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + resourceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/QosResourceType' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetErrorRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + averagingWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + maxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxDataBurstVol' + extMaxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVol' + required: + - 5qi + - resourceType + - priorityLevel + - packetDelayBudget + - packetErrorRate + + ChargingInformation: + description: Contains the addresses of the charging functions. + type: object + properties: + primaryChfAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + secondaryChfAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + primaryChfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + primaryChfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + secondaryChfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + secondaryChfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + required: + - primaryChfAddress + + AccuUsageReport: + description: Contains the accumulated usage report information. + type: object + properties: + refUmIds: + type: string + description: > + An id referencing UsageMonitoringData objects associated with this usage report. + volUsage: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + volUsageUplink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + volUsageDownlink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + timeUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + nextVolUsage: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + nextVolUsageUplink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + nextVolUsageDownlink: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + nextTimeUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - refUmIds + + SmPolicyUpdateContextData: + description: > + Contains the policy control request trigger(s) that were met and the corresponding new + value(s) or the error report of the policy enforcement. + type: object + properties: + repPolicyCtrlReqTriggers: + type: array + items: + $ref: '#/components/schemas/PolicyControlRequestTrigger' + minItems: 1 + description: The policy control reqeust trigges which are met. + accNetChIds: + type: array + items: + $ref: '#/components/schemas/AccNetChId' + minItems: 1 + description: > + Indicates the access network charging identifier for the PCC rule(s) or whole PDU + session. + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + addAccessInfo: + $ref: '#/components/schemas/AdditionalAccessInfo' + relAccessInfo: + $ref: '#/components/schemas/AdditionalAccessInfo' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + userLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + relIpv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipDomain: + type: string + description: Indicates the IPv4 address domain + ipv6AddressPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + relIpv6AddressPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + addIpv6AddrPrefixes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + addRelIpv6AddrPrefixes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + multiIpv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: The multiple allocated IPv6 prefixes of the served UE. + multiRelIpv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: The multiple released IPv6 prefixes of the served UE. + relUeMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + subsSessAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + authProfIndex: + type: string + description: Indicates the DN-AAA authorization profile index + subsDefQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SubscribedDefaultQos' + vplmnQos: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/VplmnQos' + vplmnQosNotApp: + type: boolean + description: > + If it is included and set to true, indicates that the QoS constraints in the VPLMN are + not applicable. + numOfPackFilter: + type: integer + description: Contains the number of supported packet filter for signalled QoS rules. + accuUsageReports: + type: array + items: + $ref: '#/components/schemas/AccuUsageReport' + minItems: 1 + description: Contains the usage report + 3gppPsDataOffStatus: + type: boolean + description: > + If it is included and set to true, the 3GPP PS Data Off is activated by the UE. + appDetectionInfos: + type: array + items: + $ref: '#/components/schemas/AppDetectionInfo' + minItems: 1 + description: > + Report the start/stop of the application traffic and detected SDF descriptions + if applicable. + ruleReports: + type: array + items: + $ref: '#/components/schemas/RuleReport' + minItems: 1 + description: Used to report the PCC rule failure. + sessRuleReports: + type: array + items: + $ref: '#/components/schemas/SessionRuleReport' + minItems: 1 + description: Used to report the session rule failure. + qncReports: + type: array + items: + $ref: '#/components/schemas/QosNotificationControlInfo' + minItems: 1 + description: QoS Notification Control information. + qosMonReports: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + qosMonDatRateReps: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + userLocationInfoTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPraInfos: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Reports the changes of presence reporting area. The praId attribute within the + PresenceInfo data type is the key of the map. + ueInitResReq: + $ref: '#/components/schemas/UeInitiatedResourceRequest' + refQosIndication: + type: boolean + description: > + If it is included and set to true, the reflective QoS is supported by the UE. If it is + included and set to false, the reflective QoS is revoked by the UE. + qosFlowUsage: + $ref: '#/components/schemas/QosFlowUsage' + creditManageStatus: + $ref: '#/components/schemas/CreditManagementStatus' + servNfId: + $ref: '#/components/schemas/ServingNfIdentity' + traceReq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + maPduInd: + $ref: '#/components/schemas/MaPduIndication' + atsssCapab: + $ref: '#/components/schemas/AtsssCapability' + tsnBridgeInfo: + $ref: '#/components/schemas/TsnBridgeInfo' + tsnBridgeManCont: + $ref: '#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: '#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: '#/components/schemas/PortManagementContainer' + minItems: 1 + tscNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tscNotifCorreId: + type: string + description: > + Correlation identifier for TSC management information notifications. + mulAddrInfos: + type: array + items: + $ref: '#/components/schemas/IpMulticastAddressInfo' + minItems: 1 + policyDecFailureReports: + type: array + items: + $ref: '#/components/schemas/PolicyDecisionFailureCode' + minItems: 1 + description: Contains the type(s) of failed policy decision and/or condition data. + invalidPolicyDecs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/InvalidParam' + minItems: 1 + description: > + Indicates the invalid parameters for the reported type(s) of the failed policy decision + and/or condition data. + trafficDescriptors: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + pccRuleId: + type: string + description: > + Contains the identifier of the PCC rule which is used for traffic detection of event. + typesOfNotif: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + interGrpIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + pcfUeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + nwdafDatas: + type: array + items: + $ref: '#/components/schemas/NwdafData' + minItems: 1 + nullable: true + anGwStatus: + type: boolean + description: > + When it is included and set to true, it indicates that the AN-Gateway has failed and + that the PCF should refrain from sending policy decisions to the SMF until it is + informed that the AN-Gateway has been recovered. + uePolCont: + $ref: '#/components/schemas/UePolicyContainer' + urspEnfInfo: + $ref: '#/components/schemas/UrspEnforcementInfo' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + ueReqDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redundantPduSessionInfo: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/RedundantPduSessionInformation' + l4sReports: + type: array + items: + $ref: '#/components/schemas/L4sSupportInfo' + minItems: 1 + description: ECN marking for L4S support availability in 5GS. + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + batOffsetInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/BatOffsetInfo' + hrsboInd: + type: boolean + description: > + HR-SBO support indication. If present and set to "true", it indicates that the HR-SBO is + supported. If present and set to "false", it indicates that the HR-SBO is not supported. + allOf: + - not: + required: [multiIpv6Prefixes, ipv6AddressPrefix] + - not: + required: [multiIpv6Prefixes, addIpv6AddrPrefixes] + - not: + required: [multiRelIpv6Prefixes, relIpv6AddressPrefix] + - not: + required: [multiRelIpv6Prefixes, relAddIpv6AddrPrefixes] + + UpPathChgEvent: + description: Contains the UP path change event subscription from the AF. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorreId: + type: string + description: > + It is used to set the value of Notification Correlation ID in the notification sent by + the SMF. + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + afAckInd: + type: boolean + required: + - notificationUri + - notifCorreId + - dnaiChgType + nullable: true + + TerminationNotification: + description: Represents a Termination Notification. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + cause: + $ref: '#/components/schemas/SmPolicyAssociationReleaseCause' + required: + - resourceUri + - cause + + AppDetectionInfo: + description: Contains the detected application's traffic information. + type: object + properties: + appId: + type: string + description: A reference to the application detection filter configured at the UPF + instanceId: + type: string + description: > + Identifier sent by the SMF in order to allow correlation of application Start and Stop + events to the specific service data flow description, if service data flow descriptions + are deducible. + sdfDescriptions: + type: array + items: + $ref: '#/components/schemas/FlowInformation' + minItems: 1 + description: Contains the detected service data flow descriptions if they are deducible. + required: + - appId + + AccNetChId: + description: > + Contains the access network charging identifier for the PCC rule(s) or for the whole + PDU session. + type: object + properties: + accNetChaIdValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + accNetChargId: + type: string + description: A character string containing the access network charging id. + refPccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + Contains the identifier of the PCC rule(s) associated to the provided Access Network + Charging Identifier. + sessionChScope: + type: boolean + description: > + When it is included and set to true, indicates the Access Network Charging Identifier + applies to the whole PDU Session + oneOf: + - required: [accNetChaIdValue] + - required: [accNetChargId] + + AccNetChargingAddress: + description: Describes the network entity within the access network performing charging + type: object + anyOf: + - required: [anChargIpv4Addr] + - required: [anChargIpv6Addr] + properties: + anChargIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + anChargIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + + RequestedRuleData: + description: > + Contains rule data requested by the PCF to receive information associated with PCC rule(s). + type: object + properties: + refPccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + An array of PCC rule id references to the PCC rules associated with the control data. + reqData: + type: array + items: + $ref: '#/components/schemas/RequestedRuleDataType' + minItems: 1 + description: > + Array of requested rule data type elements indicating what type of rule data is + requested for the corresponding referenced PCC rules. + required: + - refPccRuleIds + - reqData + + RequestedUsageData: + description: > + Contains usage data requested by the PCF requesting usage reports for the corresponding + usage monitoring data instances. + type: object + properties: + refUmIds: + type: array + items: + type: string + minItems: 1 + description: > + An array of usage monitoring data id references to the usage monitoring data instances + for which the PCF is requesting a usage report. This attribute shall only be provided + when allUmIds is not set to true. + allUmIds: + type: boolean + description: > + This boolean indicates whether requested usage data applies to all usage monitoring data + instances. When it's not included, it means requested usage data shall only apply to the + usage monitoring data instances referenced by the refUmIds attribute. + + UeCampingRep: + description: > + Contains the current applicable values corresponding to the policy control request triggers. + type: object + properties: + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + servNfId: + $ref: '#/components/schemas/ServingNfIdentity' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + userLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + netLocAccSupp: + $ref: '#/components/schemas/NetLocAccessSupport' + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + urspEnfInfo: + $ref: '#/components/schemas/UrspEnforcementInfo' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + ueReqDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redundantPduSessionInfo: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/RedundantPduSessionInformation' + + RuleReport: + description: Reports the status of PCC. + type: object + properties: + pccRuleIds: + type: array + items: + type: string + minItems: 1 + description: Contains the identifier of the affected PCC rule(s). + ruleStatus: + $ref: '#/components/schemas/RuleStatus' + contVers: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ContentVersion' + minItems: 1 + description: Indicates the version of a PCC rule. + failureCode: + $ref: '#/components/schemas/FailureCode' + retryAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + finUnitAct: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/FinalUnitAction' + ranNasRelCauses: + type: array + items: + $ref: '#/components/schemas/RanNasRelCause' + minItems: 1 + description: indicates the RAN or NAS release cause code information. + altQosParamId: + type: string + description: > + Indicates the alternative QoS parameter set that the NG-RAN can guarantee. It is + included during the report of successfull resource allocation and indicates that NG-RAN + used an alternative QoS profile because the requested QoS could not be allocated.. + required: + - pccRuleIds + - ruleStatus + + RanNasRelCause: + description: Contains the RAN/NAS release cause. + type: object + properties: + ngApCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + 5gMmCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GMmCause' + 5gSmCause: + $ref: '#/components/schemas/5GSmCause' + epsCause: + $ref: '#/components/schemas/EpsRanNasRelCause' + + UeInitiatedResourceRequest: + description: Indicates that a UE requests specific QoS handling for the selected SDF. + type: object + properties: + pccRuleId: + type: string + ruleOp: + $ref: '#/components/schemas/RuleOperation' + precedence: + type: integer + packFiltInfo: + type: array + items: + $ref: '#/components/schemas/PacketFilterInfo' + minItems: 1 + reqQos: + $ref: '#/components/schemas/RequestedQos' + required: + - ruleOp + - packFiltInfo + + PacketFilterInfo: + description: > + Contains the information from a single packet filter sent from the SMF to the PCF. + type: object + properties: + packFiltId: + type: string + description: An identifier of packet filter. + packFiltCont: + $ref: '#/components/schemas/PacketFilterContent' + tosTrafficClass: + type: string + description: > + Contains the Ipv4 Type-of-Service and mask field or the Ipv6 Traffic-Class field and + mask field. + spi: + type: string + description: The security parameter index of the IPSec packet. + flowLabel: + type: string + description: The Ipv6 flow label header field. + flowDirection: + $ref: '#/components/schemas/FlowDirection' + + RequestedQos: + description: Contains the QoS information requested by the UE. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + required: + - 5qi + + QosNotificationControlInfo: + description: Contains the QoS Notification Control Information. + type: object + properties: + refPccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + An array of PCC rule id references to the PCC rules associated with the QoS notification + control info. + notifType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/QosNotifType' + contVer: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ContentVersion' + altQosParamId: + type: string + description: > + Indicates the alternative QoS parameter set the NG-RAN can guarantee. When it is omitted + and the notifType attribute is set to NOT_GUAARANTEED it indicates that the lowest + priority alternative QoS profile could not be fulfilled. + altQosNotSuppInd: + type: boolean + description: > + When present and set to true it indicates that the Alternative QoS profiles are not + supported by NG-RAN. + required: + - refPccRuleIds + - notifType + + PartialSuccessReport: + description: > + Includes the information reported by the SMF when some of the PCC rules and/or session rules + and/or policy decision and/or condition data are not successfully installed/activated or + stored. + type: object + properties: + failureCause: + $ref: '#/components/schemas/FailureCause' + ruleReports: + type: array + items: + $ref: '#/components/schemas/RuleReport' + minItems: 1 + description: > + Information about the PCC rules provisioned by the PCF not successfully + installed/activated. + sessRuleReports: + type: array + items: + $ref: '#/components/schemas/SessionRuleReport' + minItems: 1 + description: > + Information about the session rules provisioned by the PCF not successfully installed. + ueCampingRep: + $ref: '#/components/schemas/UeCampingRep' + policyDecFailureReports: + type: array + items: + $ref: '#/components/schemas/PolicyDecisionFailureCode' + minItems: 1 + description: Contains the type(s) of failed policy decision and/or condition data. + invalidPolicyDecs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/InvalidParam' + minItems: 1 + description: > + Indicates the invalid parameters for the reported type(s) of the failed policy decision + and/or condition data. + required: + - failureCause + + AuthorizedDefaultQos: + description: Represents the Authorized Default QoS. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevelRm' + averWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindowRm' + maxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxDataBurstVolRm' + maxbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + extMaxDataBurstVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVolRm' + + ErrorReport: + description: Contains the rule,policy decision and/or condition data error reports. + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + ruleReports: + type: array + items: + $ref: '#/components/schemas/RuleReport' + minItems: 1 + description: Used to report the PCC rule failure. + sessRuleReports: + type: array + items: + $ref: '#/components/schemas/SessionRuleReport' + minItems: 1 + description: Used to report the session rule failure. + polDecFailureReports: + type: array + items: + $ref: '#/components/schemas/PolicyDecisionFailureCode' + minItems: 1 + description: Used to report failure of the policy decision and/or condition data. + invalidPolicyDecs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/InvalidParam' + minItems: 1 + description: > + Indicates the invalid parameters for the reported type(s) of the failed policy decision + and/or condition data. + + SessionRuleReport: + description: Represents reporting of the status of a session rule. + type: object + properties: + ruleIds: + type: array + items: + type: string + minItems: 1 + description: Contains the identifier of the affected session rule(s). + ruleStatus: + $ref: '#/components/schemas/RuleStatus' + sessRuleFailureCode: + $ref: '#/components/schemas/SessionRuleFailureCode' + policyDecFailureReports: + type: array + items: + $ref: '#/components/schemas/PolicyDecisionFailureCode' + minItems: 1 + description: Contains the type(s) of failed policy decision and/or condition data. + required: + - ruleIds + - ruleStatus + + ServingNfIdentity: + description: Contains the serving Network Function identity. + type: object + properties: + servNfInstId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + anGwAddr: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AnGwAddress' + sgsnAddr: + $ref: '#/components/schemas/SgsnAddress' + + SteeringMode: + description: Contains the steering mode value and parameters determined by the PCF. + type: object + properties: + steerModeValue: + $ref: '#/components/schemas/SteerModeValue' + active: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + standby: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessTypeRm' + 3gLoad: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + prioAcc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + thresValue: + $ref: '#/components/schemas/ThresholdValue' + steerModeInd: + $ref: '#/components/schemas/SteerModeIndicator' + primary: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessTypeRm' + + required: + - steerModeValue + + AdditionalAccessInfo: + description: > + Indicates the combination of additional Access Type and RAT Type for a MA PDU session. + type: object + properties: + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + required: + - accessType + + QosMonitoringData: + description: Contains QoS monitoring related control information. + type: object + properties: + qmId: + type: string + description: Univocally identifies the QoS monitoring policy data within a PDU session. + reqQosMonParams: + type: array + items: + $ref: '#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + description: > + indicates the QoS information to be monitored when the QoS Monitoring is enabled for + the service data flow. + repFreqs: + type: array + items: + $ref: '#/components/schemas/ReportingFrequency' + minItems: 1 + repThreshDl: + type: integer + description: Indicates the period of time in units of miliiseconds for DL packet delay. + nullable: true + repThreshUl: + type: integer + description: Indicates the period of time in units of miliiseconds for UL packet delay. + nullable: true + repThreshRp: + type: integer + description: > + Indicates the period of time in units of miliiseconds for round trip packet delay. + nullable: true + conThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nullable: true + conThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nullable: true + waitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UriRm' + notifyCorreId: + type: string + nullable: true + directNotifInd: + type: boolean + description: > + Indicates that the direct event notification sent by UPF to the Local NEF or AF is + requested if it is included and set to true. + avrgWndw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindowRm' + repThreshDatRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + repThreshDatRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + dataCollAppId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + required: + - qmId + - reqQosMonParams + - repFreqs + nullable: true + + QosMonitoringReport: + description: Contains reporting information on QoS monitoring. + type: object + properties: + refPccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + An array of PCC rule id references to the PCC rules associated with the QoS monitoring + report. + ulDelays: + type: array + items: + type: integer + minItems: 1 + dlDelays: + type: array + items: + type: integer + minItems: 1 + rtDelays: + type: array + items: + type: integer + minItems: 1 + pdmf: + type: boolean + description: Represents the packet delay measurement failure indicator. + ulDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulCongInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dlCongInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + cimf: + type: boolean + description: > + Congestion information measurement failure indicator. When set to true, it indicates + that a congestion information failure has occurred.Default value is false if omitted. + required: + - refPccRuleIds +# + TsnBridgeInfo: + description: Contains parameters that describe and identify the TSC user plane node. + type: object + properties: + bridgeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + dsttAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + dsttPortNum: + $ref: '#/components/schemas/TsnPortNumber' + dsttResidTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + mtuIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + mtuIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' +# + PortManagementContainer: + description: Contains the port management information container for a port. + type: object + properties: + portManCont: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + portNum: + $ref: '#/components/schemas/TsnPortNumber' + required: + - portManCont + - portNum + BridgeManagementContainer: + description: Contains the UMIC. + type: object + properties: + bridgeManCont: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + required: + - bridgeManCont + IpMulticastAddressInfo: + description: Contains the IP multicast addressing information. + type: object + properties: + srcIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv4MulAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + srcIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ipv6MulAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + DownlinkDataNotificationControl: + description: Contains the downlink data notification control information. + type: object + properties: + notifCtrlInds: + type: array + items: + $ref: '#/components/schemas/NotificationControlIndication' + minItems: 1 + typesOfNotif: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + DownlinkDataNotificationControlRm: + description: > + This data type is defined in the same way as the DownlinkDataNotificationControl data type, + but with the nullable:true property. + type: object + properties: + notifCtrlInds: + type: array + items: + $ref: '#/components/schemas/NotificationControlIndication' + minItems: 1 + nullable: true + typesOfNotif: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DlDataDeliveryStatus' + minItems: 1 + nullable: true + nullable: true + ThresholdValue: + description: Indicates the threshold value(s) for RTT and/or Packet Loss Rate. + type: object + properties: + rttThres: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + plrThres: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + nullable: true + NwdafData: + description: > + Indicates the list of Analytic ID(s) per NWDAF instance ID used for the PDU Session consumed + by the SMF. + type: object + properties: + nwdafInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nwdafEvents: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + minItems: 1 + required: + - nwdafInstanceId + + CallInfo: + description: Identifies the caller and callee information. + type: object + properties: + callingPartyAddrs: + type: array + items: + type: string + minItems: 1 + calleeInfo: + $ref: '#/components/schemas/CalleeInfo' + nullable: true + + CalleeInfo: + description: Identifies the callee information. + type: object + properties: + calledPartyAddr: + type: string + requestPartyAddrs: + type: array + items: + type: string + minItems: 1 + calledAssertIds: + type: array + items: + type: string + minItems: 1 + nullable: true + +# + TrafficParaData: + description: Contains Traffic Parameter(s) related control information. + type: object + properties: + periodInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/PeriodicityInfo' + reqTrafficParas: + type: array + items: + $ref: '#/components/schemas/TrafficParameterMeas' + minItems: 1 + description: Indicates the traffic parameters to be measured. + repFreqs: + type: array + items: + $ref: '#/components/schemas/ReportingFrequency' + minItems: 1 + description: Represents the notification method (periodic or on event detection). + dlN6JitterThr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + required: + - reqTrafficParas + + L4sSupportInfo: + description: Contains the ECN marking for L4S support in 5GS information. + type: object + properties: + refPccRuleIds: + type: array + items: + type: string + minItems: 1 + description: > + An array of PCC rule id references to the PCC rules associated with the ECN marking + for L4S support info. + notifType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/L4sNotifType' + required: + - refPccRuleIds + - notifType + + + SliceUsgCtrlInfo: + description: Represents network slice usage control information. + type: object + properties: + pduSessInactivTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + + 5GSmCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + EpsRanNasRelCause: + type: string + description: Defines the EPS RAN/NAS release cause. + PacketFilterContent: + type: string + description: Defines a packet filter for an IP flow. + FlowDescription: + type: string + description: Defines a packet filter for an IP flow. + TsnPortNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ApplicationDescriptor: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + UePolicyContainer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + UrspEnforcementInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + FlowDirection: + anyOf: + - type: string + enum: + - DOWNLINK + - UPLINK + - BIDIRECTIONAL + - UNSPECIFIED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the direction of the service data flow. + Possible values are: + - DOWNLINK: The corresponding filter applies for traffic to the UE. + - UPLINK: The corresponding filter applies for traffic from the UE. + - BIDIRECTIONAL: The corresponding filter applies for traffic both to and from the UE. + - UNSPECIFIED: The corresponding filter applies for traffic to the UE (downlink), but has no + specific direction declared. The service data flow detection shall apply the filter for + uplink traffic as if the filter was bidirectional. The PCF shall not use the value + UNSPECIFIED in filters created by the network in NW-initiated procedures. The PCF shall only + include the value UNSPECIFIED in filters in UE-initiated procedures if the same value is + received from the SMF. + + FlowDirectionRm: + description: > + This data type is defined in the same way as the "FlowDirection" data type, with the only + difference that it allows null value. + anyOf: + - $ref: '#/components/schemas/FlowDirection' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + + ReportingLevel: + anyOf: + - type: string + enum: + - SER_ID_LEVEL + - RAT_GR_LEVEL + - SPON_CON_LEVEL + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the reporting level. + Possible values are: + - SER_ID_LEVEL: Indicates that the usage shall be reported on service id and rating group + combination level. + - RAT_GR_LEVEL: Indicates that the usage shall be reported on rating group level. + - SPON_CON_LEVEL: Indicates that the usage shall be reported on sponsor identity and rating + group combination level. + + MeteringMethod: + anyOf: + - type: string + enum: + - DURATION + - VOLUME + - DURATION_VOLUME + - EVENT + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the metering method. + Possible values are: + - DURATION: Indicates that the duration of the service data flow traffic shall be metered. + - VOLUME: Indicates that volume of the service data flow traffic shall be metered. + - DURATION_VOLUME: Indicates that the duration and the volume of the service data flow + traffic shall be metered. + - EVENT: Indicates that events of the service data flow traffic shall be metered. + + PolicyControlRequestTrigger: + anyOf: + - type: string + enum: + - PLMN_CH + - RES_MO_RE + - AC_TY_CH + - UE_IP_CH + - UE_MAC_CH + - AN_CH_COR + - US_RE + - APP_STA + - APP_STO + - AN_INFO + - CM_SES_FAIL + - PS_DA_OFF + - DEF_QOS_CH + - SE_AMBR_CH + - QOS_NOTIF + - NO_CREDIT + - REALLO_OF_CREDIT + - PRA_CH + - SAREA_CH + - SCNN_CH + - RE_TIMEOUT + - RES_RELEASE + - SUCC_RES_ALLO + - RAI_CH + - RAT_TY_CH + - REF_QOS_IND_CH + - NUM_OF_PACKET_FILTER + - UE_STATUS_RESUME + - UE_TZ_CH + - AUTH_PROF_CH + - QOS_MONITORING + - SCELL_CH + - USER_LOCATION_CH + - EPS_FALLBACK + - MA_PDU + - TSN_BRIDGE_INFO + - 5G_RG_JOIN + - 5G_RG_LEAVE + - DDN_FAILURE + - DDN_DELIVERY_STATUS + - GROUP_ID_LIST_CHG + - DDN_FAILURE_CANCELLATION + - DDN_DELIVERY_STATUS_CANCELLATION + - VPLMN_QOS_CH + - SUCC_QOS_UPDATE + - SAT_CATEGORY_CHG + - PCF_UE_NOTIF_IND + - NWDAF_DATA_CHG + - UE_POL_CONT_IND + - URSP_ENFORCEMENT_INFO + - HR_SBO_IND_CHG + - L4S_SUPP + - NET_SLICE_REPL + - BAT_OFFSET_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the policy control request trigger(s). + Possible values are: + - PLMN_CH: PLMN Change + - RES_MO_RE: A request for resource modification has been received by the SMF. The SMF + always reports to the PCF. + - AC_TY_CH: Access Type Change. + - UE_IP_CH: UE IP address change. The SMF always reports to the PCF. + - UE_MAC_CH: A new UE MAC address is detected or a used UE MAC address is inactive for a + specific period. + - AN_CH_COR: Access Network Charging Correlation Information + - US_RE: The PDU Session or the Monitoring key specific resources consumed by a UE either + reached the threshold or needs to be reported for other reasons. + - APP_STA: The start of application traffic has been detected. + - APP_STO: The stop of application traffic has been detected. + - AN_INFO: Access Network Information report. + - CM_SES_FAIL: Credit management session failure. + - PS_DA_OFF: The SMF reports when the 3GPP PS Data Off status changes. The SMF always + reports to the PCF. + - DEF_QOS_CH: Default QoS Change. The SMF always reports to the PCF. + - SE_AMBR_CH: Session-AMBR Change. The SMF always reports to the PCF. + - QOS_NOTIF: The SMF notify the PCF when receiving notification from RAN that QoS targets of + the QoS Flow cannot be guranteed or gurateed again. + - NO_CREDIT: Out of credit. + - REALLO_OF_CREDIT: Reallocation of credit. + - PRA_CH: Change of UE presence in Presence Reporting Area. + - SAREA_CH: Location Change with respect to the Serving Area. + - SCNN_CH: Location Change with respect to the Serving CN node. + - RE_TIMEOUT: Indicates the SMF generated the request because there has been a PCC + revalidation timeout. + - RES_RELEASE: Indicate that the SMF can inform the PCF of the outcome of the release of + resources for those rules that require so. + - SUCC_RES_ALLO: Indicates that the requested rule data is the successful resource + allocation. + - RAI_CH: Location Change with respect to the RAI of GERAN and UTRAN. + - RAT_TY_CH: RAT Type Change. + - REF_QOS_IND_CH: Reflective QoS indication Change + - NUM_OF_PACKET_FILTER: Indicates that the SMF shall report the number of supported packet + filter for signalled QoS rules. + - UE_STATUS_RESUME: Indicates that the UE's status is resumed. + - UE_TZ_CH: UE Time Zone Change. + - AUTH_PROF_CH: The DN-AAA authorization profile index has changed. + - QOS_MONITORING: Indicate that the SMF notifies the PCF of the QoS Monitoring information. + - SCELL_CH: Location Change with respect to the Serving Cell. + - USER_LOCATION_CH: Indicate that user location has been changed, applicable to serving area + change and serving cell change. + - EPS_FALLBACK: EPS Fallback report is enabled in the SMF. + - MA_PDU: UE Indicates that the SMF notifies the PCF of the MA PDU session request. + - TSN_BRIDGE_INFO: TSC user plane node information available. + - 5G_RG_JOIN: The 5G-RG has joined to an IP Multicast Group. + - 5G_RG_LEAVE: The 5G-RG has left an IP Multicast Group. + - DDN_FAILURE: Event subscription for DDN Failure event received. + - DDN_DELIVERY_STATUS: Event subscription for DDN Delivery Status received. + - GROUP_ID_LIST_CHG: UE Internal Group Identifier(s) has changed: the SMF reports that UDM + provided list of group Ids has changed. + - DDN_FAILURE_CANCELLATION: The event subscription for DDN Failure event is cancelled. + - DDN_DELIVERY_STATUS_CANCELLATION: The event subscription for DDD STATUS is cancelled. + - VPLMN_QOS_CH: Change of the QoS supported in the VPLMN. + - SUCC_QOS_UPDATE: Indicates that the requested MPS Action is successful. + - SAT_CATEGORY_CHG: Indicates that the SMF has detected a change between different satellite + backhaul categories, or between a satellite backhaul and a non-satellite backhaul. + - PCF_UE_NOTIF_IND: Indicates the SMF has detected the AMF forwarded the PCF for the UE + indication to receive/stop receiving notifications of SM Policy association + established/terminated events. + - NWDAF_DATA_CHG: Indicates that the NWDAF instance IDs used for the PDU session and/or + associated Analytics IDs used for the PDU session and available in the SMF have changed. + - UE_POL_CONT_IND: Indicates that a UE policy container is received from the UE + in EPC over a PDN connection. + - URSP_ENFORCEMENT_INFO: Indicates a report of URSP rule enforcement information. + - HR_SBO_IND_CHG: Indicates the HR-SBO support indication has changed. + - L4S_SUPP: Indicates whether ECN marking for L4S is not available or available again + in 5GS. + - NET_SLICE_REPL: Indicates network slice replacement, i.e., a change between the initial + S-NSSAI of the PDU Session and the Alternative S-NSSAI + - BAT_OFFSET_INFO: Indicates that the SMF has detected the BAT offset and optionally + adjusted periodicity. + + RequestedRuleDataType: + anyOf: + - type: string + enum: + - CH_ID + - MS_TIME_ZONE + - USER_LOC_INFO + - RES_RELEASE + - SUCC_RES_ALLO + - EPS_FALLBACK + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the type of rule data requested by the PCF. + Possible values are: + - CH_ID: Indicates that the requested rule data is the charging identifier. + - MS_TIME_ZONE: Indicates that the requested access network info type is the UE's timezone. + - USER_LOC_INFO: Indicates that the requested access network info type is the UE's location. + - RES_RELEASE: Indicates that the requested rule data is the result of the release of + resource. + - SUCC_RES_ALLO: Indicates that the requested rule data is the successful resource + allocation. + - EPS_FALLBACK: Indicates that the requested rule data is the report of QoS flow rejection + due to EPS fallback. + + RuleStatus: + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the status of PCC or session rule. + Possible values are + - ACTIVE: Indicates that the PCC rule(s) are successfully installed (for those provisioned + from PCF) or activated (for those pre-defined in SMF), or the session rule(s) are + successfully installed + - INACTIVE: Indicates that the PCC rule(s) are removed (for those provisioned from PCF) or + inactive (for those pre-defined in SMF) or the session rule(s) are removed. + + FailureCode: + anyOf: + - type: string + enum: + - UNK_RULE_ID + - RA_GR_ERR + - SER_ID_ERR + - NF_MAL + - RES_LIM + - MAX_NR_QoS_FLOW + - MISS_FLOW_INFO + - RES_ALLO_FAIL + - UNSUCC_QOS_VAL + - INCOR_FLOW_INFO + - PS_TO_CS_HAN + - APP_ID_ERR + - NO_QOS_FLOW_BOUND + - FILTER_RES + - MISS_REDI_SER_ADDR + - CM_END_USER_SER_DENIED + - CM_CREDIT_CON_NOT_APP + - CM_AUTH_REJ + - CM_USER_UNK + - CM_RAT_FAILED + - UE_STA_SUSP + - UNKNOWN_REF_ID + - INCORRECT_COND_DATA + - REF_ID_COLLISION + - TRAFFIC_STEERING_ERROR + - DNAI_STEERING_ERROR + - AN_GW_FAILE + - MAX_NR_PACKET_FILTERS_EXCEEDED + - PACKET_FILTER_TFT_ALLOCATION_EXCEEDED + - MUTE_CHG_NOT_ALLOWED + - UE_TEMPORARILY_UNAVAILABLE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the reason of the PCC rule failure. + Possible values are + - UNK_RULE_ID: Indicates that the pre-provisioned PCC rule could not be successfully + activated because the PCC rule identifier is unknown to the SMF. + - RA_GR_ERR: Indicate that the PCC rule could not be successfully installed or enforced + because the Rating Group specified within the Charging Data policy decision which the PCC + rule refers to is unknown or, invalid. + - SER_ID_ERR: Indicate that the PCC rule could not be successfully installed or enforced + because the Service Identifier specified within the Charging Data policy decision which the + PCC rule refers to is invalid, unknown, or not applicable to the service being charged. + - NF_MAL: Indicate that the PCC rule could not be successfully installed (for those + provisioned from the PCF) or activated (for those pre-defined in SMF) or enforced (for those + already successfully installed) due to SMF/UPF malfunction. + - RES_LIM: Indicate that the PCC rule could not be successfully installed (for those + provisioned from PCF) or activated (for those pre-defined in SMF) or enforced (for those + already successfully installed) due to a limitation of resources at the SMF/UPF. + - MAX_NR_QoS_FLOW: Indicate that the PCC rule could not be successfully installed (for those + provisioned from PCF) or activated (for those pre-defined in SMF) or enforced (for those + already successfully installed) due to the fact that the maximum number of QoS flows has + been reached for the PDU session. + - MISS_FLOW_INFO: Indicate that the PCC rule could not be successfully installed or enforced + because neither the "flowInfos" attribute nor the "appId" attribute is specified within the + PccRule data structure by the PCF during the first install request of the PCC rule. + - RES_ALLO_FAIL: Indicate that the PCC rule could not be successfully installed or + maintained since the QoS flow establishment/modification failed, or the QoS flow was + released. + - UNSUCC_QOS_VAL: indicate that the QoS validation has failed or when Guaranteed Bandwidth > + Max-Requested-Bandwidth. + - INCOR_FLOW_INFO: Indicate that the PCC rule could not be successfully installed or + modified at the SMF because the provided flow information is not supported by the network + (e.g. the provided IP address(es) or Ipv6 prefix(es) do not correspond to an IP version + applicable for the PDU session). + - PS_TO_CS_HAN: Indicate that the PCC rule could not be maintained because of PS to CS + handover. + - APP_ID_ERR: Indicate that the rule could not be successfully installed or enforced because + the Application Identifier is invalid, unknown, or not applicable to the application + required for detection. + - NO_QOS_FLOW_BOUND: Indicate that there is no QoS flow which the SMF can bind the PCC + rule(s) to. + - FILTER_RES: Indicate that the Flow Information within the "flowInfos" attribute cannot be + handled by the SMF because any of the restrictions defined in clause 5.4.2 of 3GPP TS 29.212 + was not met. + - MISS_REDI_SER_ADDR: Indicate that the PCC rule could not be successfully installed or + enforced at the SMF because there is no valid Redirect Server Address within the Traffic + Control Data policy decision which the PCC rule refers to provided by the PCF and no + preconfigured redirection address for this PCC rule at the SMF. + - CM_END_USER_SER_DENIED: Indicate that the charging system denied the service request due + to service restrictions (e.g. terminate rating group) or limitations related to the + end-user, for example the end-user's account could not cover the requested service. + - CM_CREDIT_CON_NOT_APP: Indicate that the charging system determined that the service can + be granted to the end user but no further credit control is needed for the service (e.g. + service is free of charge or is treated for offline charging). + - CM_AUTH_REJ: Indicate that the charging system denied the service request in order to + terminate the service for which credit is requested. + - CM_USER_UNK: Indicate that the specified end user could not be found in the charging + system. + - CM_RAT_FAILED: Indicate that the charging system cannot rate the service request due to + insufficient rating input, incorrect AVP combination or due to an attribute or an attribute + value that is not recognized or supported in the rating. + - UE_STA_SUSP: Indicates that the UE is in suspend state. + - UNKNOWN_REF_ID: Indicates that the PCC rule could not be successfully installed/modified + because the referenced identifier to a Policy Decision Data or to a Condition Data is + unknown to the SMF. + - INCORRECT_COND_DATA: Indicates that the PCC rule could not be successfully + installed/modified because the referenced Condition data are incorrect. + - REF_ID_COLLISION: Indicates that PCC rule could not be successfully installed/modified + because the same Policy Decision is referenced by a session rule (e.g. the session rule and the PCC rule refer to the same Usage Monitoring decision data). + - TRAFFIC_STEERING_ERROR: Indicates that enforcement of the steering of traffic to the + N6-LAN or 5G-LAN failed; or the dynamic PCC rule could not be successfully installed or + modified at the NF service consumer because there are invalid traffic steering policy + identifier(s) within the provided Traffic Control Data policy decision to which the PCC + rule refers. + - DNAI_STEERING_ERROR: Indicates that the enforcement of the steering of traffic to the + indicated DNAI failed; or the dynamic PCC rule could not be successfully installed or + modified at the NF service consumer because there is invalid route information for a DNAI(s) + (e.g. routing profile id is not configured) within the provided Traffic Control Data policy + decision to which the PCC rule refers. + - AN_GW_FAILED: This value is used to indicate that the AN-Gateway has failed and that the + PCF should refrain from sending policy decisions to the SMF until it is informed that the + S-GW has been recovered. This value shall not be used if the SM Policy association + modification procedure is initiated for PCC rule removal only. + - MAX_NR_PACKET_FILTERS_EXCEEDED: This value is used to indicate that the PCC rule could not + be successfully installed, modified or enforced at the NF service consumer because the + number of supported packet filters for signalled QoS rules for the PDU session has been + reached. + - PACKET_FILTER_TFT_ALLOCATION_EXCEEDED: This value is used to indicate that the PCC rule is + removed at 5GS to EPS mobility because TFT allocation was not possible since the number of + active packet filters in the EPC bearer is exceeded. + - MUTE_CHG_NOT_ALLOWED: Indicates that the PCC rule could not be successfully modified + because the mute condition for application detection report cannot be changed. Applicable + when the functionality introduced with the ADC feature applies. + + AfSigProtocol: + anyOf: + - type: string + enum: + - NO_INFORMATION + - SIP + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the protocol used for signalling between the UE and the AF. + Possible values are + - NO_INFORMATION: Indicate that no information about the AF signalling protocol is being + provided. + - SIP: Indicate that the signalling protocol is Session Initiation Protocol. + + RuleOperation: + anyOf: + - type: string + enum: + - CREATE_PCC_RULE + - DELETE_PCC_RULE + - MODIFY_PCC_RULE_AND_ADD_PACKET_FILTERS + - MODIFY_ PCC_RULE_AND_REPLACE_PACKET_FILTERS + - MODIFY_ PCC_RULE_AND_DELETE_PACKET_FILTERS + - MODIFY_PCC_RULE_WITHOUT_MODIFY_PACKET_FILTERS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates a UE initiated resource operation that causes a request for PCC rules. + Possible values are + - CREATE_PCC_RULE: Indicates to create a new PCC rule to reserve the resource requested by + the UE. + - DELETE_PCC_RULE: Indicates to delete a PCC rule corresponding to reserve the resource + requested by the UE. + - MODIFY_PCC_RULE_AND_ADD_PACKET_FILTERS: Indicates to modify the PCC rule by adding new + packet filter(s). + - MODIFY_ PCC_RULE_AND_REPLACE_PACKET_FILTERS: Indicates to modify the PCC rule by replacing + the existing packet filter(s). + - MODIFY_ PCC_RULE_AND_DELETE_PACKET_FILTERS: Indicates to modify the PCC rule by deleting + the existing packet filter(s). + - MODIFY_PCC_RULE_WITHOUT_MODIFY_PACKET_FILTERS: Indicates to modify the PCC rule by + modifying the QoS of the PCC rule. + + RedirectAddressType: + anyOf: + - type: string + enum: + - IPV4_ADDR + - IPV6_ADDR + - URL + - SIP_URI + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the redirect address type. + Possible values are + - IPV4_ADDR: Indicates that the address type is in the form of "dotted-decimal" IPv4 + address. + - IPV6_ADDR: Indicates that the address type is in the form of IPv6 address. + - URL: Indicates that the address type is in the form of Uniform Resource Locator. + - SIP_URI: Indicates that the address type is in the form of SIP Uniform Resource + Identifier. + + QosFlowUsage: + anyOf: + - type: string + enum: + - GENERAL + - IMS_SIG + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates a QoS flow usage information. + Possible values are + - GENERAL: Indicate no specific QoS flow usage information is available. + - IMS_SIG: Indicate that the QoS flow is used for IMS signalling only. + + FailureCause: + description: Indicates the cause of the failure in a Partial Success Report. + anyOf: + - type: string + enum: + - PCC_RULE_EVENT + - PCC_QOS_FLOW_EVENT + - RULE_PERMANENT_ERROR + - RULE_TEMPORARY_ERROR + - POL_DEC_ERROR + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + CreditManagementStatus: + description: Indicates the reason of the credit management session failure. + anyOf: + - type: string + enum: + - END_USER_SER_DENIED + - CREDIT_CTRL_NOT_APP + - AUTH_REJECTED + - USER_UNKNOWN + - RATING_FAILED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + SessionRuleFailureCode: + anyOf: + - type: string + enum: + - NF_MAL + - RES_LIM + - SESSION_RESOURCE_ALLOCATION_FAILURE + - UNSUCC_QOS_VAL + - INCORRECT_UM + - UE_STA_SUSP + - UNKNOWN_REF_ID + - INCORRECT_COND_DATA + - REF_ID_COLLISION + - AN_GW_FAILED + - DEFAULT_QOS_MODIFICATION_FAILURE + - SESSION_AMBR_MODIFICATION_FAILURE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the reason of the session rule failure. + Possible values are + - NF_MAL: Indicates that the PCC rule could not be successfully installed (for those + provisioned from the PCF) or activated (for those pre-defined in SMF) or enforced (for those + already successfully installed) due to SMF/UPF malfunction. + - RES_LIM: Indicates that the PCC rule could not be successfully installed (for those + provisioned from PCF) or activated (for those pre-defined in SMF) or enforced (for those + already successfully installed) due to a limitation of resources at the SMF/UPF. + - SESSION_RESOURCE_ALLOCATION_FAILURE: Indicates the session rule could not be successfully + enforced due to failure during the allocation of resources for the PDU session in the UE, + RAN or AMF. + - UNSUCC_QOS_VAL: indicates that the QoS validation has failed. + - INCORRECT_UM: The usage monitoring data of the enforced session rule is not the same for + all the provisioned session rule(s). + - UE_STA_SUSP: Indicates that the UE is in suspend state. + - UNKNOWN_REF_ID: Indicates that the session rule could not be successfully + installed/modified because the referenced identifier to a Policy Decision Data or to a + Condition Data is unknown to the SMF. + - INCORRECT_COND_DATA: Indicates that the session rule could not be successfully + installed/modified because the referenced Condition data are incorrect. + - REF_ID_COLLISION: Indicates that the session rule could not be successfully + installed/modified because the same Policy Decision is referenced by a PCC rule (e.g. the + session rule and the PCC rule refer to the same Usage Monitoring decision data). + - AN_GW_FAILED: Indicates that the AN-Gateway has failed and that the PCF should refrain + from sending policy decisions to the SMF until it is informed that the S-GW has been + recovered. This value shall not be used if the SM Policy association modification procedure + is initiated for session rule removal only. + - DEFAULT_QOS_MODIFICATION_FAILURE: Indicates that the enforcement of the default QoS + modification failed. The SMF shall use this value to indicate to the PCF that the default + QoS modification has failed. + - SESSION_AMBR_MODIFICATION_FAILURE: Indicates that the enforcement of the session-AMBR + modification failed. The SMF shall use this value to indicate to the PCF that the + session-AMBR modification has failed. + + SteeringFunctionality: + anyOf: + - type: string + enum: + - MPTCP + - MPQUIC + - ATSSS_LL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates functionality to support traffic steering, switching and splitting determined + by the PCF. + Possible values are + - MPTCP: Indicates that PCF authorizes the MPTCP functionality to support traffic + steering, switching and splitting. + - ATSSS_LL: Indicates that PCF authorizes the ATSSS-LL functionality to support traffic + steering, switching and splitting. + + SteerModeValue: + description: Indicates the steering mode value determined by the PCF. + anyOf: + - type: string + enum: + - ACTIVE_STANDBY + - LOAD_BALANCING + - SMALLEST_DELAY + - PRIORITY_BASED + - REDUNDANT + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + MulticastAccessControl: + description: > + Indicates whether the service data flow, corresponding to the service data flow template, is + allowed or not allowed. + anyOf: + - type: string + enum: + - ALLOWED + - NOT_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + RequestedQosMonitoringParameter: + description: Indicates the requested QoS monitoring parameters to be measured. + anyOf: + - type: string + enum: + - DOWNLINK + - UPLINK + - ROUND_TRIP + + - DOWNLINK_DATA_RATE + - UPLINK_DATA_RATE + - DOWNLINK_CONGESTION + - UPLINK_CONGESTION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + ReportingFrequency: + description: Indicates the frequency for the reporting. + anyOf: + - type: string + enum: + - EVENT_TRIGGERED + - PERIODIC + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + SgsnAddress: + description: describes the address of the SGSN + type: object + anyOf: + - required: [sgsnIpv4Addr] + - required: [sgsnIpv6Addr] + properties: + sgsnIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + sgsnIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + + SmPolicyAssociationReleaseCause: + description: > + Represents the cause due to which the PCF requests the termination of the SM policy + association. + anyOf: + - type: string + enum: + - UNSPECIFIED + - UE_SUBSCRIPTION + - INSUFFICIENT_RES + - VALIDATION_CONDITION_NOT_MET + - REACTIVATION_REQUESTED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PduSessionRelCause: + description: Contains the SMF PDU Session release cause. + anyOf: + - type: string + enum: + - PS_TO_CS_HO + - RULE_ERROR + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + MaPduIndication: + description: > + Contains the MA PDU session indication, i.e., MA PDU Request or MA PDU Network-Upgrade + Allowed. + anyOf: + - type: string + enum: + - MA_PDU_REQUEST + - MA_PDU_NETWORK_UPGRADE_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + AtsssCapability: + description: Contains the ATSSS capability supported for the MA PDU Session. + anyOf: + - type: string + enum: + - MPTCP_ATSSS_LL_WITH_ASMODE_UL + - MPTCP_ATSSS_LL_WITH_EXSDMODE_DL_ASMODE_UL + - MPTCP_ATSSS_LL_WITH_ASMODE_DLUL + - ATSSS_LL + - MPTCP_ATSSS_LL + - MPQUIC_ATSSS_LL_WITH_ASMODE_UL + - MPQUIC_ATSSS_LL_WITH_EXSDMODE_DL_ASMODE_UL + - MPQUIC_ATSSS_LL_WITH_ASMODE_DLUL + - MPQUIC_ATSSS_LL + - MPTCP_MPQUIC_ATSSS_LL_WITH_ASMODE_UL + - MPTCP_MPQUIC_ATSSS_LL_WITH_EXSDMODE_DL_ASMODE_UL + - MPTCP_MPQUIC_ATSSS_LL_WITH_ASMODE_DLUL + - MPTCP_MPQUIC_ATSSS_LL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. +# + NetLocAccessSupport: + anyOf: + - type: string + enum: + - ANR_NOT_SUPPORTED + - TZR_NOT_SUPPORTED + - LOC_NOT_SUPPORTED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the access network support of the report of the requested access network + information. + Possible values are + - ANR_NOT_SUPPORTED: Indicates that the access network does not support the report of access + network information. + - TZR_NOT_SUPPORTED: Indicates that the access network does not support the report of UE + time zone. + - LOC_NOT_SUPPORTED: Indicates that the access network does not support the report of UE + Location (or PLMN Id). + + PolicyDecisionFailureCode: + description: Indicates the type of the failed policy decision and/or condition data. + anyOf: + - type: string + enum: + - TRA_CTRL_DECS_ERR + - QOS_DECS_ERR + - CHG_DECS_ERR + - USA_MON_DECS_ERR + - QOS_MON_DECS_ERR + - CON_DATA_ERR + - POLICY_PARAM_ERR + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. +# + NotificationControlIndication: + description: > + Indicates that the notification of DDD Status is requested and/or that the notification of + DDN Failure is requested. + anyOf: + - type: string + enum: + - DDN_FAILURE + - DDD_STATUS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. +# + SteerModeIndicator: + description: Contains Autonomous load-balance indicator or UE-assistance indicator. + anyOf: + - type: string + enum: + - AUTO_LOAD_BALANCE + - UE_ASSISTANCE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. +# + TrafficParameterMeas: + description: Indicates the traffic parameters to be measured. + anyOf: + - type: string + enum: + - DL_N6_JITTER diff --git a/TS29514_Npcf_PolicyAuthorization.yaml b/TS29514_Npcf_PolicyAuthorization.yaml new file mode 100644 index 0000000..73b2d3e --- /dev/null +++ b/TS29514_Npcf_PolicyAuthorization.yaml @@ -0,0 +1,2719 @@ +openapi: 3.0.0 + +info: + title: Npcf_PolicyAuthorization Service API + version: 1.3.0-alpha.5 + description: | + PCF Policy Authorization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.514 V18.4.0; 5G System; Policy Authorization Service; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.514/' + +servers: + - url: '{apiRoot}/npcf-policyauthorization/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npcf-policyauthorization + +paths: + /app-sessions: + post: + summary: Creates a new Individual Application Session Context resource + operationId: PostAppSessions + tags: + - Application Sessions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - npcf-policyauthorization + - oAuth2ClientCredentials: + - npcf-policyauthorization + - npcf-policyauthorization:policy-auth-mgmt + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppSessionContext' + responses: + '201': + description: Successful creation of the resource + content: + application/json: + schema: + $ref: '#/components/schemas/AppSessionContext' + headers: + Location: + description: > + Contains the URI of the created individual application session context resource, + according to the structure + {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId} + or the URI of the created events subscription sub-resource, + according to the structure + {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId} + /events-subscription + required: true + schema: + type: string + '303': + description: > + See Other. The result of the HTTP POST request would be equivalent to the existing + Application Session Context. + headers: + Location: + description: > + Contains the URI of the existing individual Application Session Context resource. + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + anyOf: + - type: integer + - type: string + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + terminationRequest: + '{$request.body#/ascReqData/notifUri}/terminate': + post: + requestBody: + description: > + Request of the termination of the Individual Application Session Context. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TerminationInfo' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + eventNotification: + '{$request.body#/ascReqData/evSubsc/notifUri}/notify': + post: + requestBody: + description: Notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + detected5GsBridgeForPduSession: + '{$request.body#/ascReqData/evSubsc/notifUri}/new-bridge': + post: + requestBody: + description: Notification of a new TSC user plane node detected in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionTsnBridge' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + eventNotificationPduSession: + '{$request.body#/ascReqData/evSubsc/notifUri}/pdu-session': + post: + requestBody: + description: Notification of PDU session established or terminated. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionEventNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /app-sessions/pcscf-restoration: + post: + summary: "Indicates P-CSCF restoration and does not create an Individual Application Session Context" + operationId: PcscfRestoration + tags: + - PCSCF Restoration Indication + requestBody: + description: PCSCF Restoration Indication. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcscfRestorationRequestData' + responses: + '204': + description: The deletion is confirmed without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /app-sessions/{appSessionId}: + get: + summary: "Reads an existing Individual Application Session Context" + operationId: GetAppSession + tags: + - Individual Application Session Context (Document) + security: + - {} + - oAuth2ClientCredentials: + - npcf-policyauthorization + - oAuth2ClientCredentials: + - npcf-policyauthorization + - npcf-policyauthorization:policy-auth-mgmt + parameters: + - name: appSessionId + description: String identifying the resource. + in: path + required: true + schema: + type: string + responses: + '200': + description: A representation of the resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AppSessionContext' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: "Modifies an existing Individual Application Session Context" + operationId: ModAppSession + tags: + - Individual Application Session Context (Document) + security: + - {} + - oAuth2ClientCredentials: + - npcf-policyauthorization + - oAuth2ClientCredentials: + - npcf-policyauthorization + - npcf-policyauthorization:policy-auth-mgmt + parameters: + - name: appSessionId + description: String identifying the resource. + in: path + required: true + schema: + type: string + requestBody: + description: Modification of the resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AppSessionContextUpdateDataPatch' + responses: + '200': + description: > + Successful modification of the resource and a representation of that resource is + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AppSessionContext' + '204': + description: The successful modification. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF has + to wait before making a new request or an HTTP-date after which the AF can retry + a new request. + schema: + anyOf: + - type: integer + - type: string + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + eventNotification: + '{$request.body#/ascReqData/evSubsc/notifUri}/notify': + post: + requestBody: + description: Notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /app-sessions/{appSessionId}/delete: + post: + summary: "Deletes an existing Individual Application Session Context" + operationId: DeleteAppSession + tags: + - Individual Application Session Context (Document) + security: + - {} + - oAuth2ClientCredentials: + - npcf-policyauthorization + - oAuth2ClientCredentials: + - npcf-policyauthorization + - npcf-policyauthorization:policy-auth-mgmt + parameters: + - name: appSessionId + description: String identifying the Individual Application Session Context resource. + in: path + required: true + schema: + type: string + requestBody: + description: > + Deletion of the Individual Application Session Context resource, req notification. + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + responses: + '200': + description: The deletion of the resource is confirmed and a resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AppSessionContext' + '204': + description: The deletion is confirmed without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /app-sessions/{appSessionId}/events-subscription: + put: + summary: "creates or modifies an Events Subscription subresource" + operationId: updateEventsSubsc + tags: + - Events Subscription (Document) + parameters: + - name: appSessionId + description: String identifying the Events Subscription resource. + in: path + required: true + schema: + type: string + requestBody: + description: Creation or modification of an Events Subscription resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + responses: + '201': + description: > + The creation of the Events Subscription resource is confirmed and its representation is + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscPutData' + headers: + Location: + description: > + Contains the URI of the created Events Subscription resource, + according to the structure + {apiRoot}/npcf-policyauthorization/v1/app-sessions/{appSessionId}/ + events-subscription + required: true + schema: + type: string + '200': + description: > + The modification of the Events Subscription resource is confirmed its representation is + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscPutData' + '204': + description: > + The modification of the Events Subscription subresource is confirmed without returning + additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + eventNotification: + '{$request.body#/notifUri}/notify': + post: + requestBody: + description: > + Contains the information for the notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: deletes the Events Subscription subresource + operationId: DeleteEventsSubsc + tags: + - Events Subscription (Document) + parameters: + - name: appSessionId + description: String identifying the Individual Application Session Context resource. + in: path + required: true + schema: + type: string + responses: + '204': + description: > + The deletion of the of the Events Subscription sub-resource is confirmed without + returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-policyauthorization: Access to the Npcf_PolicyAuthorization API + npcf-policyauthorization:policy-auth-mgmt: > + Access to service operations applying to PCF Policy Authorization for creation, + updation, deletion, retrieval. + + schemas: + + AppSessionContext: + description: Represents an Individual Application Session Context resource. + type: object + properties: + ascReqData: + $ref: '#/components/schemas/AppSessionContextReqData' + ascRespData: + $ref: '#/components/schemas/AppSessionContextRespData' + evsNotif: + $ref: '#/components/schemas/EventsNotification' + + AppSessionContextReqData: + description: Identifies the service requirements of an Individual Application Session Context. + type: object + required: + - notifUri + - suppFeat + oneOf: + - required: [ueIpv4] + - required: [ueIpv6] + - required: [ueMac] + properties: + afAppId: + $ref: '#/components/schemas/AfAppId' + afChargId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationChargingId' + afReqData: + $ref: '#/components/schemas/AfRequestedData' + afRoutReq: + $ref: '#/components/schemas/AfRoutingRequirement' + afSfcReq: + $ref: '#/components/schemas/AfSfcRequirement' + aspId: + $ref: '#/components/schemas/AspId' + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + evSubsc: + $ref: '#/components/schemas/EventsSubscReqData' + mcpttId: + description: Indication of MCPTT service request. + type: string + mcVideoId: + description: Indication of MCVideo service request. + type: string + medComponents: + type: object + additionalProperties: + $ref: '#/components/schemas/MediaComponent' + minProperties: 1 + description: > + Contains media component information. The key of the map is the medCompN attribute. + multiModalId: + $ref: '#/components/schemas/MultiModalId' + ipDomain: + type: string + mpsAction: + $ref: '#/components/schemas/MpsAction' + mpsId: + description: Indication of MPS service request. + type: string + mcsId: + description: Indication of MCS service request. + type: string + preemptControlInfo: + $ref: '#/components/schemas/PreemptionControlInformation' + qosDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + qosInactInt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + resPrio: + $ref: '#/components/schemas/ReservPriority' + servInfStatus: + $ref: '#/components/schemas/ServiceInfoStatus' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + servUrn: + $ref: '#/components/schemas/ServiceUrn' + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + sponId: + $ref: '#/components/schemas/SponId' + sponStatus: + $ref: '#/components/schemas/SponsoringStatus' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + ueIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + tsnBridgeManCont: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + minItems: 1 + tscNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tscNotifCorreId: + type: string + description: > + Correlation identifier for TSC management information notifications. + + AppSessionContextRespData: + description: > + Describes the authorization data of an Individual Application Session Context created by + the PCF. + type: object + properties: + servAuthInfo: + $ref: '#/components/schemas/ServAuthInfo' + ueIds: + type: array + items: + $ref: '#/components/schemas/UeIdentityInfo' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AppSessionContextUpdateDataPatch: + description: > + Identifies the modifications to an Individual Application Session Context and/or the + modifications to the sub-resource Events Subscription. + type: object + properties: + ascReqData: + $ref: '#/components/schemas/AppSessionContextUpdateData' + + AppSessionContextUpdateData: + description: > + Identifies the modifications to the "ascReqData" property of an Individual Application + Session Context which may include the modifications to the sub-resource Events Subscription. + type: object + properties: + afAppId: + $ref: '#/components/schemas/AfAppId' + afRoutReq: + $ref: '#/components/schemas/AfRoutingRequirementRm' + afSfcReq: + $ref: '#/components/schemas/AfSfcRequirement' + aspId: + $ref: '#/components/schemas/AspId' + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + evSubsc: + $ref: '#/components/schemas/EventsSubscReqDataRm' + mcpttId: + description: Indication of MCPTT service request. + type: string + mcVideoId: + description: Indication of modification of MCVideo service. + type: string + medComponents: + type: object + additionalProperties: + $ref: '#/components/schemas/MediaComponentRm' + minProperties: 1 + description: > + Contains media component information. The key of the map is the medCompN attribute. + mpsAction: + $ref: '#/components/schemas/MpsAction' + mpsId: + description: Indication of MPS service request. + type: string + mcsId: + description: Indication of MCS service request. + type: string + preemptControlInfo: + $ref: '#/components/schemas/PreemptionControlInformationRm' + qosDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + qosInactInt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + resPrio: + $ref: '#/components/schemas/ReservPriority' + servInfStatus: + $ref: '#/components/schemas/ServiceInfoStatus' + sipForkInd: + $ref: '#/components/schemas/SipForkingIndication' + sponId: + $ref: '#/components/schemas/SponId' + sponStatus: + $ref: '#/components/schemas/SponsoringStatus' + tsnBridgeManCont: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + minItems: 1 + tscNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tscNotifCorreId: + type: string + description: > + Correlation identifier for TSC management information notifications. + + EventsSubscReqData: + description: Identifies the events the application subscribes to. + type: object + required: + - events + properties: + events: + type: array + items: + $ref: '#/components/schemas/AfEventSubscription' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reqQosMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + qosMon: + $ref: '#/components/schemas/QosMonitoringInformation' + qosMonDatRate: + $ref: '#/components/schemas/QosMonitoringInformation' + pdvReqMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + pdvMon: + $ref: '#/components/schemas/QosMonitoringInformation' + congestMon: + $ref: '#/components/schemas/QosMonitoringInformation' + reqAnis: + type: array + items: + $ref: '#/components/schemas/RequiredAccessInfo' + minItems: 1 + usgThres: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + notifCorreId: + type: string + afAppIds: + type: array + items: + $ref: '#/components/schemas/AfAppId' + minItems: 1 + directNotifInd: + type: boolean + avrgWndw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + + EventsSubscReqDataRm: + description: > + This data type is defined in the same way as the EventsSubscReqData data type, but with + the OpenAPI nullable property set to true. + type: object + required: + - events + properties: + events: + type: array + items: + $ref: '#/components/schemas/AfEventSubscription' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reqQosMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + qosMon: + $ref: '#/components/schemas/QosMonitoringInformationRm' + qosMonDatRate: + $ref: '#/components/schemas/QosMonitoringInformationRm' + pdvReqMonParams: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RequestedQosMonitoringParameter' + minItems: 1 + pdvMon: + $ref: '#/components/schemas/QosMonitoringInformationRm' + congestMon: + $ref: '#/components/schemas/QosMonitoringInformation' + reqAnis: + type: array + items: + $ref: '#/components/schemas/RequiredAccessInfo' + minItems: 1 + usgThres: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThresholdRm' + notifCorreId: + type: string + directNotifInd: + type: boolean + nullable: true + avrgWndw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindowRm' + nullable: true + + MediaComponent: + description: Identifies a media component. + type: object + required: + - medCompN + allOf: + - not: + required: [altSerReqs,altSerReqsData] + - not: + required: [qosReference,altSerReqsData] + properties: + afAppId: + $ref: '#/components/schemas/AfAppId' + afRoutReq: + $ref: '#/components/schemas/AfRoutingRequirement' + afSfcReq: + $ref: '#/components/schemas/AfSfcRequirement' + qosReference: + type: string + disUeNotif: + type: boolean + altSerReqs: + type: array + items: + type: string + minItems: 1 + altSerReqsData: + type: array + items: + $ref: '#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains alternative service requirements that include individual QoS parameter sets. + contVer: + $ref: '#/components/schemas/ContentVersion' + codecs: + type: array + items: + $ref: '#/components/schemas/CodecData' + minItems: 1 + maxItems: 2 + desMaxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + desMaxLoss: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + flusId: + type: string + fStatus: + $ref: '#/components/schemas/FlowStatus' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxPacketLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxSuppBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxSuppBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + medCompN: + type: integer + medSubComps: + type: object + additionalProperties: + $ref: '#/components/schemas/MediaSubComponent' + minProperties: 1 + description: > + Contains the requested bitrate and filters for the set of service data flows identified + by their common flow identifier. The key of the map is the fNum attribute. + medType: + $ref: '#/components/schemas/MediaType' + minDesBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minDesBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + preemptCap: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PreemptionCapability' + preemptVuln: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PreemptionVulnerability' + prioSharingInd: + $ref: '#/components/schemas/PrioritySharingIndicator' + resPrio: + $ref: '#/components/schemas/ReservPriority' + rrBw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + rsBw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + sharingKeyDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + sharingKeyUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + tsnQos: + $ref: '#/components/schemas/TsnQosContainer' + tscaiInputDl: + $ref: '#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: '#/components/schemas/TscaiInputContainer' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + capBatAdaptation: + type: boolean + description: > + Indicates the capability for AF to adjust the burst sending time, when it is supported + and set to "true". The default value is "false" if omitted. + rTLatencyInd: + type: boolean + description: > + Indicates the service data flow needs to meet the Round-Trip (RT) latency requirement of + the service, when it is included and set to "true". The default value is "false" if + omitted. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosPara' + pduSetProtDesc: + $ref: '#/components/schemas/ProtoDesc' + periodInfo: + $ref: '#/components/schemas/PeriodicityInfo' + l4sInd: + $ref: '#/components/schemas/UplinkDownlinkSupport' + + MediaComponentRm: + description: > + This data type is defined in the same way as the MediaComponent data type, but with the + OpenAPI nullable property set to true. + type: object + required: + - medCompN + not: + required: [altSerReqs,altSerReqsData] + properties: + afAppId: + $ref: '#/components/schemas/AfAppId' + afRoutReq: + $ref: '#/components/schemas/AfRoutingRequirementRm' + afSfcReq: + $ref: '#/components/schemas/AfSfcRequirement' + qosReference: + type: string + nullable: true + altSerReqs: + type: array + items: + type: string + minItems: 1 + nullable: true + altSerReqsData: + type: array + items: + $ref: '#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains removable alternative service requirements that include individual QoS + parameter sets. + nullable: true + disUeNotif: + type: boolean + contVer: + $ref: '#/components/schemas/ContentVersion' + codecs: + type: array + items: + $ref: '#/components/schemas/CodecData' + minItems: 1 + maxItems: 2 + desMaxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FloatRm' + desMaxLoss: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FloatRm' + flusId: + type: string + nullable: true + fStatus: + $ref: '#/components/schemas/FlowStatus' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxPacketLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxSuppBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxSuppBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + medCompN: + type: integer + medSubComps: + type: object + additionalProperties: + $ref: '#/components/schemas/MediaSubComponentRm' + minProperties: 1 + description: > + Contains the requested bitrate and filters for the set of service data flows identified + by their common flow identifier. The key of the map is the fNum attribute. + medType: + $ref: '#/components/schemas/MediaType' + minDesBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + minDesBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + preemptCap: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PreemptionCapabilityRm' + preemptVuln: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PreemptionVulnerabilityRm' + prioSharingInd: + $ref: '#/components/schemas/PrioritySharingIndicator' + resPrio: + $ref: '#/components/schemas/ReservPriority' + rrBw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + rsBw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + sharingKeyDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32Rm' + sharingKeyUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32Rm' + tsnQos: + $ref: '#/components/schemas/TsnQosContainerRm' + tscaiInputDl: + $ref: '#/components/schemas/TscaiInputContainer' + tscaiInputUl: + $ref: '#/components/schemas/TscaiInputContainer' + tscaiTimeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + capBatAdaptation: + type: boolean + description: > + Indicates the capability for AF to adjust the burst sending time, when it is supported + and set to "true". The default value is "false" if omitted. + rTLatencyInd: + type: boolean + description: > + Indicates the service data flow needs to meet the Round-Trip (RT) latency requirement of + the service, when it is included and set to "true". The default value is "false" if + omitted. + pduSetQos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSetQosParaRm' + pduSetProtDesc: + $ref: '#/components/schemas/ProtoDescRm' + periodInfo: + $ref: '#/components/schemas/PeriodicityInfo' + l4sInd: + $ref: '#/components/schemas/UplinkDownlinkSupport' + nullable: true + + MediaSubComponent: + description: Identifies a media subcomponent. + type: object + required: + - fNum + properties: + afSigProtocol: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AfSigProtocol' + ethfDescs: + type: array + items: + $ref: '#/components/schemas/EthFlowDescription' + minItems: 1 + maxItems: 2 + fNum: + type: integer + fDescs: + type: array + items: + $ref: '#/components/schemas/FlowDescription' + minItems: 1 + maxItems: 2 + addInfoFlowDescs: + type: array + items: + $ref: '#/components/schemas/AddFlowDescriptionInfo' + minItems: 1 + maxItems: 2 + description: > + Represents additional flow description information (flow label and IPsec SPI) + per Uplink and/or Downlink IP flows. + fStatus: + $ref: '#/components/schemas/FlowStatus' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + tosTrCl: + $ref: '#/components/schemas/TosTrafficClass' + flowUsage: + $ref: '#/components/schemas/FlowUsage' + evSubscs: + type: array + items: + $ref: '#/components/schemas/EventsSubscReqData' + + MediaSubComponentRm: + description: > + This data type is defined in the same way as the MediaSubComponent data type, but with the + OpenAPI nullable property set to true. Removable attributes marBwDl and marBwUl are defined + with the corresponding removable data type. + type: object + required: + - fNum + properties: + afSigProtocol: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AfSigProtocol' + ethfDescs: + type: array + items: + $ref: '#/components/schemas/EthFlowDescription' + minItems: 1 + maxItems: 2 + nullable: true + fNum: + type: integer + fDescs: + type: array + items: + $ref: '#/components/schemas/FlowDescription' + minItems: 1 + maxItems: 2 + nullable: true + addInfoFlowDescs: + type: array + items: + $ref: '#/components/schemas/AddFlowDescriptionInfo' + minItems: 1 + maxItems: 2 + nullable: true + description: > + Represents additional flow description information (flow label and IPsec SPI) + per Uplink and/or Downlink IP flows. + fStatus: + $ref: '#/components/schemas/FlowStatus' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + tosTrCl: + $ref: '#/components/schemas/TosTrafficClassRm' + flowUsage: + $ref: '#/components/schemas/FlowUsage' + evSubscs: + type: array + items: + $ref: '#/components/schemas/EventsSubscReqDataRm' + nullable: true + + EventsNotification: + description: Describes the notification of a matched event. + type: object + required: + - evSubsUri + - evNotifs + properties: + adReports: + type: array + items: + $ref: '#/components/schemas/AppDetectionReport' + minItems: 1 + description: Includes the detected application report. + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + addAccessInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AdditionalAccessInfo' + relAccessInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AdditionalAccessInfo' + anChargAddr: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AccNetChargingAddress' + anChargIds: + type: array + items: + $ref: '#/components/schemas/AccessNetChargingIdentifier' + minItems: 1 + anGwAddr: + $ref: '#/components/schemas/AnGwAddress' + l4sReports: + type: array + items: + $ref: '#/components/schemas/L4sSupport' + minItems: 1 + evSubsUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + evNotifs: + type: array + items: + $ref: '#/components/schemas/AfEventNotification' + minItems: 1 + failedResourcAllocReports: + type: array + items: + $ref: '#/components/schemas/ResourcesAllocationInfo' + minItems: 1 + succResourcAllocReports: + type: array + items: + $ref: '#/components/schemas/ResourcesAllocationInfo' + minItems: 1 + noNetLocSupp: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/NetLocAccessSupport' + outOfCredReports: + type: array + items: + $ref: '#/components/schemas/OutOfCreditInformation' + minItems: 1 + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + qncReports: + type: array + items: + $ref: '#/components/schemas/QosNotificationControlInfo' + minItems: 1 + qosMonReports: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + qosMonDatRateReps: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + pdvMonReports: + type: array + items: + $ref: '#/components/schemas/PdvMonitoringReport' + minItems: 1 + congestReports: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 1 + ranNasRelCauses: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RanNasRelCause' + minItems: 1 + description: Contains the RAN and/or NAS release cause. + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + ueLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueLocTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + usgRep: + $ref: 'TS29122_CommonData.yaml#/components/schemas/AccumulatedUsage' + urspEnfRep: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UrspEnforcementInfo' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + ueReqDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redundantPduSessionInfo: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/RedundantPduSessionInformation' + tsnBridgeManCont: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + minItems: 1 + ipv4AddrList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrMask' + minItems: 1 + ipv6PrefixList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + batOffsetInfo: + $ref: '#/components/schemas/BatOffsetInfo' + + AfEventSubscription: + description: Describes the event information delivered in the subscription. + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/AfEvent' + notifMethod: + $ref: '#/components/schemas/AfNotifMethod' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + waitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + AfEventNotification: + description: Describes the event information delivered in the notification. + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/AfEvent' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + retryAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + TerminationInfo: + description: > + Indicates the cause for requesting the deletion of the Individual Application Session + Context resource. + type: object + required: + - termCause + - resUri + properties: + termCause: + $ref: '#/components/schemas/TerminationCause' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + AfRoutingRequirement: + description: Describes AF requirements on routing traffic. + type: object + properties: + appReloc: + type: boolean + routeToLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + spVal: + $ref: '#/components/schemas/SpatialValidity' + tempVals: + type: array + items: + $ref: '#/components/schemas/TemporalValidity' + minItems: 1 + upPathChgSub: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UpPathChgEvent' + addrPreserInd: + type: boolean + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily maintained for the + source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + easRedisInd: + type: boolean + description: Indicates the EAS rediscovery is required. + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tfcCorreInfo: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo' + AfSfcRequirement: + description: Describes AF requirements on steering traffic to N6-LAN. + type: object + properties: + sfcIdDl: + type: string + description: Reference to a pre-configured SFC for downlink traffic. + nullable: true + sfcIdUl: + type: string + description: Reference to a pre-configured SFC for uplink traffic. + nullable: true + spVal: + $ref: '#/components/schemas/SpatialValidityRm' + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + nullable: true + + SpatialValidity: + description: Describes explicitly the route to an Application location. + type: object + required: + - presenceInfoList + properties: + presenceInfoList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Defines the presence information provisioned by the AF. The praId attribute within the + PresenceInfo data type is the key of the map. + + SpatialValidityRm: + description: > + This data type is defined in the same way as the SpatialValidity data type, but with the + OpenAPI nullable property set to true. + type: object + required: + - presenceInfoList + properties: + presenceInfoList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Defines the presence information provisioned by the AF. The praId attribute within the + PresenceInfo data type is the key of the map. + nullable: true + + AfRoutingRequirementRm: + description: > + This data type is defined in the same way as the AfRoutingRequirement data type, but with + the OpenAPI nullable property set to true and the spVal and tempVals attributes defined as + removable. + type: object + properties: + appReloc: + type: boolean + routeToLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + nullable: true + spVal: + $ref: '#/components/schemas/SpatialValidityRm' + tempVals: + type: array + items: + $ref: '#/components/schemas/TemporalValidity' + minItems: 1 + nullable: true + upPathChgSub: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UpPathChgEvent' + addrPreserInd: + type: boolean + nullable: true + simConnInd: + type: boolean + nullable: true + description: > + Indicates whether simultaneous connectivity should be temporarily maintained for the + source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + nullable: true + easRedisInd: + type: boolean + description: Indicates the EAS rediscovery is required. + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + tfcCorreInfo: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo' + nullable: true + + AnGwAddress: + description: Describes the address of the access network gateway control node. + type: object + anyOf: + - required: [anGwIpv4Addr] + - required: [anGwIpv6Addr] + properties: + anGwIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + anGwIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + + Flows: + description: Identifies the flows. + type: object + required: + - medCompN + properties: + contVers: + type: array + items: + $ref: '#/components/schemas/ContentVersion' + minItems: 1 + fNums: + type: array + items: + type: integer + minItems: 1 + medCompN: + type: integer + + EthFlowDescription: + description: Identifies an Ethernet flow. + type: object + required: + - ethType + properties: + destMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + ethType: + type: string + fDesc: + $ref: '#/components/schemas/FlowDescription' + fDir: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowDirection' + sourceMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + vlanTags: + type: array + items: + type: string + minItems: 1 + maxItems: 2 + srcMacAddrEnd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + destMacAddrEnd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + + ResourcesAllocationInfo: + description: Describes the status of the PCC rule(s) related to certain media components. + type: object + properties: + mcResourcStatus: + $ref: '#/components/schemas/MediaComponentResourcesStatus' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + altSerReq: + type: string + description: > + Indicates whether NG-RAN supports alternative QoS parameters. The default value false + shall apply if the attribute is not present. It shall be set to false to indicate that + the lowest priority alternative QoS profile could not be fulfilled. + + TemporalValidity: + description: Indicates the time interval(s) during which the AF request is to be applied. + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + QosNotificationControlInfo: + description: > + Indicates whether the QoS targets for a GRB flow are not guaranteed or guaranteed again. + type: object + required: + - notifType + properties: + notifType: + $ref: '#/components/schemas/QosNotifType' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + altSerReq: + type: string + description: > + Indicates the alternative service requirement NG-RAN can guarantee. When it is omitted + and the notifType attribute is set to NOT_GUAARANTEED it indicates that the lowest + priority alternative alternative service requirement could not be fulfilled by NG-RAN. + altSerReqNotSuppInd: + type: boolean + description: > + When present and set to true it indicates that Alternative Service Requirements are not + supported by NG-RAN. + + AcceptableServiceInfo: + description: Indicates the maximum bandwidth that shall be authorized by the PCF. + type: object + properties: + accBwMedComps: + type: object + additionalProperties: + $ref: '#/components/schemas/MediaComponent' + description: > + Indicates the maximum bandwidth that shall be authorized by the PCF for each media + component of the map. The key of the map is the media component number. + minProperties: 1 + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + UeIdentityInfo: + description: Represents 5GS-Level UE identities. + type: object + anyOf: + - required: [gpsi] + - required: [pei] + - required: [supi] + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + + AccessNetChargingIdentifier: + description: Describes the access network charging identifier. + type: object + oneOf: + - required: [accNetChaIdValue] + - required: [accNetChargIdString] + properties: + accNetChaIdValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + accNetChargIdString: + type: string + description: A character string containing the access network charging identifier. + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + + OutOfCreditInformation: + description: > + Indicates the SDFs without available credit and the corresponding termination action. + type: object + required: + - finUnitAct + properties: + finUnitAct: + $ref: 'TS32291_Nchf_ConvergedCharging.yaml#/components/schemas/FinalUnitAction' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + + QosMonitoringInformation: + description: > + Indicates the QoS Monitoring information to report, i.e. UL and/or DL and or round trip delay. + type: object + properties: + repThreshDl: + type: integer + repThreshUl: + type: integer + repThreshRp: + type: integer + repThreshDatRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + repThreshDatRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + conThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + conThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + PduSessionTsnBridge: + description: > + Contains the new TSC user plane node information and may contain the DS-TT port and/or + NW-TT port management information. + type: object + required: + - tsnBridgeInfo + properties: + tsnBridgeInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/TsnBridgeInfo' + tsnBridgeManCont: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/BridgeManagementContainer' + tsnPortManContDstt: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + tsnPortManContNwtts: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + minItems: 1 + ueIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ipDomain: + type: string + description: IPv4 address domain identifier. + ueIpv6AddrPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + + QosMonitoringInformationRm: + description: > + This data type is defined in the same way as the QosMonitoringInformation data type, but + with the OpenAPI nullable property set to true. + type: object + properties: + repThreshDl: + type: integer + repThreshUl: + type: integer + repThreshRp: + type: integer + repThreshDatRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + repThreshDatRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + conThreshDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + conThreshUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nullable: true + + PcscfRestorationRequestData: + description: Indicates P-CSCF restoration. + type: object + oneOf: + - required: [ueIpv4] + - required: [ueIpv6] + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + ipDomain: + type: string + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ueIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + + QosMonitoringReport: + description: QoS Monitoring reporting information. + type: object + properties: + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + ulDelays: + type: array + items: + type: integer + minItems: 1 + dlDelays: + type: array + items: + type: integer + minItems: 1 + rtDelays: + type: array + items: + type: integer + minItems: 1 + pdmf: + type: boolean + description: Represents the packet delay measurement failure indicator. + ulConInfo: + type: array + items: + type: integer + minItems: 1 + dlConInfo: + type: array + items: + type: integer + minItems: 1 + cimf: + type: boolean + description: Represents the congestion information measurement failure indicator. + ulDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + TsnQosContainer: + description: Indicates TSC Traffic QoS. + type: object + properties: + maxTscBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVol' + tscPackDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + maxPer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + tscPrioLevel: + $ref: '#/components/schemas/TscPriorityLevel' + + TsnQosContainerRm: + description: Indicates removable TSC Traffic QoS. + type: object + properties: + maxTscBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVolRm' + tscPackDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudgetRm' + maxPer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRateRm' + tscPrioLevel: + $ref: '#/components/schemas/TscPriorityLevelRm' + nullable: true + + TscaiInputContainer: + description: Indicates TSC Traffic pattern. + type: object + properties: + periodicity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + burstArrivalTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + surTimeInNumMsg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + surTimeInTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + burstArrivalTimeWnd: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + periodicityRange: + $ref: '#/components/schemas/PeriodicityRange' + nullable: true + + AppDetectionReport: + description: > + Indicates the start or stop of the detected application traffic and the application + identifier of the detected application traffic. + type: object + required: + - adNotifType + - afAppId + properties: + adNotifType: + $ref: '#/components/schemas/AppDetectionNotifType' + afAppId: + $ref: '#/components/schemas/AfAppId' + + PduSessionEventNotification: + description: > + Indicates PDU session information for the concerned established/terminated PDU session. + type: object + required: + - evNotif + properties: + evNotif: + $ref: '#/components/schemas/AfEventNotification' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ueIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + status: + $ref: '#/components/schemas/PduSessionStatus' + pcfInfo: + $ref: '#/components/schemas/PcfAddressingInfo' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + + PcfAddressingInfo: + description: Contains PCF address information. + type: object + properties: + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_PolicyAuthorization service. + bindingInfo: + type: string + description: contains the binding indications of the PCF. + + AlternativeServiceRequirementsData: + description: Contains an alternative QoS related parameter set. + type: object + required: + - altQosParamSetRef + properties: + altQosParamSetRef: + type: string + description: Reference to this alternative QoS related parameter set. + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + pdb: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + per: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + + EventsSubscPutData: + description: > + Identifies the events the application subscribes to within an Events Subscription + sub-resource data. It may contain the notification of the already met events. + anyOf: + - $ref: '#/components/schemas/EventsSubscReqData' + - $ref: '#/components/schemas/EventsNotification' + + PeriodicityRange: + description: > + Contains the acceptable range (which is formulated as lower bound and upper bound of + the periodicity of the start twobursts in reference to the external GM) or + acceptable periodicity value(s) (which is formulated as a list of values for + the periodicity). + type: object + oneOf: + - required: [lowerBound, upperBound] + - required: [periodicVals] + properties: + lowerBound: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + upperBound: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + periodicVals: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + + BatOffsetInfo: + description: > + Indicates the offset of the BAT and the optionally adjusted periodicity. + type: object + required: + - ranBatOffsetNotif + properties: + ranBatOffsetNotif: + type: integer + description: > + Indicates the BAT offset of the arrival time of the data burst in units + of milliseconds. + adjPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + description: > + Identification of the flows. If no flows are provided, the BAT offset applies + for all flows of the AF session. + + ProtoDesc: + description: Contains the protocol description namely protocol details and payload type + information. + type: object + properties: + protocol: + $ref: '#/components/schemas/MediaProtocol' + payloadType: + $ref: '#/components/schemas/PayloadType' + + ProtoDescRm: + description: Contains the protocol description namely protocol details and payload type + information. + type: object + properties: + protocol: + $ref: '#/components/schemas/MediaProtocol' + payloadType: + $ref: '#/components/schemas/PayloadType' + nullable: true + + + PdvMonitoringReport: + description: Packet Delay Variation reporting information. + type: object + properties: + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + description: Identification of the flows. + ulPdv: + type: integer + description: Uplink packet delay variation in units of milliseconds. + dlPdv: + type: integer + description: Downlink packet delay variation in units of milliseconds. + rtPdv: + type: integer + description: Round trip packet delay variation in units of milliseconds. + + PeriodicityInfo: + description: > + Indicates the time period between the start of the two data bursts in Uplink and/or Downlink + direction. + type: object + properties: + periodUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + periodDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + nullable: true + + AddFlowDescriptionInfo: + description: Contains additional flow description information. + type: object + properties: + spi: + type: string + description: > + 4-octet string representing the security parameter index of the IPSec packet + in hexadecimal representation. + flowLabel: + type: string + description: > + 3-octet string representing the IPv6 flow label header field in hexadecimal + representation. + flowDir: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowDirection' + + L4sSupport: + description: > + Indicates whether the ECN marking for L4S support is not available or available + again in 5GS. + type: object + required: + - notifType + properties: + notifType: + $ref: '#/components/schemas/L4sNotifType' + flows: + type: array + items: + $ref: '#/components/schemas/Flows' + minItems: 1 + +# +# EXTENDED PROBLEMDETAILS +# + ExtendedProblemDetails: + description: Extends ProblemDetails to also include the acceptable service info. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - type: object + properties: + acceptableServInfo: + $ref: '#/components/schemas/AcceptableServiceInfo' + +# +# SIMPLE DATA TYPES +# + AfAppId: + description: Contains an AF application identifier. + type: string + AspId: + description: Contains an identity of an application service provider. + type: string + CodecData: + description: Contains codec related information. + type: string + ContentVersion: + description: Represents the content version of some content. + type: integer + FlowDescription: + description: Defines a packet filter of an IP flow. + type: string + SponId: + description: Contains an identity of a sponsor. + type: string + ServiceUrn: + description: Contains values of the service URN and may include subservices. + type: string + TosTrafficClass: + description: > + 2-octet string, where each octet is encoded in hexadecimal representation. The first octet + contains the IPv4 Type-of-Service or the IPv6 Traffic-Class field and the second octet + contains the ToS/Traffic Class mask field. + type: string + TosTrafficClassRm: + description: > + This data type is defined in the same way as the TosTrafficClass data type, but with the + OpenAPI nullable property set to true. + type: string + nullable: true + MultiModalId: + description: > + This data type contains a multi-modal service identifier. + type: string + TscPriorityLevel: + description: Represents the priority level of TSC Flows. + type: integer + minimum: 1 + maximum: 8 + TscPriorityLevelRm: + description: > + This data type is defined in the same way as the TscPriorityLevel data type, but with the + OpenAPI nullable property set to true. + type: integer + minimum: 1 + maximum: 8 + nullable: true + + MediaProtocol: + description: represents the different media protocol applicable for XRM muti modality session. + type: string + + PayloadType: + description: represents the different payload type. + type: string +# +# ENUMERATIONS DATA TYPES +# + MediaType: + description: Indicates the media type of a media component. + anyOf: + - type: string + enum: + - AUDIO + - VIDEO + - DATA + - APPLICATION + - CONTROL + - TEXT + - MESSAGE + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + MpsAction: + description: > + Indicates whether it is an invocation, a revocation or an invocation with authorization of + the MPS for DTS service. + anyOf: + - type: string + enum: + - DISABLE_MPS_FOR_DTS + - ENABLE_MPS_FOR_DTS + - AUTHORIZE_AND_ENABLE_MPS_FOR_DTS + - AUTHORIZE_AND_ENABLE_MPS_FOR_AF_SIGNALLING + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + ReservPriority: + description: Indicates the reservation priority. + anyOf: + - type: string + enum: + - PRIO_1 + - PRIO_2 + - PRIO_3 + - PRIO_4 + - PRIO_5 + - PRIO_6 + - PRIO_7 + - PRIO_8 + - PRIO_9 + - PRIO_10 + - PRIO_11 + - PRIO_12 + - PRIO_13 + - PRIO_14 + - PRIO_15 + - PRIO_16 + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + ServAuthInfo: + description: Indicates the result of the Policy Authorization service request from the AF. + anyOf: + - type: string + enum: + - TP_NOT_KNOWN + - TP_EXPIRED + - TP_NOT_YET_OCURRED + - ROUT_REQ_NOT_AUTHORIZED + - DIRECT_NOTIF_NOT_POSSIBLE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + SponsoringStatus: + description: Indicates whether sponsored data connectivity is enabled or disabled/not enabled. + anyOf: + - type: string + enum: + - SPONSOR_DISABLED + - SPONSOR_ENABLED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + AfEvent: + description: Represents an event to notify to the AF. + anyOf: + - type: string + enum: + - ACCESS_TYPE_CHANGE + - ANI_REPORT + - APP_DETECTION + - CHARGING_CORRELATION + - EPS_FALLBACK + - EXTRA_UE_ADDR + - FAILED_QOS_UPDATE + - FAILED_RESOURCES_ALLOCATION + - OUT_OF_CREDIT + - PDU_SESSION_STATUS + - PLMN_CHG + - QOS_MONITORING + - QOS_NOTIF + - RAN_NAS_CAUSE + - REALLOCATION_OF_CREDIT + - SAT_CATEGORY_CHG + - SUCCESSFUL_QOS_UPDATE + - SUCCESSFUL_RESOURCES_ALLOCATION + - TSN_BRIDGE_INFO + - UP_PATH_CHG_FAILURE + - USAGE_REPORT + - UE_TEMPORARILY_UNAVAILABLE + - BAT_OFFSET_INFO + - URSP_ENF_INFO + - PACK_DEL_VAR + - L4S_SUPP + - RT_DELAY_TWO_QOS_FLOWS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + AfNotifMethod: + description: Represents the notification methods that can be subscribed for an event. + anyOf: + - type: string + enum: + - EVENT_DETECTION + - ONE_TIME + - PERIODIC + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + QosNotifType: + description: Indicates the notification type for QoS Notification Control. + anyOf: + - type: string + enum: + - GUARANTEED + - NOT_GUARANTEED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + TerminationCause: + description: > + Indicates the cause behind requesting the deletion of the Individual Application Session + Context resource. + anyOf: + - type: string + enum: + - ALL_SDF_DEACTIVATION + - PDU_SESSION_TERMINATION + - PS_TO_CS_HO + - INSUFFICIENT_SERVER_RESOURCES + - INSUFFICIENT_QOS_FLOW_RESOURCES + - SPONSORED_DATA_CONNECTIVITY_DISALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + MediaComponentResourcesStatus: + description: Indicates whether the media component is active or inactive. + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + FlowUsage: + description: Describes the flow usage of the flows described by a media subcomponent. + anyOf: + - type: string + enum: + - NO_INFO + - RTCP + - AF_SIGNALLING + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + FlowStatus: + description: Describes whether the IP flow(s) are enabled or disabled. + anyOf: + - type: string + enum: + - ENABLED-UPLINK + - ENABLED-DOWNLINK + - ENABLED + - DISABLED + - REMOVED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + RequiredAccessInfo: + description: Indicates the access network information required for an AF session. + anyOf: + - type: string + enum: + - USER_LOCATION + - UE_TIME_ZONE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + SipForkingIndication: + description: > + Indicates whether several SIP dialogues are related to an "Individual Application Session + Context" resource. + anyOf: + - type: string + enum: + - SINGLE_DIALOGUE + - SEVERAL_DIALOGUES + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + AfRequestedData: + description: Represents the information that the AF requested to be exposed. + anyOf: + - type: string + enum: + - UE_IDENTITY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + ServiceInfoStatus: + description: Represents the preliminary or final service information status. + anyOf: + - type: string + enum: + - FINAL + - PRELIMINARY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PreemptionControlInformation: + description: Represents Pre-emption control information. + anyOf: + - type: string + enum: + - MOST_RECENT + - LEAST_RECENT + - HIGHEST_BW + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PrioritySharingIndicator: + description: Represents the Priority sharing indicator. + anyOf: + - type: string + enum: + - ENABLED + - DISABLED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PreemptionControlInformationRm: + description: > + This data type is defined in the same way as the PreemptionControlInformation data type, but + with the OpenAPI nullable property set to true. + anyOf: + - $ref: '#/components/schemas/PreemptionControlInformation' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + + AppDetectionNotifType: + description: Indicates the notification type for Application Detection Control. + anyOf: + - type: string + enum: + - APP_START + - APP_STOP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PduSessionStatus: + description: Indicates whether the PDU session is established or terminated. + anyOf: + - type: string + enum: + - ESTABLISHED + - TERMINATED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + UplinkDownlinkSupport: + description: > + Represents whether an indication or capability is supported for the UL, the DL or both, + UL and DL. + anyOf: + - type: string + enum: + - UL + - DL + - UL_DL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + L4sNotifType: + description: Indicates the notification type for ECN marking for L4S support in 5GS. + anyOf: + - type: string + enum: + - AVAILABLE + - NOT_AVAILABLE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. \ No newline at end of file diff --git a/TS29515_Ngmlc_Location.yaml b/TS29515_Ngmlc_Location.yaml new file mode 100644 index 0000000..9ef1a3e --- /dev/null +++ b/TS29515_Ngmlc_Location.yaml @@ -0,0 +1,959 @@ +openapi: 3.0.0 +info: + version: '1.2.0-alpha.5' + title: 'Ngmlc_Location' + description: | + GMLC Location Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.515 V18.4.0; 5G System; Gateway Mobile Location Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.515/' + +servers: + - url: '{apiRoot}/ngmlc-loc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - ngmlc-loc + +paths: + /provide-location: + post: + summary: Request Location of an UE + operationId: RequestLocation + tags: + - Request Location + security: + - {} + - oAuth2ClientCredentials: + - ngmlc-loc + - oAuth2ClientCredentials: + - ngmlc-loc + - ngmlc-loc:provide-location:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InputData' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocationDataExt' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + EventNotify: + '{$request.body#/hgmlcCallBackUri}': + post: + requestBody: + description: UE Event Notification + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotifyDataExt' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + EventNotifyNf: + '{$request.body#/eventNotificationUri}': + post: + requestBody: + description: UE Event Notification + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotifyDataExt' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /cancel-location: + post: + summary: request cancellation of periodic or triggered location + operationId: CancelLocation + tags: + - Cancel Location + security: + - {} + - oAuth2ClientCredentials: + - ngmlc-loc + - oAuth2ClientCredentials: + - ngmlc-loc + - ngmlc-loc:cancel-location:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CancelLocData' + required: true + responses: + '204': + description: Expected response to a successful cancellation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /location-update: + post: + summary: update UE location information + operationId: UpdateLocation + tags: + - Update Location + security: + - {} + - oAuth2ClientCredentials: + - ngmlc-loc + - oAuth2ClientCredentials: + - ngmlc-loc + - ngmlc-loc:location-update:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocUpdateData' + required: true + responses: + '204': + description: Expected response to successful location context transfer + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /loc-update-subs: + post: + summary: subscribe to notifications of UE location information + operationId: LocationUpdateSubcribe + tags: + - UE location information Subscription creation + security: + - {} + - oAuth2ClientCredentials: + - ngmlc-loc + - oAuth2ClientCredentials: + - ngmlc-loc + - ngmlc-loc:loc-update-subs:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocUpdateSubs' + required: true + responses: + '204': + description: Expected response to successful UE location information subscription + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + LocationUpdateNotify: + '{$request.body#/notifUri}': + post: + requestBody: + description: Location Update Notification + content: + application/json: + schema: + $ref: '#/components/schemas/LocUpdateNotification' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ngmlc-loc: Access to the Ngmlc_Location API + ngmlc-loc:provide-location:invoke: Access to invoke Provide Location + ngmlc-loc:cancel-location:invoke: Access to invoke Cancel Location + ngmlc-loc:location-update:invoke: Access to invoke Location update + ngmlc-loc:loc-update-subs:invoke: Access to invoke Location update subscribe + + schemas: +# +# COMPLEX TYPES +# + InputData: + description: Contains the input parameters in ProvideLocation service operation + type: object + required: + - externalClientType + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + extGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + externalClientType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ExternalClientType' + locationQoS: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + supportedGADShapes: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes' + minItems: 1 + serviceIdentity: + $ref: '#/components/schemas/ServiceIdentity' + serviceCoverage: + type: array + items: + $ref: '#/components/schemas/E164CountryCodeOfGeographicArea' + minItems: 1 + ldrType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrType' + periodicEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PeriodicEventInfo' + areaEventInfo: + $ref: '#/components/schemas/AreaEventInfoExt' + motionEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MotionEventInfo' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + hgmlcCallBackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + eventNotificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + externalClientIdentification: + $ref: '#/components/schemas/ExternalClientIdentification' + afId: + type: string + uePrivacyRequirements: + $ref: '#/components/schemas/UePrivacyRequirements' + lcsServiceType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsServiceType' + velocityRequested: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityRequested' + priority: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsPriority' + locationTypeRequested: + $ref: '#/components/schemas/LocationTypeRequested' + maximumAgeOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + codeWord: + $ref: '#/components/schemas/CodeWord' + scheduledLocTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reliableLocReq: + type: boolean + default: false + servingLmfId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + lpHapType: + $ref: 'TS29518_Namf_Location.yaml#/components/schemas/LpHapType' + evtRptExpectedArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + reportingInd: + allOf: + - $ref: '#/components/schemas/ReportingInd' + default: INSIDE_REPORTING + integrityRequirements: + $ref: '#/components/schemas/IntegrityRequirements' + upLocRepInfoAf: + $ref: '#/components/schemas/UpLocRepInfoAf' + requestedRangingSlResult: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangingSlResult' + minItems: 1 + relatedUEs: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RelatedUE' + minItems: 1 + mappedQoSEps: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MappedLocationQoSEps' + + LocationDataExt: + description: Extended Location Data for UEs + allOf: + - $ref: '#/components/schemas/LocationData' + - $ref: '#/components/schemas/AddLocationDatas' + + + + LocationData: + description: Contains the response parameters in ProvideLocation service operation + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + localLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocalArea' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + positioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethodAndUsage' + minItems: 1 + gnssPositioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 1 + accuracyFulfilmentIndicator: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + ueVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + altitude: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Altitude' + servingLMFIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + locationPrivacyVerResult: + $ref: 'TS29518_Namf_Location.yaml#/components/schemas/LocationPrivacyVerResult' + successType: + $ref: '#/components/schemas/SuccessType' + achievedQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MinorLocationQoS' + directReportInd: + type: boolean + default: false + acceptedPeriodicEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PeriodicEventInfo' + haGnssMetrics: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/HighAccuracyGnssMetrics' + losNlosMeasureInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LosNlosMeasureInd' + indoorOutdoorInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/IndoorOutdoorInd' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + + CancelLocData: + description: Contains the input parameters in CancelLocation service operation + type: object + required: + - hgmlcCallBackUri + - ldrReference + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + extGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + hgmlcCallBackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + lmfIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + + LocUpdateData: + description: Contains the input parameters in LocationUpdate service operation + type: object + required: + - locationRequestType + - locationEstimate + - ageOfLocationEstimate + - accuracyFulfilmentIndicator + - lcsQosClass + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pseudonymIndicator: + $ref: '#/components/schemas/PseudonymIndicator' + locationRequestType: + $ref: '#/components/schemas/LocationRequestType' + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + accuracyFulfilmentIndicator: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + lcsQosClass: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsQosClass' + externalClientIdentification: + $ref: '#/components/schemas/ExternalClientIdentification' + afId: + type: string + gmlcNumber: + type: string + pattern: '^[0-9]{5,15}$' + lcsServiceType: + $ref: '#/components/schemas/LcsServiceTypeId' + + EventNotifyData: + description: Contains the input parameters for the target UE in EventNotify Notification service operation + type: object + required: + - eventNotifyDataType + - ldrReference + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + eventNotifyDataType: + $ref: '#/components/schemas/EventNotifyDataType' + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + localLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocalArea' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + positioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethodAndUsage' + minItems: 1 + gnssPositioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 1 + lmfIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + terminationCause: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/TerminationCause' + velocityEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + altitude: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Altitude' + targetNode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + accuracyFulfilmentIndicator: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + failureCause: + $ref: '#/components/schemas/FailureCause' + achievedQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MinorLocationQoS' + haGnssMetrics: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/HighAccuracyGnssMetrics' + losNlosMeasureInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LosNlosMeasureInd' + upLocRepStatAf: + type: integer + indoorOutdoorInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/IndoorOutdoorInd' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + + + UePrivacyRequirements: + description: UE privacy requirements from (H)GMLC to the serving AMF or VGMLC(in the roaming case) for the target UE + type: object + properties: + lcsServiceAuthInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LcsServiceAuth' + codeWordCheck: + type: boolean + + LocUpdateNotification: + description: Location Update Notification + type: object + required: + - locationRequestType + - locationEstimate + - ageOfLocationEstimate + - accuracyFulfilmentIndicator + - lcsQosClass + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + locationRequestType: + $ref: '#/components/schemas/LocationRequestType' + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + accuracyFulfilmentIndicator: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + lcsQosClass: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsQosClass' + afId: + type: string + serviceIdentity: + $ref: '#/components/schemas/ServiceIdentity' + + LocUpdateSubs: + description: UE location information subscription + type: object + required: + - nfInstanceId + - notifURI + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + notifURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + + EventNotifyDataExt: + description: Extended Event Notify Data for UEs of a target group + allOf: + - $ref: '#/components/schemas/EventNotifyData' + - $ref: '#/components/schemas/EventNotifyDataAdditionalInfo' + + EventNotifyDataAdditionalInfo: + description: Additional information to Event Notify Data + type: object + properties: + addEventDataList: + type: array + items: + $ref: '#/components/schemas/EventNotifyData' + minItems: 1 + + AreaEventInfoAddition: + description: Additional information for Extended Area event information + type: object + properties: + geoAreaList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + ignoreAreaDefInd: + type: boolean + default: false + additionalCheckInd: + type: boolean + default: false + + AreaEventInfoExt: + description: Extended Area Event Information + allOf: + - $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AreaEventInfo' + - $ref: '#/components/schemas/AreaEventInfoAddition' + IntegrityRequirements: + description: integrity requirements. + type: object + properties: + timeToAlert: + $ref: '#/components/schemas/TimeToAlert' + targetIntegrityRisk: + $ref: '#/components/schemas/TargetIntegrityRisk' + alertLimit: + $ref: '#/components/schemas/AlertLimit' + + AlertLimit: + description: Alert Limit. + type: object + required: + - horizontalProtectionLevel + properties: + horizontalProtectionLevel: + $ref: '#/components/schemas/HorizontalProtectionLevel' + verticalProtectionLevel: + $ref: '#/components/schemas/VerticalProtectionLevel' + + UpLocRepInfoAf: + description: Information for the location reporting over user plane + type: object + properties: + upLocRepAfInd: + type: boolean + enum: + - true + upLocRepAddrAf: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/UpLocRepAddrAfRm' + upCumEvtRptCriteria: + $ref: '#/components/schemas/UpCumEvtRptCriteria' + + UpCumEvtRptCriteria: + description: Criteria for sending cumulative events reports over control plane + type: object + properties: + evtRptTimeCriteria: + type: integer + evtRptCountCriteria: + type: integer + + +# +# SIMPLE TYPES +# + ServiceIdentity: + description: Contains the service identity + type: string + ExternalClientIdentification: + description: Contains the external client identification + type: string + CodeWord: + description: Contains the codeword + type: string + E164CountryCodeOfGeographicArea: + description: Contains the E.164 country codes for geographic areas + type: string + LcsServiceTypeId: + description: LCS Service Type Id. + type: integer + minimum: 0 + maximum: 127 + TimeToAlert: + description: Contains the time-to-alert + type: integer + minimum: 1 + maximum: 300 + TargetIntegrityRisk: + description: Contains the target integrity risk + type: integer + minimum: 10 + maximum: 90 + HorizontalProtectionLevel: + description: Contains the Horizontal Protection Level + type: integer + minimum: 0 + maximum: 50000 + VerticalProtectionLevel: + description: Contains the Vertical Protection Level + type: integer + minimum: 0 + maximum: 50000 +# +# ENUMS +# + PseudonymIndicator: + description: It defines if a pseudonym is requested + anyOf: + - type: string + enum: + - PSEUDONYM_REQUESTED + - PSEUDONYM_NOT_REQUESTED + - type: string + LocationRequestType: + description: NI-LR, MT-LR or MO-LR + anyOf: + - type: string + enum: + - NI_LR + - MT_LR + - MO_LR + - type: string + LocationTypeRequested: + description: Contains the location type requested by the LCS client + anyOf: + - type: string + enum: + - CURRENT_LOCATION + - CURRENT_OR_LAST_KNOWN_LOCATION + - INITIAL_LOCATION + - NOTIFICATION_VERIFICATION_ONLY + - type: string + EventNotifyDataType: + description: Contains the type of event that triggers event notification + anyOf: + - type: string + enum: + - UE_AVAILABLE + - PERIODIC + - ENTERING_INTO_AREA + - LEAVING_FROM_AREA + - BEING_INSIDE_AREA + - MOTION + - MAXIMUM_INTERVAL_EXPIRATION_EVENT + - LOCATION_CANCELLATION_EVENT + - ACTIVATION_OF_DEFERRED_LOCATION + - UE_MOBILITY_FOR_DEFERRED_LOCATION + - 5GC_MT_LR + - DIRECT_REPORT_EVENT + - CUMULATIVE_EVENT_REPORT + - type: string + FailureCause: + description: Positioning failure cause + anyOf: + - type: string + enum: + - POSITIONING_DENIED + - UNSUPPORTED_BY_UE + - NOT_REGISTED_UE + - UNSPECIFIED + - type: string + + SuccessType: + description: Success Type to indicate full or partial success + anyOf: + - type: string + enum: + - SUCCESS_COMPLETELY + - SUCCESS_PARTIALLY + - type: string + + + ReportingInd: + description: > + Indicates whether the UE is allowed to generate and send the event report inside or outside + the event report allowed(expected) area + + anyOf: + - type: string + enum: + - INSIDE_REPORTING + - OUTSIDE_REPORTING + - type: string + + AddLocationDatas: + type: array + items: + $ref: '#/components/schemas/LocationData' + minItems: 1 diff --git a/TS29517_Naf_EventExposure.yaml b/TS29517_Naf_EventExposure.yaml new file mode 100644 index 0000000..0ba5bea --- /dev/null +++ b/TS29517_Naf_EventExposure.yaml @@ -0,0 +1,1049 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Naf_EventExposure + description: | + AF Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.517 V18.4.0; 5G System; Application Function Event Exposure Service; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.517/ + +servers: + - url: '{apiRoot}/naf-eventexposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + + +paths: + /subscriptions: + post: + summary: Creates a new Individual Application Event Exposure Subscription resource + operationId: PostAfEventExposureSubsc + tags: + - Application Event Subscription (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureSubsc' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureSubsc' + headers: + Location: + description: > + Contains the URI of the created individual application event subscription resource + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + AfEventExposureNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureNotif' + responses: + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: "Reads an existing Individual Application Event Subscription" + operationId: GetAfEventExposureSubsc + tags: + - Individual Application Event Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Application Event Subscription ID + required: true + schema: + type: string + - name: supp-feat + in: query + description: Features supported by the NF service consumer + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureSubsc' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: "Modifies an existing Individual Application Event Subscription " + operationId: PutAfEventExposureSubsc + tags: + - Individual Application Event Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureSubsc' + parameters: + - name: subscriptionId + in: path + description: Application Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was successfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/AfEventExposureSubsc' + '204': + description: No Content. Resource was successfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: "Cancels an existing Individual Application Event Subscription " + operationId: DeleteAfEventExposureSubsc + tags: + - Individual Application Event Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Application Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUri}' + scopes: {} + description: > + For trusted AF, the 'naf-eventexposure' shall be used as 'scopes' and + '{nrfApiRoot}/oauth2/token' shall be used as 'tokenUri'. + + schemas: + AfEventExposureNotif: + description: > + Represents notifications on application event(s) that occurred for an Individual Application + Event Subscription resource. + type: object + properties: + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/AfEventNotification' + minItems: 1 + required: + - notifId + - eventNotifs + + AfEventExposureSubsc: + description: Represents an Individual Application Event Subscription resource. + type: object + properties: + dataAccProfId: + type: string + eventsSubs: + type: array + items: + $ref: '#/components/schemas/EventsSubs' + minItems: 1 + eventsRepInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/AfEventNotification' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eventsSubs + - eventsRepInfo + - notifId + - notifUri + + AfEventNotification: + description: Represents information related to an event to be reported. + type: object + properties: + event: + $ref: '#/components/schemas/AfEvent' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + svcExprcInfos: + type: array + items: + $ref: '#/components/schemas/ServiceExperienceInfoPerApp' + minItems: 1 + ueMobilityInfos: + type: array + items: + $ref: '#/components/schemas/UeMobilityCollection' + minItems: 1 + ueCommInfos: + type: array + items: + $ref: '#/components/schemas/UeCommunicationCollection' + minItems: 1 + excepInfos: + type: array + items: + $ref: '#/components/schemas/ExceptionInfo' + minItems: 1 + congestionInfos: + type: array + items: + $ref: '#/components/schemas/UserDataCongestionCollection' + minItems: 1 + perfDataInfos: + type: array + items: + $ref: '#/components/schemas/PerformanceDataCollection' + minItems: 1 + dispersionInfos: + type: array + items: + $ref: '#/components/schemas/DispersionCollection' + minItems: 1 + collBhvrInfs: + type: array + items: + $ref: '#/components/schemas/CollectiveBehaviourInfo' + minItems: 1 + msQoeMetrInfos: + type: array + items: + $ref: '#/components/schemas/MsQoeMetricsCollection' + minItems: 1 + deprecated: true + msQoeMetrics: + type: array + items: + $ref: 'TS26512_EventExposure.yaml#/components/schemas/QoEMetricsCollection' + minItems: 1 + description: Represents the Media Streaming QoE metrics event records. + msConsumpInfos: + type: array + items: + $ref: '#/components/schemas/MsConsumptionCollection' + minItems: 1 + deprecated: true + msConsumpRpts: + type: array + items: + $ref: 'TS26512_EventExposure.yaml#/components/schemas/ConsumptionReportingUnitsCollection' + minItems: 1 + description: Represents the Media Streaming Consumption event records. + msNetAssInvInfos: + type: array + items: + $ref: '#/components/schemas/MsNetAssInvocationCollection' + minItems: 1 + deprecated: true + msNetAssistInvs: + type: array + items: + $ref: 'TS26512_EventExposure.yaml#/components/schemas/NetworkAssistanceInvocationsCollection' + minItems: 1 + description: > + Represents the Media Streaming Network Assistance Invocations event records. + msDynPlyInvInfos: + type: array + items: + $ref: '#/components/schemas/MsDynPolicyInvocationCollection' + minItems: 1 + deprecated: true + msDynPlyInvs: + type: array + items: + $ref: 'TS26512_EventExposure.yaml#/components/schemas/DynamicPolicyInvocationsCollection' + minItems: 1 + description: Represents the Media Streaming Dynamic Policy Invocations event records. + msAccActInfos: + type: array + items: + $ref: '#/components/schemas/MSAccessActivityCollection' + minItems: 1 + deprecated: true + msAccesses: + type: array + items: + $ref: 'TS26512_EventExposure.yaml#/components/schemas/MediaStreamingAccessesCollection' + minItems: 1 + description: Represents the Media Streaming access event records. + gnssAssistDataInfo: + $ref: 'TS29591_Nnef_EventExposure.yaml#/components/schemas/GNSSAssistDataInfo' + datVolTransTimeInfos: + type: array + items: + $ref: '#/components/schemas/DatVolTransTimeCollection' + minItems: 1 + required: + - event + - timeStamp + + EventsSubs: + description: Represents an event to be subscribed and the related event filter information. + type: object + properties: + event: + $ref: '#/components/schemas/AfEvent' + eventFilter: + $ref: '#/components/schemas/EventFilter' + required: + - event + - eventFilter + + EventFilter: + description: Represents event filter information for an event. + type: object + properties: + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + exterGroupIds: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + minItems: 1 + interGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + anyUeInd: + type: boolean + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + collAttrs: + type: array + items: + $ref: '#/components/schemas/CollectiveBehaviourFilter' + minItems: 1 + exceptionReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Exception' + minItems: 1 + oneOf: + - required: [gpsis] + - required: [supis] + - required: [exterGroupIds] + - required: [interGroupIds] + - required: [anyUeInd] + - required: [ueIpAddr] + + ServiceExperienceInfoPerApp: + description: Contains service experience information associated with an application. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + appServerIns: + $ref: '#/components/schemas/AddrFqdn' + svcExpPerFlows: + type: array + items: + $ref: '#/components/schemas/ServiceExperienceInfoPerFlow' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + contrWeights: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + required: + - svcExpPerFlows + + ServiceExperienceInfoPerFlow: + description: Contains service experience information associated with a service flow. + type: object + properties: + svcExprc: + $ref: '#/components/schemas/SvcExperience' + timeIntev: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + ethTrafficFilter: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + + SvcExperience: + description: Contains a mean opinion score with the customized range. + type: object + properties: + mos: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + upperRange: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + lowerRange: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + + UeMobilityCollection: + description: > + Contains UE mobility information associated with an application. If the allAppInd attribute + is present and set to true, then the value in the appId shall be ignored, which indicates + the collected UE mobility information is applicable to all the applications for the UE. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + allAppInd: + type: boolean + description: > + Indicates applicable to all applications if set to true, otherwise set to false. + Default value is false if omitted. + ueTrajs: + type: array + items: + $ref: '#/components/schemas/UeTrajectoryCollection' + minItems: 1 + areas: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + minItems: 1 + required: + - appId + - ueTrajs + + UeCommunicationCollection: + description: Contains UE communication information associated with an application. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + exterGroupId: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExtGroupId' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + expectedUeBehavePara: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/CpParameterSet' + comms: + type: array + items: + $ref: '#/components/schemas/CommunicationCollection' + minItems: 1 + required: + - appId + - comms + + UeTrajectoryCollection: + description: Contains UE trajectory information associated with an application. + type: object + properties: + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + required: + - ts + - locArea + + CommunicationCollection: + description: Contains communication information. + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ulVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + dlVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + required: + - startTime + - endTime + - ulVol + - dlVol + + ExceptionInfo: + description: Represents the exceptions information provided by the AF. + type: object + properties: + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + ethTrafficFilter: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + exceps: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Exception' + minItems: 1 + required: + - exceps + oneOf: + - required: [ipTrafficFilter] + - required: [ethTrafficFilter] + + UserDataCongestionCollection: + description: Contains User Data Congestion Analytics related information collection. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + timeInterv: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + thrputUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + thrputDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + thrputPkUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + thrputPkDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + oneOf: + - required: [appId] + - required: [ipTrafficFilter] + + PerformanceDataCollection: + description: Contains Performance Data Analytics related information collection. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + ueLoc: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + appLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + asAddr: + $ref: '#/components/schemas/AddrFqdn' + perfData: + $ref: '#/components/schemas/PerformanceData' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - perfData + - timeStamp + + PerformanceData: + description: Contains Performance Data. + type: object + properties: + pdb: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + pdbDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + maxPdbUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + maxPdbDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + plr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + plrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPlrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPlrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + thrputUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxThrputUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minThrputUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + thrputDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxThrputDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minThrputDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + AddrFqdn: + description: IP address and/or FQDN. + type: object + properties: + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + fqdn: + type: string + description: Indicates an FQDN. + + DispersionCollection: + description: Contains the dispersion information collected for an AF. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ueAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dataUsage: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + flowDesp: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + appDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - dataUsage + oneOf: + - required: [gpsi] + - required: [supi] + - required: [ueAddr] + + CollectiveBehaviourFilter: + description: Contains the collective behaviour filter information to be collected from UE. + type: object + properties: + type: + $ref: '#/components/schemas/CollectiveBehaviourFilterType' + value: + type: string + description: Value of the parameter type as in the type attribute. + collBehAttr: + type: array + items: + $ref: '#/components/schemas/PerUeAttribute' + minItems: 1 + description: > + Contains the values of collective behaviour attributes at least one of which shall + match for an AF event to be sent. + dataProcType: + $ref: '#/components/schemas/DataProcessingType' + listOfUeInd: + type: boolean + description: > + Indicates whether request list of UE IDs that fulfill a collective behaviour within the + area of interest. This attribute shall set to "true" if request the list of UE IDs, + otherwise, set to "false". May only be present and sets to "true" if "AfEvent" sets to + "COLLECTIVE_BEHAVIOUR". + required: + - type + - value + + CollectiveBehaviourInfo: + description: Contains the collective behaviour information to be reported to the subscriber. + type: object + properties: + colAttrib: + type: array + items: + $ref: '#/components/schemas/PerUeAttribute' + minItems: 1 + noOfUes: + type: integer + description: Total number of UEs that fulfil a collective within the area of interest. + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + extUeIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + ueIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + required: + - colAttrib + oneOf: + - required: [extUeIds] + - required: [ueIds] + + PerUeAttribute: + description: UE application data collected per UE. + type: object + properties: + ueDest: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + route: + type: string + avgSpeed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + timeOfArrival: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + MsQoeMetricsCollection: + description: > + Contains the Media Streaming QoE metrics information collected for an UE Application via AF. + type: object + properties: + msQoeMetrics: + type: array + items: + type: string + minItems: 1 + required: + - msQoeMetrics + + MsConsumptionCollection: + description: > + Contains the Media Streaming Consumption information collected for an UE Application via AF. + type: object + properties: + msConsumps: + type: array + items: + type: string + description: > + Represents the Media Streaming Consumption reports with formatting as specified in + clause 11.3.3 of 3GPP TS 26.512 [30], if required for Media Streaming UE Application. + minItems: 1 + required: + - msConsumps + + MsNetAssInvocationCollection: + description: > + Contains the Media Streaming Network Assistance invocation collected for an UE Application + via AF. + type: object + properties: + msNetAssInvocs: + type: array + items: + $ref: 'TS26512_M5_NetworkAssistance.yaml#/components/schemas/NetworkAssistanceSession' + minItems: 1 + required: + - msNetAssInvocs + + MsDynPolicyInvocationCollection: + description: > + Contains the Media Streaming Dynamic Policy invocation collected for an UE + Application via AF. + type: object + properties: + msDynPlyInvocs: + type: array + items: + $ref: 'TS26512_M5_DynamicPolicies.yaml#/components/schemas/DynamicPolicy' + minItems: 1 + required: + - msDynPlyInvocs + + MSAccessActivityCollection: + description: Contains Media Streaming access activity collected for an UE Application via AF. + type: object + properties: + msAccActs: + type: array + items: + $ref: 'TS26512_R4_DataReporting.yaml#/components/schemas/MediaStreamingAccessRecord' + minItems: 1 + required: + - msAccActs + + DatVolTransTimeCollection: + description: Contains the collective data volume transfer time information to be reported to the subscriber. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + appServerInst: + $ref: '#/components/schemas/AddrFqdn' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ulTransVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + dlTransVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + ulTransTimeDur: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dlTransTimeDur: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + anyOf: + - anyOf: + - required: [ulTransVol] + - required: [dlTransVol] + - anyOf: + - required: [ulTransTimeDur] + - required: [dlTransTimeDur] + +# Simple data types and Enumerations + + AfEvent: + anyOf: + - type: string + enum: + - SVC_EXPERIENCE + - UE_MOBILITY + - UE_COMM + - EXCEPTIONS + - USER_DATA_CONGESTION + - PERF_DATA + - DISPERSION + - COLLECTIVE_BEHAVIOUR + - MS_QOE_METRICS + - MS_CONSUMPTION + - MS_NET_ASSIST_INVOCATION + - MS_DYN_POLICY_INVOCATION + - MS_ACCESS_ACTIVITY + - GNSS_ASSISTANCE_DATA + - DATA_VOLUME_TRANSFER_TIME + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents an application's event. + Possible values are: + - SVC_EXPERIENCE: Indicates that the subscribed/notified event is service experience + information for an application. + - UE_MOBILITY: Indicates that the subscribed/notified event is UE mobility information. + - UE_COMM: Indicates that the subscribed/notified event is UE communication information. + - EXCEPTIONS: Indicates that the subscribed/notified event is exceptions information. + - USER_DATA_CONGESTION: Indicates that the subscribed/notified event is user data congestion + analytics related information. + - PERF_DATA: Indicates that the subscribed/notified event is performance data information. + - DISPERSION: Indicates that the subscribed/notified event is dispersion information. + - COLLECTIVE_BEHAVIOUR: Indicates that the subscribed/notified event is collective behaviour + information. + - MS_QOE_METRICS: Indicates that the subscribed/notified event is Media Streaming QoE + metrics. + - MS_CONSUMPTION: Indicates that the subscribed/notified event is Media Streaming + consumption reports. + - MS_NET_ASSIST_INVOCATION: Indicates that the subscribed/notified event is Media Streaming + network assistance invocation. + - MS_DYN_POLICY_INVOCATION: Indicates that the subscribed/notified event is Media Streaming + dynamic policy invocation. + - MS_ACCESS_ACTIVITY: Indicates that the subscribed/notified event is Media Streaming access + activity. + - GNSS_ASSISTANCE_DATA: Indicates that the subscribed/notified event is GNSS Assistance Data + Collection. + + CollectiveBehaviourFilterType: + anyOf: + - type: string + enum: + - COLLECTIVE_ATTRIBUTE + - DATA_PROCESSING + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the parameter type for collective behaviour information filtering. + Possible values are: + - COLLECTIVE_ATTRIBUTE: Indicates that the parameter type is collective attributes. + - DATA_PROCESSING: Indicates that the parameter type is data processing. + + DataProcessingType: + description: Represents a type of data processing. + anyOf: + - type: string + enum: + - AGGREGATION + - NORMALIZATION + - ANONYMIZATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. diff --git a/TS29518_Namf_Communication.yaml b/TS29518_Namf_Communication.yaml new file mode 100644 index 0000000..6d056f7 --- /dev/null +++ b/TS29518_Namf_Communication.yaml @@ -0,0 +1,4293 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Namf_Communication + description: | + AMF Communication Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +security: + - {} + - oAuth2ClientCredentials: + - namf-comm + +externalDocs: + description: 3GPP TS 29.518 V18.4.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-comm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /ue-contexts/{ueContextId}: + put: + summary: Namf_Communication CreateUEContext service Operation + tags: + - Individual ueContext (Document) + operationId: CreateUEContext + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextCreateData' + binaryDataN2Information: + type: string + format: binary + binaryDataN2InformationExt1: + type: string + format: binary + binaryDataN2InformationExt2: + type: string + format: binary + binaryDataN2InformationExt3: + type: string + format: binary + binaryDataN2InformationExt4: + type: string + format: binary + binaryDataN2InformationExt5: + type: string + format: binary + binaryDataN2InformationExt6: + type: string + format: binary + binaryDataN2InformationExt7: + type: string + format: binary + binaryDataN2InformationExt8: + type: string + format: binary + binaryDataN2InformationExt9: + type: string + format: binary + binaryDataN2InformationExt10: + type: string + format: binary + binaryDataN2InformationExt11: + type: string + format: binary + binaryDataN2InformationExt12: + type: string + format: binary + binaryDataN2InformationExt13: + type: string + format: binary + binaryDataN2InformationExt14: + type: string + format: binary + binaryDataN2InformationExt15: + type: string + format: binary + binaryDataN2InformationExt16: + type: string + format: binary + binaryDataN2InformationExt17: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt11: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt12: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt13: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt14: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt15: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt16: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt17: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + callbacks: + onN2MessageNotify: + '{$request.body#/n2NotifyUri}': + post: + summary: Namf_Communication N2 Info Notify (UE Specific) service Operation + tags: + - N2 Info Notify + operationId: N2InfoNotifyHandoverComplete + requestBody: + description: UE Specific N2 Information Notification + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationNotification' + responses: + '200': + description: N2 Information Notification Response. + content: + application/json: + schema: + $ref: '#/components/schemas/N2InfoNotificationRspData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/N2InfoNotificationRspData' + binaryDataN2InformationExt1: + type: string + format: binary + binaryDataN2InformationExt2: + type: string + format: binary + binaryDataN2InformationExt3: + type: string + format: binary + binaryDataN2InformationExt4: + type: string + format: binary + binaryDataN2InformationExt5: + type: string + format: binary + binaryDataN2InformationExt6: + type: string + format: binary + binaryDataN2InformationExt7: + type: string + format: binary + binaryDataN2InformationExt8: + type: string + format: binary + binaryDataN2InformationExt9: + type: string + format: binary + binaryDataN2InformationExt10: + type: string + format: binary + binaryDataN2InformationExt11: + type: string + format: binary + binaryDataN2InformationExt12: + type: string + format: binary + binaryDataN2InformationExt13: + type: string + format: binary + binaryDataN2InformationExt14: + type: string + format: binary + binaryDataN2InformationExt15: + type: string + format: binary + binaryDataN2InformationExt16: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2InformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt11: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt12: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt13: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt14: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt15: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt16: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + responses: + '201': + description: UE context successfully created. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/namf-comm//ue-contexts/{ueContextId} + required: true + schema: + type: string + 3gpp-Sbi-Producer-Id: + description: > + Indicating the AMF serving the UE Context. This header shall be included when the + UE Context is created in a target AMF other than the initial AMF sending the + response. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextCreatedData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextCreatedData' + binaryDataN2Information: + type: string + format: binary + binaryDataN2InformationExt1: + type: string + format: binary + binaryDataN2InformationExt2: + type: string + format: binary + binaryDataN2InformationExt3: + type: string + format: binary + binaryDataN2InformationExt4: + type: string + format: binary + binaryDataN2InformationExt5: + type: string + format: binary + binaryDataN2InformationExt6: + type: string + format: binary + binaryDataN2InformationExt7: + type: string + format: binary + binaryDataN2InformationExt8: + type: string + format: binary + binaryDataN2InformationExt9: + type: string + format: binary + binaryDataN2InformationExt10: + type: string + format: binary + binaryDataN2InformationExt11: + type: string + format: binary + binaryDataN2InformationExt12: + type: string + format: binary + binaryDataN2InformationExt13: + type: string + format: binary + binaryDataN2InformationExt14: + type: string + format: binary + binaryDataN2InformationExt15: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt11: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt12: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt13: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt14: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt15: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextCreateError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextCreateError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Response parts + jsonData: + $ref: '#/components/schemas/UeContextCreateError' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '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': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextCreateError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/release: + post: + summary: Namf_Communication ReleaseUEContext service Operation + tags: + - Individual ueContext (Document) + operationId: ReleaseUEContext + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UEContextRelease' + required: true + responses: + '204': + description: UE Context successfully released + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/assign-ebi: + post: + summary: Namf_Communication EBI Assignment service Operation + tags: + - Individual ueContext (Document) + operationId: EBIAssignment + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:assign-ebi + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AssignEbiData' + required: true + responses: + '200': + description: EBI Assignment successfully performed. + content: + application/json: + schema: + $ref: '#/components/schemas/AssignedEbiData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/AssignEbiError' + application/problem+json: # error originated by an SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/AssignEbiError' + application/problem+json: # error originated by an SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '409': + description: Conflict + content: + application/json: + schema: + $ref: '#/components/schemas/AssignEbiError' + '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': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/AssignEbiError' + application/problem+json: # error originated by an SCP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/transfer: + post: + summary: Namf_Communication UEContextTransfer service Operation + tags: + - Individual ueContext (Document) + operationId: UEContextTransfer + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextTransferReqData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextTransferReqData' + binaryDataN1Message: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1Message: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: UE context transfer successfully initiated. + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextTransferRspData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextTransferRspData' + binaryDataN2Information: + type: string + format: binary + binaryDataN2InformationExt1: + type: string + format: binary + binaryDataN2InformationExt2: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/transfer-update: + post: + summary: Namf_Communication RegistrationStatusUpdate service Operation + tags: + - Individual ueContext (Document) + operationId: RegistrationStatusUpdate + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeRegStatusUpdateReqData' + required: true + responses: + '200': + description: UE context transfer status successfully updated. + content: + application/json: + schema: + $ref: '#/components/schemas/UeRegStatusUpdateRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /ue-contexts/{ueContextId}/relocate: + post: + summary: Namf_Communication RelocateUEContext service Operation + tags: + - Individual ueContext (Document) + operationId: RelocateUEContext + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextRelocateData' + binaryDataForwardRelocationRequest: + type: string + format: binary + binaryDataN2Information: + type: string + format: binary + binaryDataN2InformationExt1: + type: string + format: binary + binaryDataN2InformationExt2: + type: string + format: binary + binaryDataN2InformationExt3: + type: string + format: binary + binaryDataN2InformationExt4: + type: string + format: binary + binaryDataN2InformationExt5: + type: string + format: binary + binaryDataN2InformationExt6: + type: string + format: binary + binaryDataN2InformationExt7: + type: string + format: binary + binaryDataN2InformationExt8: + type: string + format: binary + binaryDataN2InformationExt9: + type: string + format: binary + binaryDataN2InformationExt10: + type: string + format: binary + binaryDataN2InformationExt11: + type: string + format: binary + binaryDataN2InformationExt12: + type: string + format: binary + binaryDataN2InformationExt13: + type: string + format: binary + binaryDataN2InformationExt14: + type: string + format: binary + binaryDataN2InformationExt15: + type: string + format: binary + binaryDataN2InformationExt16: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataForwardRelocationRequest: + contentType: application/vnd.3gpp.gtpc + headers: + Content-Id: + schema: + type: string + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt11: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt12: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt13: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt14: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt15: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2InformationExt16: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + responses: + '201': + description: UE context successfully relocated. + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-comm//ue-contexts/{ueContextId}/relocate' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextRelocatedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/cancel-relocate: + post: + summary: Namf_Communication CancelRelocateUEContext service Operation + tags: + - Individual ueContext (Document) + operationId: CancelRelocateUEContext + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:ue-contexts:mobility + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(5g-guti-[0-9]{5,6}[0-9a-fA-F]{14}|imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/UeContextCancelRelocateData' + binaryDataGtpcMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataGtpcMessage: + contentType: application/vnd.3gpp.gtpc + headers: + Content-Id: + schema: + type: string + required: true + responses: + '204': + description: UE Context successfully released + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/n1-n2-messages: + post: + summary: Namf_Communication N1N2 Message Transfer (UE Specific) service Operation + tags: + - n1N2Message collection (Collection) + operationId: N1N2MessageTransfer + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:n1-n2-messages + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|cid-.{1,255}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MessageTransferReqData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/N1N2MessageTransferReqData' + binaryDataN1Message: + type: string + format: binary + binaryDataN2Information: + type: string + format: binary + binaryMtData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1Message: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryMtData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + required: true + responses: + '202': + description: N1N2 Message Transfer accepted. + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MessageTransferRspData' + headers: + Location: + description: > + The URI of the resource located on the AMF In this release, the URI shall only be + used by NF Service Consumer to correlate the possible N1/N2 Message Transfer Failure + Notification With the related N1/N2 Message Transfer Operation. The NF service + consumer shall not send any service requests towards the URI received in the + Location header. + required: true + schema: + type: string + '200': + description: N1N2 Message Transfer successfully initiated. + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MessageTransferRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + description: Conflicts + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MessageTransferError' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: Gateway Timeout + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MessageTransferError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + default: + description: Unexpected error + callbacks: + onN1N2TransferFailure: + '{$request.body#/n1n2FailureTxfNotifURI}': + post: + summary: Namf_Communication N1N2Transfer Failure Notification service Operation + tags: + - N1N2 Transfer Failure Notification + operationId: N1N2TransferFailureNotification + requestBody: + description: N1N2Transfer Failure Notification + content: + application/json: + schema: + $ref: '#/components/schemas/N1N2MsgTxfrFailureNotification' + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /ue-contexts/{ueContextId}/n1-n2-messages/subscriptions: + post: + summary: Namf_Communication N1N2 Message Subscribe (UE Specific) service Operation + tags: + - N1N2 Subscriptions Collection for Individual UE Contexts (Collection) + operationId: N1N2MessageSubscribe + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:n1-n2-messages + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeN1N2InfoSubscriptionCreateData' + required: true + responses: + '201': + description: N1N2 Message Subscription successfully created. + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-comm//ue-contexts/{ueContextId}/n1-n2-messages/subscriptions/{subscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/UeN1N2InfoSubscriptionCreatedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onN1N2MessageNotify: + '{$request.body#/n1NotifyCallbackUri}': + post: + summary: Namf_Communication N1 Message Notify service Operation + tags: + - N1 Message Notify + operationId: N1MessageNotify + requestBody: + description: N1 Message Notification + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/N1MessageNotification' + binaryDataN1Message: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1Message: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '{$request.body#/n2NotifyCallbackUri}': + post: + summary: Namf_Communication N2 Info Notify (UE Specific) service Operation + tags: + - N2 Info Notify + operationId: N2InfoNotify + requestBody: + description: UE Specific N2 Information Notification + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/N2InformationNotification' + binaryDataN1Message: + type: string + format: binary + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN1Message: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /ue-contexts/{ueContextId}/n1-n2-messages/subscriptions/{subscriptionId}: + delete: + summary: Namf_Communication N1N2 Message UnSubscribe (UE Specific) service Operation + tags: + - N1N2 Individual Subscription (Document) + operationId: N1N2MessageUnSubscribe + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:n1-n2-messages + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + - name: subscriptionId + in: path + description: Subscription Identifier + required: true + schema: + type: string + responses: + '204': + description: N1N2 Message Subscription successfully removed. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /non-ue-n2-messages/transfer: + post: + summary: Namf_Communication Non UE N2 Message Transfer service Operation + tags: + - Non UE N2Messages collection (Collection) + operationId: NonUeN2MessageTransfer + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:non-ue-n2-messages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferReqData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/N2InformationTransferReqData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: Non UE N2 Message Transfer successfully initiated. + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferError' + '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': + description: Internal Server Error + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationTransferError' + application/problem+json: # error originated by an SCP or SEPP + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + default: + description: Unexpected error + /non-ue-n2-messages/subscriptions: + post: + summary: Namf_Communication Non UE N2 Info Subscribe service Operation + tags: + - Non UE N2Messages Subscriptions collection (Collection) + operationId: NonUeN2InfoSubscribe + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:non-ue-n2-messages + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NonUeN2InfoSubscriptionCreateData' + required: true + responses: + '201': + description: Non UE N2 Info Subscription successfully created. + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-comm//non-ue-n2-messages/subscriptions/{n2NotifySubscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NonUeN2InfoSubscriptionCreatedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onN2InfoNotify: + '{$request.body#/n2NotifyCallbackUri}': + post: + summary: Namf_Communication Non UE N2 Info Notify service Operation + tags: + - Non UE N2 Info Notify + operationId: NonUeN2InfoNotify + requestBody: + description: Non UE N2 Information Notification + content: + application/json: + schema: + $ref: '#/components/schemas/N2InformationNotification' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/N2InformationNotification' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /non-ue-n2-messages/subscriptions/{n2NotifySubscriptionId}: + delete: + summary: Namf_Communication Non UE N2 Info UnSubscribe service Operation + tags: + - Non UE N2 Message Notification Individual Subscription (Document) + operationId: NonUeN2InfoUnSubscribe + security: + - {} + - oAuth2ClientCredentials: + - namf-comm + - oAuth2ClientCredentials: + - namf-comm + - namf-comm:non-ue-n2-messages + parameters: + - name: n2NotifySubscriptionId + in: path + description: N2 info Subscription Identifier + required: true + schema: + type: string + responses: + '204': + description: Non UE N2 INfo Subscription successfully removed. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /subscriptions: + post: + summary: Namf_Communication AMF Status Change Subscribe service Operation + tags: + - subscriptions collection (Collection) + operationId: AMFStatusChangeSubscribe + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionData' + required: true + responses: + '201': + description: N1N2 Message Subscription successfully created. + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-comm//subscriptions/{subscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onAmfStatusChange: + '{$request.body#/amfStatusUri}': + post: + summary: Amf Status Change Notify service Operation + tags: + - Amf Status Change Notify + operationId: AmfStatusChangeNotify + requestBody: + description: Amf Status Change Notification + content: + application/json: + schema: + $ref: '#/components/schemas/AmfStatusChangeNotification' + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /subscriptions/{subscriptionId}: + delete: + summary: Namf_Communication AMF Status Change UnSubscribe service Operation + tags: + - individual subscription (Document) + operationId: AMFStatusChangeUnSubscribe + parameters: + - name: subscriptionId + in: path + description: AMF Status Change Subscription Identifier + required: true + schema: + type: string + responses: + '204': + description: N1N2 Message Subscription successfully removed. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + put: + summary: Namf_Communication AMF Status Change Subscribe Modify service Operation + tags: + - individual subscription (Document) + operationId: AMFStatusChangeSubscribeModfy + parameters: + - name: subscriptionId + in: path + description: AMF Status Change Subscription Identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionData' + required: true + responses: + '200': + description: Subscription modified successfully + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionData' + '204': + description: Events subscription modification is accepted entirely + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + OnAmfStatusChange: + '{$request.body#/amfStatusUri}': + post: + summary: Amf Status Change Notify service Operation + tags: + - Amf Status Change Notify + operationId: AmfStatusChangeNOtify + requestBody: + description: Amf Status Change Notification + content: + application/json: + schema: + $ref: '#/components/schemas/AmfStatusChangeNotification' + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-comm: Access to the Namf_Communication API + namf-comm:ue-contexts:mobility: > + Access to service operations applying to UE context resources, i.e., + UEContextTransfer, RegistrationStatusUpdate, CreateUEContext, ReleaseUEContext, + RelocateUEContext, and CancelRelocateUEContext. + namf-comm:ue-contexts:assign-ebi: > + Access to service operations applying to UE context resources for EBI assignment, + i.e., EBIAssignment. + namf-comm:n1-n2-messages: > + Access to service operations applying to n1-n2-messages resources, i.e., + N1N2MessageSubscribe, N1N2MessageUnSubscribe, N1N2MessageTransfer, N1MessageNotify and + N2InfoNotify + namf-comm:non-ue-n2-messages: > + Access to service operations applying to the non-ue-n2-messages resources, i.e., + NonUeN2MessageTransfer, NonUeN2InfoSubscribe, NonUeN2InfoUnSubscribe, and + NonUeN2InfoNotify + schemas: +# +# STRUCTURED DATA TYPES +# + SubscriptionData: + description: Data within an AMF Status Change Subscription request and response + type: object + properties: + amfStatusUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + guamiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + minItems: 1 + required: + - amfStatusUri + AmfStatusChangeNotification: + description: Data within an AMF Status Change Notification request + type: object + properties: + amfStatusInfoList: + type: array + items: + $ref: '#/components/schemas/AmfStatusInfo' + minItems: 1 + required: + - amfStatusInfoList + AmfStatusInfo: + description: AMF Status Information + type: object + properties: + guamiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + minItems: 1 + statusChange: + $ref: '#/components/schemas/StatusChange' + targetAmfRemoval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfName' + targetAmfFailure: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfName' + required: + - guamiList + - statusChange + AssignEbiData: + description: Data within an EBI assignment request + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + arpList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + releasedEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + modifiedEbiList: + type: array + items: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/EbiArpMapping' + minItems: 1 + required: + - pduSessionId + AssignedEbiData: + description: Data within a successful response to an EBI assignment request + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + assignedEbiList: + type: array + items: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/EbiArpMapping' + minItems: 0 + failedArpList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + releasedEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + modifiedEbiList: + type: array + items: + $ref: '#/components/schemas/EpsBearerId' + minItems: 1 + required: + - pduSessionId + - assignedEbiList + AssignEbiFailed: + description: Represents failed assignment of EBI(s) + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + failedArpList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + minItems: 1 + required: + - pduSessionId + UEContextRelease: + description: Data within a Release UE Context request + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + unauthenticatedSupi: + type: boolean + default: false + ngapCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + required: + - ngapCause + N2InformationTransferReqData: + description: Data within a N2 Information Transfer request containing the N2 information requested to be transferred to 5G AN + type: object + properties: + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + ratSelector: + $ref: '#/components/schemas/RatSelector' + globalRanNodeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + n2Information: + $ref: '#/components/schemas/N2InfoContainer' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - n2Information + NonUeN2InfoSubscriptionCreateData: + description: Data within a create subscription request for non-UE specific N2 information notification + type: object + properties: + globalRanNodeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + anTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + n2InformationClass: + $ref: '#/components/schemas/N2InformationClass' + n2NotifyCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + notifCorrelationId: + type: string + required: + - n2InformationClass + - n2NotifyCallbackUri + NonUeN2InfoSubscriptionCreatedData: + description: Data for the created subscription for non-UE specific N2 information notification + type: object + properties: + n2NotifySubscriptionId: + type: string + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + n2InformationClass: + $ref: '#/components/schemas/N2InformationClass' + required: + - n2NotifySubscriptionId + UeN1N2InfoSubscriptionCreateData: + description: Data within a create subscription request for UE specific N1 and/or N2 information notification + type: object + properties: + n2InformationClass: + $ref: '#/components/schemas/N2InformationClass' + n2NotifyCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + n1MessageClass: + $ref: '#/components/schemas/N1MessageClass' + n1NotifyCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + UeN1N2InfoSubscriptionCreatedData: + description: Data for the created subscription for UE specific N1 and/or N2 information notification + type: object + properties: + n1n2NotifySubscriptionId: + type: string + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - n1n2NotifySubscriptionId + N2InformationNotification: + description: Data within a N2 information notification request + type: object + properties: + n2NotifySubscriptionId: + type: string + n2InfoContainer: + $ref: '#/components/schemas/N2InfoContainer' + toReleaseSessionList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + lcsCorrelationId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CorrelationID' + notifyReason: + $ref: '#/components/schemas/N2InfoNotifyReason' + smfChangeInfoList: + type: array + items: + $ref: '#/components/schemas/SmfChangeInfo' + minItems: 1 + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + initialAmfName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfName' + anN2IPv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + anN2IPv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + notifySourceNgRan: + type: boolean + default: false + notifCorrelationId: + type: string + required: + - n2NotifySubscriptionId + + N2InfoContainer: + description: N2 information container + type: object + properties: + n2InformationClass: + $ref: '#/components/schemas/N2InformationClass' + smInfo: + $ref: '#/components/schemas/N2SmInformation' + ranInfo: + $ref: '#/components/schemas/N2RanInformation' + nrppaInfo: + $ref: '#/components/schemas/NrppaInformation' + pwsInfo: + $ref: '#/components/schemas/PwsInformation' + v2xInfo: + $ref: '#/components/schemas/V2xInformation' + proseInfo: + $ref: '#/components/schemas/ProSeInformation' + tssInfo: + $ref: '#/components/schemas/TssInformation' + rslpInfo: + $ref: '#/components/schemas/RslpInformation' + a2xInfo: + $ref: '#/components/schemas/A2xInformation' + required: + - n2InformationClass + N1MessageNotification: + description: Data within a N1 message notification request + type: object + properties: + n1NotifySubscriptionId: + type: string + n1MessageContainer: + $ref: '#/components/schemas/N1MessageContainer' + lcsCorrelationId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CorrelationID' + registrationCtxtContainer: + $ref: '#/components/schemas/RegistrationContextContainer' + newLmfIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + cIoT5GSOptimisation: + type: boolean + default: false + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pruInd: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/PruInd' + required: + - n1MessageContainer + N1MessageContainer: + description: N1 Message container + type: object + properties: + n1MessageClass: + $ref: '#/components/schemas/N1MessageClass' + n1MessageContent: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + serviceInstanceId: + type: string + required: + - n1MessageClass + - n1MessageContent + N1N2MessageTransferReqData: + description: Data within a N1/N2 message transfer request + type: object + properties: + n1MessageContainer: + $ref: '#/components/schemas/N1MessageContainer' + n2InfoContainer: + $ref: '#/components/schemas/N2InfoContainer' + mtData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + skipInd: + type: boolean + default: false + lastMsgIndication: + type: boolean + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + lcsCorrelationId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CorrelationID' + ppi: + $ref: '#/components/schemas/Ppi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + n1n2FailureTxfNotifURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smfReallocationInd: + type: boolean + default: false + areaOfValidity: + $ref: '#/components/schemas/AreaOfValidity' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + maAcceptedInd: + type: boolean + default: false + extBufSupport: + type: boolean + default: false + targetAccess: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pruInd: + type: boolean + enum: + - true + + + + N1N2MessageTransferRspData: + description: Data within a N1/N2 message transfer response + type: object + properties: + cause: + $ref: '#/components/schemas/N1N2MessageTransferCause' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - cause + RegistrationContextContainer: + description: Registration Context Container used to send the UE context information, N1 message from UE, AN address etc during Registration with AMF re-allocation procedure + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + localTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + anN2ApId: + type: integer + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + initialAmfName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfName' + userLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + rrcEstCause: + type: string + pattern: '^[0-9a-fA-F]+$' + ueContextRequest: + type: boolean + default: false + initialAmfN2ApId: + type: integer + anN2IPv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + anN2IPv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + allowedNssai: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/AllowedNssai' + configuredNssai: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/ConfiguredSnssai' + minItems: 1 + rejectedNssaiInPlmn: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + rejectedNssaiInTa: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + selectedPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + iabNodeInd: + type: boolean + default: false + mbsrNodeInd: + type: boolean + default: false + ceModeBInd: + $ref: '#/components/schemas/CeModeBInd' + lteMInd: + $ref: '#/components/schemas/LteMInd' + authenticatedInd: + type: boolean + default: false + npnAccessInfo: + $ref: '#/components/schemas/NpnAccessInfo' + required: + - ueContext + - anType + - anN2ApId + - ranNodeId + - initialAmfName + - userLocation + + AreaOfValidity: + description: Area of validity information for N2 information transfer + type: object + properties: + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 0 + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + required: + - taiList + UeContextTransferReqData: + description: Data within a UE Context Transfer Request to start transferring of an individual ueContext resource from old AMF to new AMF + type: object + properties: + reason: + $ref: '#/components/schemas/TransferReason' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + regRequest: + $ref: '#/components/schemas/N1MessageContainer' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - reason + - accessType + UeContextTransferRspData: + description: Data within a successful response to the UE Context Transfer request + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + ueRadioCapability: + $ref: '#/components/schemas/N2InfoContent' + ueRadioCapabilityForPaging: + $ref: '#/components/schemas/N2InfoContent' + ueNbiotRadioCapability: + $ref: '#/components/schemas/N2InfoContent' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueContext + UeContext: + description: Represents an individual ueContext resource + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supiUnauthInd: + type: boolean + gpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + ausfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + pcfGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + hNwPubKeyId: + type: integer + groupList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + drxParameter: + $ref: '#/components/schemas/DrxParameter' + subRfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + pcfRfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + usedRfsp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RfspIndex' + subUeAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + pcfUeAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + subUeSliceMbrList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceMbr' + minProperties: 1 + description: A map(list of key-value pairs) where Snssai serves as key. + smsfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + seafData: + $ref: '#/components/schemas/SeafData' + 5gMmCapability: + $ref: '#/components/schemas/5GMmCapability' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + pcfAmpServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + pcfUepServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + pcfBinding: + $ref: '#/components/schemas/SbiBindingLevel' + pcfAmPolicyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + amPolicyReqTriggerList: + type: array + items: + $ref: '#/components/schemas/PolicyReqTrigger' + minItems: 1 + pcfUePolicyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + uePolicyReqTriggerList: + type: array + items: + $ref: '#/components/schemas/PolicyReqTrigger' + minItems: 1 + hpcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + hpcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + restrictedRatList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 1 + forbiddenAreaList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Area' + minItems: 1 + serviceAreaRestriction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + restrictedCoreNwTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CoreNetworkType' + minItems: 1 + eventSubscriptionList: + type: array + items: + $ref: '#/components/schemas/ExtAmfEventSubscription' + minItems: 1 + mmContextList: + type: array + items: + $ref: '#/components/schemas/MmContext' + minItems: 1 + maxItems: 2 + sessionContextList: + type: array + items: + $ref: '#/components/schemas/PduSessionContext' + minItems: 1 + epsInterworkingInfo: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/EpsInterworkingInfo' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + serviceGapExpiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stnSr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StnSr' + cMsisdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CMsisdn' + msClassmark2: + $ref: '#/components/schemas/MSClassmark2' + supportedCodecList: + type: array + items: + $ref: '#/components/schemas/SupportedCodec' + minItems: 1 + smallDataRateStatusInfos: + type: array + items: + $ref: '#/components/schemas/SmallDataRateStatusInfo' + minItems: 1 + restrictedPrimaryRatList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 1 + restrictedSecondaryRatList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 1 + v2xContext: + $ref: '#/components/schemas/V2xContext' + lteCatMInd: + type: boolean + default: false + redCapInd: + type: boolean + default: false + moExpDataCounter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MoExpDataCounter' + cagData: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/CagData' + managementMdtInd: + type: boolean + default: false + immediateMdtConf: + $ref: '#/components/schemas/ImmediateMdtConf' + ecRestrictionDataWb: + $ref: '#/components/schemas/EcRestrictionDataWb' + ecRestrictionDataNb: + type: boolean + default: false + iabOperationAllowed: + type: boolean + proseContext: + $ref: '#/components/schemas/ProseContext' + analyticsSubscriptionList: + type: array + items: + $ref: '#/components/schemas/AnalyticsSubscription' + minItems: 1 + pcfAmpBindingInfo: + type: string + pcfUepBindingInfo: + type: string + usedServiceAreaRestriction: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + praInAmPolicy: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: A map(list of key-value pairs) where praId serves as key. + praInUePolicy: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: A map(list of key-value pairs) where praId serves as key. + updpSubscriptionData: + $ref: '#/components/schemas/UpdpSubscriptionData' + smPolicyNotifyPduList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + pcfUeCallbackInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PcfUeCallbackInfo' + uePositioningCap: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/UePositioningCapabilities' + astiDistributionIndication: + type: boolean + default: false + tsErrorBudget: + type: integer + snpnOnboardInd: + type: boolean + default: false + smfSelInfo: + $ref: 'TS29507_Npcf_AMPolicyControl.yaml#/components/schemas/SmfSelectionData' + pcfUeSliceMbrList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceMbr' + minProperties: 1 + description: A map(list of key-value pairs) where Snssai serves as key. + smsfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + smsfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + smsfBindingInfo: + type: string + disasterRoamingInd: + type: boolean + default: false + disasterPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + satelliteBackhaulCat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + wlServAreaRes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/WirelineServiceAreaRestriction' + asTimeDisParam: + $ref: 'TS29507_Npcf_AMPolicyControl.yaml#/components/schemas/AsTimeDistributionParam' + amPolicyInfoContainer: + $ref: '#/components/schemas/AmPolicyInfoContainer' + a2xContext: + $ref: '#/components/schemas/A2xContext' + mbsrOperationAllowed: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/MbsrOperationAllowed' + lcsUpContext: + $ref: '#/components/schemas/LcsUpContext' + reconnectInd: + type: boolean + default: false + + + + N2SmInformation: + description: Represents the session management SMF related N2 information data part + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + n2InfoContent: + $ref: '#/components/schemas/N2InfoContent' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + homePlmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + iwkSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + subjectToHo: + type: boolean + required: + - pduSessionId + N2InfoContent: + description: Represents a transparent N2 information content to be relayed by AMF + type: object + properties: + ngapMessageType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ngapIeType: + $ref: '#/components/schemas/NgapIeType' + ngapData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - ngapData + NrppaInformation: + description: Represents a NRPPa related N2 information data part + type: object + properties: + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nrppaPdu: + $ref: '#/components/schemas/N2InfoContent' + serviceInstanceId: + type: string + required: + - nfId + - nrppaPdu + PwsInformation: + description: Represents a PWS related information data part + type: object + properties: + messageIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + serialNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + pwsContainer: + $ref: '#/components/schemas/N2InfoContent' + bcEmptyAreaList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + sendRanResponse: + type: boolean + default: false + omcId: + $ref: '#/components/schemas/OmcIdentifier' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + required: + - messageIdentifier + - serialNumber + - pwsContainer + N1N2MsgTxfrFailureNotification: + description: Data within a N1/N2 Message Transfer Failure Notification request + type: object + properties: + cause: + $ref: '#/components/schemas/N1N2MessageTransferCause' + n1n2MsgDataUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + retryAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + required: + - cause + - n1n2MsgDataUri + N1N2MessageTransferError: + description: Data within a N1/N2 Message Transfer Error response + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + errInfo: + $ref: '#/components/schemas/N1N2MsgTxfrErrDetail' + required: + - error + N1N2MsgTxfrErrDetail: + description: N1/N2 Message Transfer Error Details + type: object + properties: + retryAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + highestPrioArp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + maxWaitingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + N2InformationTransferRspData: + description: Data within a successful response to the N2 Information Transfer request to transfer N2 Information to the AN + type: object + properties: + result: + $ref: '#/components/schemas/N2InformationTransferResult' + pwsRspData: + $ref: '#/components/schemas/PWSResponseData' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - result + MmContext: + description: Represents a Mobility Management Context in UE Context + type: object + properties: + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + nasSecurityMode: + $ref: '#/components/schemas/NasSecurityMode' + epsNasSecurityMode: + $ref: '#/components/schemas/EpsNasSecurityMode' + nasDownlinkCount: + $ref: '#/components/schemas/NasCount' + nasUplinkCount: + $ref: '#/components/schemas/NasCount' + ueSecurityCapability: + $ref: '#/components/schemas/UeSecurityCapability' + s1UeNetworkCapability: + $ref: '#/components/schemas/S1UeNetworkCapability' + allowedNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nssaiMappingList: + type: array + items: + $ref: '#/components/schemas/NssaiMapping' + minItems: 1 + allowedHomeNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + partiallyAllowedNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartiallyAllowedSnssai' + minItems: 1 + nsInstanceList: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + minItems: 1 + expectedUEbehavior: + $ref: '#/components/schemas/ExpectedUeBehavior' + ueDifferentiationInfo: + $ref: '#/components/schemas/UeDifferentiationInfo' + plmnAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnAssiUeRadioCapId' + manAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ManAssiUeRadioCapId' + ucmfDicEntryId: + type: string + n3IwfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + wagfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + tngfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + anN2ApId: + type: integer + nssaaStatusList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NssaaStatus' + minItems: 1 + pendingNssaiMappingList: + type: array + items: + $ref: '#/components/schemas/NssaiMapping' + minItems: 1 + uuaaMmStatus: + $ref: '#/components/schemas/UuaaMmStatus' + required: + - accessType + SeafData: + description: Represents SEAF data derived from data received from AUSF + type: object + properties: + ngKsi: + $ref: '#/components/schemas/NgKsi' + keyAmf: + $ref: '#/components/schemas/KeyAmf' + nh: + type: string + pattern: '^[A-Fa-f0-9]+$' + ncc: + type: integer + minimum: 0 + maximum: 7 + keyAmfChangeInd: + type: boolean + keyAmfHDerivationInd: + type: boolean + required: + - ngKsi + - keyAmf + NasSecurityMode: + description: Indicates the NAS Security Mode + type: object + properties: + integrityAlgorithm: + $ref: '#/components/schemas/IntegrityAlgorithm' + cipheringAlgorithm: + $ref: '#/components/schemas/CipheringAlgorithm' + required: + - integrityAlgorithm + - cipheringAlgorithm + PduSessionContext: + description: Represents a PDU Session Context in UE Context + type: object + properties: + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + smContextRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + selectedDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAccessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + allocatedEbiList: + type: array + items: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/EbiArpMapping' + minItems: 1 + hsmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + hsmfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + hsmfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + smfBinding: + $ref: '#/components/schemas/SbiBindingLevel' + vsmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + vsmfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + vsmfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + vsmfBinding: + $ref: '#/components/schemas/SbiBindingLevel' + ismfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ismfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + ismfServiceSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + ismfBinding: + $ref: '#/components/schemas/SbiBindingLevel' + nsInstance: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + smfServiceInstanceId: + type: string + maPduSession: + type: boolean + default: false + cnAssistedRanPara: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/CnAssistedRanPara' + nrfManagementUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfDiscoveryUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfAccessTokenUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smfBindingInfo: + type: string + vsmfBindingInfo: + type: string + ismfBindingInfo: + type: string + additionalSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + interPlmnApiRoot: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pgwIpAddr: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + anchorSmfSupportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + anchorSmfOauth2Required: + type: boolean + hrsboAllowedInd: + type: boolean + required: + - pduSessionId + - smContextRef + - sNssai + - dnn + - accessType + NssaiMapping: + description: Represents the mapping between a S-NSSAI in serving PLMN to a S-NSSAI in home PLMN + type: object + properties: + mappedSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - mappedSnssai + - hSnssai + UeRegStatusUpdateReqData: + description: Data within a UE registration status update request to indicate a completion of transferring at a target AMF + type: object + properties: + transferStatus: + $ref: '#/components/schemas/UeContextTransferStatus' + toReleaseSessionList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + pcfReselectedInd: + type: boolean + smfChangeInfoList: + type: array + items: + $ref: '#/components/schemas/SmfChangeInfo' + minItems: 1 + analyticsNotUsedList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + toReleaseSessionInfo: + type: array + items: + $ref: '#/components/schemas/ReleaseSessionInfo' + minItems: 1 + required: + - transferStatus + UeRegStatusUpdateRspData: + description: Data within a UE registration status update response to provide the status of UE context transfer status update at a source AMF + type: object + properties: + regStatusTransferComplete: + type: boolean + required: + - regStatusTransferComplete + AssignEbiError: + description: Data within a failure response to the EBI assignment request + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + failureDetails: + $ref: '#/components/schemas/AssignEbiFailed' + required: + - error + - failureDetails + UeContextCreateData: + description: Data within a request to create an individual ueContext resource + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + targetId: + $ref: '#/components/schemas/NgRanTargetId' + sourceToTargetData: + $ref: '#/components/schemas/N2InfoContent' + pduSessionList: + type: array + items: + $ref: '#/components/schemas/N2SmInformation' + minItems: 1 + n2NotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ueRadioCapability: + $ref: '#/components/schemas/N2InfoContent' + ueRadioCapabilityForPaging: + $ref: '#/components/schemas/N2InfoContent' + ngapCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + required: + - ueContext + - targetId + - sourceToTargetData + - pduSessionList + UeContextCreatedData: + description: Data within a successful response for creating an individual ueContext resource + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + targetToSourceData: + $ref: '#/components/schemas/N2InfoContent' + pduSessionList: + type: array + items: + $ref: '#/components/schemas/N2SmInformation' + minItems: 1 + failedSessionList: + type: array + items: + $ref: '#/components/schemas/N2SmInformation' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pcfReselectedInd: + type: boolean + analyticsNotUsedList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + required: + - ueContext + - targetToSourceData + - pduSessionList + UeContextCreateError: + description: Data within a failure response for creating a UE context + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + ngapCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + targetToSourceFailureData: + $ref: '#/components/schemas/N2InfoContent' + required: + - error + UeContextRelocateData: + description: Data within a Relocate UE Context request + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + targetId: + $ref: '#/components/schemas/NgRanTargetId' + sourceToTargetData: + $ref: '#/components/schemas/N2InfoContent' + forwardRelocationRequest: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + pduSessionList: + type: array + items: + $ref: '#/components/schemas/N2SmInformation' + minItems: 1 + ueRadioCapability: + $ref: '#/components/schemas/N2InfoContent' + ngapCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueContext + - targetId + - sourceToTargetData + - forwardRelocationRequest + UeContextRelocatedData: + description: Data within a Relocate UE Context response + type: object + properties: + ueContext: + $ref: '#/components/schemas/UeContext' + required: + - ueContext + + UeContextCancelRelocateData: + description: Data structure used for cancellation of UE Context Relocation + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + relocationCancelRequest: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - relocationCancelRequest + NgRanTargetId: + description: Indicates a NG RAN as target of the handover + type: object + properties: + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + required: + - ranNodeId + - tai + PWSResponseData: + description: Data related PWS included in a N2 Information Transfer response + type: object + properties: + ngapMessageType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + serialNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + messageIdentifier: + type: integer + unknownTaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + n2PwsSubMissInd: + type: boolean + enum: + - true + required: + - ngapMessageType + - serialNumber + - messageIdentifier + PWSErrorData: + description: Data related to PWS error included in a N2 Information Transfer failure response + type: object + properties: + namfCause: + type: integer + required: + - namfCause + N2InformationTransferError: + description: Data within a failure response for a non-UE related N2 Information Transfer + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + pwsErrorInfo: + $ref: '#/components/schemas/PWSErrorData' + required: + - error + NgKsi: + description: Represents the ngKSI + type: object + properties: + tsc: + $ref: '#/components/schemas/ScType' + ksi: + type: integer + minimum: 0 + maximum: 6 + required: + - tsc + - ksi + KeyAmf: + description: Represents the Kamf or K'amf + type: object + properties: + keyType: + $ref: '#/components/schemas/KeyAmfType' + keyVal: + type: string + required: + - keyType + - keyVal + ExpectedUeBehavior: + description: Represents the expected UE behavior (e.g. UE moving trajectory) and its validity period + type: object + properties: + expMoveTrajectory: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + minItems: 1 + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - expMoveTrajectory + - validityTime + N2RanInformation: + description: Represents the RAN related N2 information data part + type: object + properties: + n2InfoContent: + $ref: '#/components/schemas/N2InfoContent' + required: + - n2InfoContent + N2InfoNotificationRspData: + description: Data within a N2 information notification response + type: object + properties: + secRatDataUsageList: + type: array + items: + $ref: '#/components/schemas/N2SmInformation' + minItems: 1 + SmallDataRateStatusInfo: + description: Represents the small data rate status + type: object + properties: + Snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + Dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + SmallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + required: + - Snssai + - Dnn + - SmallDataRateStatus + SmfChangeInfo: + description: SMF change information for PDU session(s) + type: object + properties: + pduSessionIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + smfChangeInd: + $ref: '#/components/schemas/SmfChangeIndication' + required: + - pduSessionIdList + - smfChangeInd + + V2xContext: + description: Represents the V2X services related parameters + type: object + properties: + nrV2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NrV2xAuth' + lteV2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LteV2xAuth' + nrUeSidelinkAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + lteUeSidelinkAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + pc5QoSPara: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pc5QoSPara' + + V2xInformation: + description: V2X related N2 information + type: object + properties: + n2Pc5Pol: + $ref: '#/components/schemas/N2InfoContent' + + ProSeInformation: + description: Represents 5G ProSe related N2 information. + type: object + properties: + n2Pc5ProSePol: + $ref: '#/components/schemas/N2InfoContent' + + ImmediateMdtConf: + description: Immediate MDT Configuration + type: object + properties: + jobType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/JobType' + measurementLteList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MeasurementLteForMdt' + minItems: 1 + measurementNrList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MeasurementNrForMdt' + minItems: 1 + reportingTriggerList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReportingTrigger' + minItems: 1 + reportInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReportIntervalMdt' + reportIntervalNr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReportIntervalNrMdt' + reportAmount: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ReportAmountMdt' + eventThresholdRsrp: + type: integer + minimum: 0 + maximum: 97 + eventThresholdRsrq: + type: integer + minimum: 0 + maximum: 34 + eventThresholdRsrpNr: + type: integer + minimum: 0 + maximum: 127 + eventThresholdRsrqNr: + type: integer + minimum: 0 + maximum: 127 + collectionPeriodRmmLte: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CollectionPeriodRmmLteMdt' + collectionPeriodRmmNr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CollectionPeriodRmmNrMdt' + measurementPeriodLte: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MeasurementPeriodLteMdt' + areaScope: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaScope' + positioningMethod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PositioningMethodMdt' + addPositioningMethodList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PositioningMethodMdt' + minItems: 1 + mdtAllowedPlmnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + maxItems: 16 + sensorMeasurementList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SensorMeasurement' + minItems: 1 + required: + - jobType + + EpsNasSecurityMode: + description: Indicates the EPS NAS Security Mode + type: object + properties: + integrityAlgorithm: + $ref: '#/components/schemas/EpsNasIntegrityAlgorithm' + cipheringAlgorithm: + $ref: '#/components/schemas/EpsNasCipheringAlgorithm' + required: + - integrityAlgorithm + - cipheringAlgorithm + + EcRestrictionDataWb: + description: Enhanced Coverage Restriction Data for WB-N1 mode + type: object + properties: + ecModeARestricted: + type: boolean + default: false + ecModeBRestricted: + type: boolean + required: + - ecModeBRestricted + + ExtAmfEventSubscription: + description: AMF event subscription extended with additional information received for the subscription + allOf: + - $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/AmfEventSubscription' + - $ref: '#/components/schemas/AmfEventSubscriptionAddInfo' + + AmfEventSubscriptionAddInfo: + description: Additional information received for an AMF event subscription, e.g. binding indications + type: object + properties: + bindingInfo: + type: array + items: + type: string + minItems: 1 + maxItems: 2 + subscribingNfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + eventSyncInd: + type: boolean + nfConsumerInfo: + type: array + items: + type: string + minItems: 1 + aoiStateList: + type: object + description: > + Map of subscribed Area of Interest (AoI) Event State in the old AMF. The JSON pointer to + an AmfEventArea element in the areaList IE (or a PresenceInfo element in + presenceInfoList IE) of the AmfEvent data type shall be the key of the map. + additionalProperties: + $ref: '#/components/schemas/AreaOfInterestEventState' + accessToken: + type: string + description: > + JWS Compact Serialized representation of JWS signed JSON object (AccessTokenClaims + defined in 3GPP TS 29.510) + + UeDifferentiationInfo: + description: Represents the UE Differentiation Information and its validity time + type: object + properties: + periodicComInd: + $ref: '#/components/schemas/PeriodicCommunicationIndicator' + periodicTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + scheduledComTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTime' + stationaryInd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StationaryIndication' + trafficProfile: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficProfile' + batteryInd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BatteryIndication' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + CeModeBInd: + description: CE-mode-B Support Indicator. + type: object + properties: + ceModeBSupportInd: + type: boolean + required: + - ceModeBSupportInd + + LteMInd: + description: LTE-M Indication. + type: object + properties: + lteCatMInd: + type: boolean + required: + - lteCatMInd + + NpnAccessInfo: + description: NPN Access Information. + type: object + properties: + cellCagInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + minItems: 1 + + ProseContext: + description: Represents the ProSe services related parameters. + type: object + properties: + directDiscovery: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + directComm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l2Relay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l3Relay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l2Remote: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l3Remote: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l2UeRelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l3UeRelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l2End: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + l3End: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + multiPathComm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UeAuth' + nrUePc5Ambr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + pc5QoSPara: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pc5QoSPara' + + AnalyticsSubscription: + description: Analytics subscriptions created in the NWDAF. + type: object + properties: + nwdafId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nwdafSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + nwdafSubscriptionList: + type: array + items: + $ref: '#/components/schemas/NwdafSubscription' + minItems: 1 + required: + - nwdafSubscriptionList + + NwdafSubscription: + description: Individual NWDAF subscription identified by the subscription Id. + type: object + properties: + nwdafEvtSubsServiceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nwdafEventsSubscription: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + required: + - nwdafEvtSubsServiceUri + - nwdafEventsSubscription + + UpdpSubscriptionData: + description: UE policy delivery related N1 message notification subscription data. + type: object + properties: + updpNotifySubscriptionId: + type: string + updpNotifyCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + updpCallbackBinding: + type: string + required: + - updpNotifySubscriptionId + - updpNotifyCallbackUri + + ReleaseSessionInfo: + description: PDU session Id(s) and the cause for triggering the release. + type: object + properties: + releaseSessionList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + minItems: 1 + releaseCause: + $ref: '#/components/schemas/ReleaseCause' + required: + - releaseSessionList + - releaseCause + + AreaOfInterestEventState: + description: Event State of AoI event in old AMF + type: object + required: + - presence + properties: + presence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + individualPraIdList: + type: array + items: + type: string + minItems: 1 + + TssInformation: + description: Represents a Tss related N2 information data part + type: object + properties: + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + tssContainer: + $ref: '#/components/schemas/N2InfoContent' + required: + - tssContainer + + RslpInformation: + description: Represents Ranging/SL positioning related N2 information. + type: object + properties: + n2Pc5RslpPol: + $ref: '#/components/schemas/N2InfoContent' + + A2xContext: + description: Represents the A2X services related parameters + type: object + properties: + nrA2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NrA2xAuth' + lteA2xServicesAuth: + $ref: 'TS29571_CommonData.yaml#/components/schemas/LteA2xAuth' + nrUeSidelinkAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + lteUeSidelinkAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + pc5QoSPara: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pc5QoSPara' + + A2xInformation: + description: A2X related N2 information + type: object + properties: + n2Pc5Pol: + $ref: '#/components/schemas/N2InfoContent' + + AmPolicyInfoContainer: + description: AM Policy Information Container + type: object + properties: + sliceUsgCtrlInfoSets: + type: object + description: A map(list of key-value pairs) where Snssai serves as key. + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceUsageControlInfo' + minProperties: 1 + + LcsUpContext: + description: Represents the LCS UP related parameters + type: object + properties: + upConnectionStatus: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/UpConnectionStatus' + servingLMFIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' +# +# SIMPLE DATA TYPES +# + EpsBearerId: + description: EPS Bearer Identifier + type: integer + minimum: 0 + maximum: 15 + Ppi: + description: Paging Policy Indicator + type: integer + minimum: 0 + maximum: 7 + NasCount: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + 5GMmCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + UeSecurityCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + S1UeNetworkCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + DrxParameter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + OmcIdentifier: + description: Represents the OMC Identifier + type: string + MSClassmark2: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + SupportedCodec: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + +# +# ENUMERATIONS +# + StatusChange: + description: Enumeration for AMF status + anyOf: + - type: string + enum: + - AMF_UNAVAILABLE + - AMF_AVAILABLE + - type: string + N2InformationClass: + description: Enumeration for N2 Information Class + anyOf: + - type: string + enum: + - SM + - NRPPa + - PWS + - PWS-BCAL + - PWS-RF + - RAN + - V2X + - PROSE + - TSS + - RSPP + - A2X + - type: string + N1MessageClass: + description: Enumeration for N1 Message Class + anyOf: + - type: string + enum: + - 5GMM + - SM + - LPP + - SMS + - UPDP + - LCS + - type: string + N1N2MessageTransferCause: + description: Enumeration for N1N2Message Transfer Cause + anyOf: + - type: string + enum: + - ATTEMPTING_TO_REACH_UE + - N1_N2_TRANSFER_INITIATED + - WAITING_FOR_ASYNCHRONOUS_TRANSFER + - UE_NOT_RESPONDING + - N1_MSG_NOT_TRANSFERRED + - N2_MSG_NOT_TRANSFERRED + - UE_NOT_REACHABLE_FOR_SESSION + - TEMPORARY_REJECT_REGISTRATION_ONGOING + - TEMPORARY_REJECT_HANDOVER_ONGOING + - REJECTION_DUE_TO_PAGING_RESTRICTION + - AN_NOT_RESPONDING + - FAILURE_CAUSE_UNSPECIFIED + - type: string + UeContextTransferStatus: + description: Describes the status of an individual ueContext resource in UE Context Transfer procedures + anyOf: + - type: string + enum: + - TRANSFERRED + - NOT_TRANSFERRED + - type: string + N2InformationTransferResult: + description: Describes the result of N2 information transfer by AMF to the AN + anyOf: + - type: string + enum: + - N2_INFO_TRANSFER_INITIATED + - type: string + CipheringAlgorithm: + description: Indicates the supported Ciphering Algorithm + anyOf: + - type: string + enum: + - NEA0 + - NEA1 + - NEA2 + - NEA3 + - type: string + IntegrityAlgorithm: + description: Indicates the supported Integrity Algorithm + anyOf: + - type: string + enum: + - NIA0 + - NIA1 + - NIA2 + - NIA3 + - type: string + SmsSupport: + description: Indicates the supported SMS delivery of a UE + anyOf: + - type: string + enum: + - 3GPP + - NON_3GPP + - BOTH + - NONE + - type: string + ScType: + description: Indicates the security context type + anyOf: + - type: string + enum: + - NATIVE + - MAPPED + - type: string + KeyAmfType: + description: Indicates the Kamf type + anyOf: + - type: string + enum: + - KAMF + - KPRIMEAMF + - type: string + TransferReason: + description: Indicates UE Context Transfer Reason + anyOf: + - type: string + enum: + - INIT_REG + - MOBI_REG + - MOBI_REG_UE_VALIDATED + - type: string + PolicyReqTrigger: + description: Policy Request Triggers + anyOf: + - type: string + enum: + - LOCATION_CHANGE + - PRA_CHANGE + - ALLOWED_NSSAI_CHANGE + - NWDAF_DATA_CHANGE + - PLMN_CHANGE + - CON_STATE_CHANGE + - SMF_SELECT_CHANGE + - ACCESS_TYPE_CHANGE + - SAT_BACKHAUL_CHANGE + - type: string + RatSelector: + description: Indicates the RAT type for the transfer of N2 information + anyOf: + - type: string + enum: + - E-UTRA + - NR + - type: string + NgapIeType: + description: Indicates the supported NGAP IE types + anyOf: + - type: string + enum: + - PDU_RES_SETUP_REQ + - PDU_RES_REL_CMD + - PDU_RES_MOD_REQ + - HANDOVER_CMD + - HANDOVER_REQUIRED + - HANDOVER_PREP_FAIL + - SRC_TO_TAR_CONTAINER + - TAR_TO_SRC_CONTAINER + - TAR_TO_SRC_FAIL_CONTAINER + - RAN_STATUS_TRANS_CONTAINER + - SON_CONFIG_TRANSFER + - NRPPA_PDU + - UE_RADIO_CAPABILITY + - RIM_INFO_TRANSFER + - SECONDARY_RAT_USAGE + - PC5_QOS_PARA + - EARLY_STATUS_TRANS_CONTAINER + - UE_RADIO_CAPABILITY_FOR_PAGING + - type: string + N2InfoNotifyReason: + description: N2 Information Notify Reason + anyOf: + - type: string + enum: + - HANDOVER_COMPLETED + - type: string + SmfChangeIndication: + description: Indicates the I-SMF or V-SMF change or removal + anyOf: + - type: string + enum: + - CHANGED + - REMOVED + - type: string + SbiBindingLevel: + description: SBI Binding Level + anyOf: + - type: string + enum: + - NF_INSTANCE_BINDING + - NF_SET_BINDING + - NF_SERVICE_SET_BINDING + - NF_SERVICE_INSTANCE_BINDING + - type: string + + EpsNasCipheringAlgorithm: + description: Indicates the supported EPS NAS Ciphering Algorithm + anyOf: + - type: string + enum: + - EEA0 + - EEA1 + - EEA2 + - EEA3 + - type: string + + EpsNasIntegrityAlgorithm: + description: Indicates the supported EPS NAS Integrity Algorithm + anyOf: + - type: string + enum: + - EIA0 + - EIA1 + - EIA2 + - EIA3 + - type: string + + PeriodicCommunicationIndicator: + description: Indicates the Periodic Communication Indicator + anyOf: + - type: string + enum: + - PIORIODICALLY + - ON_DEMAND + - type: string + + UuaaMmStatus: + description: Indicates the UUAA-MM status + anyOf: + - type: string + enum: + - SUCCESS + - PENDING + - FAILED + - type: string + + ReleaseCause: + description: The cause for triggering the release. + anyOf: + - type: string + enum: + - SNPN_SNPN_MOBILITY + - NO_HR_AGREEMENT + - UNSPECIFIED + - type: string diff --git a/TS29518_Namf_EventExposure.yaml b/TS29518_Namf_EventExposure.yaml new file mode 100644 index 0000000..3b773c0 --- /dev/null +++ b/TS29518_Namf_EventExposure.yaml @@ -0,0 +1,1132 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.4 + title: Namf_EventExposure + description: | + AMF Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +security: + - {} + - oAuth2ClientCredentials: + - namf-evts + +externalDocs: + description: 3GPP TS 29.518 V18.4.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-evts/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /subscriptions: + post: + summary: Namf_EventExposure Subscribe service Operation + tags: + - Subscriptions collection (Collection) + operationId: CreateSubscription + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfCreateEventSubscription' + required: true + responses: + '201': + description: Subsription Created + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-evts//subscriptions/{subscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/AmfCreatedEventSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onEventReport: + '{$request.body#/subscription/eventNotifyUri}': + post: + summary: Event Notificaiton Delivery + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfEventNotification' + required: true + responses: + '204': + description: Successful acknowledgement + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + onSubscriptionIdChangeEvtReport: + '{$request.body#/subscription/subsChangeNotifyUri}': + post: + summary: Event Notificaiton Delivery For Subscription Id Change + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AmfEventNotification' + required: true + responses: + '204': + description: Successful acknowledgement + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /subscriptions/{subscriptionId}: + patch: + summary: Namf_EventExposure Subscribe Modify service Operation + tags: + - Individual subscription (Document) + operationId: ModifySubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be modified + schema: + type: string + requestBody: + content: + application/json-patch+json: + schema: + oneOf: + - type: array + items: + $ref: '#/components/schemas/AmfUpdateEventSubscriptionItem' + minItems: 1 + - type: array + items: + $ref: '#/components/schemas/AmfUpdateEventOptionItem' + minItems: 1 + maxItems: 1 + required: true + responses: + '200': + description: Subsription modified successfully + content: + application/json: + schema: + $ref: '#/components/schemas/AmfUpdatedEventSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: Namf_EventExposure Unsubscribe service Operation + tags: + - Individual subscription (Document) + operationId: DeleteSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be deleted + schema: + type: string + responses: + '204': + description: Subsription deleted successfully + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-evts: Access to the Namf_EventExposure API + schemas: + AmfEventSubscription: + description: Represents an individual event subscription resource on AMF + type: object + properties: + eventList: + type: array + items: + $ref: '#/components/schemas/AmfEvent' + minItems: 1 + eventNotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + subsChangeNotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + subsChangeNotifyCorrelationId: + type: string + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + groupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + excludeSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + excludeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + includeSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + includeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + anyUE: + type: boolean + options: + $ref: '#/components/schemas/AmfEventMode' + sourceNfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + termNotifyInd: + type: boolean + required: + - eventList + - eventNotifyUri + - notifyCorrelationId + - nfId + + AmfEvent: + description: Describes an event to be subscribed + type: object + properties: + type: + $ref: '#/components/schemas/AmfEventType' + immediateFlag: + type: boolean + default: false + areaList: + type: array + items: + $ref: '#/components/schemas/AmfEventArea' + minItems: 1 + locationFilterList: + type: array + items: + $ref: '#/components/schemas/LocationFilter' + minItems: 1 + refId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + trafficDescriptorList: + type: array + items: + $ref: '#/components/schemas/TrafficDescriptor' + minItems: 1 + reportUeReachable: + type: boolean + default: false + reachabilityFilter: + $ref: '#/components/schemas/ReachabilityFilter' + udmDetectInd: + type: boolean + default: false + maxReports: + type: integer + presenceInfoList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: A map(list of key-value pairs) where praId serves as key. + maxResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + targetArea: + $ref: '#/components/schemas/TargetArea' + snssaiFilter: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + ueInAreaFilter: + $ref: '#/components/schemas/UeInAreaFilter' + minInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + nextReport: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + idleStatusInd: + type: boolean + default: false + dispersionArea: + $ref: '#/components/schemas/DispersionArea' + nextPeriodicReportTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + adjustAoIOnRa: + type: boolean + default: false + ranTimingSynchroStatusChange: + type: boolean + default: false + notifyForSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + notifyForSnssaiDnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SnssaiDnnItem' + minItems: 1 + required: + - type + AmfEventNotification: + description: Data within a AMF Event Notification request + type: object + properties: + notifyCorrelationId: + type: string + subsChangeNotifyCorrelationId: + type: string + reportList: + type: array + items: + $ref: '#/components/schemas/AmfEventReport' + minItems: 1 + eventSubsSyncInfo: + $ref: '#/components/schemas/AmfEventSubsSyncInfo' + AmfEventReport: + description: Represents a report triggered by a subscribed event type + type: object + properties: + type: + $ref: '#/components/schemas/AmfEventType' + state: + $ref: '#/components/schemas/AmfEventState' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + anyUe: + type: boolean + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + areaList: + type: array + items: + $ref: '#/components/schemas/AmfEventArea' + minItems: 1 + refId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + additionalLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + timezone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + accessTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + rmInfoList: + type: array + items: + $ref: '#/components/schemas/RmInfo' + minItems: 1 + cmInfoList: + type: array + items: + $ref: '#/components/schemas/CmInfo' + minItems: 1 + reachability: + $ref: '#/components/schemas/UeReachability' + commFailure: + $ref: '#/components/schemas/CommunicationFailure' + lossOfConnectReason: + $ref: '#/components/schemas/LossOfConnectivityReason' + numberOfUes: + type: integer + 5gsUserStateList: + type: array + items: + $ref: '#/components/schemas/5GsUserStateInfo' + minItems: 1 + typeCode: + type: string + pattern: '^imeitac-[0-9]{8}$' + registrationNumber: + type: integer + maxAvailabilityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueIdExt: + type: array + items: + $ref: '#/components/schemas/UEIdExt' + minItems: 1 + snssaiTaiList: + type: array + items: + $ref: '#/components/schemas/SnssaiTaiMapping' + minItems: 1 + idleStatusIndication: + $ref: '#/components/schemas/IdleStatusIndication' + ueAccessBehaviorTrends: + type: array + items: + $ref: '#/components/schemas/UeAccessBehaviorReportItem' + minItems: 1 + ueLocationTrends: + type: array + items: + $ref: '#/components/schemas/UeLocationTrendsReportItem' + minItems: 1 + mmTransLocationReportList: + type: array + items: + $ref: '#/components/schemas/MmTransactionLocationReportItem' + minItems: 1 + mmTransSliceReportList: + type: array + items: + $ref: '#/components/schemas/MmTransactionSliceReportItem' + minItems: 1 + termReason: + $ref: '#/components/schemas/SubTerminationReason' + unavailabilityPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - type + - state + - timeStamp + AmfEventMode: + description: Describes how the reports shall be generated by a subscribed event + type: object + properties: + trigger: + $ref: '#/components/schemas/AmfEventTrigger' + maxReports: + type: integer + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + sampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + partitioningCriteria: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartitioningCriteria' + minItems: 1 + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + mutingExcInstructions: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingNotSettings: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + varRepPeriodInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarRepPeriod' + minItems: 1 + required: + - trigger + AmfEventState: + description: Represents the state of a subscribed event + type: object + properties: + active: + type: boolean + remainReports: + type: integer + remainDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - active + RmInfo: + description: Represents the registration state of a UE for an access type + type: object + properties: + rmState: + $ref: '#/components/schemas/RmState' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - rmState + - accessType + CmInfo: + description: Represents the connection management state of a UE for an access type + type: object + properties: + cmState: + $ref: '#/components/schemas/CmState' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - cmState + - accessType + CommunicationFailure: + description: Describes a communication failure detected by AMF + type: object + properties: + nasReleaseCode: + type: string + ranReleaseCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + AmfCreateEventSubscription: + description: Data within a create AMF event subscription request + type: object + properties: + subscription: + $ref: '#/components/schemas/AmfEventSubscription' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + required: + - subscription + AmfCreatedEventSubscription: + description: Data within a create AMF event subscription response + type: object + properties: + subscription: + $ref: '#/components/schemas/AmfEventSubscription' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reportList: + type: array + items: + $ref: '#/components/schemas/AmfEventReport' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subscription + - subscriptionId + AmfUpdateEventSubscriptionItem: + description: Document describing the modification(s) to an AMF Event Subscription + type: object + properties: + op: + type: string + enum: + - add + - remove + - replace + path: + type: string + pattern: '^\/eventList\/-|(\/eventList\/0|\/eventList\/[1-9][0-9]*){1}(\/presenceInfoList\/0|\/presenceInfoList\/[1-9][0-9]* |\/notifyForSupiList|\/notifyForSnssaiDnnList)?|\/excludeSupiList|\/excludeGpsiList|\/includeSupiList|\/includeGpsiList$' + value: + $ref: '#/components/schemas/AmfEvent' + presenceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + excludeSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + excludeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + includeSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + includeGpsiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + notifyForSupiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + notifyForSnssaiDnnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SnssaiDnnItem' + minItems: 1 + required: + - op + - path + AmfUpdateEventOptionItem: + description: Document describing the modifications to AMF event subscription options + type: object + properties: + op: + type: string + enum: + - replace + path: + type: string + pattern: '^(\/options\/expiry|\/options\/notifFlag|\/options\/mutingExcInstructions)$' + value: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + mutingExcInstructions: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + required: + - op + - path + - value + AmfUpdatedEventSubscription: + description: Represents a successful update on an AMF Event Subscription + type: object + properties: + subscription: + $ref: '#/components/schemas/AmfEventSubscription' + reportList: + type: array + items: + $ref: '#/components/schemas/AmfEventReport' + minItems: 1 + required: + - subscription + AmfEventArea: + description: Represents an area to be monitored by an AMF event + type: object + properties: + presenceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + ladnInfo: + $ref: '#/components/schemas/LadnInfo' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nsiId: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + LadnInfo: + description: LADN Information + type: object + properties: + ladn: + type: string + presence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceState' + required: + - ladn + 5GsUserStateInfo: + description: Represents the 5GS User state of the UE for an access type + type: object + properties: + 5gsUserState: + $ref: '#/components/schemas/5GsUserState' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - 5gsUserState + - accessType + TrafficDescriptor: + description: Represents the Traffic Descriptor + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dddTrafficDescriptorList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DddTrafficDescriptor' + minItems: 1 + UEIdExt: + description: UE Identity + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + + AmfEventSubsSyncInfo: + description: AMF Event Subscriptions Information for synchronization + type: object + properties: + subscriptionList: + type: array + items: + $ref: '#/components/schemas/AmfEventSubscriptionInfo' + minItems: 1 + required: + - subscriptionList + + AmfEventSubscriptionInfo: + description: Individual AMF Event Subscription Information + type: object + properties: + subId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + refIdList: + type: array + items: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + minItems: 1 + oldSubId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - subId + - refIdList + + TargetArea: + description: TA list or TAI range list or any TA + type: object + properties: + taList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + anyTa: + type: boolean + default: false + + SnssaiTaiMapping: + description: List of restricted or unrestricted S-NSSAIs per TAI(s) + type: object + properties: + reportingArea: + $ref: '#/components/schemas/TargetArea' + accessTypeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + supportedSnssaiList: + type: array + items: + $ref: '#/components/schemas/SupportedSnssai' + minItems: 1 + required: + - reportingArea + + UeAccessBehaviorReportItem: + description: Report Item for UE Access Behavior Trends event. + type: object + properties: + stateTransitionType: + $ref: '#/components/schemas/AccessStateTransitionType' + spacing: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - stateTransitionType + - spacing + - duration + + IdleStatusIndication: + description: Represents the idle status indication. + type: object + properties: + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + activeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + subsRegTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + edrxCycleLength: + type: integer + suggestedNumOfDlPackets: + type: integer + + UeInAreaFilter: + description: Additional filters for UE in Area Report event + type: object + properties: + ueType: + $ref: '#/components/schemas/UeType' + aerialSrvDnnInd: + type: boolean + default: false + ueIdOmitInd: + type: boolean + default: false + + SupportedSnssai: + description: Supported S-NSSAIs + type: object + properties: + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + restrictionInd: + type: boolean + default: false + required: + - sNssai + + UeLocationTrendsReportItem: + description: Report Item for UE Location Trends event. + type: object + properties: + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + n3gaLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/N3gaLocation' + spacing: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - spacing + - duration + - timestamp + + DispersionArea: + description: Dispersion Area + type: object + properties: + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + ncgiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + minItems: 1 + ecgiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + minItems: 1 + n3gaInd: + type: boolean + default: false + + MmTransactionLocationReportItem: + description: UE MM Transaction Report Item per Location + type: object + properties: + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + n3gaLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/N3gaLocation' + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + transactions: + type: integer + required: + - timestamp + - transactions + + MmTransactionSliceReportItem: + description: UE MM Transaction Report Item per Slice + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + transactions: + type: integer + required: + - timestamp + - transactions + + AmfEventType: + description: Describes the supported event types of Namf_EventExposure Service + anyOf: + - type: string + enum: + - LOCATION_REPORT + - PRESENCE_IN_AOI_REPORT + - TIMEZONE_REPORT + - ACCESS_TYPE_REPORT + - REGISTRATION_STATE_REPORT + - CONNECTIVITY_STATE_REPORT + - REACHABILITY_REPORT + - COMMUNICATION_FAILURE_REPORT + - UES_IN_AREA_REPORT + - SUBSCRIPTION_ID_CHANGE + - SUBSCRIPTION_ID_ADDITION + - SUBSCRIPTION_TERMINATION + - LOSS_OF_CONNECTIVITY + - 5GS_USER_STATE_REPORT + - AVAILABILITY_AFTER_DDN_FAILURE + - TYPE_ALLOCATION_CODE_REPORT + - FREQUENT_MOBILITY_REGISTRATION_REPORT + - SNSSAI_TA_MAPPING_REPORT + - UE_LOCATION_TRENDS + - UE_ACCESS_BEHAVIOR_TRENDS + - UE_MM_TRANSACTION_REPORT + - type: string + AmfEventTrigger: + description: Describes how AMF should generate the report for the event + anyOf: + - type: string + enum: + - ONE_TIME + - CONTINUOUS + - PERIODIC + - type: string + LocationFilter : + description: Describes the supported filters of LOCATION_REPORT event type + anyOf: + - type: string + enum: + - TAI + - CELL_ID + - RAN_NODE + - N3IWF + - UE_IP + - UDP_PORT + - TNAP_ID + - GLI + - TWAP_ID + - type: string + UeReachability: + description: Describes the reachability of the UE + anyOf: + - type: string + enum: + - UNREACHABLE + - REACHABLE + - REGULATORY_ONLY + - type: string + RmState: + description: Describes the registration management state of a UE + anyOf: + - type: string + enum: + - REGISTERED + - DEREGISTERED + - type: string + CmState: + description: Describes the connection management state of a UE + anyOf: + - type: string + enum: + - IDLE + - CONNECTED + - type: string + 5GsUserState: + description: Describes the 5GS User State of a UE + anyOf: + - type: string + enum: + - DEREGISTERED + - CONNECTED_NOT_REACHABLE_FOR_PAGING + - CONNECTED_REACHABLE_FOR_PAGING + - NOT_PROVIDED_FROM_AMF + - type: string + LossOfConnectivityReason: + description: Describes the reason for loss of connectivity + anyOf: + - type: string + enum: + - DEREGISTERED + - MAX_DETECTION_TIME_EXPIRED + - PURGED + - UNAVAILABLE_PERIOD + - type: string + + ReachabilityFilter: + description: Event filter for REACHABILITY_REPORT event type + anyOf: + - type: string + enum: + - UE_REACHABILITY_STATUS_CHANGE + - UE_REACHABLE_DL_TRAFFIC + - type: string + + UeType: + description: Describes the type of UEs + anyOf: + - type: string + enum: + - AERIAL_UE + - type: string + + AccessStateTransitionType: + description: Access State Transition Type. + anyOf: + - type: string + enum: + - ACCESS_TYPE_CHANGE_3GPP + - ACCESS_TYPE_CHANGE_N3GPP + - RM_STATE_CHANGE_DEREGISTERED + - RM_STATE_CHANGE_REGISTERED + - CM_STATE_CHANGE_IDLE + - CM_STATE_CHANGE_CONNECTED + - HANDOVER + - MOBILITY_REGISTRATION_UPDATE + - type: string + + SubTerminationReason: + description: Subscription Termination Reason. + anyOf: + - type: string + enum: + - INVALID_SUBSCRIPTION + - SUBSCRIPTION_NOT_AUTHORIZED + - type: string diff --git a/TS29518_Namf_Location.yaml b/TS29518_Namf_Location.yaml new file mode 100644 index 0000000..c434cf6 --- /dev/null +++ b/TS29518_Namf_Location.yaml @@ -0,0 +1,660 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Namf_Location + description: | + AMF Location Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +security: + - {} + - oAuth2ClientCredentials: + - namf-loc + +externalDocs: + description: 3GPP TS 29.518 V18.4.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-loc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /{ueContextId}/provide-pos-info: + post: + summary: Namf_Location ProvidePositioningInfo service Operation + tags: + - Individual UE context (Document) + operationId: ProvidePositioningInfo + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RequestPosInfo' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProvidePosInfoExt' + '204': + description: Successful accept of location request with no information returned. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + description: Conflict + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsProvidePosInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + description: Unexpected error + callbacks: + onUELocationNotification: + '{$request.body#/locationNotificationUri}': + post: + requestBody: + description: UE Location Event Notification + content: + application/json: + schema: + $ref: '#/components/schemas/NotifiedPosInfoExt' + responses: + '204': + description: Expected response to a successful callback processing + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + /{ueContextId}/provide-loc-info: + post: + summary: Namf_Location ProvideLocationInfo service Operation + tags: + - Individual UE context (Document) + operationId: ProvideLocationInfo + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RequestLocInfo' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProvideLocInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueContextId}/cancel-pos-info: + post: + summary: Namf_Location CancelLocation service operation + tags: + - Individual UE context (Document) + operationId: CancelLocation + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|imei-[0-9]{15}|imeisv-[0-9]{16}|.+)$' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CancelPosInfo' + required: true + responses: + '204': + description: Expected response to a successful cancellation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-loc: Access to the Namf_Location API + schemas: + RequestPosInfo: + description: Data within Provide Positioning Information Request + type: object + properties: + lcsClientType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ExternalClientType' + lcsLocation: + $ref: '#/components/schemas/LocationType' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + requestedRangingSlResult: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangingSlResult' + minItems: 1 + relatedUEs: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RelatedUE' + minItems: 1 + lmfId: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + priority: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsPriority' + lcsQoS: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + velocityRequested: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityRequested' + lcsSupportedGADShapes: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes' + additionalLcsSuppGADShapes: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/SupportedGADShapes' + minItems: 1 + locationNotificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + lcsServiceType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsServiceType' + ldrType: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrType' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + lirGmlcCallBackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + lirReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LirReference' + periodicEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PeriodicEventInfo' + areaEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AreaEventInfo' + motionEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MotionEventInfo' + externalClientIdentification: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/ExternalClientIdentification' + afID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + codeWord: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/CodeWord' + uePrivacyRequirements: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/UePrivacyRequirements' + scheduledLocTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reliableLocReq: + type: boolean + default: false + intermediateLocationInd: + type: boolean + default: false + maxRespTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + ueUnawareInd: + type: boolean + enum: + - true + lpHapType: + $ref: '#/components/schemas/LpHapType' + evtRptAllowedAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/ReportingArea' + minItems: 1 + maxItems: 250 + reportingInd: + allOf: + - $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/ReportingInd' + default: INSIDE_REPORTING + integrityRequirements: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/IntegrityRequirements' + upLocRepInfoAf: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/UpLocRepInfoAf' + mappedQoSEps: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MappedLocationQoSEps' + required: + - lcsClientType + - lcsLocation + + + ProvidePosInfoExt: + description: Extended provided positioning information for UEs + allOf: + - $ref: '#/components/schemas/ProvidePosInfo' + - $ref: '#/components/schemas/AddProvidePosInfos' + + ProvidePosInfo: + description: Data within Provide Positioning Information Response + type: object + properties: + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + localLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocalArea' + accuracyFulfilmentIndicator: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AccuracyFulfilmentIndicator' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + velocityEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + positioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethodAndUsage' + minItems: 0 + maxItems: 9 + gnssPositioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 0 + maxItems: 9 + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + targetServingNode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetMmeName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + targetMmeRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + utranSrvccInd: + type: boolean + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + barometricPressure: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/BarometricPressure' + altitude: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Altitude' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + servingLMFIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + locationPrivacyVerResult: + $ref: '#/components/schemas/LocationPrivacyVerResult' + achievedQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MinorLocationQoS' + directReportInd: + type: boolean + default: false + acceptedPeriodicEventInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PeriodicEventInfo' + haGnssMetrics: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/HighAccuracyGnssMetrics' + indoorOutdoorInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/IndoorOutdoorInd' + losNlosMeasureInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LosNlosMeasureInd' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + + + NotifiedPosInfoExt: + description: Extended notified positioning information for UEs + allOf: + - $ref: '#/components/schemas/NotifiedPosInfo' + - $ref: '#/components/schemas/AddNotifiedPosInfos' + + NotifiedPosInfo: + description: Data within EventNotify notification + type: object + properties: + locationEvent: + $ref: '#/components/schemas/LocationEvent' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + locationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + localLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocalArea' + ageOfLocationEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + velocityEstimate: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + positioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethodAndUsage' + minItems: 0 + maxItems: 9 + gnssPositioningDataList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 0 + maxItems: 9 + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + servingNode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetMmeName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + targetMmeRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + utranSrvccInd: + type: boolean + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + barometricPressure: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/BarometricPressure' + altitude: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Altitude' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + servingLMFIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + terminationCause: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/TerminationCause' + achievedQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/MinorLocationQoS' + mscServerId: + $ref: 'TS29503_Nudm_UECM.yaml#/components/schemas/E164Number' + haGnssMetrics: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/HighAccuracyGnssMetrics' + indoorOutdoorInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/IndoorOutdoorInd' + losNlosMeasureInd: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LosNlosMeasureInd' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + required: + - locationEvent + + + RequestLocInfo: + description: Data within Provide Location Information Request + type: object + properties: + req5gsLoc: + type: boolean + default: false + reqCurrentLoc: + type: boolean + default: false + reqRatType: + type: boolean + default: false + reqTimeZone: + type: boolean + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ProvideLocInfo: + description: Data within Provide Location Information Response + type: object + properties: + currentLoc: + type: boolean + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + additionalLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + geoInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + locationAge: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/AgeOfLocationEstimate' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + timezone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + + CancelPosInfo: + description: Data within a Cancel Location Request + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LdrReference' + servingLMFIdentification: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LMFIdentification' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + - hgmlcCallBackURI + - ldrReference + + ProblemDetailsProvidePosInfo: + description: Handover from 5GS to EPS Error Details. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ProvidePosInfo' + + AddNotifiedPosInfos: + type: object + properties: + addProvidePosInfos: + type: array + items: + $ref: '#/components/schemas/NotifiedPosInfo' + minItems: 1 + + AddProvidePosInfos: + type: object + properties: + addProvidePosInfos: + type: array + items: + $ref: '#/components/schemas/ProvidePosInfo' + minItems: 1 + + + LocationType: + description: Type of location measurement requested + anyOf: + - type: string + enum: + - CURRENT_LOCATION + - CURRENT_OR_LAST_KNOWN_LOCATION + - NOTIFICATION_VERIFICATION_ONLY + - DEFERRED_LOCATION + - type: string + + LocationEvent: + description: Type of events initiating location procedures + anyOf: + - type: string + enum: + - EMERGENCY_CALL_ORIGINATION + - EMERGENCY_CALL_RELEASE + - EMERGENCY_CALL_HANDOVER + - ACTIVATION_OF_DEFERRED_LOCATION + - UE_MOBILITY_FOR_DEFERRED_LOCATION + - CANCELLATION_OF_DEFERRED_LOCATION + - type: string + + LocationPrivacyVerResult: + description: The result of location privacy verification by UE + anyOf: + - type: string + enum: + - LOCATION_ALLOWED + - LOCATION_NOT_ALLOWED + - RESPONSE_TIME_OUT + - type: string + + LpHapType: + description: Type of Low Power and/or High Accuracy Positioning + anyOf: + - type: string + enum: + - LOW_POW_HIGH_ACCU_POS + - type: string diff --git a/TS29518_Namf_MBSBroadcast.yaml b/TS29518_Namf_MBSBroadcast.yaml new file mode 100644 index 0000000..d5864fc --- /dev/null +++ b/TS29518_Namf_MBSBroadcast.yaml @@ -0,0 +1,901 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.3 + title: Namf_MBSBroadcast + description: | + AMF MBSBroadcast Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.518 V18.4.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-mbs-bc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - namf-mbs-bc + +paths: + /mbs-contexts: + post: + summary: Namf_MBSBroadcast ContextCreate service Operation + tags: + - Broadcast MBS session contexts collection (Collection) + operationId: ContextCreate + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/ContextCreateReqData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + callbacks: + contextStatusNotification: + '{$request.body#/notifyUri}': + post: + requestBody: # notification request without binary body part + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ContextStatusNotification' + multipart/related: # notification request with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/ContextStatusNotification' + binaryDataN2Information1: + type: string + format: binary + binaryDataN2Information2: + type: string + format: binary + binaryDataN2Information3: + type: string + format: binary + binaryDataN2Information4: + type: string + format: binary + binaryDataN2Information5: + type: string + format: binary + binaryDataN2Information6: + type: string + format: binary + binaryDataN2Information7: + type: string + format: binary + binaryDataN2Information8: + type: string + format: binary + binaryDataN2Information9: + type: string + format: binary + binaryDataN2Information10: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + responses: + '200': + description: successful notification response with content + content: + multipart/related: # notification response with binary body part(s) + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/ContextStatusNotificationResponse' + binaryDataN2Information1: + type: string + format: binary + binaryDataN2Information2: + type: string + format: binary + binaryDataN2Information3: + type: string + format: binary + binaryDataN2Information4: + type: string + format: binary + binaryDataN2Information5: + type: string + format: binary + binaryDataN2Information6: + type: string + format: binary + binaryDataN2Information7: + type: string + format: binary + binaryDataN2Information8: + type: string + format: binary + binaryDataN2Information9: + type: string + format: binary + binaryDataN2Information10: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '204': + description: successful notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + responses: + '201': + description: MBS Broadcast context created successfully + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/namf-mbs-bc//mbs-contexts/{mbsContextRef}' + required: true + schema: + type: string + content: + application/json: # message without binary body part(s) + schema: + $ref: '#/components/schemas/ContextCreateRspData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Response parts + jsonData: + $ref: '#/components/schemas/ContextCreateRspData' + binaryDataN2Information1: + type: string + format: binary + binaryDataN2Information2: + type: string + format: binary + binaryDataN2Information3: + type: string + format: binary + binaryDataN2Information4: + type: string + format: binary + binaryDataN2Information5: + type: string + format: binary + binaryDataN2Information6: + type: string + format: binary + binaryDataN2Information7: + type: string + format: binary + binaryDataN2Information8: + type: string + format: binary + binaryDataN2Information9: + type: string + format: binary + binaryDataN2Information10: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-contexts/{mbsContextRef}: + delete: + summary: Namf_MBSBroadcast ContextDelete service Operation + tags: + - Individual broadcast MBS session context (Document) + operationId: ContextDelete + parameters: + - name: mbsContextRef + in: path + required: true + description: Unique ID of the broadcast MSB session context to be deleted + schema: + type: string + responses: + '204': + description: successful deletion + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-contexts/{mbsContextRef}/update: + post: + summary: Namf_MBSBroadcast ContextUpdate service Operation + tags: + - Individual broadcast MBS session context (Document) + operationId: ContextUpdate + parameters: + - name: mbsContextRef + in: path + description: Unique ID of the broadcast MSB session context to be updated + required: true + schema: + type: string + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/ContextUpdateReqData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: MBS Broadcast context updated successfully + content: + application/json: # message without binary body part(s) + schema: + $ref: '#/components/schemas/ContextUpdateRspData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Response parts + jsonData: + $ref: '#/components/schemas/ContextUpdateRspData' + binaryDataN2Information1: + type: string + format: binary + binaryDataN2Information2: + type: string + format: binary + binaryDataN2Information3: + type: string + format: binary + binaryDataN2Information4: + type: string + format: binary + binaryDataN2Information5: + type: string + format: binary + binaryDataN2Information6: + type: string + format: binary + binaryDataN2Information7: + type: string + format: binary + binaryDataN2Information8: + type: string + format: binary + binaryDataN2Information9: + type: string + format: binary + binaryDataN2Information10: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information1: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information2: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information3: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information4: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information5: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information6: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information7: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information8: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information9: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataN2Information10: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '204': + description: MBS Broadcast context updated successfully. No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-mbs-bc: Access to the Namf_MBSBroadcast API + + schemas: + +# +# STRUCTURED DATA TYPES +# + ContextCreateReqData: + description: Data within ContextCreate Request + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + mbsServiceAreaInfoList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo' + minItems: 1 + mbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + n2MbsSmInfo: + $ref: '#/components/schemas/N2MbsSmInfo' + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + maxResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + mbsmfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + mbsmfServiceInstId: + type: string + associatedSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AssociatedSessionId' + required: + - mbsSessionId + - n2MbsSmInfo + - notifyUri + - snssai + oneOf: + - required: [ mbsServiceArea ] + - required: [ mbsServiceAreaInfoList ] + + ContextCreateRspData: + description: Data within ContextCreate Response + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + n2MbsSmInfoList: + type: array + items: + $ref: '#/components/schemas/N2MbsSmInfo' + minItems: 1 + maxItems: 10 + operationStatus: + $ref: '#/components/schemas/OperationStatus' + required: + - mbsSessionId + + + ContextUpdateReqData: + description: Data within ContextUpdate Request + type: object + properties: + mbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + mbsServiceAreaInfoList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo' + minItems: 1 + n2MbsSmInfo: + $ref: '#/components/schemas/N2MbsSmInfo' + ranIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + noNgapSignallingInd: + type: boolean + enum: + - true + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + maxResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + n2MbsInfoChangeInd: + type: boolean + not: + required: [ mbsServiceArea, mbsServiceAreaInfoList ] + + ContextStatusNotification: + description: Data within ContextStatusNotify Request + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + n2MbsSmInfoList: + type: array + items: + $ref: '#/components/schemas/N2MbsSmInfo' + minItems: 1 + maxItems: 10 + operationEvents: + type: array + items: + $ref: '#/components/schemas/OperationEvent' + minItems: 1 + operationStatus: + $ref: '#/components/schemas/OperationStatus' + releasedInd: + type: boolean + enum: + - true + required: + - mbsSessionId + + ContextStatusNotificationResponse: + description: Data within ContextStatusNotify Response + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + n2MbsSmInfoList: + type: array + items: + $ref: '#/components/schemas/N2MbsSmInfo' + minItems: 1 + maxItems: 10 + required: + - mbsSessionId + + + ContextUpdateRspData: + description: Data within ContextUpdate Response + type: object + properties: + n2MbsSmInfoList: + type: array + items: + $ref: '#/components/schemas/N2MbsSmInfo' + minItems: 1 + maxItems: 10 + operationStatus: + $ref: '#/components/schemas/OperationStatus' + + N2MbsSmInfo: + description: N2 MBS Session Management information + type: object + properties: + ngapIeType: + $ref: '#/components/schemas/NgapIeType' + ngapData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ranId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + required: + - ngapIeType + - ngapData + + OperationEvent: + description: Operation Event for a Broadcast MBS Session. + type: object + properties: + opEventType: + $ref: '#/components/schemas/OpEventType' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ngranFailureEventList: + type: array + items: + $ref: '#/components/schemas/NgranFailureEvent' + minItems: 1 + required: + - opEventType + + + NgranFailureEvent: + description: NG-RAN failure event for a NG-RAN + type: object + properties: + ngranId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + ngranFailureIndication: + $ref: '#/components/schemas/NgranFailureIndication' + required: + - ngranId + - ngranFailureIndication + + +# +# SIMPLE DATA TYPES +# + + +# +# ENUMERATIONS +# + + OperationStatus: + description: Status of a Broadcast MBS session start or update operation. + anyOf: + - type: string + enum: + - MBS_SESSION_START_COMPLETE + - MBS_SESSION_START_INCOMPLETE + - MBS_SESSION_UPDATE_COMPLETE + - MBS_SESSION_UPDATE_INCOMPLETE + - type: string + + NgapIeType: + description: NGAP Information Element Type + anyOf: + - type: string + enum: + - MBS_SES_REQ + - MBS_SES_RSP + - MBS_SES_FAIL + - MBS_SES_REL_RSP + - BC_TRA_REQ + - BC_TRA_RSP + - BC_TRA_FAIL + - type: string + + OpEventType: + description: Operation Event Type. + anyOf: + - type: string + enum: + - AMF_CHANGE + - NG_RAN_EVENT + - type: string + + NgranFailureIndication: + description: Indicates a NG-RAN failure event. + anyOf: + - type: string + enum: + - NG_RAN_RESTART_OR_START + - NG_RAN_FAILURE_WITHOUT_RESTART + - NG_RAN_NOT_REACHABLE + - NG_RAN_REQUIRED_RELEASE + - type: string diff --git a/TS29518_Namf_MBSCommunication.yaml b/TS29518_Namf_MBSCommunication.yaml new file mode 100644 index 0000000..bf36bfb --- /dev/null +++ b/TS29518_Namf_MBSCommunication.yaml @@ -0,0 +1,267 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.1 + title: Namf_MBSCommunication + description: | + AMF Communication Service for MBS. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.518 V18.0.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-mbs-comm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - namf-mbs-comm + +paths: + /n2-messages/transfer: + post: + summary: Namf_MBSCommunication N2 Message Transfer service Operation + tags: + - N2Messages Handler (custom operation) + operationId: N2MessageTransfer + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/MbsN2MessageTransferReqData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + required: true + callbacks: + notification: + '{$request.body#/notifyUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: successful notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + responses: + '200': + description: MBS N2 Message Transfer successfully initiated + content: + application/json: + schema: + $ref: '#/components/schemas/MbsN2MessageTransferRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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': + description: Not Found + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-mbs-comm: Access to the Namf_MBSCommunication API + + schemas: + +# +# STRUCTURED DATA TYPES +# + + MbsN2MessageTransferReqData: + description: Data within MBS N2 Message Transfer Request + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + n2MbsSmInfo: + $ref: '#/components/schemas/N2MbsSmInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + ranNodeIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + required: + - mbsSessionId + - n2MbsSmInfo + + + + MbsN2MessageTransferRspData: + description: Data within MBS N2 Message Transfer Response + type: object + properties: + result: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InformationTransferResult' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + failureList: + type: array + items: + $ref: '#/components/schemas/RanFailure' + minItems: 1 + required: + - result + + + + + N2MbsSmInfo: + description: N2 MBS Session Management information + type: object + properties: + ngapIeType: + $ref: '#/components/schemas/MbsNgapIeType' + ngapData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - ngapIeType + - ngapData + + Notification: + description: Data within Notify Request + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + failureList: + type: array + items: + $ref: '#/components/schemas/RanFailure' + minItems: 1 + notifyCorrelationId: + type: string + required: + - mbsSessionId + - failureList + + RanFailure: + description: Description of an MBS related N2 procedure failure + type: object + properties: + ranId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + ranFailureCause: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NgApCause' + ranFailureIndication: + $ref: '#/components/schemas/RanFailureIndication' + required: + - ranId + oneOf: + - required: [ ranFailureCause ] + - required: [ ranFailureIndication ] + +# +# SIMPLE DATA TYPES +# + + +# +# ENUMERATIONS +# + + MbsNgapIeType: + description: NGAP Information Element Type + anyOf: + - type: string + enum: + - MBS_SES_ACT_REQ + - MBS_SES_DEACT_REQ + - MBS_SES_UPD_REQ + - type: string + + RanFailureIndication: + description: Indicates a NG-RAN failure event + anyOf: + - type: string + enum: + - NG_RAN_FAILURE_WITHOUT_RESTART + - NG_RAN_NOT_REACHABLE + - type: string diff --git a/TS29518_Namf_MT.yaml b/TS29518_Namf_MT.yaml new file mode 100644 index 0000000..c4403c6 --- /dev/null +++ b/TS29518_Namf_MT.yaml @@ -0,0 +1,429 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.4 + title: Namf_MT + description: | + AMF Mobile Terminated Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +security: + - {} + - oAuth2ClientCredentials: + - namf-mt + +externalDocs: + description: 3GPP TS 29.518 V18.4.0; 5G System; Access and Mobility Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.518/' + +servers: + - url: '{apiRoot}/namf-mt/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + '/ue-contexts/{ueContextId}': + get: + summary: Namf_MT Provide Domain Selection Info service Operation + tags: + - ueContext (Document) + operationId: Provide Domain Selection Info + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|.+)$' + - name: info-class + in: query + description: UE Context Information Class + schema: + $ref: '#/components/schemas/UeContextInfoClass' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: old-guami + in: query + description: Old GUAMI + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + responses: + '200': + description: Requested UE Context Information returned + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /ue-contexts/{ueContextId}/ue-reachind: + put: + summary: Namf_MT EnableUEReachability service Operation + tags: + - ueReachInd (Document) + operationId: EnableUeReachability + security: + - {} + - oAuth2ClientCredentials: + - namf-mt + - oAuth2ClientCredentials: + - namf-mt + - namf-mt:ue-reachind + parameters: + - name: ueContextId + in: path + description: UE Context Identifier + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EnableUeReachabilityReqData' + required: true + responses: + '200': + description: UE has become reachable as desired + content: + application/json: + schema: + $ref: '#/components/schemas/EnableUeReachabilityRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsEnableUeReachability' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: Gateway Timeout + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsEnableUeReachability' + default: + description: Unexpected error + + /ue-contexts/enable-group-reachability: + post: + summary: Namf_MT EnableGroupReachability service Operation + tags: + - ueContexts (collection) + operationId: EnableGroupReachability + security: + - {} + - oAuth2ClientCredentials: + - namf-mt + - oAuth2ClientCredentials: + - namf-mt + - namf-mt:enable-group-reachability + requestBody: + description: list of UEs requested to be made reachable for the related TMGI + content: + application/json: + schema: + $ref: '#/components/schemas/EnableGroupReachabilityReqData' + required: true + responses: + '200': + description: Successful response. + content: + application/json: + schema: + $ref: '#/components/schemas/EnableGroupReachabilityRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + description: Unexpected error + callbacks: + reachabilityNotification: + '{request.body#/reachabilityNotifyUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ReachabilityNotificationData' + responses: + '204': + description: UE reachability notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + namf-mt: Access to the Namf_MT API + namf-mt:ue-reachind: > + Access to the EnableUeReachability service operation + namf-mt:enable-group-reachability: > + Access to the EnableGroupReachability service operation + + schemas: + EnableUeReachabilityReqData: + description: Data within the Enable UE Reachability Request + type: object + properties: + reachability: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/UeReachability' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oldGuami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + extBufSupport: + type: boolean + default: false + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + ppi: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/Ppi' + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + required: + - reachability + EnableUeReachabilityRspData: + description: Data within the Enable UE Reachability Response + type: object + properties: + reachability: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/UeReachability' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - reachability + UeContextInfo: + description: UE Context Information + type: object + properties: + supportVoPS: + type: boolean + supportVoPSn3gpp: + type: boolean + lastActTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + ProblemDetailsEnableUeReachability: + description: Enable UE Reachability Error Detail + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoEnableUeReachability' + AdditionInfoEnableUeReachability: + description: Additional information to be returned in EnableUeReachability error response + type: object + properties: + maxWaitingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + EnableGroupReachabilityReqData: + description: Data within the Enable Group Reachability Request + type: object + properties: + ueInfoList: + type: array + items: + $ref: '#/components/schemas/UeInfo' + minItems: 1 + tmgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + reachabilityNotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mbsServiceAreaInfoList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo' + minItems: 1 + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueInfoList + - tmgi + EnableGroupReachabilityRspData: + description: Data within the Enable Group Reachability Response + type: object + properties: + ueConnectedList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UeInfo: + description: list of UEs requested to be made reachable for the MBS Session + type: object + properties: + ueList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + required: + - ueList + + ReachabilityNotificationData: + description: Data within the UE Reachability Info Notify + type: object + properties: + reachableUeList: + type: array + items: + $ref: '#/components/schemas/ReachableUeInfo' + minItems: 1 + unreachableUeList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + ReachableUeInfo: + description: Contains the reachable UE Information + type: object + properties: + ueList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + userLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + required: + - ueList + + UeContextInfoClass: + description: Indicates the UE Context information class + anyOf: + - type: string + enum: + - TADS + - type: string diff --git a/TS29519_Application_Data.yaml b/TS29519_Application_Data.yaml new file mode 100644 index 0000000..3facb9d --- /dev/null +++ b/TS29519_Application_Data.yaml @@ -0,0 +1,4150 @@ +openapi: 3.0.0 + +info: + version: '-' + title: Unified Data Repository Service API file for Application Data + description: | + The API version is defined in 3GPP TS 29.504 + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.519 V18.4.0; 5G System; Usage of the Unified Data Repository Service for Policy Data, + Application Data and Structured Data for Exposure. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.519/' + +paths: + /application-data/pfds: + get: + summary: Retrieve PFDs for application identifier(s) + operationId: ReadPFDData + tags: + - PFD Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:pfds:read + parameters: + - name: appId + in: query + description: > + Contains the information of the application identifier(s) for the querying PFD + Data resource. If none appId is included in the URI, it applies to all application + identifier(s) for the querying PFD Data resource. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: A representation of PFDs for request applications is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdDataForAppExt' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/pfds/{appId}: + get: + summary: Retrieve the corresponding PFDs of the specified application identifier + operationId: ReadIndividualPFDData + tags: + - Individual PFD Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:pfds:read + parameters: + - name: appId + in: path + description: > + Indicate the application identifier for the request pfd(s). It shall apply the + format of Data type ApplicationId. + required: true + schema: + type: string + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + A representation of PFDs for the request application identified by the application + identifier is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdDataForAppExt' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete the corresponding PFDs of the specified application identifier + operationId: DeleteIndividualPFDData + tags: + - Individual PFD Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:pfds:modify + parameters: + - name: appId + in: path + description: > + Indicate the application identifier for the request pfd(s). It shall apply the + format of Data type ApplicationId. + required: true + schema: + type: string + responses: + '204': + description: > + Successful case. The Individual PFD Data resource related to the application + identifier was deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create or update the corresponding PFDs for the specified application identifier + operationId: CreateOrReplaceIndividualPFDData + tags: + - Individual PFD Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:pfds:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdDataForAppExt' + parameters: + - name: appId + in: path + description: > + Indicate the application identifier for the request pfd(s). It shall apply the format + of Data type ApplicationId. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual PFD Data resource related to the application-identifier + is confirmed and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdDataForAppExt' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/pfds/{appId}' + required: true + schema: + type: string + '200': + description: > + Successful case. The upgrade of an Individual PFD Data resource related to the + application identifier is confirmed and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdDataForAppExt' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/influenceData: + get: + summary: Retrieve Traffic Influence Data + operationId: ReadInfluenceData + tags: + - Influence Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:read + parameters: + - name: influence-Ids + in: query + description: Each element identifies a service. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: dnns + in: query + description: Each element identifies a DNN. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + - name: snssais + in: query + description: Each element identifies a slice. + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: internal-Group-Ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: internal-group-ids-Add + in: query + description: Each element identifies an internal Group. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: subscriber-categories + in: query + description: > + Each element identifies a subscriber category. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + - name: supp-feat + in: query + required: false + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The Traffic Influence Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TrafficInfluData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/influenceData/{influenceId}: + put: + summary: Create or update an individual Influence Data resource + operationId: CreateOrReplaceIndividualInfluenceData + tags: + - Individual Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluData' + parameters: + - name: influenceId + in: path + description: > + The Identifier of an Individual Influence Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual Traffic Influence Data resource is confirmed + and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/influenceData/{influenceId}' + required: true + schema: + type: string + '200': + description: > + The update of an Individual Traffic Influence Data resource is confirmed and a + response body containing Traffic Influence Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify part of the properties of an individual Influence Data resource + operationId: UpdateIndividualInfluenceData + tags: + - Individual Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/TrafficInfluDataPatch' + parameters: + - name: influenceId + in: path + description: > + The Identifier of an Individual Influence Data to be updated. It shall apply + the format of Data type string. + required: true + schema: + type: string + responses: + '200': + description: > + The update of an Individual Traffic Influence Data resource is confirmed and + a response body containing Traffic Influence Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluData' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual Influence Data resource + operationId: DeleteIndividualInfluenceData + tags: + - Individual Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:modify + parameters: + - name: influenceId + in: path + description: > + The Identifier of an Individual Influence Data to be deleted. It shall apply + the format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The Individual Influence Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/influenceData/subs-to-notify: + post: + summary: Create a new Individual Influence Data Subscription resource + operationId: CreateIndividualInfluenceDataSubscription + tags: + - Influence Data Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:subscriptions:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + responses: + '201': + description: The subscription was created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + trafficInfluenceDataChangeNotification: + '{$request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + oneOf: + - $ref: '#/components/schemas/TrafficInfluData' + - $ref: '#/components/schemas/TrafficInfluDataNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was successful + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Read Influence Data Subscriptions + operationId: ReadInfluenceDataSubscriptions + tags: + - Influence Data Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:subscriptions:read + parameters: + - name: dnn + in: query + description: Identifies a DNN. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: snssai + in: query + description: Identifies a slice. + required: false + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: internal-Group-Id + in: query + description: Identifies a group of users. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: supi + in: query + description: Identifies a user. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: internal-group-ids + in: query + description: > + Each element identifies an internal group. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: subscriber-categories + in: query + description: > + Each element identifies a subscriber category. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: roam-ue-plmn-ids + in: query + description: > + Each element identifies a PLMN. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + responses: + '200': + description: > + The subscription information as request in the request URI query parameter(s) + are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TrafficInfluSub' + minItems: 0 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/influenceData/subs-to-notify/{subscriptionId}: + get: + summary: Get an existing individual Influence Data Subscription resource + operationId: ReadIndividualInfluenceDataSubscription + tags: + - Individual Influence Data Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:subscriptions:read + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Influence Data Subscription + required: true + schema: + type: string + responses: + '200': + description: The subscription information is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Modify an existing individual Influence Data Subscription resource + operationId: ReplaceIndividualInfluenceDataSubscription + tags: + - Individual Influence Data Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:subscriptions:modify + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Influence Data Subscription. + required: true + schema: + type: string + responses: + '200': + description: The subscription was updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual Influence Data Subscription resource + operationId: DeleteIndividualInfluenceDataSubscription + tags: + - Individual Influence Data Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:influence-data:subscriptions:modify + parameters: + - name: subscriptionId + in: path + description: > + String identifying a subscription to the Individual Influence Data Subscription. + required: true + schema: + type: string + responses: + '204': + description: The subscription was terminated successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/bdtPolicyData: + get: + summary: Retrieve applied BDT Policy Data + operationId: ReadBdtPolicyData + tags: + - BdtPolicy Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:bdt-policy-data:read + parameters: + - name: bdt-policy-ids + in: query + description: Each element identifies a service. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: internal-group-ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + responses: + '200': + description: The applied BDT policy Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/BdtPolicyData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/bdtPolicyData/{bdtPolicyId}: + put: + summary: Create an individual applied BDT Policy Data resource + operationId: CreateIndividualAppliedBdtPolicyData + tags: + - Individual Applied BDT Policy Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:bdt-policy-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicyData' + parameters: + - name: bdtPolicyId + in: path + description: > + The Identifier of an Individual Applied BDT Policy Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual Applied BDT Policy Data resource is confirmed and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicyData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/bdtPolicyData/{bdtPolicyId} + 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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify part of the properties of an individual Applied BDT Policy Data resource + operationId: UpdateIndividualAppliedBdtPolicyData + tags: + - Individual Applied BDT Policy Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:bdt-policy-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/BdtPolicyDataPatch' + parameters: + - name: bdtPolicyId + in: path + description: > + The Identifier of an Individual Applied BDT Policy Data to be updated. It shall + apply the format of Data type string. + required: true + schema: + type: string + responses: + '200': + description: > + The update of an Individual Applied BDT Policy Data resource is confirmed and + a response body containing Applied BDT Policy Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicyData' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual Applied BDT Policy Data resource + operationId: DeleteIndividualAppliedBdtPolicyData + tags: + - Individual Applied BDT Policy Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:bdt-policy-data:modify + parameters: + - name: bdtPolicyId + in: path + description: > + The Identifier of an Individual Applied BDT Policy Data to be deleted. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The Individual Applied BDT Policy Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/iptvConfigData: + get: + summary: Retrieve IPTV configuration Data + operationId: ReadIPTVCongifurationData + tags: + - IPTV Configuration Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:iptv-config-data:read + parameters: + - name: config-ids + in: query + description: Each element identifies a configuration. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: dnns + in: query + description: Each element identifies a DNN. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + - name: snssais + in: query + description: Each element identifies a slice. + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + - name: inter-group-ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + responses: + '200': + description: The IPTV configuration data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IptvConfigData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/iptvConfigData/{configurationId}: + put: + summary: Create or update an individual IPTV configuration resource + operationId: CreateOrReplaceIndividualIPTVConfigurationData + tags: + - Individual IPTV Configuration Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:iptv-config-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + parameters: + - name: configurationId + in: path + description: > + The Identifier of an Individual IPTV Configuration Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual IPTV Configuration Data resource is confirmed and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '200': + description: The update of an Individual IPTV configuration resource. + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Partial update an individual IPTV configuration resource + operationId: PartialReplaceIndividualIPTVConfigurationData + tags: + - Individual IPTV Configuration Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:iptv-config-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: 'TS29522_IPTVConfiguration.yaml#/components/schemas/IptvConfigDataPatch' + parameters: + - name: configurationId + in: path + description: > + The Identifier of an Individual IPTV Configuration Data to be updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '200': + description: The update of an Individual IPTV configuration resource. + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual IPTV configuration resource + operationId: DeleteIndividualIPTVConfigurationData + tags: + - Individual IPTV Configuration Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:iptv-config-data:modify + parameters: + - name: configurationId + in: path + description: > + The Identifier of an Individual IPTV Configuration to be deleted. It shall + apply the format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The resource was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/serviceParamData: + get: + summary: Retrieve Service Parameter Data + operationId: ReadServiceParameterData + tags: + - Service Parameter Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:service-param-data:read + parameters: + - name: service-param-ids + in: query + description: Each element identifies a service. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: dnns + in: query + description: Each element identifies a DNN. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + - name: snssais + in: query + description: Each element identifies a slice. + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: internal-group-ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + - name: ue-ipv4s + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + - name: ue-ipv6s + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + - name: ue-macs + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + - name: any-ue + in: query + description: Indicates whether the request is for any UE. + required: false + schema: + type: boolean + - name: roam-ue-net-descs + in: query + description: > + Each element identifies oner or more PLMNs for a roaming UE. + required: false + schema: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/NetworkDescription' + minItems: 1 + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The Service Parameter Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceParameterData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/serviceParamData/{serviceParamId}: + put: + summary: Create or update an individual Service Parameter Data resource + operationId: CreateOrReplaceServiceParameterData + tags: + - Individual Service Parameter Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:service-param-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + parameters: + - name: serviceParamId + in: path + description: > + The Identifier of an Individual Service Parameter Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual Service Parameter Data resource is confirmed + and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/serviceParamData/{serviceParamId}' + required: true + schema: + type: string + '200': + description: > + The update of an Individual Service Parameter Data resource is confirmed and + a response body containing Service Parameter Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify part of the properties of an individual Service Parameter Data resource + operationId: UpdateIndividualServiceParameterData + tags: + - Individual Service Parameter Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:service-parameter-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServiceParameterDataPatch' + parameters: + - name: serviceParamId + in: path + description: > + The Identifier of an Individual Service Parameter Data to be updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '200': + description: > + The update of an Individual Service Parameter Data resource is confirmed + and a response body containing Service Parameter Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual Service Parameter Data resource + operationId: DeleteIndividualServiceParameterData + tags: + - Individual Service Parameter Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:service-parameter-data:modify + parameters: + - name: serviceParamId + in: path + description: > + The Identifier of an Individual Service Parameter Data to be deleted. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The Individual Service Parameter Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/am-influence-data: + get: + summary: Retrieve AM Influence Data + operationId: ReadAmInfluenceData + tags: + - AM Influence Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:am-influence-data:read + parameters: + - name: am-influence-ids + in: query + description: Each element identifies a service. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: dnns + in: query + description: Each element identifies a DNN. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + - name: snssais + in: query + description: Each element identifies a slice. + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: dnn-snssai-infos + in: query + description: Each element identifies a combination of (DNN, S-NSSAI). + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + minItems: 1 + - name: internal-group-ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + - name: any-ue + in: query + description: Indicates whether the request is for any UE. + required: false + schema: + type: boolean + - name: supp-feat + in: query + required: false + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The AM Influence Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmInfluData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/am-influence-data/{amInfluenceId}: + put: + summary: Create or update an individual AM Influence Data resource + operationId: CreateOrReplaceIndividualAmInfluenceData + tags: + - Individual AM Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:am-influence-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluData' + parameters: + - name: amInfluenceId + in: path + description: > + The Identifier of an Individual AM Influence Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual AM Influence Data resource is confirmed and + a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/am-influence-data/{amInfluenceId}' + required: true + schema: + type: string + '200': + description: > + The update of an Individual AM Influence Data resource is confirmed and a response + body containing AM Influence Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify part of the properties of an individual AM Influence Data resource + operationId: UpdateIndividualAmInfluenceData + tags: + - Individual AM Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:am-influence-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AmInfluDataPatch' + parameters: + - name: amInfluenceId + in: path + description: > + The Identifier of an Individual AM Influence Data to be updated. It shall + apply the format of Data type string. + required: true + schema: + type: string + responses: + '200': + description: > + The update of an Individual AM Influence Data resource is confirmed and a + response body containing AM Influence Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluData' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual AM Influence Data resource + operationId: DeleteIndividualAmInfluenceData + tags: + - Individual AM Influence Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:am-influence-data:modify + parameters: + - name: amInfluenceId + in: path + description: > + The Identifier of an Individual AM Influence Data to be deleted. It shall + apply the format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The Individual AM Influence Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/subs-to-notify: + post: + summary: Create a subscription to receive notification of application data changes + operationId: CreateIndividualApplicationDataSubscription + tags: + - ApplicationDataSubscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:subs-to-notify:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationDataSubs' + responses: + '201': + description: > + Upon success, a response body containing a representation of each + Individual subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationDataSubs' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + applicationDataChangeNotif: + '{$request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationDataChangeNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was successful + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Read Application Data change Subscriptions + operationId: ReadApplicationDataChangeSubscriptions + tags: + - ApplicationDataSubscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:subs-to-notify:read + parameters: + - name: data-filter + in: query + description: The data filter for the query. + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/DataFilter' + responses: + '200': + description: > + The subscription information as request in the request URI query parameter(s) + are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationDataSubs' + minItems: 0 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/af-qos-data-sets: + get: + summary: Retrieve AF Requested QoS Data + operationId: ReadAFReqQoSData + tags: + - AF Requested QoS Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:af-qos-data-sets:read + parameters: + - name: dnns + in: query + description: Each element identifies a DNN + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + - name: snssais + in: query + description: Each element identifies a slice. + required: false + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + - name: internal-group-ids + in: query + description: Each element identifies a group of users. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + - name: supis + in: query + description: Each element identifies the user. + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + - name: data-set-ids + in: query + description: Each element identifies an Individual AF requested QoS resource. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feat + in: query + required: false + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The AF requested QoS Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AfRequestedQosData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/af-qos-data-sets/{afReqQosId}: + put: + summary: Create or update an Individual AF Requested QoS Data resource. + operationId: CreateIndividualAFReqQoSData + tags: + - Individual AF Requested QoS Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:af-qos-data-sets:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AfRequestedQosData' + parameters: + - name: afReqQosId + in: path + description: > + The Identifier of an Individual AF Requested QoS Data to be created or updated. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual AF Requested QoS Data resource is confirmed and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AfRequestedQosData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/af-qos-data-sets/{afReqQosId} + 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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify part of the properties of an individual AF requested QoS Data resource + operationId: UpdateIndividualAFRequestedQoSData + tags: + - Individual AF requested QoS Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:af-qos-data-sets:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AfRequestedQosDataPatch' + parameters: + - name: afReqQosId + in: path + description: > + The Identifier of an Individual AF Requested QoS Data to be updated. + required: true + schema: + type: string + responses: + '200': + description: > + The update of an Individual AF Requested QoS Data resource is confirmed and + a response body containing AF Requested QoS Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AfRequestedQosData' + '204': + description: No content + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual AF requested QoS Data resource + operationId: DeleteIndividualAFRequestedQosData + tags: + - Individual AF requested QoS Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:af-qos-data-sets:modify + parameters: + - name: afReqQosId + in: path + description: > + The Identifier of an Individual AF Requested QoS Data to be deleted. + required: true + schema: + type: string + responses: + '204': + description: The Individual AF requested QoS Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/subs-to-notify/{subsId}: + parameters: + - name: subsId + in: path + required: true + schema: + type: string + put: + summary: Modify a subscription to receive notification of application data changes + operationId: ReplaceIndividualApplicationDataSubscription + tags: + - IndividualApplicationDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:subs-to-notify:modify + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationDataSubs' + responses: + '200': + description: The individual subscription resource was updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationDataSubs' + '204': + description: > + The individual subscription resource was updated successfully and no + additional content is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete the individual Application Data subscription + operationId: DeleteIndividualApplicationDataSubscription + tags: + - IndividualApplicationDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:subs-to-notify:modify + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Get an existing individual Application Data Subscription resource + operationId: ReadIndividualApplicationDataSubscription + tags: + - IndividualApplicationDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:subs-to-notify:read + parameters: + - name: subsId + in: path + description: > + String identifying a subscription to the Individual Application Data Subscription + required: true + schema: + type: string + responses: + '200': + description: The subscription information is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ApplicationDataSubs' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/eas-deploy-data: + get: + summary: Retrieve EAS Deployment Information Data + operationId: ReadEasDeployData + tags: + - EAS Deployment Data (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:eas-deploy-data:read + parameters: + - name: dnn + in: query + description: Identifies a DNN. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: snssai + in: query + description: Identifies an S-NSSAI. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: internal-group-id + in: query + description: Identifies a group of users. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: appId + in: query + description: Identifies an application. + required: false + schema: + type: string + responses: + '200': + description: The EAS Deployment Data stored in the UDR are returned. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29591_Nnef_EASDeployment.yaml#/components/schemas/EasDeployInfoData' + minItems: 1 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /application-data/eas-deploy-data/{easDeployInfoId}: + get: + summary: Retrieve an individual EAS Deployment Data resource + operationId: ReadIndividualEasDeployData + tags: + - Individual EAS Deployment Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:eas-deploy-data:read + parameters: + - name: easDeployInfoId + description: > + String identifying an Individual EAS Deployment Information Data resource. + in: path + required: true + schema: + type: string + responses: + '200': + description: > + The EAS Deployment Data stored in the UDR for an Individual EAS Deployment + Information Data resource is returned. + content: + application/json: + schema: + $ref: 'TS29591_Nnef_EASDeployment.yaml#/components/schemas/EasDeployInfoData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create or update an individual EAS Deployment Data resource + operationId: CreateOrReplaceIndividualEasDeployData + tags: + - Individual EAS Deployment Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:eas-deploy-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29591_Nnef_EASDeployment.yaml#/components/schemas/EasDeployInfoData' + parameters: + - name: easDeployInfoId + in: path + description: > + The Identifier of an Individual EAS Deployment Data to be created or updated. + It shall apply the format of Data type string. + required: true + schema: + type: string + responses: + '201': + description: > + The creation of an Individual EAS Deployment Data resource is confirmed and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: 'TS29591_Nnef_EASDeployment.yaml#/components/schemas/EasDeployInfoData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nudr-dr//application-data/eas-deploy-data/{easDeployInfoId} + required: true + schema: + type: string + '200': + description: > + The update of an Individual EAS Deployment Data resource is confirmed and a response + body containing EAS Deployment Data shall be returned. + content: + application/json: + schema: + $ref: 'TS29591_Nnef_EASDeployment.yaml#/components/schemas/EasDeployInfoData' + '204': + description: No content + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an individual EAS Deployment Data resource + operationId: DeleteIndividualEasDeployData + tags: + - Individual EasDeployment Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:eas-deploy-data:modify + parameters: + - name: easDeployInfoId + in: path + description: > + The Identifier of an Individual EAS Deployment Data to be updated. It shall apply the + format of Data type string. + required: true + schema: + type: string + responses: + '204': + description: The Individual Influence Data was deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /application-data/dnai-eas-mappings/{dnai}: + parameters: + - name: dnai + in: path + required: true + schema: + type: string + get: + summary: Retrieves the EAS address information for a DNAI. + operationId: ReadDnaiEasMapping + tags: + - DnaiEasMapping (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:application-data + - nudr-dr:application-data:dnai-eas:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Upon success, a response body containing EAS address information for a DNAI + is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DnaiEasMapping' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + schemas: + + TrafficInfluData: + description: Represents the Traffic Influence Data. + type: object + properties: + upPathChgNotifCorreId: + type: string + description: > + Contains the Notification Correlation Id allocated by the NEF for the UP + path change notification. + appReloInd: + type: boolean + description: > + Identifies whether an application can be relocated once a location of the + application has been selected. + afAppId: + type: string + description: Identifies an application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + ethTrafficFilters: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: > + Identifies Ethernet packet filters. Either "trafficFilters" or + "ethTrafficFilters" shall be included if applicable. + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + interGroupIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 2 + description: > + Identifies a list of Internal Groups. + subscriberCatList: + type: array + items: + type: string + minItems: 1 + description: > + Identifies a list of Subscriber Category(s). + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + trafficFilters: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: > + Identifies IP packet filters. Either "trafficFilters" or "ethTrafficFilters" + shall be included if applicable. + trafficRoutes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: Identifies the N6 traffic routing requirement. + sfcIdDl: + type: string + description: Reference to a pre-configured service function chain for DL traffic + sfcIdUl: + type: string + description: Reference to a pre-configured service function chain for UL traffic + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + traffCorreInd: + type: boolean + tfcCorreInfo: + $ref: '#/components/schemas/TrafficCorrelationInfo' + validStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + validEndTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tempValidities: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + description: Identifies the temporal validities for the N6 traffic routing requirement. + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + upPathChgNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + headers: + description: Contains the headers provisioned by the NEF. + type: array + items: + type: string + minItems: 1 + subscribedEvents: + type: array + items: + $ref: 'TS29522_TrafficInfluence.yaml#/components/schemas/SubscribedEvent' + minItems: 1 + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + afAckInd: + type: boolean + addrPreserInd: + type: boolean + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily + maintained for the source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + nscSuppFeats: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + minProperties: 1 + description: > + Identifies a list of Network Function Service Consumer supported per service. The key + used in this map for each entry is the ServiceName value as defined in + 3GPP TS 29.510[24]. + allOf: + - oneOf: + - required: [afAppId] + - required: [trafficFilters] + - required: [ethTrafficFilters] + - oneOf: + - required: [supi] + - required: [interGroupId] + - required: [interGroupIdList] + + TrafficInfluDataPatch: + description: Represents the Traffic Influence Data to be updated in the UDR. + type: object + properties: + upPathChgNotifCorreId: + type: string + description: > + Contains the Notification Correlation Id allocated by the NEF for the + UP path change notification. + appReloInd: + type: boolean + description: > + Identifies whether an application can be relocated once a location of the application + has been selected. + ethTrafficFilters: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: > + Identifies Ethernet packet filters. Either "trafficFilters" or "ethTrafficFilters" + shall be included if applicable. + trafficFilters: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: > + Identifies IP packet filters. Either "trafficFilters" or "ethTrafficFilters" + shall be included if applicable. + trafficRoutes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: Identifies the N6 traffic routing requirement. + sfcIdDl: + type: string + description: Reference to a pre-configured service function chain for DL traffic + nullable: true + sfcIdUl: + type: string + description: Reference to a pre-configured service function chain for UL traffic + nullable: true + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + traffCorreInd: + type: boolean + tfcCorreInfo: + $ref: '#/components/schemas/TrafficCorrelationInfo' + validStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + validEndTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tempValidities: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + nullable: true + description: Identifies the temporal validities for the N6 traffic routing requirement. + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + upPathChgNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + headers: + description: Contains the headers provisioned by the NEF. + type: array + items: + type: string + minItems: 1 + afAckInd: + type: boolean + addrPreserInd: + type: boolean + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily maintained + for the source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + + TrafficInfluSub: + description: Represents traffic influence subscription data. + type: object + properties: + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Each element identifies a DNN. + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: Each element identifies a slice. + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + description: Each element identifies a group of users. + internalGroupIdsAdd: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + description: > + Each element identifies an internal group. + subscriberCatList: + type: array + items: + type: string + minItems: 1 + description: > + Each element identifies a subscriber category. + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + description: Each element identifies the user. + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + immRep: + type: boolean + description: > + If provided and set to true, it indicates that existing entries that + match this subscription shall be immediately reported in the response. + immReports: + type: array + items: + $ref: '#/components/schemas/TrafficInfluDataNotif' + minItems: 1 + description: Immediate report with existing UDR entries. + required: + - notificationUri + oneOf: + - required: [dnns] + - required: [snssais] + - required: [internalGroupIds] + - required: [internalGroupIdsAdd] + - required: [supis] + + TrafficInfluDataNotif: + description: Represents traffic influence data for notification. + type: object + properties: + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + trafficInfluData: + $ref: '#/components/schemas/TrafficInfluData' + required: + - resUri + + PfdDataForAppExt: + description: Represents the PFDs and related data for the application. + type: object + properties: + applicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pfds: + type: array + items: + $ref: 'TS29551_Nnef_PFDmanagement.yaml#/components/schemas/PfdContent' + minItems: 1 + cachingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + allowedDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - applicationId + - pfds + + BdtPolicyData: + description: Represents applied BDT policy data. + type: object + properties: + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + required: + - bdtRefId + + BdtPolicyDataPatch: + description: > + Represents modification instructions to be performed on the applied BDT policy data. + type: object + properties: + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + required: + - bdtRefId + + IptvConfigData: + description: Represents IPTV configuration data information. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + interGroupId: + description: Identifies a group of users. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + afAppId: + type: string + multiAccCtrls: + type: object + additionalProperties: + $ref: 'TS29522_IPTVConfiguration.yaml#/components/schemas/MulticastAccessControl' + minProperties: 1 + description: > + Identifies a list of multicast address access control information. Any string + value can be used as a key of the map. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + required: + - afAppId + - multiAccCtrls + oneOf: + - required: [interGroupId] + - required: [supi] + + ServiceParameterData: + description: Represents the service parameter data. + type: object + properties: + appId: + type: string + description: Identifies an application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + ueIpv4: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + anyUeInd: + type: boolean + description: > + Identifies whether the service parameters applies to any non roaming UE. + roamUeNetDescs: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/NetworkDescription' + minItems: 1 + description: Each element identifies one or more PLMN IDs of inbound roamers. + paramOverPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverPc5' + paramOverUu: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverUu' + a2xParamsPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/A2xParamsPc5' + paramForProSeDd: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeDd' + paramForProSeDc: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeDc' + paramForProSeU2NRelUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeU2NRelUe' + paramForProSeRemUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeRemUe' + paramForProSeU2URelUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeU2URelUe' + paramForProSeEndUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeEndUe' + urspGuidance: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/UrspRuleRequest' + minItems: 1 + description: > + Contains the service parameter used to guide the URSP and/or VPLMN specific URSP. + tnaps: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + minItems: 1 + description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user. + deliveryEvents: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/Event' + minItems: 1 + description: Contains the outcome of the UE Policy Delivery. + policDelivNotifCorreId: + type: string + description: > + Contains the Notification Correlation Id allocated by the NEF for the notification + of UE Policy delivery outcome. + policDelivNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + headers: + description: Contains the headers provisioned by the NEF. + type: array + items: + type: string + minItems: 1 + resetIds: + type: array + items: + type: string + minItems: 1 + paramForRangingSlPos: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForRangingSlPos' + + ServiceParameterDataPatch: + description: Represents the service parameter data that can be updated. + type: object + properties: + paramOverPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverPc5Rm' + paramOverUu: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParameterOverUuRm' + a2xParamsPc5: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/A2xParamsPc5Rm' + paramForProSeDd: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeDdRm' + paramForProSeDc: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeDcRm' + paramForProSeU2NRelUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeU2NRelUeRm' + paramForProSeRemUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeRemUeRm' + paramForProSeU2URelUE: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeU2URelUeRm' + paramForProSeEndUe: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForProSeEndUeRm' + urspInfluence: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/UrspRuleRequest' + minItems: 1 + deprecated: true + description: Contains the service parameter used to influence the URSP. This attribute is + deprecated by the urspGuidance attribute. + urspGuidance: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/UrspRuleRequest' + minItems: 1 + nullable: true + description: > + Contains the service parameter used to influence the URSP and/or VPLMN specific URSP. + tnaps: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + minItems: 1 + description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user. + nullable: true + deliveryEvents: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/Event' + minItems: 1 + nullable: true + description: Contains the outcome of the UE Policy Delivery. + policDelivNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + headers: + description: Contains the headers provisioned by the NEF. + type: array + items: + type: string + minItems: 1 + paramForRangingSlPos: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/ParamForRangingSlPosRm' + + AmInfluData: + description: Represents the AM Influence Data. + type: object + properties: + appIds: + type: array + items: + type: string + minItems: 1 + description: Identifies one or more applications. + dnnSnssaiInfos: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + minItems: 1 + description: Identifies one or more DNN, S-NSSAI combinations. + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + anyUeInd: + type: boolean + description: > + When set to true, it indicates whether the data is applicable for any UE. Otherwise set + to "false". Default value is "false" if omitted. + + roamUePlmnIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + description: > + Indicates a list of PLMNs representing the home PLMN for the inbound roaming + UEs in LBO roaming scenario. + policyDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + evSubs: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/AmInfluEvent' + minItems: 1 + description: List of AM related events for which a subscription is required. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + headers: + type: array + description: Contains the headers provisioned by the NEF. + items: + type: string + minItems: 1 + thruReq: + type: boolean + description: > + When set to true, it indicates whether high throughput is desired for the + indicated UE traffic. Otherwise set to "false". Default value is "false" if omitted. + covReq: + type: array + items: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + description: Indicates the service area coverage requirement. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + resetIds: + type: array + items: + type: string + minItems: 1 + allOf: + - anyOf: + - required: [thruReq] + - required: [covReq] + - oneOf: + - required: [supi] + - required: [interGroupId] + - required: [anyUeInd] + - required: [roamUePlmnIds] + + AmInfluDataPatch: + description: Represents the AM Influence Data that can be updated. + type: object + properties: + appIds: + type: array + items: + type: string + minItems: 1 + description: Identifies one or more applications. + nullable: true + dnnSnssaiInfos: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + minItems: 1 + description: Identifies one or more DNN, S-NSSAI combinations. + nullable: true + evSubs: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/AmInfluEvent' + minItems: 1 + description: List of AM related events for which a subscription is required. + nullable: true + headers: + type: array + description: Contains the headers provisioned by the NEF. + items: + type: string + minItems: 1 + thruReq: + type: boolean + description: Indicates whether high throughput is desired for the indicated UE traffic. + nullable: true + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UriRm' + notifCorrId: + type: string + description: Notification correlation identifier. + nullable: true + covReq: + type: array + items: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + description: Indicates the service area coverage requirement. + nullable: true + + ApplicationDataSubs: + description: Identifies a subscription to application data change notification. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + dataFilters: + type: array + items: + $ref: '#/components/schemas/DataFilter' + minItems: 1 + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + immRep: + type: boolean + description: Immediate reporting indication. + amInfluEntries: + type: array + items: + $ref: '#/components/schemas/AmInfluData' + minItems: 1 + description: The AM Influence Data entries stored in the UDR that match a subscription. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + immReports: + type: array + items: + $ref: '#/components/schemas/ApplicationDataChangeNotif' + minItems: 1 + description: Immediate report with existing UDR entries. + required: + - notificationUri + + ApplicationDataChangeNotif: + description: Contains changed application data for which notification was requested. + type: object + properties: + iptvConfigData: + $ref: '#/components/schemas/IptvConfigData' + pfdData: + $ref: 'TS29551_Nnef_PFDmanagement.yaml#/components/schemas/PfdChangeNotification' + bdtPolicyData: + $ref: '#/components/schemas/BdtPolicyData' + resUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + serParamData: + $ref: '#/components/schemas/ServiceParameterData' + amInfluData: + $ref: '#/components/schemas/AmInfluData' + dnaiEasData: + $ref: '#/components/schemas/DnaiEasMapping' + afReqQosData: + $ref: '#/components/schemas/AfRequestedQosData' + required: + - resUri + + DataFilter: + description: Identifies a data filter. + type: object + properties: + dataInd: + $ref: '#/components/schemas/DataInd' + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + ueIpv4s: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + ueIpv6s: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + ueMacs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + anyUeInd: + type: boolean + description: Indicates the request is for any UE. + dnnSnssaiInfos: + description: > + Indicates the request is for any DNN and S-NSSAI combination present in the array. + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + minItems: 1 + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + required: + - dataInd + + TrafficCorrelationInfo: + description: > + Contains the information for traffic correlation. + type: object + properties: + corrType: + $ref: '#/components/schemas/CorrelationType' + tfcCorrId: + type: string + description: > + Identification of a set of UEs accessing the application identified by the + Application Identifier or traffic filtering information. + comEasIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrRm' + comEasIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6AddrRm' + fqdnRange: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + nullable: true + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UriRm' + notifCorrId: + type: string + nullable: true + description: Notification correlation identifier. + nullable: true + + DnaiEasMapping: + description: Contains DNAI to EAS mapping information. + type: object + properties: + dnaiEasInfos: + type: array + items: + $ref: '#/components/schemas/DnaiEasInfo' + minItems: 1 + description: Each element conrtains EAS address information for a DNAI. + required: + - dnaiEasInfos + + DnaiEasInfo: + description: Contains EAS information for a DNAI. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + easIpAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + description: Each element contains EAS addresses, address ranges, and/or prefixes. + fqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + description: Each element conrtains FQDN matching rules for the EAS(s) of a DNAI. + anyOf: + - required: [dnn] + - required: [snssai] + oneOf: + - required: [easIpAddrs] + - required: [fqdns] + + AfRequestedQosData: + description: Represents AF Requested QoS data. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + afAppId: + type: string + description: Identifies an AF application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sliceInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + evSubsc: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EventsSubscReqData' + flowInfos: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + qosReference: + type: string + altSerReqs: + type: array + items: + type: string + minItems: 1 + altSerReqsData: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains alternative service requirements that include individual QoS parameter sets. + disUeNotif: + type: boolean + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + tempInValidity: + $ref: 'TS29565_Ntsctsf_QoSandTSCAssistance.yaml#/components/schemas/TemporalInValidity' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suppFeat + oneOf: + - required: [supi] + - required: [interGroupId] + + AfRequestedQosDataPatch: + description: Represents modification of Individual AF Requested QoS data. + type: object + properties: + afAppId: + type: string + description: Identifies an AF application. + nullable: true + evSubsc: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EventsSubscReqDataRm' + flowInfos: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + nullable: true + qosReference: + type: string + nullable: true + altSerReqs: + type: array + items: + type: string + minItems: 1 + nullable: true + altSerReqsData: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Contains removable alternative service requirements that include individual QoS + parameter sets. + nullable: true + disUeNotif: + type: boolean + nullable: true + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + tempInValidity: + $ref: 'TS29565_Ntsctsf_QoSandTSCAssistance.yaml#/components/schemas/TemporalInValidity' + + DataInd: + anyOf: + - type: string + enum: + - PFD + - IPTV + - BDT + - SVC_PARAM + - AM + - DNAI_EAS + - REQ_QOS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the type of data. + Possible values are + - PFD: PFD data. + - IPTV: IPTV configuration data. + - BDT: BDT data. + - SVC_PARAM: Service parameter data. + - AM: AM influence data. + - DNAI_EAS: DNAI EAS mapping data. + - REQ_QOS: AF Requested QoS data for a UE or group of UE(s) not identified by UE address(es). + + CorrelationType: + description: Indicates that a common DNAI or common EAS should be selected. + anyOf: + - type: string + enum: + - COMMON_DNAI + - COMMON_EAS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + diff --git a/TS29519_Exposure_Data.yaml b/TS29519_Exposure_Data.yaml new file mode 100644 index 0000000..8e98c16 --- /dev/null +++ b/TS29519_Exposure_Data.yaml @@ -0,0 +1,876 @@ +openapi: 3.0.0 + +info: + version: '-' + title: Unified Data Repository Service API file for structured data for exposure + description: | + The API version is defined in 3GPP TS 29.504 + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.519 V18.1.0; 5G System; Usage of the Unified Data Repository Service for Policy Data, + Application Data and Structured Data for Exposure. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.519/' + +paths: + /exposure-data/{ueId}/access-and-mobility-data: + put: + summary: Creates and updates the access and mobility exposure data for a UE + operationId: CreateOrReplaceAccessAndMobilityData + tags: + - AccessAndMobilityData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:access-and-mobility-data:create + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilityData' + responses: + '201': + description: > + Successful case. The resource has been successfully created and a response + body containing a representation of the access and mobility data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilityData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '200': + description: > + Successful case. The resource has been successfully updated and a response + body containing a representation of the access and mobility data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilityData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional content + is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Retrieves the access and mobility exposure data for a UE + operationId: QueryAccessAndMobilityData + tags: + - AccessAndMobilityData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:access-and-mobility-data:read + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The response body contains the access and mobility data + content: + application/json: + schema: + $ref: '#/components/schemas/AccessAndMobilityData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes the access and mobility exposure data for a UE + operationId: DeleteAccessAndMobilityData + tags: + - AccessAndMobilityData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:access-and-mobility-data:modify + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Updates the access and mobility exposure data for a UE + operationId: UpdateAccessAndMobilityData + tags: + - AccessAndMobilityData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:access-and-mobility-data:modify + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AccessAndMobilityData' + responses: + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /exposure-data/{ueId}/session-management-data/{pduSessionId}: + put: + summary: Creates and updates the session management data for a UE and for an individual PDU session + operationId: CreateOrReplaceSessionManagementData + tags: + - PduSessionManagementData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:session-management-data:create + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionManagementData' + responses: + '201': + description: > + Successful case. The resource has been successfully created and a response + body containing a representation of the session management data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionManagementData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '200': + description: > + Successful case. The resource has been successfully updated and a response body + containing a representation of the session management data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionManagementData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Retrieves the session management data for a UE and for an individual PDU session + operationId: QuerySessionManagementData + tags: + - PduSessionManagementData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:session-management-data:read + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + - name: ipv4-addr + in: query + description: IPv4 Address of the UE + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + - name: ipv6-prefix + in: query + description: IPv6 Address Prefix of the UE + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + - name: dnn + in: query + description: DNN of the UE + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The response body contains the session management data + content: + application/json: + schema: + $ref: '#/components/schemas/PduSessionManagementData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes the session management data for a UE and for an individual PDU session + operationId: DeleteSessionManagementData + tags: + - PduSessionManagementData + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:session-management-data:modify + parameters: + - name: ueId + in: path + description: UE id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: pduSessionId + in: path + description: PDU session id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + responses: + '204': + description: Upon success, an empty response body shall be returned + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /exposure-data/subs-to-notify: + post: + summary: Create a subscription to receive notification of exposure data changes + operationId: CreateIndividualExposureDataSubscription + tags: + - ExposureDataSubscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:subs-to-notify:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ExposureDataSubscription' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/ExposureDataSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + exposureDataChangeNotification: + '{$request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ExposureDataChangeNotification' + minItems: 1 + responses: + '204': + description: No Content, Notification was successful + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /exposure-data/subs-to-notify/{subId}: + put: + summary: updates a subscription to receive notifications of exposure data changes + operationId: ReplaceIndividualExposureDataSubscription + tags: + - IndividualExposureDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:subs-to-notify:modify + parameters: + - name: subId + in: path + description: Subscription id + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ExposureDataSubscription' + responses: + '200': + description: > + Resource was successfully modified and a body with the modified subscription + to notifications about exposure data is returned.. + content: + application/json: + schema: + $ref: '#/components/schemas/ExposureDataSubscription' + '204': + description: The individual subscription resource was successfully modified. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes the individual Exposure Data subscription + operationId: DeleteIndividualExposureDataSubscription + tags: + - IndividualExposureDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:exposure-data + - nudr-dr:exposure-data:subs-to-notify:modify + parameters: + - name: subId + in: path + description: Subscription id + required: true + schema: + type: string + responses: + '204': + description: Resource was successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + AccessAndMobilityData: + description: Represents Access and Mobility data for a UE. + type: object + properties: + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + locationTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + timeZoneTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + regStates: + type: array + items: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/RmInfo' + regStatesTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + connStates: + type: array + items: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmInfo' + connStatesTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reachabilityStatus: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/UeReachability' + reachabilityStatusTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + smsOverNasStatus: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/SmsSupport' + smsOverNasStatusTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + roamingStatus: + type: boolean + description: > + True The serving PLMN of the UE is different from the HPLMN of the UE; False + The serving PLMN of the UE is the HPLMN of the UE. + roamingStatusTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + currentPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + currentPlmnTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ratType: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + ratTypesTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + + PduSessionManagementData: + description: Represents Session management data for a UE and a PDU session. + type: object + properties: + pduSessionStatus: + $ref: '#/components/schemas/PduSessionStatus' + pduSessionStatusTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + dnaiTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + n6TrafficRoutingInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + n6TrafficRoutingInfoTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Prefix: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: UE IPv6 prefix. + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + pduSessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + ipAddrTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + + ExposureDataSubscription: + description: Represents a Subscription to Notifications about Exposure Data. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + immRep: + type: boolean + description: > + If provided and set to true, it indicates that existing entries that + match this subscription shall be immediately reported in the response. + immReports: + type: array + items: + $ref: '#/components/schemas/ExposureDataChangeNotification' + minItems: 1 + description: Immediate report with existing UDR entries. + required: + - notificationUri + - monitoredResourceUris + + ExposureDataChangeNotification: + description: Represents changed exposure data for one UE for which Notification was requested. + type: object + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + accessAndMobilityData: + $ref: '#/components/schemas/AccessAndMobilityData' + pduSessionManagementData: + type: array + items: + $ref: '#/components/schemas/PduSessionManagementData' + minItems: 1 + delResources: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + + PduSessionStatus: + anyOf: + - type: string + enum: + - "ACTIVE" + - "RELEASED" + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the state of the PDU session. + Possible values are + - "ACTIVE": the PDU session is active. + - "RELEASED": the PDU session released. diff --git a/TS29519_Policy_Data.yaml b/TS29519_Policy_Data.yaml new file mode 100644 index 0000000..50f7a68 --- /dev/null +++ b/TS29519_Policy_Data.yaml @@ -0,0 +1,3192 @@ +openapi: 3.0.0 + +info: + version: '-' + title: Unified Data Repository Service API file for policy data + description: | + The API version is defined in 3GPP TS 29.504 + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.519 V18.4.0; 5G System; Usage of the Unified Data Repository Service for Policy Data, + Application Data and Structured Data for Exposure. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.519/' + +paths: + /policy-data/ues/{ueId}: + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + get: + summary: Retrieve the policy data for a subscriber + operationId: ReadPolicyData + tags: + - PolicyDataForIndividualUe (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: data-subset-names + in: query + style: form + explode: false + description: List of policy data subset names + required: false + schema: + type: array + items: + $ref: '#/components/schemas/PolicyDataSubset' + minItems: 2 + responses: + '200': + description: Upon success, a response body containing policy data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataForIndividualUe' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/ues/{ueId}/am-data: + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + get: + summary: Retrieves the access and mobility policy data for a subscriber + operationId: ReadAccessAndMobilityPolicyData + tags: + - AccessAndMobilityPolicyData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:am-data:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Upon success, a response body containing access and mobility policies shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AmPolicyData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/ues/{ueId}/ue-policy-set: + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + get: + summary: Retrieves the UE policy set data for a subscriber + operationId: ReadUEPolicySet + tags: + - UEPolicySet (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:ue-policy-set:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing UE policies shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/UePolicySet' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create or modify the UE policy set data for a subscriber + operationId: CreateOrReplaceUEPolicySet + tags: + - UEPolicySet (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:ue-policy-set:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UePolicySet' + responses: + '201': + description: > + Successful case. The resource has been successfully created and a response body + containing a representation of the created UEPolicySet resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/UePolicySet' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '200': + description: > + Successful case. The resource has been successfully created and a response body + containing UE policies shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/UePolicySet' + '204': + description: > + Successful case. The resource has been successfully updated and no additional content + is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify the UE policy set data for a subscriber + operationId: UpdateUEPolicySet + tags: + - UEPolicySet (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:ue-policy-set:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/UePolicySetPatch' + responses: + '204': + description: > + Successful case. The resource has been successfully updated and no additional content is + to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/ues/{ueId}/sm-data: + get: + summary: Retrieves the session management policy data for a subscriber + operationId: ReadSessionManagementPolicyData + tags: + - SessionManagementPolicyData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:sm-data:read + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: snssai + in: query + required: false + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing SmPolicyData shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify the session management policy data for a subscriber + operationId: UpdateSessionManagementPolicyData + tags: + - SessionManagementPolicyData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:sm-data:modify + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SmPolicyDataPatch' + responses: + '204': + description: > + Successful case. The resource has been successfully updated and no + additional content is to be sent in the response message. + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmPolicyData' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/ues/{ueId}/sm-data/{usageMonId}: + get: + summary: Retrieve a usage monitoring resource + operationId: ReadUsageMonitoringInformation + tags: + - UsageMonitoringInformation (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:sm-data:read + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: usageMonId + in: path + required: true + schema: + type: string + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Successful case. The usage monitoring data is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/UsageMonData' + '204': + description: The resource was found but no usage monitoring data is available. + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create a usage monitoring resource + operationId: CreateUsageMonitoringResource + tags: + - UsageMonitoringInformation (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:sm-data:create + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: usageMonId + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UsageMonData' + responses: + '201': + description: > + Successful case. The resource has been successfully created and a response body is + returned containing a representation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/UsageMonData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a usage monitoring resource + operationId: DeleteUsageMonitoringInformation + tags: + - UsageMonitoringInformation (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:sm-data:modify + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: usageMonId + in: path + required: true + schema: + type: string + responses: + '204': + description: Successful case. The resource has been successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/sponsor-connectivity-data/{sponsorId}: + parameters: + - name: sponsorId + in: path + required: true + schema: + type: string + get: + summary: Retrieves the sponsored connectivity information for a given sponsorId + operationId: ReadSponsorConnectivityData + tags: + - SponsorConnectivityData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:sponsor-connectivity-data:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Upon success, a response body containing Sponsor Connectivity Data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SponsorConnectivityData' + '204': + description: The resource was found but no Sponsor Connectivity Data is available. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/bdt-data: + get: + summary: Retrieves the BDT data collection + operationId: ReadBdtData + tags: + - BdtData (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:bdt-data:read + parameters: + - name: bdt-ref-ids + in: query + description: List of the BDT reference identifiers. + required: false + schema: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + minItems: 1 + style: form + explode: false + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing the BDT data shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/BdtData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/bdt-data/{bdtReferenceId}: + parameters: + - name: bdtReferenceId + in: path + required: true + schema: + type: string + get: + summary: Retrieves the BDT data information associated with a BDT reference Id + operationId: ReadIndividualBdtData + tags: + - IndividualBdtData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:bdt-data:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing the BDT data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Creates an BDT data resource associated with an BDT reference Id + operationId: CreateIndividualBdtData + tags: + - IndividualBdtData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:bdt-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BdtData' + responses: + '201': + description: Successful case. The resource has been successfully created. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modifies an BDT data resource associated with an BDT reference Id + operationId: UpdateIndividualBdtData + tags: + - IndividualBdtData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:bdt-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/BdtDataPatch' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/BdtData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional content + is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes an BDT data resource associated with an BDT reference Id + operationId: DeleteIndividualBdtData + tags: + - IndividualBdtData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:bdt-data:modify + responses: + '204': + description: Successful case. The resource has been successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/subs-to-notify: + get: + summary: Retrieves the list of Individual Policy Data Subscription resources + operationId: ReadPolicyDataSubscriptions + tags: + - PolicyDataSubscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:subs-to-notify:read + parameters: + - name: mon-resources + in: query + style: form + explode: false + description: List of monitored resources whose subscriptions are requested. + required: false + schema: + type: array + items: + type: string + description: Contains the apiSpecificResourceUriPart of the resource URI. + minItems: 1 + - name: ue-id + in: query + description: Represents the Subscription Identifier SUPI or GPSI. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Upon success, a response body containing a list of Individual Policy Data + Subscription resources shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PolicyDataSubscription' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + post: + summary: Create a subscription to receive notification of policy data changes + operationId: CreateIndividualPolicyDataSubscription + tags: + - PolicyDataSubscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data:subs-to-notify + - nudr-dr:policy-data:subs-to-notify:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataSubscription' + responses: + '201': + description: > + Upon success, a response body containing a representation of each Individual + subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + policyDataChangeNotification: + '{$request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PolicyDataChangeNotification' + minItems: 1 + responses: + '204': + description: No Content, Notification was successful + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/subs-to-notify/{subsId}: + parameters: + - name: subsId + in: path + required: true + schema: + type: string + get: + summary: Retrieves Individual Policy Subscription data + operationId: ReadIndividualPolicySubscriptionData + tags: + - IndividualPolicySubscriptionData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:subs-to-notify:read + responses: + '200': + description: > + Upon success, a response body containing Policy Data Subscription shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataSubscription' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Modify a subscription to receive notification of policy data changes + operationId: ReplaceIndividualPolicyDataSubscription + tags: + - IndividualPolicyDataSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:subs-to-notify:modify + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataSubscription' + responses: + '200': + description: The individual subscription resource was updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyDataSubscription' + '204': + description: > + The individual subscription resource was updated successfully and no + additional content is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete the individual Policy Data subscription + operationId: DeleteIndividualPolicyDataSubscription + tags: + - IndividualPolicyDataSubscription (Document) + responses: + '204': + description: Upon success, an empty response body shall be returned. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/ues/{ueId}/operator-specific-data: + get: + summary: Retrieve the operator specific policy data of an UE + operationId: ReadOperatorSpecificData + tags: + - OperatorSpecificData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:operator-specific-data:read + parameters: + - name: ueId + in: path + description: UE Id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: fields + in: query + description: attributes to be retrieved + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify the operator specific policy data of a UE + operationId: UpdateOperatorSpecificData + tags: + - OperatorSpecificData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:operator-specific-data:modify + parameters: + - name: ueId + in: path + description: UE Id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + required: true + responses: + '204': + description: No content. Response to successful modification. + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create or modify the operator specific policy data of a UE + operationId: ReplaceOperatorSpecificData + tags: + - OperatorSpecificData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:operator-specific-data:create + parameters: + - name: ueId + in: path + description: UE Id + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + required: true + content: + application/json: + schema: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + responses: + '200': + description: OK + content: + application/json: + schema: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + '201': + description: > + Successful case. When the feature OSDResource_Create_Delete is supported + and the resource has been successfully created, a response body containing a + representation of the created OperatorSpecificData resource shall be returned. + content: + application/json: + schema: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '204': + description: The resource has been successfully updated. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: When the feature OSDResource_Create_Delete is supported, delete OperatorSpecificData resource + operationId: DeleteOperatorSpecificData + tags: + - OperatorSpecificData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:ues:operator-specific-data:modify + parameters: + - name: ueId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + responses: + '204': + description: Successful case. The resource has been successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/plmns/{plmnId}/ue-policy-set: + parameters: + - name: plmnId + in: path + required: true + schema: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/VarPlmnId' + get: + summary: Retrieve the UE policy set data for an H-PLMN + operationId: ReadPlmnUePolicySet + tags: + - PlmnUePolicySet (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:plmns:ue-policy-set:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing UE policies shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/UePolicySet' + '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' + '412': + $ref: 'TS29571_CommonData.yaml#/components/responses/412' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/slice-control-data/{snssai}: + parameters: + - name: snssai + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + get: + summary: Retrieves a network Slice specific policy control data resource + operationId: ReadSlicePolicyControlData + tags: + - SlicePolicyControlData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:slice-control-data:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Successful case. The network slice specific policy control data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePolicyData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modify a network Slice specific policy control data resource + operationId: UpdateSlicePolicyControlData + tags: + - SlicePolicyControlData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:slice-control-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SlicePolicyDataPatch' + responses: + '200': + description: > + The resource has been successfully updated and a response body containing network + slice specific policy control data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePolicyData' + '204': + description: > + The resource has been successfully updated and no additional content is + to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/mbs-session-pol-data/{polSessionId}: + parameters: + - name: polSessionId + description: > + Represents the identifier of the MBS Session Policy Control Data. + in: path + required: true + schema: + $ref: '#/components/schemas/MbsSessPolDataId' + + get: + summary: Retrieve MBS Session Policy Control Data for an MBS Session. + operationId: GetMBSSessPolCtrlData + tags: + - MBSSessionPolicyControlData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:mbs-session-pol-data:read + responses: + '200': + description: > + OK. The requested MBS Session Policy Control Data is successfully returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessPolCtrlData' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/pdtq-data: + get: + summary: Retrieves the PDTQ data collection + operationId: ReadPdtqData + tags: + - PdtqData (Store) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:pdtq-data:read + parameters: + - name: pdtq-ref-ids + in: query + description: List of the PDTQ reference identifiers. + required: false + schema: + type: array + items: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqReferenceId' + minItems: 1 + style: form + explode: false + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing the PDTQ data shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PdtqData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/pdtq-data/{pdtqReferenceId}: + parameters: + - name: pdtqReferenceId + in: path + required: true + schema: + type: string + get: + summary: Retrieves the PDTQ data information associated with a PDTQ reference Id + operationId: ReadIndividualPdtqData + tags: + - IndividualPdtqData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:pdtq-data:read + parameters: + - name: supp-feat + in: query + description: Supported Features + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Upon success, a response body containing the PDTQ data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Creates a PDTQ data resource associated with a PDTQ reference Id + operationId: CreateIndividualPdtqData + tags: + - IndividualPdtqData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:pdtq-data:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqData' + responses: + '201': + description: Successful case. The resource has been successfully created. + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modifies a PDTQ data resource associated with a PDTQ reference Id + operationId: UpdateIndividualPdtqData + tags: + - IndividualPdtqData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:pdtq-data:modify + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PdtqDataPatch' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional content + is to be sent in the response message. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes a PDTQ data resource associated with a PDTQ reference Id + operationId: DeleteIndividualPdtqData + tags: + - IndividualPdtqData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + - nudr-dr:policy-data:pdtq-data:modify + responses: + '204': + description: Successful case. The resource has been successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policy-data/group-control-data/{intGroupId}: + parameters: + - name: intGroupId + in: path + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + + get: + summary: Retrieves a group specific policy control subscription data resource + operationId: ReadGroupPolCtrlData + tags: + - GroupPolicyControlData (Document) + security: + - {} + - oAuth2ClientCredentials: + - nudr-dr + - oAuth2ClientCredentials: + - nudr-dr + - nudr-dr:policy-data + parameters: + - name: supp-feat + in: query + description: Represents the supported features. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + Successful case. The requested group specific policy control subscription data shall be + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/GroupPolicyData' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an existing group specific policy control subscription data resource. + operationId: ModifyGroupPolCtrlData + tags: + - GroupPolicyControlData (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/GroupPolicyDataPatch' + responses: + '200': + description: > + The resource has been successfully modified and a response body containing the updated + group specific policy control subscription data shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/GroupPolicyData' + '204': + description: > + The resource has been successfully modified and no additional content is to be sent in + the response body. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + schemas: + + PolicyDataForIndividualUe: + description: Contains policy data for a given subscriber. + type: object + properties: + uePolicyDataSet: + $ref: '#/components/schemas/UePolicySet' + smPolicyDataSet: + $ref: '#/components/schemas/SmPolicyData' + amPolicyDataSet: + $ref: '#/components/schemas/AmPolicyData' + umData: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonData' + minProperties: 1 + description: > + Contains UM policies. The value of the limit identifier is used as the key of the map. + operatorSpecificDataSet: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + minProperties: 1 + description: > + Contains Operator Specific Data resource data. The key of the map is operator + specific data element name and the value is the operator specific data of the UE. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AmPolicyData: + description: Contains the AM policy data for a given subscriber. + type: object + properties: + praInfos: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains Presence reporting area information. The praId attribute within the + PresenceInfo data type is the key of the map. + subscCats: + type: array + items: + type: string + minItems: 1 + chfInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ChargingInformation' + subscSpendingLimits: + type: boolean + description: > + Indicates whether the PCF must enforce Access and Mobility management related + policies based on subscriber spending limits. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UePolicySet: + description: Contains the UE policy data for a given subscriber. + type: object + properties: + praInfos: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains Presence reporting area information. The praId attribute within the + PresenceInfo data type is the key of the map. + subscCats: + type: array + items: + type: string + minItems: 1 + uePolicySections: + type: object + additionalProperties: + $ref: '#/components/schemas/UePolicySection' + minProperties: 1 + description: > + Contains the UE Policy Sections. The UE Policy Section Identifier is used as + the key of the map. + upsis: + type: array + items: + type: string + minItems: 1 + allowedRouteSelDescs: + type: object + additionalProperties: + $ref: '#/components/schemas/PlmnRouteSelectionDescriptor' + minProperties: 1 + description: > + Contains allowed route selection descriptors per serving PLMN for a UE. + The serving PLMN identifier is the key of the map. + andspInd: + type: boolean + epsUrspInd: + type: boolean + description: Indication of UE supporting URSP provisioning in EPS. + vpsUrspInd: + type: boolean + description: Indication of UE supporting VPLMN-specific URSP. + urspEnfInd: + type: boolean + description: Indication of UE supporting URSP enforcement report. + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + osIds: + type: array + items: + $ref: '#/components/schemas/OsId' + minItems: 1 + chfInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ChargingInformation' + subscSpendingLimits: + type: boolean + description: > + Indicates whether the PCF must enforce UE policies based on subscriber spending limits. + tracingReq: + type: array + items: + type: string + minItems: 1 + description: > + Tracing requirements as defined in TS 32.421 [26] + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + + UePolicySetPatch: + description: Contains the UE policy set for a given subscriber. + type: object + properties: + uePolicySections: + type: object + additionalProperties: + $ref: '#/components/schemas/UePolicySection' + minProperties: 1 + description: > + Contains the UE Policy Sections. The UE Policy Section Identifier is used + as the key of the map. + upsis: + type: array + items: + type: string + minItems: 1 + andspInd: + type: boolean + epsUrspInd: + type: boolean + description: Indication of UE supporting URSP provisioning in EPS. + vpsUrspInd: + type: boolean + description: Indication of UE supporting VPLMN-specific URSP. + urspEnfInd: + type: boolean + description: Indication of UE supporting URSP enforcement report. + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + osIds: + type: array + items: + $ref: '#/components/schemas/OsId' + minItems: 1 + + UePolicySection: + description: Contains the UE policy section. + type: object + properties: + uePolicySectionInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + upsi: + type: string + required: + - uePolicySectionInfo + - upsi + + SmPolicyData: + description: Contains the SM policy data for a given subscriber. + type: object + properties: + smPolicySnssaiData: + type: object + additionalProperties: + $ref: '#/components/schemas/SmPolicySnssaiData' + minProperties: 1 + description: > + Contains Session Management Policy data per S-NSSAI for all the SNSSAIs + of the subscriber. The key of the map is the S-NSSAI. + umDataLimits: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonDataLimit' + minProperties: 1 + description: > + Contains a list of usage monitoring profiles associated with the subscriber. + The limit identifier is used as the key of the map. + umData: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonData' + minProperties: 1 + description: > + Contains the remaining allowed usage data associated with the subscriber. + The limit identifier is used as the key of the map. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - smPolicySnssaiData + + SmPolicySnssaiData: + description: Contains the SM policy data for a given subscriber and S-NSSAI. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + smPolicyDnnData: + type: object + additionalProperties: + $ref: '#/components/schemas/SmPolicyDnnData' + minProperties: 1 + description: > + Session Management Policy data per DNN for all the DNNs of the indicated S-NSSAI. + The key of the map is the DNN. + ueSliceMbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceMbr' + required: + - snssai + + SmPolicyDnnData: + description: Contains the SM policy data for a given DNN (and S-NSSAI). + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + allowedServices: + type: array + items: + type: string + minItems: 1 + subscCats: + type: array + items: + type: string + minItems: 1 + gbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + adcSupport: + type: boolean + subscSpendingLimits: + type: boolean + description: > + Indicates whether the PCF must enforce session management related policies based + on subscriber spending limits. + ipv4Index: + $ref: '#/components/schemas/IpIndex' + ipv6Index: + $ref: '#/components/schemas/IpIndex' + offline: + type: boolean + online: + type: boolean + chfInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/ChargingInformation' + refUmDataLimitIds: + type: object + additionalProperties: + $ref: '#/components/schemas/LimitIdToMonitoringKey' + minProperties: 1 + description: > + A reference to the UsageMonDataLimit or UsageMonData instances for this DNN and SNSSAI + that may also include the related monitoring key(s). + The key of the map is the limit identifier. + mpsPriority: + type: boolean + mcsPriority: + type: boolean + imsSignallingPrio: + type: boolean + mpsPriorityLevel: + type: integer + mcsPriorityLevel: + type: integer + praInfos: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains Presence reporting area information. The praId attribute within the + PresenceInfo data type is the key of the map. + bdtRefIds: + type: object + additionalProperties: + $ref: '#/components/schemas/BdtReferenceIdRm' + minProperties: 1 + description: > + Identifies transfer policies of background data transfer. Any string value can + be used as a key of the map. + nullable: true + locRoutNotAllowed: + type: boolean + sfcNotAllowed: + type: boolean + tnaps: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + minItems: 1 + description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user. + required: + - dnn + + UsageMonDataLimit: + description: Contains usage monitoring control data for a subscriber. + type: object + properties: + limitId: + type: string + scopes: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonDataScope' + minProperties: 1 + description: > + Identifies the SNSSAI and DNN combinations to which the usage monitoring data + limit applies. The S-NSSAI is the key of the map. + umLevel: + $ref: '#/components/schemas/UsageMonLevel' + startDate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endDate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + usageLimit: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + resetPeriod: + $ref: '#/components/schemas/TimePeriod' + required: + - limitId + + UsageMonData: + description: Contains remain allowed usage data for a subscriber. + type: object + properties: + limitId: + type: string + scopes: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonDataScope' + minProperties: 1 + description: > + Identifies the SNSSAI and DNN combinations for remain allowed usage data + for a subscriber. The S-NSSAI is the key of the map. + umLevel: + $ref: '#/components/schemas/UsageMonLevel' + allowedUsage: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + resetTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + required: + - limitId + + LimitIdToMonitoringKey: + description: > + Contains the limit identifier and the corresponding monitoring key for a given + S-NSSAI and DNN. + type: object + properties: + limitId: + type: string + monkey: + type: array + items: + type: string + minItems: 1 + required: + - limitId + nullable: true + + UsageMonDataScope: + description: > + Contains a SNSSAI and DNN combinations to which the UsageMonData instance belongs to. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + required: + - snssai + + TimePeriod: + description: Contains the periodicity for the defined usage monitoring data limits. + type: object + properties: + period: + $ref: '#/components/schemas/Periodicity' + maxNumPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - period + + SponsorConnectivityData: + description: > + Contains the sponsored data connectivity related information for a sponsor identifier. + type: object + properties: + aspIds: + type: array + items: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - aspIds + + BdtData: + description: Contains the background data transfer data. + type: object + properties: + aspId: + type: string + transPolicy: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/TransferPolicy' + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + numOfUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + volPerUe: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + trafficDes: + $ref: 'TS29122_ResourceManagementOfBdt.yaml#/components/schemas/TrafficDescriptor' + bdtpStatus: + $ref: '#/components/schemas/BdtPolicyStatus' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the BDT warning notification is enabled (true) or not (false). + Default value is false. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + required: + - aspId + - transPolicy + + PolicyDataSubscription: + description: Identifies a subscription to policy data change notification. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monResItems: + type: array + items: + $ref: '#/components/schemas/ResourceItem' + minItems: 1 + excludedResItems: + type: array + items: + $ref: '#/components/schemas/ResourceItem' + minItems: 1 + immRep: + type: boolean + description: > + If provided and set to true, it indicates that existing entries that + match this subscription shall be immediately reported in the response. + immReports: + type: array + items: + $ref: '#/components/schemas/PolicyDataChangeNotification' + minItems: 1 + description: Immediate report with existing UDR entries. + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + subsId: + type: string + required: + - notificationUri + - monitoredResourceUris + + PolicyDataChangeNotification: + description: Contains changed policy data for which notification was requested. + type: object + properties: + amPolicyData: + $ref: '#/components/schemas/AmPolicyData' + uePolicySet: + $ref: '#/components/schemas/UePolicySet' + plmnUePolicySet: + $ref: '#/components/schemas/UePolicySet' + smPolicyData: + $ref: '#/components/schemas/SmPolicyData' + usageMonData: + $ref: '#/components/schemas/UsageMonData' + SponsorConnectivityData: + $ref: '#/components/schemas/SponsorConnectivityData' + bdtData: + $ref: '#/components/schemas/BdtData' + opSpecData: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + opSpecDataMap: + type: object + additionalProperties: + $ref: 'TS29505_Subscription_Data.yaml#/components/schemas/OperatorSpecificDataContainer' + minProperties: 1 + description: > + Operator Specific Data resource data, if changed and notification was requested. + The key of the map is operator specific data element name and the value is the + operator specific data of the UE. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + sponsorId: + type: string + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + usageMonId: + type: string + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + delResources: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + notifId: + type: string + reportedFragments: + type: array + items: + $ref: '#/components/schemas/NotificationItem' + minItems: 1 + slicePolicyData: + $ref: '#/components/schemas/SlicePolicyData' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + pdtqData: + $ref: '#/components/schemas/PdtqData' + pdtqRefId: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqReferenceId' + groupPolicyData: + $ref: '#/components/schemas/GroupPolicyData' + intGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + + PlmnRouteSelectionDescriptor: + description: > + Contains the route selection descriptors (combinations of SNSSAI, DNNs, PDU session types, + SSC modes and ATSSS information) allowed by subscription to the UE for a serving PLMN + type: object + properties: + servingPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + snssaiRouteSelDescs: + type: array + items: + $ref: '#/components/schemas/SnssaiRouteSelectionDescriptor' + minItems: 1 + required: + - servingPlmn + + SnssaiRouteSelectionDescriptor: + description: > + Contains the route selector parameters (DNNs, PDU session types, SSC modes and ATSSS + information) per SNSSAI + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnnRouteSelDescs: + type: array + items: + $ref: '#/components/schemas/DnnRouteSelectionDescriptor' + minItems: 1 + required: + - snssai + + DnnRouteSelectionDescriptor: + description: > + Contains the route selector parameters (PDU session types, SSC modes and ATSSS + information) per DNN + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sscModes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + minItems: 1 + pduSessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + minItems: 1 + atsssInfo: + description: > + Indicates whether MA PDU session establishment is allowed for this DNN. + When set to value true MA PDU session establishment is allowed for this DNN. + type: boolean + default: false + lboRoamAllowed: + type: boolean + description: > + Indicates whether LBO for the DNN and S-NSSAI is allowed when roaming. + required: + - dnn + + SmPolicyDataPatch: + description: Contains the SM policy data for a given subscriber. + type: object + properties: + umData: + type: object + additionalProperties: + $ref: '#/components/schemas/UsageMonData' + minProperties: 1 + description: > + Contains the remaining allowed usage data associated with the subscriber. + The value of the limit identifier is used as the key of the map. + nullable: true + smPolicySnssaiData: + type: object + additionalProperties: + $ref: '#/components/schemas/SmPolicySnssaiDataPatch' + minProperties: 1 + description: > + Modifiable Session Management Policy data per S-NSSAI for all the SNSSAIs + of the subscriber. The key of the map is the S-NSSAI. + + SmPolicySnssaiDataPatch: + description: Contains the SM policy data for a given subscriber and S-NSSAI. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + smPolicyDnnData: + type: object + additionalProperties: + $ref: '#/components/schemas/SmPolicyDnnDataPatch' + minProperties: 1 + description: > + Modifiable Session Management Policy data per DNN for all the DNNs of the + indicated S-NSSAI. The key of the map is the DNN. + required: + - snssai + SmPolicyDnnDataPatch: + description: Contains the SM policy data for a given DNN (and S-NSSAI). + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + bdtRefIds: + type: object + additionalProperties: + $ref: '#/components/schemas/BdtReferenceIdRm' + minProperties: 1 + description: > + Contains updated transfer policies of background data transfer. + Any string value can be used as a key of the map. + nullable: true + required: + - dnn + + ResourceItem: + description: > + Identifies a subscription to policy data change notification when the change occurs + in a fragment (subset of resource data) of a given resource. + type: object + properties: + monResourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + items: + type: array + items: + $ref: '#/components/schemas/ItemPath' + minItems: 1 + required: + - monResourceUri + - items + + NotificationItem: + description: > + Identifies a data change notification when the change occurs in a fragment + (subset of resource data) of a given resource. + type: object + properties: + resourceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifItems: + type: array + items: + $ref: '#/components/schemas/UpdatedItem' + minItems: 1 + required: + - resourceId + - notifItems + + UpdatedItem: + description: Identifies a fragment of a resource. + type: object + properties: + item: + $ref: '#/components/schemas/ItemPath' + value: {} + required: + - item + - value + + BdtDataPatch: + description: Contains the modified background data transfer data. + type: object + properties: + transPolicy: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/TransferPolicy' + bdtpStatus: + $ref: '#/components/schemas/BdtPolicyStatus' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the BDT warning notification is enabled (true) or not (false). + + SlicePolicyData: + description: Contains the network slice specific policy control information. + type: object + properties: + mbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + remainMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + remainMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SlicePolicyDataPatch: + description: Contains the modified network slice specific policy control information. + type: object + properties: + remainMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + remainMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + oneOf: + - required: [remainMbrUl] + - required: [remainMbrDl] + + MbsSessPolCtrlData: + description: Represents MBS Session Policy Control Data. + type: object + properties: + 5qis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + minItems: 1 + maxMbsArpLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ArpPriorityLevel' + maxMbsSessionAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxGbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + MbsSessPolDataId: + description: Represents the identifier used to access the MBS Session Policy Control Data. + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + afAppId: + type: string + oneOf: + - required: [mbsSessionId] + - required: [afAppId] + + PdtqData: + description: Contains the planned data transfer data with QoS requirements. + type: object + properties: + aspId: + type: string + pdtqPolicy: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqPolicy' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pdtqRefId: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqReferenceId' + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + numOfUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + desTimeInts: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + description: Identifies the time interval(s). + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + altQosParamSets: + type: array + items: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/AltQosParamSet' + minItems: 1 + description: > + Contains the alternative QoS requirements as a list of individual QoS parameter + sets in a prioritized order. + altQosRefs: + type: array + items: + type: string + minItems: 1 + description: > + Contains the alternative QoS requirements as the list of QoS references in a + prioritized order. + qosParamSet: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/QosParameterSet' + qosReference: + type: string + description: > + Requested QoS requirements expressed as the QoS Reference which represents + a pre-defined QoS information. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the PDTQ warning notification is enabled (true) or not (false). + Default value is false. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resetIds: + type: array + items: + type: string + minItems: 1 + required: + - aspId + - pdtqPolicy + + PdtqDataPatch: + description: Contains the modified planned data transfer data with QoS requirements. + type: object + properties: + pdtqPolicy: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqPolicy' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the PDTQ warning notification is enabled (true) or not (false). + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + GroupPolicyData: + description: Contains the group specific policy control subscription information. + type: object + properties: + remainGroupMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + remainGroupMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + GroupPolicyDataPatch: + description: > + Contains the requested modification to the group specific policy control subscription + data. + type: object + properties: + remainGroupMbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + remainGroupMbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + anyOf: + - required: [remainGroupMbrUl] + - required: [remainGroupMbrDl] + +# SIMPLE TYPES: + + IpIndex: + description: > + Represents information that identifies which IP pool or external server + is used to allocate the IP address. + type: integer + + OsId: + description: Represents the Operating System of the served UE. + type: string + format: uuid + + ItemPath: + description: Identifies a fragment (subset of resource data) of a given resource. + type: string + + BdtReferenceIdRm: + type: string + description: > + This data type is defined in the same way as the BdtReferenceId data type defined in + 3GPP TS 29.122, but with the nullable property set to true. + nullable: true + +# ENUMS: + + UsageMonLevel: + description: Represents the usage monitoring level. + anyOf: + - type: string + enum: + - SESSION_LEVEL + - SERVICE_LEVEL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + Periodicity: + description: Represents the time period. + anyOf: + - type: string + enum: + - YEARLY + - MONTHLY + - WEEKLY + - DAILY + - HOURLY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + BdtPolicyStatus: + description: Indicates the validation status of a negotiated BDT policy. + anyOf: + - type: string + enum: + - INVALID + - VALID + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + PolicyDataSubset: + description: Indicates a policy data subset. + anyOf: + - type: string + enum: + - AM_POLICY_DATA + - SM_POLICY_DATA + - UE_POLICY_DATA + - UM_DATA + - OPERATOR_SPECIFIC_DATA + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + diff --git a/TS29520_Nnwdaf_AnalyticsInfo.yaml b/TS29520_Nnwdaf_AnalyticsInfo.yaml new file mode 100644 index 0000000..403611b --- /dev/null +++ b/TS29520_Nnwdaf_AnalyticsInfo.yaml @@ -0,0 +1,898 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Nnwdaf_AnalyticsInfo + description: | + Nnwdaf_AnalyticsInfo Service API. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.520 V18.4.0; 5G System; Network Data Analytics Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.520/' + +security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-analyticsinfo + +servers: + - url: '{apiRoot}/nnwdaf-analyticsinfo/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /analytics: + get: + summary: Read a NWDAF Analytics + operationId: GetNWDAFAnalytics + tags: + - NWDAF Analytics (Document) + parameters: + - name: event-id + in: query + description: Identify the analytics. + required: true + schema: + $ref: '#/components/schemas/EventId' + - name: ana-req + in: query + description: Identifies the analytics reporting requirement information. + required: false + content: + application/json: + schema: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventReportingRequirement' + - name: event-filter + in: query + description: Identify the analytics. + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/EventFilter' + - name: supported-features + in: query + description: To filter irrelevant responses related to unsupported features. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: tgt-ue + in: query + description: Identify the target UE information. + required: false + content: + application/json: + schema: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TargetUeInformation' + responses: + '200': + description: > + Containing the analytics with parameters as relevant for the requesting NF service + consumer. + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsData' + '204': + description: No Content. The requested NWDAF Analytics data does not exist. + '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': + description: Indicates that the NWDAF Analytics resource does not exist. + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + description: > + The request is rejected by the NWDAF and more details (not only the ProblemDetails) are + returned. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsAnalyticsInfoRequest' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /context: + get: + summary: Get context information related to analytics subscriptions. + operationId: GetNwdafContext + tags: + - NWDAF Context (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-analyticsinfo + - oAuth2ClientCredentials: + - nnwdaf-analyticsinfo + - nnwdaf-analyticsinfo:contexttransfer + parameters: + - name: context-ids + in: query + description: Identifies specific context information related to analytics subscriptions. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ContextIdList' + - name: req-context + in: query + description: > + Identfies the type(s) of the analytics context information the consumer wishes + to receive. + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/RequestedContext' + responses: + '200': + description: > + Contains context information related to analytics subscriptions corresponding with + one or more context identifiers. + content: + application/json: + schema: + $ref: '#/components/schemas/ContextData' + '204': + description: > + No Content. No context information could be retrieved for the requested context + Identifiers. + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnwdaf-analyticsinfo: Access to the Nnwdaf_AnalyticsInfo API + nnwdaf-analyticsinfo:contexttransfer: > + Access to service operations applying to NWDAF context transfer related service + operations, i.e. ContextTransfer. + + schemas: + + AnalyticsData: + description: > + Represents the description of analytics with parameters as relevant for the requesting NF + service consumer. + type: object + properties: + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeStampGen: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + anaMetaInfo: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsMetadataInfo' + sliceLoadLevelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/SliceLoadLevelInformation' + minItems: 1 + description: The slices and their load level information. + nsiLoadLevelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NsiLoadLevelInfo' + minItems: 1 + nfLoadLevelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NfLoadLevelInformation' + minItems: 1 + nwPerfs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfInfo' + minItems: 1 + svcExps: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ServiceExperienceInfo' + minItems: 1 + qosSustainInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/QosSustainabilityInfo' + minItems: 1 + ueMobs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeMobility' + minItems: 1 + ueComms: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommunication' + minItems: 1 + userDataCongInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UserDataCongestionInfo' + minItems: 1 + abnorBehavrs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AbnormalBehaviour' + minItems: 1 + smccExps: + type: array + items: + $ref: '#/components/schemas/SmcceInfo' + minItems: 1 + disperInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionInfo' + minItems: 1 + redTransInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RedundantTransmissionExpInfo' + minItems: 1 + wlanInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/WlanPerformanceInfo' + minItems: 1 + dnPerfInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerfInfo' + minItems: 1 + pfdDetermInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PfdDeterminationInfo' + minItems: 1 + pduSesTrafInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PduSesTrafficInfo' + minItems: 1 + dataVlTrnsTmInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeInfo' + minItems: 1 + locAccInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocAccuracyInfo' + minItems: 1 + accuInfo: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyInfo' + cancelAccuInd: + type: boolean + description: > + Indicates cancelled request of the analytics accuracy information. + Set to "true" indicates the NWDAF cancelled request of analytics accuracy + information as the NWDAF does not support the accuracy checking capability. + Otherwise set to "false". Default value is "false" if omitted. + movBehavInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavInfo' + minItems: 1 + relProxInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RelProxInfo' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + + EventFilter: + description: Represents the event filters used to identify the requested analytics. + type: object + properties: + anySlice: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnySlice' + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: Identification(s) of network slice. + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + ladnDnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Identification(s) of LADN DNN to indicate the LADN service area as the AOI. + location: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/GeoLocation' + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + temporalGranSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + spatialGranSizeTa: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + spatialGranSizeCell: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + fineGranAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Indicates the fine granularity areas to which the request applies. + visitedAreas: + type: array + items: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + minItems: 1 + maxTopAppUlNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxTopAppDlNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nfInstanceIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + nfSetIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + nfTypes: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + minItems: 1 + nsiIdInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NsiIdInfo' + minItems: 1 + qosRequ: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/QosRequirement' + nwPerfReqs: + type: array + items: + $ref: '#/components/schemas/NetworkPerfReq' + minItems: 1 + nwPerfTypes: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfType' + minItems: 1 + addNwPerfReqs: + type: array + items: + $ref: '#/components/schemas/ResourceUsageRequPerNwPerfType' + minItems: 1 + userDataConReqs: + type: array + items: + $ref: '#/components/schemas/UserDataCongestReq' + minItems: 1 + bwRequs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/BwRequirement' + minItems: 1 + excepIds: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ExceptionId' + minItems: 1 + exptAnaType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ExpectedAnalyticsType' + exptUeBehav: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExpectedUeBehaviourData' + ratFreqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RatFreqInformation' + minItems: 1 + disperReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionRequirement' + minItems: 1 + redTransReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RedundantTransmissionExpReq' + minItems: 1 + wlanReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/WlanPerformanceReq' + minItems: 1 + listOfAnaSubsets: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsSubset' + minItems: 1 + upfInfo: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/UpfInformation' + appServerAddrs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + minItems: 1 + dnPerfReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerformanceReq' + minItems: 1 + ueMobilityReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeMobilityReq' + minItems: 1 + ueCommReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommReq' + minItems: 1 + pduSesInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + pduSesTrafReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PduSesTrafficReq' + minItems: 1 + locAccReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocAccuracyReq' + minItems: 1 + locGranularity: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocInfoGranularity' + locOrientation: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocationOrientation' + useCaseCxt: + type: string + description: > + Indicates the context of usage of the analytics. The value and format of this parameter + are not standardized. + dataVlTrnsTmRqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeReq' + minItems: 1 + accuReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyReq' + movBehavReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavReq' + minItems: 1 + relProxReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RelProxReq' + minItems: 1 + not: + required: [anySlice, snssais] + + ProblemDetailsAnalyticsInfoRequest: + description: > + Extends ProblemDetails to indicate more details why the analytics request is rejected. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoAnalyticsInfoRequest' + + AdditionInfoAnalyticsInfoRequest: + description: Indicates additional information why the analytics request is rejected. + type: object + properties: + rvWaitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + ContextData: + description: > + Contains context information related to analytics subscriptions corresponding with one or + more context identifiers. + type: object + properties: + contextElems: + type: array + items: + $ref: '#/components/schemas/ContextElement' + minItems: 1 + description: > + List of items that contain context information corresponding with a context identifier. + required: + - contextElems + + ContextElement: + description: Contains context information corresponding with a specific context identifier. + type: object + properties: + contextId: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsContextIdentifier' + pendAnalytics: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventNotification' + minItems: 1 + description: > + Output analytics for the analytics subscription which have not yet been sent to the + analytics consumer. + histAnalytics: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventNotification' + minItems: 1 + description: Historical output analytics. + lastOutputTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + aggrSubs: + type: array + items: + $ref: '#/components/schemas/SpecificAnalyticsSubscription' + minItems: 1 + description: > + Information about analytics subscriptions that the NWDAF has with other NWDAFs to + perform aggregation. + histData: + type: array + items: + $ref: '#/components/schemas/HistoricalData' + minItems: 1 + description: Historical data related to the analytics subscription. + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + adrfDataTypes: + type: array + items: + $ref: '#/components/schemas/AdrfDataType' + minItems: 1 + description: Type(s) of data stored in the ADRF by the NWDAF. + aggrNwdafIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + description: > + NWDAF identifiers of NWDAF instances used by the NWDAF service consumer when aggregating + multiple analytics subscriptions. + modelInfo: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ModelInfo' + minItems: 1 + description: > + Contains information identifying the ML model(s) that the consumer NWDAF is currently + subscribing for the analytics. + required: + - contextId + + ContextIdList: + description: > + Contains a list of context identifiers of context information of analytics + subscriptions. + type: object + properties: + contextIds: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsContextIdentifier' + minItems: 1 + required: + - contextIds + + HistoricalData: + description: Contains historical data related to an analytics subscription. + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + subsWithSources: + type: array + items: + $ref: '#/components/schemas/SpecificDataSubscription' + minItems: 1 + description: Information about subscriptions with the data sources. + data: + type: array + items: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataNotification' + minItems: 1 + description: Historical data related to the analytics. + required: + - data + + NetworkPerfReq: + description: Represents a network performance requirement. + type: object + properties: + orderCriterion: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfOrderCriterion' + orderDirection: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MatchingDirection' + + + SpecificAnalyticsSubscription: + description: > + Represents an existing subscription for a specific type of analytics to a specific NWDAF. + type: object + properties: + subscriptionId: + type: string + producerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + producerSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + nwdafEvSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + allOf: + - oneOf: + - required: [producerId] + - required: [producerSetId] + - required: [subscriptionId] + - required: [nwdafEvSub] + + RequestedContext: + description: Contains types of analytics context information. + type: object + properties: + contexts: + type: array + items: + $ref: '#/components/schemas/ContextType' + minItems: 1 + description: List of analytics context types. + required: + - contexts + + SmcceInfo: + description: Represents the Session Management congestion control experience information. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + smcceUeList: + $ref: '#/components/schemas/SmcceUeList' + required: + - smcceUeList + + SmcceUeList: + description: > + Represents the List of UEs classified based on experience level of Session Management + congestion control. + type: object + properties: + highLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + mediumLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + lowLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + anyOf: + - required: [highLevel] + - required: [mediumLevel] + - required: [lowLevel] + + SpecificDataSubscription: + description: > + Represents an existing subscription for data collection to a specific data source NF. + type: object + properties: + subscriptionId: + type: string + producerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + producerSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + dataSub: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataSubscription' + allOf: + - oneOf: + - required: [producerId] + - required: [producerSetId] + - required: [subscriptionId] + - required: [dataSub] + + UserDataCongestReq: + description: > + Represents a user data congesion requirement. + type: object + properties: + orderCriterion: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UserDataConOrderCrit' + orderDirection: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MatchingDirection' + + ResourceUsageRequPerNwPerfType: + description: More requirement for each network performance type. + type: object + properties: + nwPerfType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfType' + rscUsgReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ResourceUsageRequirement' + required: + - nwPerfType + +# +# ENUMERATIONS DATA TYPES +# + EventId: + anyOf: + - type: string + enum: + - LOAD_LEVEL_INFORMATION + - NETWORK_PERFORMANCE + - NF_LOAD + - SERVICE_EXPERIENCE + - UE_MOBILITY + - UE_COMMUNICATION + - QOS_SUSTAINABILITY + - ABNORMAL_BEHAVIOUR + - USER_DATA_CONGESTION + - NSI_LOAD_LEVEL + - SM_CONGESTION + - DISPERSION + - RED_TRANS_EXP + - WLAN_PERFORMANCE + - DN_PERFORMANCE + - PFD_DETERMINATION + - PDU_SESSION_TRAFFIC + - E2E_DATA_VOL_TRANS_TIME + - MOVEMENT_BEHAVIOUR + - LOC_ACCURACY + - RELATIVE_PROXIMITY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the analytics type. + Possible values are: + - LOAD_LEVEL_INFORMATION: Represent the analytics of load level information of corresponding + network slice. + - NETWORK_PERFORMANCE: Represent the analytics of network performance information. + - NF_LOAD: Indicates that the event subscribed is NF Load. + - SERVICE_EXPERIENCE: Represent the analytics of service experience information of the + specific applications. + - UE_MOBILITY: Represent the analytics of UE mobility. + - UE_COMMUNICATION: Represent the analytics of UE communication. + - QOS_SUSTAINABILITY: Represent the analytics of QoS sustainability information in the + certain area. + - ABNORMAL_BEHAVIOUR: Indicates that the event subscribed is abnormal behaviour information. + - USER_DATA_CONGESTION: Represent the analytics of the user data congestion in the certain + area. + - NSI_LOAD_LEVEL: Represent the analytics of Network Slice and the optionally associated + Network Slice Instance. + - SM_CONGESTION: Represent the analytics of Session Management congestion control experience + information for specific DNN and/or S-NSSAI. + - DISPERSION: Represents the analytics of dispersion. + - RED_TRANS_EXP: Represents the analytics of Redundant Transmission Experience. + - WLAN_PERFORMANCE: Represents the analytics of WLAN performance. + - DN_PERFORMANCE: Represents the analytics of DN performance. + - PFD_DETERMINATION: Represents the analytics of PFD Determination information for known application identifier(s). + - PDU_SESSION_TRAFFIC: Represents the analytics of PDU Session traffic. + - E2E_DATA_VOL_TRANS_TIME: Represents the analytics of E2E data volume transfer time. + - MOVEMENT_BEHAVIOUR: Represents the analytics of the Movement Behaviour information. + - LOC_ACCURACY: Represents the analytics of location accuracy. + - RELATIVE_PROXIMITY: Represents the analytics of Relative Proximity information. + + + ContextType: + anyOf: + - type: string + enum: + - PENDING_ANALYTICS + - HISTORICAL_ANALYTICS + - AGGR_SUBS + - DATA + - AGGR_INFO + - ML_MODELS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the analytics context information type. + Possible values are: + - PENDING_ANALYTICS: Represents context information that relates to pending output + analytics. + - HISTORICAL_ANALYTICS: Represents context information that relates to historical output + analytics. + - AGGR_SUBS: Represents context information about the analytics subscriptions that an NWDAF + has with other NWDAFs that collectively serve an analytics subscription. + - DATA: Represents context information about historical data that is available. + - AGGR_INFO: Represents context information that is related to aggregation of analytics + from multiple NWDAF subscriptions. + - ML_MODELS: Represents context information about used ML models. + + AdrfDataType: + anyOf: + - type: string + enum: + - HISTORICAL_ANALYTICS + - HISTORICAL_DATA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a type of data that is stored in the ADRF. + Possible values are: + - HISTORICAL_ANALYTICS: Indicates that historical analytics are stored in the ADRF. + - HISTORICAL_DATA: Indicates that historical data are stored in the ADRF. diff --git a/TS29520_Nnwdaf_DataManagement.yaml b/TS29520_Nnwdaf_DataManagement.yaml new file mode 100644 index 0000000..67139d8 --- /dev/null +++ b/TS29520_Nnwdaf_DataManagement.yaml @@ -0,0 +1,399 @@ +openapi: 3.0.0 +info: + title: Nnwdaf_DataManagement + version: 1.1.0-alpha.4 + description: | + Nnwdaf_DataManagement API Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.520 V18.4.0; 5G System; Network Data Analytics Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.520/' +servers: + - url: '{apiRoot}/nnwdaf-datamanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-datamanagement +paths: + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementSubsc' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnwdaf-datamanagement//subscriptions/{subId}. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notificURI}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementNotif' + responses: + '200': + description: The notification is acknowledged and a planned action is provided. + content: + application/json: + schema: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/NotifResponse' + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + Fetch: + '{request.body#/fetchInstruct/fetchUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + type: string + minItems: 1 + description: Indicate the fetch correlation identifier. + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementNotif' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + put: + summary: Update an existing Individual NWDAF Data Subscription. + operationId: UpdateNWDAFDataSubscription + tags: + - Individual NWDAF Data Management Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementSubsc' + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafDataManagementSubsc' + '204': + description: No Content. Resource was succesfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: unsubscribe from notifications + operationId: DeleteNWDAFDataSubscription + tags: + - Individual NWDAF Data Management Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '200': + description: > + Resource was succesfully deleted and including the stored unsent events in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafDataManagementNotif' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnwdaf-datamanagement: Access to the Nnwdaf_DataManagement API + schemas: + NnwdafDataManagementSubsc: + description: Represents an Individual NWDAF Data Management Subscription resource. + type: object + properties: + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + adrfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + anaSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + dataCollectPurposes: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/DataCollectionPurpose' + minItems: 1 + description: > + The purposes of data collection. This attribute may only be provided if user consent + is reqiured depending on local policy and regulations and the consumer has + not checked user consent. + checkedConsentInd: + type: boolean + description: Indication that the NF service consumer has already checked the user consent. + dataSub: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataSubscription' + formatInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/FormattingInstruction' + notifCorrId: + type: string + description: Notification correlation identifier. + notificURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifEndpoints: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/NotifyEndpoint' + minItems: 1 + description: The information of notification endpoints. + procInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + multiProcInstructs: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + minItems: 1 + description: Processing instructions to be used for sending event notifications. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + targetNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + immReport: + $ref: '#/components/schemas/NnwdafDataManagementNotif' + storeHandl: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/StorageHandlingInformation' + required: + - notifCorrId + - notificURI + oneOf: + - required: [anaSub] + - required: [dataSub] + NnwdafDataManagementNotif: + description: Represents an Individual Notification. + type: object + properties: + dataNotification: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataNotification' + dataReports: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/NotifSummaryReport' + minItems: 1 + description: List of summary reports of processed notifications. + delAlert: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/DeletionAlert' + notifCorrId: + type: string + description: Notification correlation identifier. + terminationReq: + type: string + description: > + It indicates that the termination of the data management subscription + is requested by the NWDAF. + fetchInstruct: + $ref: 'TS29576_Nmfaf_3caDataManagement.yaml#/components/schemas/FetchInstruction' + notifTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pendNotifCause: + $ref: '#/components/schemas/PendingNotificationCause' + required: + - notifCorrId + - notifTimestamp + oneOf: + - required: [dataNotification] + - required: [dataReports] + - required: [fetchInstruct] + +# +# ENUMERATIONS DATA TYPES +# + PendingNotificationCause: + anyOf: + - type: string + enum: + - UE_OUT_OF_NF_SERVING_AREA + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the Pending Notification Cause for the stored unsent data. + Possible values are: + - UE_OUT_OF_NF_SERVING_AREA: The UE moved out of the NF serving area. + - OTHER: Other cause. + diff --git a/TS29520_Nnwdaf_EventsSubscription.yaml b/TS29520_Nnwdaf_EventsSubscription.yaml new file mode 100644 index 0000000..684554d --- /dev/null +++ b/TS29520_Nnwdaf_EventsSubscription.yaml @@ -0,0 +1,4015 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Nnwdaf_EventsSubscription + description: | + Nnwdaf_EventsSubscription Service API. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.520 V18.4.0; 5G System; Network Data Analytics Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.520/' + +security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + +servers: + - url: '{apiRoot}/nnwdaf-eventssubscription/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /subscriptions: + post: + summary: Create a new Individual NWDAF Events Subscription + operationId: CreateNWDAFEventsSubscription + tags: + - NWDAF Events Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafEventsSubscription' + responses: + '201': + description: Create a new Individual NWDAF Event Subscription resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnwdaf-eventssubscription//subscriptions/{subscriptionId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafEventsSubscription' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notificationURI}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NnwdafEventsSubscriptionNotification' + minItems: 1 + responses: + '204': + description: The receipt of the Notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + delete: + summary: Delete an existing Individual NWDAF Events Subscription + operationId: DeleteNWDAFEventsSubscription + tags: + - Individual NWDAF Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_EventsSubscription Service + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual NWDAF Event Subscription resource matching the subscriptionId + was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '501': + $ref: 'TS29571_CommonData.yaml#/components/responses/501' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Update an existing Individual NWDAF Events Subscription + operationId: UpdateNWDAFEventsSubscription + tags: + - Individual NWDAF Events Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafEventsSubscription' + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_EventsSubscription Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual NWDAF Event Subscription resource was modified successfully and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NnwdafEventsSubscription' + '204': + description: The Individual NWDAF Event Subscription resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /transfers: + post: + summary: Provide information about requested analytics subscriptions transfer and potentially create a new Individual NWDAF Event Subscription Transfer resource. + operationId: CreateNWDAFEventSubscriptionTransfer + tags: + - NWDAF Event Subscription Transfers (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - nnwdaf-eventssubscription:transfer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsSubscriptionsTransfer' + responses: + '201': + description: Create a new Individual NWDAF Event Subscription Transfer resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnwdaf-eventssubscription//transfers/{transferId} + required: true + schema: + type: string + '204': + description: > + No Content. The receipt of the information about analytics subscription(s) that are + requested to be transferred and the ability to handle this information (e.g. execute the + steps required to transfer an analytics subscription directly) is confirmed. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /transfers/{transferId}: + delete: + summary: Delete an existing Individual NWDAF Event Subscription Transfer + operationId: DeleteNWDAFEventSubscriptionTransfer + tags: + - Individual NWDAF Event Subscription Transfer (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - nnwdaf-eventssubscription:transfer + parameters: + - name: transferId + in: path + description: > + String identifying a request for an analytics subscription transfer to the + Nnwdaf_EventsSubscription Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual NWDAF Event Subscription Transfer resource matching the + transferId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '501': + $ref: 'TS29571_CommonData.yaml#/components/responses/501' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Update an existing Individual NWDAF Event Subscription Transfer + operationId: UpdateNWDAFEventSubscriptionTransfer + tags: + - Individual NWDAF Event Subscription Transfer (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - oAuth2ClientCredentials: + - nnwdaf-eventssubscription + - nnwdaf-eventssubscription:transfer + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsSubscriptionsTransfer' + parameters: + - name: transferId + in: path + description: > + String identifying a request for an analytics subscription transfer to the + Nnwdaf_EventsSubscription Service + required: true + schema: + type: string + responses: + '204': + description: > + The Individual NWDAF Event Subscription Transfer resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnwdaf-eventssubscription: Access to the Nnwdaf_EventsSubscription API + nnwdaf-eventssubscription:transfer: > + Access to service operations applying to NWDAF event subscription transfer. + + schemas: + + NnwdafEventsSubscription: + description: Represents an Individual NWDAF Event Subscription resource. + type: object + properties: + eventSubscriptions: + type: array + items: + $ref: '#/components/schemas/EventSubscription' + minItems: 1 + description: Subscribed events + evtReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + eventNotifications: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + failEventReports: + type: array + items: + $ref: '#/components/schemas/FailureEventInfo' + minItems: 1 + prevSub: + $ref: '#/components/schemas/PrevSubInfo' + consNfInfo: + $ref: '#/components/schemas/ConsumerNfInformation' + required: + - eventSubscriptions + + EventSubscription: + description: Represents a subscription to a single event. + type: object + properties: + anySlice: + $ref: '#/components/schemas/AnySlice' + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + description: Identification(s) of application to which the subscription applies. + deviations: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Identification(s) of DNN to which the subscription applies. + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + event: + $ref: '#/components/schemas/NwdafEvent' + extraReportReq: + $ref: '#/components/schemas/EventReportingRequirement' + ladnDnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Identification(s) of LADN DNN to indicate the LADN service area as the AOI. + loadLevelThreshold: + type: integer + description: > + Indicates that the NWDAF shall report the corresponding network slice load level to the + NF service consumer where the load level of the network slice identified by snssais is + reached. + notificationMethod: + $ref: '#/components/schemas/NotificationMethod' + matchingDir: + $ref: '#/components/schemas/MatchingDirection' + nfLoadLvlThds: + type: array + items: + $ref: '#/components/schemas/ThresholdLevel' + minItems: 1 + description: > + Shall be supplied in order to start reporting when an average load level is reached. + nfInstanceIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + nfSetIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + nfTypes: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + minItems: 1 + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + location: + $ref: '#/components/schemas/GeoLocation' + temporalGranSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + spatialGranSizeTa: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + spatialGranSizeCell: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + fineGranAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Indicates the fine granularity areas to which the subscription applies. + visitedAreas: + type: array + items: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + minItems: 1 + maxTopAppUlNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxTopAppDlNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + nsiIdInfos: + type: array + items: + $ref: '#/components/schemas/NsiIdInfo' + minItems: 1 + nsiLevelThrds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + qosRequ: + $ref: '#/components/schemas/QosRequirement' + qosFlowRetThds: + type: array + items: + $ref: '#/components/schemas/RetainabilityThreshold' + minItems: 1 + ranUeThrouThds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minItems: 1 + repetitionPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + snssaia: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: > + Identification(s) of network slice to which the subscription applies. It corresponds to + snssais in the data model definition of 3GPP TS 29.520. + tgtUe: + $ref: '#/components/schemas/TargetUeInformation' + congThresholds: + type: array + items: + $ref: '#/components/schemas/ThresholdLevel' + minItems: 1 + nwPerfRequs: + type: array + items: + $ref: '#/components/schemas/NetworkPerfRequirement' + minItems: 1 + ueCommReqs: + type: array + items: + $ref: '#/components/schemas/UeCommReq' + minItems: 1 + ueMobilityReqs: + type: array + items: + $ref: '#/components/schemas/UeMobilityReq' + minItems: 1 + userDataConOrderCri: + $ref: '#/components/schemas/UserDataConOrderCrit' + bwRequs: + type: array + items: + $ref: '#/components/schemas/BwRequirement' + minItems: 1 + excepRequs: + type: array + items: + $ref: '#/components/schemas/Exception' + minItems: 1 + exptAnaType: + $ref: '#/components/schemas/ExpectedAnalyticsType' + exptUeBehav: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExpectedUeBehaviourData' + ratFreqs: + type: array + items: + $ref: '#/components/schemas/RatFreqInformation' + minItems: 1 + listOfAnaSubsets: + type: array + items: + $ref: '#/components/schemas/AnalyticsSubset' + minItems: 1 + disperReqs: + type: array + items: + $ref: '#/components/schemas/DispersionRequirement' + minItems: 1 + redTransReqs: + type: array + items: + $ref: '#/components/schemas/RedundantTransmissionExpReq' + minItems: 1 + wlanReqs: + type: array + items: + $ref: '#/components/schemas/WlanPerformanceReq' + minItems: 1 + upfInfo: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/UpfInformation' + appServerAddrs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + minItems: 1 + dnPerfReqs: + type: array + items: + $ref: '#/components/schemas/DnPerformanceReq' + minItems: 1 + pduSesInfos: + type: array + items: + $ref: '#/components/schemas/PduSessionInfo' + minItems: 1 + useCaseCxt: + type: string + description: > + Indicates the context of usage of the analytics. The value and format of this parameter + are not standardized. + pduSesTrafReqs: + type: array + items: + $ref: '#/components/schemas/PduSesTrafficReq' + minItems: 1 + locAccReqs: + type: array + items: + $ref: '#/components/schemas/LocAccuracyReq' + minItems: 1 + locGranularity: + $ref: '#/components/schemas/LocInfoGranularity' + locOrientation: + $ref: '#/components/schemas/LocationOrientation' + dataVlTrnsTmRqs: + type: array + items: + $ref: '#/components/schemas/E2eDataVolTransTimeReq' + minItems: 1 + accuReq: + $ref: '#/components/schemas/AccuracyReq' + pauseFlg: + type: boolean + description: > + Pause analytics consumption flag. Set to "true" to indicate the NWDAF to stop sending + the notifications of analytics. Default value is "false" if omitted. + resumeFlg: + type: boolean + description: > + Resume analytics consumption flag. Set to "true" to indicate the NWDAF to resume sending + the notifications of analytics. Default value is "false" if omitted. + movBehavReqs: + type: array + items: + $ref: '#/components/schemas/MovBehavReq' + minItems: 1 + relProxReqs: + type: array + items: + $ref: '#/components/schemas/RelProxReq' + minItems: 1 + feedback: + $ref: '#/components/schemas/AnalyticsFeedbackInfo' + required: + - event + not: + required: [excepRequs, exptAnaType] + + NnwdafEventsSubscriptionNotification: + description: Represents an Individual NWDAF Event Subscription Notification resource. + type: object + properties: + eventNotifications: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + description: Notifications about Individual Events + subscriptionId: + type: string + description: String identifying a subscription to the Nnwdaf_EventsSubscription Service + notifCorrId: + type: string + description: Notification correlation identifier. + oldSubscriptionId: + type: string + description: > + Subscription ID which was allocated by the source NWDAF. This parameter shall be present + if the notification is for informing the assignment of a new Subscription Id by the + target NWDAF. + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + termCause: + $ref: '#/components/schemas/TermCause' + transEvents: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + required: + - subscriptionId + oneOf: + - required: [eventNotifications] + - allOf: + - required: [resourceUri] + - required: [oldSubscriptionId] + + EventNotification: + description: Represents a notification on events that occurred. + type: object + properties: + event: + $ref: '#/components/schemas/NwdafEvent' + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeStampGen: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + failNotifyCode: + $ref: '#/components/schemas/NwdafFailureCode' + rvWaitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + anaMetaInfo: + $ref: '#/components/schemas/AnalyticsMetadataInfo' + nfLoadLevelInfos: + type: array + items: + $ref: '#/components/schemas/NfLoadLevelInformation' + minItems: 1 + nsiLoadLevelInfos: + type: array + items: + $ref: '#/components/schemas/NsiLoadLevelInfo' + minItems: 1 + pfdDetermInfos: + type: array + items: + $ref: '#/components/schemas/PfdDeterminationInfo' + minItems: 1 + sliceLoadLevelInfo: + $ref: '#/components/schemas/SliceLoadLevelInformation' + svcExps: + type: array + items: + $ref: '#/components/schemas/ServiceExperienceInfo' + minItems: 1 + qosSustainInfos: + type: array + items: + $ref: '#/components/schemas/QosSustainabilityInfo' + minItems: 1 + ueComms: + type: array + items: + $ref: '#/components/schemas/UeCommunication' + minItems: 1 + ueMobs: + type: array + items: + $ref: '#/components/schemas/UeMobility' + minItems: 1 + userDataCongInfos: + type: array + items: + $ref: '#/components/schemas/UserDataCongestionInfo' + minItems: 1 + abnorBehavrs: + type: array + items: + $ref: '#/components/schemas/AbnormalBehaviour' + minItems: 1 + nwPerfs: + type: array + items: + $ref: '#/components/schemas/NetworkPerfInfo' + minItems: 1 + dnPerfInfos: + type: array + items: + $ref: '#/components/schemas/DnPerfInfo' + minItems: 1 + disperInfos: + type: array + items: + $ref: '#/components/schemas/DispersionInfo' + minItems: 1 + redTransInfos: + type: array + items: + $ref: '#/components/schemas/RedundantTransmissionExpInfo' + minItems: 1 + wlanInfos: + type: array + items: + $ref: '#/components/schemas/WlanPerformanceInfo' + minItems: 1 + smccExps: + type: array + items: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/SmcceInfo' + minItems: 1 + pduSesTrafInfos: + type: array + items: + $ref: '#/components/schemas/PduSesTrafficInfo' + minItems: 1 + dataVlTrnsTmInfos: + type: array + items: + $ref: '#/components/schemas/E2eDataVolTransTimeInfo' + minItems: 1 + accuInfo: + $ref: '#/components/schemas/AccuracyInfo' + cancelAccuInd: + type: boolean + description: > + Indicates cancelled subscription of the analytics accuracy information. + Set to "true" indicates the NWDAF cancelled subscription of analytics accuracy + information as the NWDAF does not support the accuracy checking capability. + Otherwise set to "false". Default value is "false" if omitted. + pauseInd: + type: boolean + description: > + Pause analytics consumption indication. Set to "true" to indicate the consumer to stop + the consumption of the analytics. Default value is "false" if omitted. + resumeInd: + type: boolean + description: > + Resume analytics consumption indication. Set to "true" to indicate the consumer to + resume the consumption of the analytics. Default value is "false" if omitted. + movBehavInfos: + type: array + items: + $ref: '#/components/schemas/MovBehavInfo' + minItems: 1 + locAccInfos: + type: array + items: + $ref: '#/components/schemas/LocAccuracyInfo' + minItems: 1 + relProxInfos: + type: array + items: + $ref: '#/components/schemas/RelProxInfo' + minItems: 1 + required: + - event + + ServiceExperienceInfo: + description: Represents service experience information. + type: object + properties: + svcExprc: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/SvcExperience' + svcExprcVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + srvExpcType: + $ref: '#/components/schemas/ServiceExperienceType' + ueLocs: + type: array + items: + $ref: '#/components/schemas/LocationInfo' + minItems: 1 + upfInfo: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/UpfInformation' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + appServerInst: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + nsiId: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + ratFreq: + $ref: '#/components/schemas/RatFreqInformation' + pduSesInfo: + $ref: '#/components/schemas/PduSessionInfo' + required: + - svcExprc + + BwRequirement: + description: Represents bandwidth requirements. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + marBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + marBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mirBwUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + required: + - appId + + SliceLoadLevelInformation: + description: Contains load level information applicable for one or several slices. + type: object + properties: + loadLevelInformation: + $ref: '#/components/schemas/LoadLevelInformation' + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: Identification(s) of network slice to which the subscription applies. + required: + - loadLevelInformation + - snssais + + NsiLoadLevelInfo: + description: > + Represents the network slice and optionally the associated network slice instance and the + load level information. + type: object + properties: + loadLevelInformation: + $ref: '#/components/schemas/LoadLevelInformation' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nsiId: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + resUsage: + $ref: '#/components/schemas/ResourceUsage' + numOfExceedLoadLevelThr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + exceedLoadLevelThrInd: + type: boolean + description: > + Indicates whether the Load Level Threshold is met or exceeded by the statistics value. + Set to "true" if the Load Level Threshold is met or exceeded, otherwise set to "false". + Shall be present if one of the element in the "listOfAnaSubsets" attribute was set to + EXCEED_LOAD_LEVEL_THR_IND. + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + resUsgThrCrossTimePeriod: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + description: > + Each element indicates the time elapsed between times each threshold is met or exceeded + or crossed. The start time and end time are the exact time stamps of the resource usage + threshold is reached or exceeded. May be present if the "listOfAnaSubsets" attribute is + provided and the maximum number of instances shall not exceed the value provided in the + "numOfExceedLoadLevelThr" attribute. + numOfUes: + $ref: '#/components/schemas/NumberAverage' + numOfPduSess: + $ref: '#/components/schemas/NumberAverage' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - loadLevelInformation + - snssai + + NsiIdInfo: + description: Represents the S-NSSAI and the optionally associated Network Slice Instance(s). + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nsiIds: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + minItems: 1 + required: + - snssai + + EventReportingRequirement: + description: Represents the type of reporting that the subscription requires. + type: object + properties: + accuracy: + $ref: '#/components/schemas/Accuracy' + accPerSubset: + type: array + items: + $ref: '#/components/schemas/Accuracy' + minItems: 1 + description: > + Each element indicates the preferred accuracy level per analytics subset. It may be + present if the "listOfAnaSubsets" attribute is present in the subscription request. + startTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + offsetPeriod: + type: integer + description: > + Offset period in units of seconds to the reporting time, if the value is negative means + statistics in the past offset period, otherwise a positive value means prediction in the + future offset period. May be present if the "repPeriod" attribute is included within the + "evtReq" attribute or the "repetitionPeriod" attribute is included within the + EventSubscription type. + sampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + maxObjectNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxSupiNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeAnaNeeded: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + anaMeta: + type: array + items: + $ref: '#/components/schemas/AnalyticsMetadata' + minItems: 1 + anaMetaInd: + $ref: '#/components/schemas/AnalyticsMetadataIndication' + histAnaTimePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + + TargetUeInformation: + description: Identifies the target UE information. + type: object + properties: + anyUe: + type: boolean + description: > + Identifies any UE when setting to "true". Default value is "false" if omitted. + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + intGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + + UeMobility: + description: Represents UE mobility information. + type: object + properties: + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + recurringTime: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + durationVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + locInfos: + type: array + items: + $ref: '#/components/schemas/LocationInfo' + minItems: 1 + directionInfos: + type: array + items: + $ref: '#/components/schemas/DirectionInfo' + minItems: 1 + allOf: + - required: [duration] + - required: [locInfos] + - oneOf: + - required: [ts] + - required: [recurringTime] + + LocationInfo: + description: Represents UE location information. + type: object + properties: + loc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + geoLoc: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + geoDistrInfos: + type: array + items: + $ref: '#/components/schemas/GeoDistributionInfo' + minItems: 1 + distThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - loc + + DirectionInfo: + description: Represents the UE direction information. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + numOfUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avrSpeed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + direction: + $ref: '#/components/schemas/Direction' + required: + - direction + oneOf: + - required: [supi] + - required: [gpsi] + + GeoDistributionInfo: + description: Represents the geographical distribution of the UEs. + type: object + properties: + loc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + required: + - loc + oneOf: + - required: [supis] + - required: [gpsis] + + UeCommunication: + description: Represents UE communication information. + type: object + properties: + commDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + commDurVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + perioTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + perioTimeVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + recurringTime: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + trafChar: + $ref: '#/components/schemas/TrafficCharacterization' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + perioCommInd: + type: boolean + description: > + This attribute indicates whether the UE communicates periodically or not. Set to "true" + to indicate the UE communicates periodically, otherwise set to "false" or omitted. + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + anaOfAppList: + $ref: '#/components/schemas/AppListForUeComm' + sessInactTimer: + $ref: '#/components/schemas/SessInactTimerForUeComm' + allOf: + - required: [commDur] + - required: [trafChar] + - oneOf: + - required: [ts] + - required: [recurringTime] + TrafficCharacterization: + description: Identifies the detailed traffic characterization. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + fDescs: + type: array + items: + $ref: '#/components/schemas/IpEthFlowDescription' + minItems: 1 + maxItems: 2 + ulVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + ulVolVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + dlVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + dlVolVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + anyOf: + - required: [ulVol] + - required: [dlVol] + + UserDataCongestionInfo: + description: Represents the user data congestion information. + type: object + properties: + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + congestionInfo: + $ref: '#/components/schemas/CongestionInfo' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - networkArea + - congestionInfo + + CongestionInfo: + description: Represents the congestion information. + type: object + properties: + congType: + $ref: '#/components/schemas/CongestionType' + timeIntev: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + nsi: + $ref: '#/components/schemas/ThresholdLevel' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + topAppListUl: + type: array + items: + $ref: '#/components/schemas/TopApplication' + minItems: 1 + topAppListDl: + type: array + items: + $ref: '#/components/schemas/TopApplication' + minItems: 1 + required: + - congType + - timeIntev + - nsi + + TopApplication: + description: Top application that contributes the most to the traffic. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + oneOf: + - required: [appId] + - required: [ipTrafficFilter] + + QosSustainabilityInfo: + description: Represents the QoS Sustainability information. + type: object + properties: + areaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + fineAreaInfos: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: > + This attribute contains the geographical locations in a fine granularity. startTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qosFlowRetThd: + $ref: '#/components/schemas/RetainabilityThreshold' + ranUeThrouThd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + oneOf: + - required: [qosFlowRetThd] + - required: [ranUeThrouThd] + + QosRequirement: + description: Represents the QoS requirements. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + gfbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gfbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + resType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/QosResourceType' + pdb: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + per: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + deviceSpeed: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + deviceType: + $ref: '#/components/schemas/DeviceType' + oneOf: + - required: [5qi] + - required: [resType] + + ThresholdLevel: + description: Represents a threshold level. + type: object + properties: + congLevel: + type: integer + nfLoadLevel: + type: integer + nfCpuUsage: + type: integer + nfMemoryUsage: + type: integer + nfStorageUsage: + type: integer + avgTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + aggTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + varTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + maxPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + svcExpLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + speed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + + NfLoadLevelInformation: + description: Represents load level information of a given NF instance. + type: object + properties: + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + nfStatus: + $ref: '#/components/schemas/NfStatus' + nfCpuUsage: + type: integer + nfMemoryUsage: + type: integer + nfStorageUsage: + type: integer + nfLoadLevelAverage: + type: integer + nfLoadLevelpeak: + type: integer + nfLoadAvgInAoi: + type: integer + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + allOf: + - required: [nfType] + - required: [nfInstanceId] + - anyOf: + - required: [nfStatus] + - required: [nfCpuUsage] + - required: [nfMemoryUsage] + - required: [nfStorageUsage] + - required: [nfLoadLevelAverage] + - required: [nfLoadLevelPeak] + + NfStatus: + description: Contains the percentage of time spent on various NF states. + type: object + properties: + statusRegistered: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + statusUnregistered: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + statusUndiscoverable: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + anyOf: + - required: [statusRegistered] + - required: [statusUnregistered] + - required: [statusUndiscoverable] + + AnySlice: + type: boolean + description: > + "false" represents not applicable for all slices. "true" represents applicable for all slices. + + LoadLevelInformation: + type: integer + description: > + Load level information of the network slice and the optionally associated network slice + instance. + + AbnormalBehaviour: + description: Represents the abnormal behaviour information. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + excep: + $ref: '#/components/schemas/Exception' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + addtMeasInfo: + $ref: '#/components/schemas/AdditionalMeasurement' + required: + - excep + + Exception: + description: Represents the Exception information. + type: object + properties: + excepId: + $ref: '#/components/schemas/ExceptionId' + excepLevel: + type: integer + excepTrend: + $ref: '#/components/schemas/ExceptionTrend' + required: + - excepId + + AdditionalMeasurement: + description: Represents additional measurement information. + type: object + properties: + unexpLoc: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + unexpFlowTeps: + type: array + items: + $ref: '#/components/schemas/IpEthFlowDescription' + minItems: 1 + unexpWakes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + minItems: 1 + ddosAttack: + $ref: '#/components/schemas/AddressList' + wrgDest: + $ref: '#/components/schemas/AddressList' + circums: + type: array + items: + $ref: '#/components/schemas/CircumstanceDescription' + minItems: 1 + + IpEthFlowDescription: + description: Contains the description of an Uplink and/or Downlink Ethernet flow. + type: object + properties: + ipTrafficFilter: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + ethTrafficFilter: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + oneOf: + - required: [ipTrafficFilter] + - required: [ethTrafficFilter] + + AddressList: + description: Represents a list of IPv4 and/or IPv6 addresses. + type: object + properties: + ipv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + ipv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + + CircumstanceDescription: + description: Contains the description of a circumstance. + type: object + properties: + freq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + tm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + locArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + vol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + + RetainabilityThreshold: + description: Represents a QoS flow retainability threshold. + type: object + properties: + relFlowNum: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + relTimeUnit: + $ref: '#/components/schemas/TimeUnit' + relFlowRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + oneOf: + - allOf: + - required: [relFlowNum] + - required: [relTimeUnit] + - required: [relFlowRatio] + + NetworkPerfRequirement: + description: Represents a network performance requirement. + type: object + properties: + nwPerfType: + $ref: '#/components/schemas/NetworkPerfType' + relativeRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + absoluteNum: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + orderCriterion: + $ref: '#/components/schemas/NetworkPerfOrderCriterion' + rscUsgReq: + $ref: '#/components/schemas/ResourceUsageRequirement' + required: + - nwPerfType + not: + required: [relativeRatio, absoluteNum] + + NetworkPerfInfo: + description: Represents the network performance information. + type: object + properties: + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + nwPerfType: + $ref: '#/components/schemas/NetworkPerfType' + anaPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + relativeRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + absoluteNum: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + rscUsgReq: + $ref: '#/components/schemas/ResourceUsageRequirement' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + allOf: + - required: [networkArea] + - required: [nwPerfType] + - oneOf: + - required: [relativeRatio] + - required: [absoluteNum] + + FailureEventInfo: + description: Contains information on the event for which the subscription is not successful. + type: object + properties: + event: + $ref: '#/components/schemas/NwdafEvent' + failureCode: + $ref: '#/components/schemas/NwdafFailureCode' + required: + - event + - failureCode + + AnalyticsMetadataIndication: + description: > + Contains analytics metadata information requested to be used during analytics generation. + type: object + properties: + dataWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataStatProps: + type: array + items: + $ref: '#/components/schemas/DatasetStatisticalProperty' + minItems: 1 + strategy: + $ref: '#/components/schemas/OutputStrategy' + aggrNwdafIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + + AnalyticsMetadataInfo: + description: Contains analytics metadata information required for analytics aggregation. + type: object + properties: + numSamples: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dataWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataStatProps: + type: array + items: + $ref: '#/components/schemas/DatasetStatisticalProperty' + minItems: 1 + strategy: + $ref: '#/components/schemas/OutputStrategy' + accuracy: + $ref: '#/components/schemas/Accuracy' + NumberAverage: + description: Represents average and variance information. + type: object + properties: + number: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + variance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + skewness: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + required: + - number + - variance + + AnalyticsSubscriptionsTransfer: + description: Contains information about a request to transfer analytics subscriptions. + type: object + properties: + subsTransInfos: + type: array + items: + $ref: '#/components/schemas/SubscriptionTransferInfo' + minItems: 1 + failTransEventReports: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + required: + - subsTransInfos + + SubscriptionTransferInfo: + description: Contains information about subscriptions that are requested to be transferred. + type: object + properties: + transReqType: + $ref: '#/components/schemas/TransferRequestType' + nwdafEvSub: + $ref: '#/components/schemas/NnwdafEventsSubscription' + consumerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + contextId: + $ref: '#/components/schemas/AnalyticsContextIdentifier' + sourceNfIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + sourceSetIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + modelInfo: + type: array + items: + $ref: '#/components/schemas/ModelInfo' + minItems: 1 + required: + - transReqType + - nwdafEvSub + - consumerId + + ModelInfo: + description: Contains information about an ML model. + type: object + properties: + analyticsId: + $ref: '#/components/schemas/NwdafEvent' + mlModelInfos: + type: array + items: + $ref: '#/components/schemas/MLModelInfo' + minItems: 1 + required: + - analyticsId + - mlModelInfos + MLModelInfo: + description: Contains information about an ML models. + type: object + properties: + mlFileAddrs: + type: array + items: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLModelAddr' + minItems: 1 + modelProvId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + modelProvSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + oneOf: + - required: [modelProvId] + - required: [modelProvSetId] + + AnalyticsContextIdentifier: + description: Contains information about available analytics contexts. + type: object + properties: + subscriptionId: + type: string + description: The identifier of a subscription. + nfAnaCtxts: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + description: > + List of analytics types for which NF related analytics contexts can be retrieved. + ueAnaCtxts: + type: array + items: + $ref: '#/components/schemas/UeAnalyticsContextDescriptor' + minItems: 1 + description: > + List of objects that indicate for which SUPI and analytics types combinations analytics + context can be retrieved. + allOf: + - anyOf: + - required: [nfAnaCtxts] + - required: [ueAnaCtxts] + - required: [subscriptionId] + + UeAnalyticsContextDescriptor: + description: Contains information about available UE related analytics contexts. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + anaTypes: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + description: > + List of analytics types for which UE related analytics contexts can be retrieved. + required: + - supi + - anaTypes + + DnPerfInfo: + description: Represents DN performance information. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnPerf: + type: array + items: + $ref: '#/components/schemas/DnPerf' + minItems: 1 + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - dnPerf + + DnPerf: + description: Represents DN performance for the application. + type: object + properties: + appServerInsAddr: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + upfInfo: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/UpfInformation' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + perfData: + $ref: '#/components/schemas/PerfData' + spatialValidCon: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + temporalValidCon: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + required: + - perfData + + PerfData: + description: Represents DN performance data. + type: object + properties: + avgTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + aggTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + varTrafficRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + trafRateUeIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + avePacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + maxPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + packDelayUeIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + avgPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varPacketLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + packLossUeIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + numOfUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + DispersionRequirement: + description: Represents the dispersion analytics requirements. + type: object + properties: + disperType: + $ref: '#/components/schemas/DispersionType' + classCriters: + type: array + items: + $ref: '#/components/schemas/ClassCriterion' + minItems: 1 + rankCriters: + type: array + items: + $ref: '#/components/schemas/RankingCriterion' + minItems: 1 + dispOrderCriter: + $ref: '#/components/schemas/DispersionOrderingCriterion' + order: + $ref: '#/components/schemas/MatchingDirection' + required: + - disperType + + ClassCriterion: + description: > + Indicates the dispersion class criterion for fixed, camper and/or traveller UE, and/or the + top-heavy UE dispersion class criterion. + type: object + properties: + disperClass: + $ref: '#/components/schemas/DispersionClass' + classThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + thresMatch: + $ref: '#/components/schemas/MatchingDirection' + required: + - disperClass + - classThreshold + - thresMatch + + RankingCriterion: + description: Indicates the usage ranking criterion between the high, medium and low usage UE. + type: object + properties: + highBase: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + lowBase: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + required: + - highBase + - lowBase + + DispersionInfo: + description: > + Represents the Dispersion information. When subscribed event is "DISPERSION", the + "disperInfos" attribute shall be included. + type: object + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + disperCollects: + type: array + items: + $ref: '#/components/schemas/DispersionCollection' + minItems: 1 + disperType: + $ref: '#/components/schemas/DispersionType' + required: + - tsStart + - tsDuration + - disperCollects + - disperType + + DispersionCollection: + description: Dispersion collection per UE location or per slice. + type: object + properties: + ueLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + appVolumes: + type: array + items: + $ref: '#/components/schemas/ApplicationVolume' + minItems: 1 + disperAmount: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + disperClass: + $ref: '#/components/schemas/DispersionClass' + usageRank: + type: integer + description: Integer where the allowed values correspond to 1, 2, 3 only. + minimum: 1 + maximum: 3 + percentileRank: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + ueRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + allOf: + - oneOf: + - required: [ueLoc] + - required: [snssai] + - anyOf: + - required: [disperAmount] + - required: [disperClass] + - required: [usageRank] + - required: [percentileRank] + + ApplicationVolume: + description: Application data volume per Application Id. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + appVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + required: + - appId + - appVolume + + RedundantTransmissionExpReq: + description: Represents other redundant transmission experience analytics requirements. + type: object + properties: + redTOrderCriter: + $ref: '#/components/schemas/RedTransExpOrderingCriterion' + order: + $ref: '#/components/schemas/MatchingDirection' + + RedundantTransmissionExpInfo: + description: > + The redundant transmission experience related information. When subscribed event is + "RED_TRANS_EXP", the "redTransInfos" attribute shall be included. + type: object + properties: + spatialValidCon: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redTransExps: + type: array + items: + $ref: '#/components/schemas/RedundantTransmissionExpPerTS' + minItems: 1 + required: + - redTransExps + + RedundantTransmissionExpPerTS: + description: The redundant transmission experience per Time Slot. + type: object + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + obsvRedTransExp: + $ref: '#/components/schemas/ObservedRedundantTransExp' + redTransStatus: + type: boolean + description: > + Redundant Transmission Status. Set to "true" if redundant transmission was activated, + otherwise set to "false". Default value is "false" if omitted. + ueRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - tsStart + - tsDuration + - obsvRedTransExp + ObservedRedundantTransExp: + description: Represents the observed redundant transmission experience related information. + type: object + properties: + avgPktDropRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varPktDropRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgPktDropRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varPktDropRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgPktDelayUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varPktDelayUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgPktDelayDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varPktDelayDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgE2ePktDelayUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varE2ePktDelayUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgE2ePktDelayDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + varE2ePktDelayDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgE2ePktLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varE2ePktLossRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + avgE2ePktLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + varE2ePktLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + + WlanPerformanceReq: + description: Represents other WLAN performance analytics requirements. + type: object + properties: + ssIds: + type: array + items: + type: string + minItems: 1 + bssIds: + type: array + items: + type: string + minItems: 1 + wlanOrderCriter: + $ref: '#/components/schemas/WlanOrderingCriterion' + order: + $ref: '#/components/schemas/MatchingDirection' + + WlanPerformanceInfo: + description: The WLAN performance related information. + type: object + properties: + networkArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + wlanPerSsidInfos: + type: array + items: + $ref: '#/components/schemas/WlanPerSsIdPerformanceInfo' + minItems: 1 + wlanPerUeIdInfos: + type: array + items: + $ref: '#/components/schemas/WlanPerUeIdPerformanceInfo' + minItems: 1 + description: > + WLAN performance information for UE Id(s) of WLAN access points deployed in the Area + of Interest. + required: + - wlanPerSsidInfos + + WlanPerSsIdPerformanceInfo: + description: The WLAN performance per SSID. + type: object + properties: + ssId: + type: string + wlanPerTsInfos: + type: array + items: + $ref: '#/components/schemas/WlanPerTsPerformanceInfo' + minItems: 1 + required: + - ssId + - wlanPerTsInfos + + WlanPerUeIdPerformanceInfo: + description: The WLAN performance per UE ID. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + wlanPerTsInfos: + type: array + items: + $ref: '#/components/schemas/WlanPerTsPerformanceInfo' + minItems: 1 + description: > + WLAN performance information per Time Slot during the analytics target period. + required: + - supi + - wlanPerTsInfos + + WlanPerTsPerformanceInfo: + description: WLAN performance information per Time Slot during the analytics target period. + type: object + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + rssi: + type: integer + rtt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + trafficInfo: + $ref: '#/components/schemas/TrafficInformation' + numberOfUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - tsStart + - tsDuration + anyOf: + - required: [rssi] + - required: [rtt] + - required: [trafficInfo] + - required: [numberOfUes] + + TrafficInformation: + description: Traffic information including UL/DL data rate and/or Traffic volume. + type: object + properties: + uplinkRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + downlinkRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + uplinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + downlinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + totalVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + anyOf: + - required: [uplinkRate] + - required: [downlinkRate] + - required: [uplinkVolume] + - required: [downlinkVolume] + - required: [totalVolume] + + AppListForUeComm: + description: Represents the analytics of the application list used by UE. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + appDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + occurRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + spatialValidity: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + required: + - appId + + SessInactTimerForUeComm: + description: Represents the N4 Session inactivity timer. + type: object + properties: + n4SessId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + sessInactiveTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - n4SessId + - sessInactiveTimer + + DnPerformanceReq: + description: Represents other DN performance analytics requirements. + type: object + properties: + dnPerfOrderCriter: + $ref: '#/components/schemas/DnPerfOrderingCriterion' + order: + $ref: '#/components/schemas/MatchingDirection' + reportThresholds: + type: array + items: + $ref: '#/components/schemas/ThresholdLevel' + minItems: 1 + + RatFreqInformation: + description: Represents the RAT type and/or Frequency information. + type: object + properties: + allFreq: + type: boolean + description: > + Set to "true" to indicate to handle all the frequencies the NWDAF received, otherwise + set to "false" or omit. The "allFreq" attribute and the "freq" attribute are mutually + exclusive. + allRat: + type: boolean + description: > + Set to "true" to indicate to handle all the RAT Types the NWDAF received, otherwise + set to "false" or omit. The "allRat" attribute and the "ratType" attribute are mutually + exclusive. + freq: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ArfcnValueNR' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + svcExpThreshold: + $ref: '#/components/schemas/ThresholdLevel' + matchingDir: + $ref: '#/components/schemas/MatchingDirection' + + PrevSubInfo: + description: Information of the previous subscription. + type: object + properties: + producerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + producerSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + subscriptionId: + type: string + description: The identifier of a subscription. + nfAnaEvents: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + ueAnaEvents: + type: array + items: + $ref: '#/components/schemas/UeAnalyticsContextDescriptor' + minItems: 1 + required: + - subscriptionId + oneOf: + - required: [producerId] + - required: [producerSetId] + + ResourceUsage: + description: > + The current usage of the virtual resources assigned to the NF instances belonging to a + particular network slice instance. + type: object + properties: + cpuUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + memoryUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + storageUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + ConsumerNfInformation: + description: Represents the analytics consumer NF Information. + type: object + properties: + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + oneOf: + - oneOf: + - required: [nfId] + - required: [nfSetId] + - required: [taiList] + + UeCommReq: + description: UE communication analytics requirement. + type: object + properties: + orderCriterion: + $ref: '#/components/schemas/UeCommOrderCriterion' + orderDirection: + $ref: '#/components/schemas/MatchingDirection' + UeMobilityReq: + description: UE mobility analytics requirement. + type: object + properties: + orderCriterion: + $ref: '#/components/schemas/UeMobilityOrderCriterion' + orderDirection: + $ref: '#/components/schemas/MatchingDirection' + ueLocOrderInd: + type: boolean + description: > + UE Location order indication. Set to "true" to indicate the NWDAF to provide UE + locations in the UE Mobility analytics in time order, otherwise set to "false" or + omitted. + distThresholds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + description: Indicates the linear distance threshold. + + PduSessionInfo: + description: Represents combination of PDU Session parameter(s) information. + type: object + properties: + pduSessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + + PfdDeterminationInfo: + description: Represents the PFD Determination information for a known application identifier. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + flowDescriptions: + type: array + items: + type: string + minItems: 1 + description: > + Represents a 3-tuple with protocol, server ip and server port for UL/DL + application traffic. The content of the string has the same encoding as the IPFilterRule + AVP value as defined in IETF RFC 6733. + urls: + type: array + items: + type: string + minItems: 1 + description: Represents the significant parts of the URL to be matched, e.g. host name. + domainNames: + type: array + items: + type: string + minItems: 1 + description: Represents Domain name matching criteria. + dnProtocol: + $ref: 'TS29122_PfdManagement.yaml#/components/schemas/DomainNameProtocol' + pfdConfidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - appId + + PduSesTrafficInfo: + description: Represents the PDU Set traffic analytics information. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + tdMatchTrafs: + type: array + items: + $ref: '#/components/schemas/TdTraffic' + minItems: 1 + tdUnmatchTrafs: + type: array + items: + $ref: '#/components/schemas/TdTraffic' + minItems: 1 + allOf: + - anyOf: + - required: [dnn] + - required: [snssai] + - anyOf: + - required: [tdMatchTrafs] + - required: [tdUnmatchTrafs] + + TdTraffic: + description: Represents traffic that matches or unmatches Traffic Descriptor of URSP rule. + type: object + properties: + pduSesTrafReqs: + type: array + items: + $ref: '#/components/schemas/PduSesTrafficReq' + minItems: 1 + ulVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + dlVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + allVol: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + ulNumOfPkt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dlNumOfPkt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + allNumOfPkt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + PduSesTrafficReq: + description: Represents the PDU Session traffic analytics requirements. + type: object + properties: + flowDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + description: > + Indicates traffic flow filtering description(s) for IP flow(s). + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + domainDescs: + type: array + items: + type: string + minItems: 1 + description: > + FQDN(s) or a regular expression which are used as a domain name matching criteria. + oneOf: + - required: [flowDescs] + - required: [appId] + - required: [domainDescs] + + ResourceUsageRequirement: + description: resource usage requirement. + type: object + properties: + tfcDirc: + $ref: '#/components/schemas/TrafficDirection' + valExp: + $ref: '#/components/schemas/ValueExpression' + + E2eDataVolTransTimeReq: + description: Represents other E2E data volume transfer time analytics requirements. + type: object + properties: + criterion: + $ref: '#/components/schemas/E2eDataVolTransTimeCriterion' + order: + $ref: '#/components/schemas/MatchingDirection' + highTransTmThr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + lowTransTmThr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + repeatDataTrans: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tsIntervalDataTrans: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dataVolume: + $ref: '#/components/schemas/DataVolume' + maxNumberUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + oneOf: + - required: [repeatDataTrans] + - required: [tsIntervalDataTrans] + + DataVolume: + description: Data Volume including UL/DL. + type: object + properties: + uplinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + downlinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + anyOf: + - required: [uplinkVolume] + - required: [downlinkVolume] + + E2eDataVolTransTimeInfo: + description: > + Represents the E2E data volume transfer time analytics information when subscribed event is + "E2E_DATA_VOL_TRANS_TIME", the "dataVlTrnsTmInfos" attribute shall be included. + type: object + properties: + e2eDataVolTransTimes: + type: array + items: + $ref: '#/components/schemas/E2eDataVolTransTimePerTS' + minItems: 1 + e2eDataVolTransTimeUeLists: + type: array + items: + $ref: '#/components/schemas/E2eDataVolTransTimeUeList' + minItems: 1 + geoDistrInfos: + type: array + items: + $ref: '#/components/schemas/GeoDistributionInfo' + minItems: 1 + required: + - e2eDataVolTransTimes + + E2eDataVolTransTimePerTS: + description: Represents the E2E data volume transfer time analytics per Time Slot. + type: object + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + e2eDataVolTransTimePerUe: + type: array + items: + $ref: '#/components/schemas/E2eDataVolTransTimePerUe' + minItems: 1 + required: + - tsStart + - tsDuration + - e2eDataVolTransTimePerUe + + E2eDataVolTransTimePerUe: + description: Represents the E2E data volume transfer time per UE. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ueLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + spatialValidity: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataVolTransTime: + $ref: '#/components/schemas/DataVolumeTransferTime' + oneOf: + - required: [ueLoc] + - required: [snssai] + + E2eDataVolTransTimeUeList: + description: > + Contains the list of UEs classified based on experience level of E2E Data Volume Transfer + Time + properties: + highLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + mediumLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + lowLevel: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + lowRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + mediumRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + highRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + spatialValidity: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + anyOf: + - required: [highLevel] + - required: [mediumLevel] + - required: [lowLevel] + + DataVolumeTransferTime: + description: > + Indicates the E2E data volume transfer time and the data volume used to derive the transfer + time. + properties: + uplinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + avgTransTimeUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + varTransTimeUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + downlinkVolume: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Volume' + avgTransTimeDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + varTransTimeDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + + GeoLocation: + description: > + Represents a horizontal and optionally vertical location using either geographic + or local coordinates. + type: object + properties: + point: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/Point' + pointAlt: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PointAltitude' + refPoint: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocalOrigin' + localCoords: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/RelativeCartesianLocation' + anyOf: + - required: [point] + - required: [pointAlt] + - allOf: + - required: [refPoint] + - required: [localCoords] + + LocAccuracyReq: + description: > + Contains location accuracy analytics requirements. + type: object + properties: + accThres: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + accThresMatchDir: + $ref: '#/components/schemas/MatchingDirection' + inOutThres: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + inOutThresMatchDir: + $ref: '#/components/schemas/MatchingDirection' + posMethod: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethod' + + LocAccuracyInfo: + description: > + Contains location accuracy analytics. + type: object + properties: + locAccPerMeths: + type: array + items: + $ref: '#/components/schemas/LocAccuracyPerMethod' + minItems: 1 + description: Location accuracy information per positioning method. + inOutUePct: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + inOutInd: + type: boolean + description: Indicates if the target location is indoors or outdoors. + required: + - locAccPerMeths + not: + required: [inOutUePct, inOutInd] + + LocAccuracyPerMethod: + description: > + Contains location accuracy analytics per positioning method. + type: object + properties: + posMethod: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/PositioningMethod' + locAcc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + losNlosPercent: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - posMethod + - locAcc + AccuracyReq: + description: Represents the analytics accuracy requirement information. + type: object + properties: + accuTimeWin: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + accuPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + accuDevThr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minNum: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + updatedAnaFlg: + type: boolean + description: > + Indicates the updated Analytics flag. Set to "true" indicates that the NWDAF can provide + the updated analytics if the analytics can be generated within the analytics accuracy + information time window, which is specified by "accuTimeWin" attribute. + Otherwise set to “false”. Default value is “false” if omitted. + correctionInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + AccuracyInfo: + description: The analytics accuracy information. + type: object + properties: + accuracyVal: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + accuSampleNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + anaAccuInd: + $ref: '#/components/schemas/AnalyticsAccuracyIndication' + + MovBehavReq: + description: Represents the Movement Behaviour analytics requirements. + properties: + locationGranReq: + $ref: '#/components/schemas/LocInfoGranularity' + reportThresholds: + $ref: '#/components/schemas/ThresholdLevel' + + MovBehavInfo: + description: Represents the Movement Behaviour information. + properties: + geoLoc: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicalCoordinates' + movBehavs: + type: array + items: + $ref: '#/components/schemas/MovBehav' + minItems: 1 + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + MovBehav: + description: Represents the Movement Behaviour information per time slot. + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + numOfUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + avrSpeed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + speedThresdInfos: + type: array + items: + $ref: '#/components/schemas/SpeedThresholdInfo' + minItems: 1 + directionUeInfos: + type: array + items: + $ref: '#/components/schemas/DirectionInfo' + minItems: 1 + required: + - tsStart + - tsDuration + + SpeedThresholdInfo: + description: UEs information whose speed is faster than the speed threshold. + properties: + numOfUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + + RelProxReq: + description: Represents the Relative Proximity analytics requirements. + properties: + direction: + type: array + items: + $ref: '#/components/schemas/Direction' + minItems: 1 + numOfUe: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + proximityCrits: + type: array + items: + $ref: '#/components/schemas/ProximityCriterion' + minItems: 1 + + RelProxInfo: + description: Represents the Relative Proximity information. + properties: + tsStart: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tsDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + ueProximities: + type: array + items: + $ref: '#/components/schemas/UeProximity' + minItems: 1 + ttcInfo: + $ref: '#/components/schemas/TimeToCollisionInfo' + required: + - tsStart + - tsDuration + - ueProximities + + UeProximity: + description: Represents the Observed or Predicted proximity information. + properties: + ueDistance: + type: integer + ueVelocity: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/VelocityEstimate' + avrSpeed: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + locOrientation: + $ref: '#/components/schemas/LocationOrientation' + ueTrajectories: + type: array + items: + $ref: '#/components/schemas/UeTrajectory' + minItems: 1 + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + + UeTrajectory: + description: Represents timestamped UE positions. + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + timestampedLocs: + type: array + items: + $ref: '#/components/schemas/TimestampedLocation' + minItems: 1 + required: + - timestampedLocs + oneOf: + - required: [supi] + - required: [gpsi] + + TimestampedLocation: + description: The timestamped locations of the trajectory of the UE. + properties: + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + locInfo: + items: + $ref: '#/components/schemas/LocationInfo' + required: + - ts + - locInfo + + TimeToCollisionInfo: + description: Represents Time To Collision (TTC) information. + properties: + ttc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + accuracy: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + AnalyticsFeedbackInfo: + description: Analytics feedback information. + properties: + actionTimes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + minItems: 1 + description: The times at which an action was taken. + usedAnaTypes: + type: array + items: + $ref: '#/components/schemas/NwdafEvent' + minItems: 1 + description: The analytics types that were used to take the action. + impactInd: + type: boolean + description: Indication about the impact of an action on the ground truth data. + required: + - actionTimes + +# +# ENUMERATIONS DATA TYPES +# + NotificationMethod: + anyOf: + - type: string + enum: + - PERIODIC + - THRESHOLD + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the notification methods for the subscribed events. + Possible values are: + - PERIODIC: The notification of the subscribed NWDAF Event is periodical. The period + between the notifications is identified by repetitionPeriod and represents time in + seconds. + - THRESHOLD: The subscribe of NWDAF Event is upon threshold exceeded. + + NwdafEvent: + anyOf: + - type: string + enum: + - SLICE_LOAD_LEVEL + - NETWORK_PERFORMANCE + - NF_LOAD + - SERVICE_EXPERIENCE + - UE_MOBILITY + - UE_COMMUNICATION + - QOS_SUSTAINABILITY + - ABNORMAL_BEHAVIOUR + - USER_DATA_CONGESTION + - NSI_LOAD_LEVEL + - DN_PERFORMANCE + - DISPERSION + - RED_TRANS_EXP + - WLAN_PERFORMANCE + - SM_CONGESTION + - PFD_DETERMINATION + - PDU_SESSION_TRAFFIC + - E2E_DATA_VOL_TRANS_TIME + - MOVEMENT_BEHAVIOUR + - NUM_OF_UE + - MOV_UE_RATIO + - AVR_SPEED + - SPEED_THRESHOLD + - MOV_UE_DIRECTION + - LOC_ACCURACY + - RELATIVE_PROXIMITY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Describes the NWDAF Events. + Possible values are: + - SLICE_LOAD_LEVEL: Indicates that the event subscribed is load level information of Network + Slice. + - NETWORK_PERFORMANCE: Indicates that the event subscribed is network performance + information. + - NF_LOAD: Indicates that the event subscribed is load level and status of one or several + Network Functions. + - SERVICE_EXPERIENCE: Indicates that the event subscribed is service experience. + - UE_MOBILITY: Indicates that the event subscribed is UE mobility information. + - UE_COMMUNICATION: Indicates that the event subscribed is UE communication information. + - QOS_SUSTAINABILITY: Indicates that the event subscribed is QoS sustainability. + - ABNORMAL_BEHAVIOUR: Indicates that the event subscribed is abnormal behaviour. + - USER_DATA_CONGESTION: Indicates that the event subscribed is user data congestion + information. + - NSI_LOAD_LEVEL: Indicates that the event subscribed is load level information of Network + Slice and the optionally associated Network Slice Instance. + - DN_PERFORMANCE: Indicates that the event subscribed is DN performance information. + - DISPERSION: Indicates that the event subscribed is dispersion information. + - RED_TRANS_EXP: Indicates that the event subscribed is redundant transmission experience. + - WLAN_PERFORMANCE: Indicates that the event subscribed is WLAN performance. + - SM_CONGESTION: Indicates the Session Management Congestion Control Experience information + for specific DNN and/or S-NSSAI. + - PFD_DETERMINATION: Indicates that the event subscribed is the PFD Determination nformation + for known application identifier(s). + - PDU_SESSION_TRAFFIC: Indicates that the event subscribed is the PDU Session traffic + information. + - E2E_DATA_VOL_TRANS_TIME: Indicates that the event subscribed is of E2E data volume + transfer time. + - MOVEMENT_BEHAVIOUR: Indicates that the event subscribed is the Movement Behaviour + information. + - LOC_ACCURACY: Indicates that the event subscribed is of location accuracy. + - RELATIVE_PROXIMITY: Indicates that the event subscribed is the Relative Proximity + information. + + + Accuracy: + anyOf: + - type: string + enum: + - LOW + - MEDIUM + - HIGH + - HIGHEST + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the preferred level of accuracy of the analytics. + Possible values are: + - LOW: Low accuracy. + - MEDIUM: Medium accuracy. + - HIGH: High accuracy. + - HIGHEST: Highest accuracy. + + CongestionType: + anyOf: + - type: string + enum: + - USER_PLANE + - CONTROL_PLANE + - USER_AND_CONTROL_PLANE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the congestion analytics type. + Possible values are: + - USER_PLANE: The congestion analytics type is User Plane. + - CONTROL_PLANE: The congestion analytics type is Control Plane. + - USER_AND_CONTROL_PLANE: The congestion analytics type is User Plane and Control Plane. + + ExceptionId: + anyOf: + - type: string + enum: + - UNEXPECTED_UE_LOCATION + - UNEXPECTED_LONG_LIVE_FLOW + - UNEXPECTED_LARGE_RATE_FLOW + - UNEXPECTED_WAKEUP + - SUSPICION_OF_DDOS_ATTACK + - WRONG_DESTINATION_ADDRESS + - TOO_FREQUENT_SERVICE_ACCESS + - UNEXPECTED_RADIO_LINK_FAILURES + - PING_PONG_ACROSS_CELLS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Describes the Exception Id. + Possible values are: + - UNEXPECTED_UE_LOCATION: Unexpected UE location. + - UNEXPECTED_LONG_LIVE_FLOW: Unexpected long-live rate flows. + - UNEXPECTED_LARGE_RATE_FLOW: Unexpected large rate flows. + - UNEXPECTED_WAKEUP: Unexpected wakeup. + - SUSPICION_OF_DDOS_ATTACK: Suspicion of DDoS attack. + - WRONG_DESTINATION_ADDRESS: Wrong destination address. + - TOO_FREQUENT_SERVICE_ACCESS: Too frequent Service Access. + - UNEXPECTED_RADIO_LINK_FAILURES: Unexpected radio link failures. + - PING_PONG_ACROSS_CELLS: Ping-ponging across neighbouring cells. + + ExceptionTrend: + anyOf: + - type: string + enum: + - UP + - DOWN + - UNKNOW + - STABLE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the Exception Trend. + Possible values are: + - UP: Up trend of the exception level. + - DOWN: Down trend of the exception level. + - UNKNOW: Unknown trend of the exception level. + - STABLE: Stable trend of the exception level. + + TimeUnit: + anyOf: + - type: string + enum: + - MINUTE + - HOUR + - DAY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the unit for the session active time. + Possible values are: + - MINUTE: Time unit is per minute. + - HOUR: Time unit is per hour. + - DAY: Time unit is per day. + + NetworkPerfType: + anyOf: + - type: string + enum: + - GNB_ACTIVE_RATIO + - GNB_COMPUTING_USAGE + - GNB_MEMORY_USAGE + - GNB_DISK_USAGE + - GNB_RSC_USAGE_OVERALL_TRAFFIC + - GNB_RSC_USAGE_GBR_TRAFFIC + - GNB_RSC_USAGE_DELAY_CRIT_GBR_TRAFFIC + - NUM_OF_UE + - SESS_SUCC_RATIO + - HO_SUCC_RATIO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the network performance types. + Possible values are: + - GNB_ACTIVE_RATIO: Indicates that the network performance requirement is gNodeB active + (i.e. up and running) rate. Indicates the ratio of gNB active (i.e. up and running) number + to the total number of gNB. + - GNB_COMPUTING_USAGE: Indicates gNodeB computing resource usage. + - GNB_MEMORY_USAGE: Indicates gNodeB memory usage. + - GNB_DISK_USAGE: Indicates gNodeB disk usage. + - GNB_RSC_USAGE_OVERALL_TRAFFIC: The gNB resource usage. + - GNB_RSC_USAGE_GBR_TRAFFIC: The gNB resource usage for GBR traffic. + - GNB_RSC_USAGE_DELAY_CRIT_GBR_TRAFFIC: The gNB resource usage for Delay-critical GBR + traffic. + - NUM_OF_UE: Indicates number of UEs. + - SESS_SUCC_RATIO: Indicates ratio of successful setup of PDU sessions to total PDU + session setup attempts. + - HO_SUCC_RATIO: Indicates Ratio of successful handovers to the total handover attempts. + + ExpectedAnalyticsType: + anyOf: + - type: string + enum: + - MOBILITY + - COMMUN + - MOBILITY_AND_COMMUN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the expected UE analytics type. + Possible values are: + - MOBILITY: Mobility related abnormal behaviour analytics is expected by the consumer. + - COMMUN: Communication related abnormal behaviour analytics is expected by the consumer. + - MOBILITY_AND_COMMUN: Both mobility and communication related abnormal behaviour analytics + is expected by the consumer. + + MatchingDirection: + anyOf: + - type: string + enum: + - ASCENDING + - DESCENDING + - CROSSED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the matching direction when crossing a threshold. + Possible values are: + - ASCENDING: Threshold is crossed in ascending direction. + - DESCENDING: Threshold is crossed in descending direction. + - CROSSED: Threshold is crossed either in ascending or descending direction. + + NwdafFailureCode: + anyOf: + - type: string + enum: + - UNAVAILABLE_DATA + - BOTH_STAT_PRED_NOT_ALLOWED + - UNSATISFIED_REQUESTED_ANALYTICS_TIME + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the failure reason. + Possible values are: + - UNAVAILABLE_DATA: Indicates the requested statistics information for the event is rejected + since necessary data to perform the service is unavailable. + - BOTH_STAT_PRED_NOT_ALLOWED: Indicates the requested analysis information for the event is + rejected since the start time is in the past and the end time is in the future, which + means the NF service consumer requested both statistics and prediction for the analytics. + - UNSATISFIED_REQUESTED_ANALYTICS_TIME: Indicates that the requested event is rejected since + the analytics information is not ready when the time indicated by the "timeAnaNeeded" + attribute (as provided during the creation or modification of subscription) is reached. + - OTHER: Indicates the requested analysis information for the event is rejected due to other + reasons. + + AnalyticsMetadata: + anyOf: + - type: string + enum: + - NUM_OF_SAMPLES + - DATA_WINDOW + - DATA_STAT_PROPS + - STRATEGY + - ACCURACY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the types of analytics metadata information that can be requested. + Possible values are: + - NUM_OF_SAMPLES: Number of data samples used for the generation of the output analytics. + - DATA_WINDOW: Data time window of the data samples. + - DATA_STAT_PROPS: Dataset statistical properties of the data used to generate the + analytics. + - STRATEGY: Output strategy used for the reporting of the analytics. + - ACCURACY: Level of accuracy reached for the analytics. + + DatasetStatisticalProperty: + anyOf: + - type: string + enum: + - UNIFORM_DIST_DATA + - NO_OUTLIERS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the dataset statistical properties. + Possible values are: + - UNIFORM_DIST_DATA: Indicates the use of data samples that are uniformly distributed + according to the different aspects of the requested analytics. + - NO_OUTLIERS: Indicates that the data samples shall disregard data samples that are at + the extreme boundaries of the value range. + + OutputStrategy: + anyOf: + - type: string + enum: + - BINARY + - GRADIENT + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the output strategy used for the analytics reporting. + Possible values are: + - BINARY: Indicates that the analytics shall only be reported when the requested level + of accuracy is reached within a cycle of periodic notification. + - GRADIENT: Indicates that the analytics shall be reported according with the periodicity + irrespective of whether the requested level of accuracy has been reached or not. + + TransferRequestType: + anyOf: + - type: string + enum: + - PREPARE + - TRANSFER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the request type for the analytics subscription transfer. + Possible values are: + - PREPARE: Indicates that the request is for analytics subscription transfer preparation. + - TRANSFER: Indicates that the request is for analytics subscription transfer execution. + + AnalyticsSubset: + anyOf: + - type: string + enum: + - NUM_OF_UE_REG + - NUM_OF_PDU_SESS_ESTBL + - RES_USAGE + - NUM_OF_EXCEED_RES_USAGE_LOAD_LEVEL_THR + - PERIOD_OF_EXCEED_RES_USAGE_LOAD_LEVEL_THR + - EXCEED_LOAD_LEVEL_THR_IND + - LIST_OF_TOP_APP_UL + - LIST_OF_TOP_APP_DL + - NF_STATUS + - NF_RESOURCE_USAGE + - NF_LOAD + - NF_PEAK_LOAD + - NF_LOAD_AVG_IN_AOI + - DISPER_AMOUNT + - DISPER_CLASS + - RANKING + - PERCENTILE_RANKING + - RSSI + - RTT + - TRAFFIC_INFO + - NUMBER_OF_UES + - APP_LIST_FOR_UE_COMM + - N4_SESS_INACT_TIMER_FOR_UE_COMM + - AVG_TRAFFIC_RATE + - MAX_TRAFFIC_RATE + - AGG_TRAFFIC_RATE + - VAR_TRAFFIC_RATE + - AVG_PACKET_DELAY + - MAX_PACKET_DELAY + - VAR_PACKET_DELAY + - AVG_PACKET_LOSS_RATE + - MAX_PACKET_LOSS_RATE + - VAR_PACKET_LOSS_RATE + - UE_LOCATION + - LIST_OF_HIGH_EXP_UE + - LIST_OF_MEDIUM_EXP_UE + - LIST_OF_LOW_EXP_UE + - AVG_UL_PKT_DROP_RATE + - VAR_UL_PKT_DROP_RATE + - AVG_DL_PKT_DROP_RATE + - VAR_DL_PKT_DROP_RATE + - AVG_UL_PKT_DELAY + - VAR_UL_PKT_DELAY + - AVG_DL_PKT_DELAY + - VAR_DL_PKT_DELAY + - TRAFFIC_MATCH_TD + - TRAFFIC_UNMATCH_TD + - NUMBER_OF_UE + - UE_GEOG_DIST + - UE_DIRECTION + - USER_LOCATION + - AVG_E2E_UL_PKT_DELAY + - VAR_E2E_UL_PKT_DELAY + - AVG_E2E_DL_PKT_DELAY + - VAR_E2E_DL_PKT_DELAY + - AVG_E2E_UL_PKT_LOSS_RATE + - VAR_E2E_UL_PKT_LOSS_RATE + - AVG_E2E_DL_PKT_LOSS_RATE + - VAR_E2E_DL_PKT_LOSS_RATE + - E2E_DATA_VOL_TRANS_TIME_FOR_UE_LIST + - IN_OUT_PERCENT + - TIME_TO_COLLISION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the analytics subset. + Possible values are: + - NUM_OF_UE_REG: The number of UE registered. This value is only applicable to + NSI_LOAD_LEVEL event. + - NUM_OF_PDU_SESS_ESTBL: The number of PDU sessions established. This value is only + applicable to NSI_LOAD_LEVEL event. + - RES_USAGE: The current usage of the virtual resources assigned to the NF instances + belonging to a particular network slice instance. This value is only applicable to + NSI_LOAD_LEVEL event. + - NUM_OF_EXCEED_RES_USAGE_LOAD_LEVEL_THR: The number of times the resource usage threshold + of the network slice instance is reached or exceeded if a threshold value is provided by + the consumer. This value is only applicable to NSI_LOAD_LEVEL event. + - PERIOD_OF_EXCEED_RES_USAGE_LOAD_LEVEL_THR: The time interval between each time the + threshold being met or exceeded on the network slice (instance). This value is only + applicable to NSI_LOAD_LEVEL event. + - EXCEED_LOAD_LEVEL_THR_IND: Whether the Load Level Threshold is met or exceeded by the + statistics value. This value is only applicable to NSI_LOAD_LEVEL event. + - LIST_OF_TOP_APP_UL: The list of applications that contribute the most to the traffic in + the UL direction. This value is only applicable to USER_DATA_CONGESTION event. + - LIST_OF_TOP_APP_DL: The list of applications that contribute the most to the traffic in + the DL direction. This value is only applicable to USER_DATA_CONGESTION event. + - NF_STATUS: The availability status of the NF on the Analytics target period, expressed + as a percentage of time per status value (registered, suspended, undiscoverable). This + value is only applicable to NF_LOAD event. + - NF_RESOURCE_USAGE: The average usage of assigned resources (CPU, memory, storage). This + value is only applicable to NF_LOAD event. + - NF_LOAD: The average load of the NF instance over the Analytics target period. This value + is only applicable to NF_LOAD event. + - NF_PEAK_LOAD: The maximum load of the NF instance over the Analytics target period. This + value is only applicable to NF_LOAD event. + - NF_LOAD_AVG_IN_AOI: The average load of the NF instances over the area of interest. This + value is only applicable to NF_LOAD event. + - DISPER_AMOUNT: Indicates the dispersion amount of the reported data volume or transaction + dispersion type. This value is only applicable to DISPERSION event. + - DISPER_CLASS: Indicates the dispersion mobility class: fixed, camper, traveller upon set + its usage threshold, and/or the top-heavy class upon set its percentile rating threshold. + This value is only applicable to DISPERSION event. + - RANKING: Data/transaction usage ranking high (i.e.value 1), medium (2) or low (3). This + value is only applicable to DISPERSION event. + - PERCENTILE_RANKING: Percentile ranking of the target UE in the Cumulative Distribution + Function of data usage for the population of all UEs. This value is only applicable to + DISPERSION event. + - RSSI: Indicated the RSSI in the unit of dBm. This value is only applicable to + WLAN_PERFORMANCE event. + - RTT: Indicates the RTT in the unit of millisecond. This value is only applicable to + WLAN_PERFORMANCE event. + - TRAFFIC_INFO: Traffic information including UL/DL data rate and/or Traffic volume. This + value is only applicable to WLAN_PERFORMANCE event. + - NUMBER_OF_UES: Number of UEs observed for the SSID. This value is only applicable to + WLAN_PERFORMANCE event. + - APP_LIST_FOR_UE_COMM: The analytics of the application list used by UE. This value is only + applicable to UE_COMM event. + - N4_SESS_INACT_TIMER_FOR_UE_COMM: The N4 Session inactivity timer. This value is only + applicable to UE_COMM event. + - AVG_TRAFFIC_RATE: Indicates average traffic rate. This value is only applicable to + DN_PERFORMANCE event. + - MAX_TRAFFIC_RATE: Indicates maximum traffic rate. This value is only applicable to + DN_PERFORMANCE event. + - AGG_TRAFFIC_RATE: Indicates aggregated traffic rate. This value is only applicable to + DN_PERFORMANCE event. + - VAR_TRAFFIC_RATE: Indicates variance traffic rate. This value is only applicable to + DN_PERFORMANCE event. + - AVG_PACKET_DELAY: Indicates average Packet Delay. This value is only applicable to + DN_PERFORMANCE event. + - MAX_PACKET_DELAY: Indicates maximum Packet Delay. This value is only applicable to + DN_PERFORMANCE event. + - VAR_PACKET_DELAY: Indicates variance Packet Delay. This value is only applicable to + DN_PERFORMANCE event. + - AVG_PACKET_LOSS_RATE: Indicates average Loss Rate. This value is only applicable to + DN_PERFORMANCE event. + - MAX_PACKET_LOSS_RATE: Indicates maximum Packet Loss Rate. This value is only applicable to + DN_PERFORMANCE event. + - VAR_PACKET_LOSS_RATE: Indicates variance Packet Loss Rate. This value is only applicable + to DN_PERFORMANCE event. + - UE_LOCATION: Indicates UE location information. This value is only applicable to + SERVICE_EXPERIENCE event. + - LIST_OF_HIGH_EXP_UE: Indicates list of high experienced UE. This value is only applicable + to SM_CONGESTION event. + - LIST_OF_MEDIUM_EXP_UE: Indicates list of medium experienced UE. This value is only + applicable to SM_CONGESTION event. + - LIST_OF_LOW_EXP_UE: Indicates list of low experienced UE. This value is only applicable to + SM_CONGESTION event. + - AVG_UL_PKT_DROP_RATE: Indicates average uplink packet drop rate on GTP-U path on N3. This + value is only applicable to RED_TRANS_EXP event. + - VAR_UL_PKT_DROP_RATE: Indicates variance of uplink packet drop rate on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - AVG_DL_PKT_DROP_RATE: Indicates average downlink packet drop rate on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - VAR_DL_PKT_DROP_RATE: Indicates variance of downlink packet drop rate on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - AVG_UL_PKT_DELAY: Indicates average uplink packet delay round trip on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - VAR_UL_PKT_DELAY: Indicates variance uplink packet delay round trip on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - AVG_DL_PKT_DELAY: Indicates average downlink packet delay round trip on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - VAR_DL_PKT_DELAY: Indicates variance downlink packet delay round trip on GTP-U path on N3. + This value is only applicable to RED_TRANS_EXP event. + - TRAFFIC_MATCH_TD: Identifies traffic that matches Traffic Descriptor provided by + the consumer. + - TRAFFIC_UNMATCH_TD: Identifies traffic that does not match Traffic Descriptor + provided by the consumer. + - NUMBER_OF_UE: Indicates the number of UEs. This value is only applicable to + DN_PERFORMANCE event. + - UE_GEOG_DIST: Indicates the geographical distribution of the UEs that can be selected by + the AF for application service. This value is only applicable to UE_MOBILITY event. + - UE_DIRECTION: Indicates the direction of the UEs. This value is only applicable to + UE_MOBILITY event. + - USER_LOCATION: Indicates the user location. This value is only applicable to UE_MOBILITY + event. + - AVG_E2E_UL_PKT_DELAY: Indicates average End-to-End (between UE and UPF) uplink packet + delay. This value is only applicable to RED_TRANS_EXP event. + - VAR_E2E_UL_PKT_DELAY: Indicates the variance of End-to-End (between UE and UPF) uplink + packet delay. This value is only applicable to RED_TRANS_EXP event. + - AVG_E2E_DL_PKT_DELAY: Indicates average End-to-End (between UE and UPF) downlink packet + delay. This value is only applicable to RED_TRANS_EXP event. + - VAR_E2E_DL_PKT_DELAY: Indicates the variance of End-to-End (between UE and UPF) downlink + packet delay. This value is only applicable to RED_TRANS_EXP event. + - AVG_E2E_UL_PKT_LOSS_RATE: Indicates average End-to-End (between UE and UPF) uplink packet + loss rate. This value is only applicable to RED_TRANS_EXP event. + - VAR_E2E_UL_PKT_LOSS_RATE: Indicates the variance of End-to-End (between UE and UPF) uplink + packet loss rate. This value is only applicable to RED_TRANS_EXP event. + - AVG_E2E_DL_PKT_LOSS_RATE: Indicates average End-to-End (between UE and UPF) downlink + packet loss rate. This value is only applicable to RED_TRANS_EXP event. + - VAR_E2E_DL_PKT_LOSS_RATE: Indicates the variance of End-to-End (between UE and UPF) + downlink packet loss rate. This value is only applicable to RED_TRANS_EXP event. + - E2E_DATA_VOL_TRANS_TIME_FOR_UE_LIST: Indicates the classified E2E data volume transfer + time statistics or predictions for multiple UEs with respect to one or more reporting + thresholds. + - NUM_OF_UE: Indicates the total number of users in the area of interest. This + value is only applicable to MOVEMENT_BEHAVIOUR event. + - MOV_UE_RATIO: Indicates the Ratio of moving UEs in the area of interest. This value + is only applicable to MOVEMENT_BEHAVIOUR event. + - AVR_SPEED: Indicates the average speed of all UEs in the area of interest. This value + is only applicable to MOVEMENT_BEHAVIOUR event. + - SPEED_THRESHOLD: Indicates the information on UEs in the area of interest whose speed + is faster than the speed threshold. This value is only applicable to MOVEMENT_BEHAVIOUR + event. + - MOV_UE_DIRECTION: Indicates the heading directions of the UE flow in the target area. + This value is only applicable to MOVEMENT_BEHAVIOUR event. + - IN_OUT_PERCENT: Indicates the percentage of indoor/outdoor UEs at a location. + The value is only applicable to the LOC_ACCURACY event. + - TIME_TO_COLLISION: Indicates the time until for a collision with another UE happens. + This value is only applicable to RELATIVE_PROXIMITY event prediction. + + DispersionType: + oneOf: + - type: string + enum: + - DVDA + - TDA + - DVDA_AND_TDA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the dispersion type. + Possible values are: + - DVDA: Data Volume Dispersion Analytics. + - TDA: Transactions Dispersion Analytics. + - DVDA_AND_TDA: Data Volume Dispersion Analytics and Transactions Dispersion Analytics. + + DispersionClass: + oneOf: + - type: string + enum: + - FIXED + - CAMPER + - TRAVELLER + - TOP_HEAVY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the dispersion class. + Possible values are: + - FIXED: Dispersion class as fixed UE its data or transaction usage at a location or + a slice, is higher than its class threshold set for its all data or transaction usage. + - CAMPER: Dispersion class as camper UE, its data or transaction usage at a location or + a slice, is higher than its class threshold and lower than the fixed class threshold set + for its all data or transaction usage. + - TRAVELLER: Dispersion class as traveller UE, its data or transaction usage at a location + or a slice, is lower than the camper class threshold set for its all data or transaction + usage. + - TOP_HEAVY: Dispersion class as Top_Heavy UE, who's dispersion percentile rating at a + location or a slice, is higher than its class threshold. + + + DispersionOrderingCriterion: + anyOf: + - type: string + enum: + - TIME_SLOT_START + - DISPERSION + - CLASSIFICATION + - RANKING + - PERCENTILE_RANKING + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the order criterion for the list of dispersion. + Possible values are: + - TIME_SLOT_START: Indicates the order of time slot start. + - DISPERSION: Indicates the order of data/transaction dispersion. + - CLASSIFICATION: Indicates the order of data/transaction classification. + - RANKING: Indicates the order of data/transaction ranking. + - PERCENTILE_RANKING: Indicates the order of data/transaction percentile ranking. + + DeviceType: + anyOf: + - type: string + enum: + - MOBILE_PHONE + - SMART_PHONE + - TABLET + - DONGLE + - MODEM + - WLAN_ROUTER + - IOT_DEVICE + - WEARABLE + - MOBILE_TEST_PLATFORM + - UNDEFINED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the device type. + Possible values are: + - MOBILE_PHONE: Mobile Phone. + - SMART_PHONE: Smartphone. + - TABLET: Tablet. + - DONGLE: Dongle. + - MODEM: Modem. + - WLAN_ROUTER: WLAN Router. + - IOT_DEVICE: IoT Device. + - WEARABLE: Wearable. + - MOBILE_TEST_PLATFORM: Mobile Test Platform. + - UNDEFINED: Undefined. + + RedTransExpOrderingCriterion: + anyOf: + - type: string + enum: + - TIME_SLOT_START + - RED_TRANS_EXP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the order criterion for the list of Redundant Transmission Experience. + Possible values are: + - TIME_SLOT_START: Indicates the order of time slot start. + - RED_TRANS_EXP: Indicates the order of Redundant Transmission Experience. + + WlanOrderingCriterion: + anyOf: + - type: string + enum: + - TIME_SLOT_START + - NUMBER_OF_UES + - RSSI + - RTT + - TRAFFIC_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the order criterion for the list of WLAN performance information. + Possible values are: + - TIME_SLOT_START: Indicates the order of time slot start. + - NUMBER_OF_UES: Indicates the order of number of UEs. + - RSSI: Indicates the order of RSSI. + - RTT: Indicates the order of RTT. + - TRAFFIC_INFO: Indicates the order of Traffic information. + + ServiceExperienceType: + anyOf: + - type: string + enum: + - VOICE + - VIDEO + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + description: | + Represents the type of the service experience analytics. + Possible values are: + - VOICE: Indicates that the service experience analytics is for voice service. + - VIDEO: Indicates that the service experience analytics is for video service. + - OTHER: Indicates that the service experience analytics is for other service. + + DnPerfOrderingCriterion: + anyOf: + - type: string + enum: + - AVERAGE_TRAFFIC_RATE + - MAXIMUM_TRAFFIC_RATE + - AVERAGE_PACKET_DELAY + - MAXIMUM_PACKET_DELAY + - AVERAGE_PACKET_LOSS_RATE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the order criterion for the list of DN performance analytics. + Possible values are: + - AVERAGE_TRAFFIC_RATE: Indicates the average traffic rate. + - MAXIMUM_TRAFFIC_RATE: Indicates the maximum traffic rate. + - AVERAGE_PACKET_DELAY: Indicates the average packet delay. + - MAXIMUM_PACKET_DELAY: Indicates the maximum packet delay. + - AVERAGE_PACKET_LOSS_RATE: Indicates the average packet loss rate. + + TermCause: + anyOf: + - type: string + enum: + - USER_CONSENT_REVOKED + - NWDAF_OVERLOAD + - UE_LEFT_AREA + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the cause for the analytics subscription termination request. + Possible values are: + - USER_CONSENT_REVOKED: The user consent has been revoked. + - NWDAF_OVERLOAD: The NWDAF is overloaded. + - UE_LEFT_AREA: The UE has moved out of the NWDAF serving area. + UserDataConOrderCrit: + anyOf: + - type: string + enum: + - APPLICABLE_TIME_WINDOW + - NETWORK_STATUS_INDICATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the cause for requesting to terminate an analytics subscription. + Possible values are: + - APPLICABLE_TIME_WINDOW: The ordering criterion is the Applicable Time Window. + - NETWORK_STATUS_INDICATION: The ordering criterion is the network status indication. + + UeMobilityOrderCriterion: + anyOf: + - type: string + enum: + - TIME_SLOT + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the ordering criterion for the list of UE mobility analytics. + Possible values are: + - TIME_SLOT: The ordering criterion is the time slot. + + UeCommOrderCriterion: + anyOf: + - type: string + enum: + - START_TIME + - DURATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the ordering criterion for the list of UE communication analytics. + Possible values are: + - START_TIME: The ordering criterion of the analytics is the start time. + - DURATION: The ordering criterion of the analytics is the duration of the communication. + + NetworkPerfOrderCriterion: + anyOf: + - type: string + enum: + - NUMBER_OF_UES + - COMMUNICATION_PERF + - MOBILITY_PERF + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the ordering criterion for the list of network performance analytics. + Possible values are: + - NUMBER_OF_UES: The ordering criterion of the analytics is the number of UEs. + - COMMUNICATION_PERF: The ordering criterion of the analytics is the communication performance. + - MOBILITY_PERF: The ordering criterion of the analytics is themobility performance. + + LocInfoGranularity: + anyOf: + - type: string + enum: + - TA_LEVEL + - CELL_LEVEL + - LON_AND_LAT_LEVEL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the preferred granularity of location information. + Possible values are: + - TA_LEVEL: Indicates location granularity of TA level. + - CELL_LEVEL: Indicates location granularity of Cell level. + - LON_AND_LAT_LEVEL: Indicates location granularity of longitude and latitude level. + + TrafficDirection: + anyOf: + - type: string + enum: + - UL_AND_DL + - UL + - DL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the traffic direction for the resource usage information. + Possible values are: + - UL_AND_DL: Uplink and downlink traffic. + - UL: Uplink traffic. + - DL: Downlink traffic. + + ValueExpression: + anyOf: + - type: string + enum: + - AVERAGE + - PEAK + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the average or peak value of the resource usage for the network performance type. + Possible values are: + - AVERAGE: Resource usage information in average value. + - PEAK: Resource usage information in peak value. + + E2eDataVolTransTimeCriterion: + anyOf: + - type: string + enum: + - TIME_SLOT_START + - E2E_DATA_VOL_TRANS_TIME + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the ordering criterion for the list of E2E data volume transfer time. + Possible values are: + - TIME_SLOT_START: Indicates the order of time slot start. + - E2E_DATA_VOL_TRANS_TIME: The ordering criterion is the E2E data volume transfer time. + + + + AnalyticsAccuracyIndication: + anyOf: + - type: string + enum: + - MEET + - NOT_MEET + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the notification methods for the subscribed events. + Possible values are: + - MEET: Indicates meet the analytics accuracy requirement. + - NOT_MEET: Indicates not meet the analytics accuracy requirement. + + LocationOrientation: + anyOf: + - type: string + enum: + - HORIZONTAL + - VERTICAL + - HOR_AND_VER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Possible values are: + - HORIZONTAL: Indicates horizontal orientation. + - VERTICAL: Indicates vertical orientation. + - HOR_AND_VER: Indicates both horizontal and vertical orientation. + + Direction: + anyOf: + - type: string + enum: + - NORTH + - SOUTH + - EAST + - WEST + - NORTHWEST + - NORTHEAST + - SOUTHWEST + - SOUTHEAST + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Possible values are: + - NORTH: North direction. + - SOUTH: South direction. + - EAST: EAST direction. + - WEST: WEST direction. + - NORTHWEST: Northwest direction. + - NORTHEAST: Northeast direction. + - SOUTHWEST: Southwest direction. + - SOUTHEAST: Southeast direction. + + ProximityCriterion: + anyOf: + - type: string + enum: + - VELOCITY + - AVG_SPD + - ORIENTATION + - TRAJECTORY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Possible values are: + - VELOCITY: Velocity. + - AVG_SPD: Average speed. + - ORIENTATION: Orientation. + - TRAJECTORY: Mobility trajectory. + diff --git a/TS29520_Nnwdaf_MLModelProvision.yaml b/TS29520_Nnwdaf_MLModelProvision.yaml new file mode 100644 index 0000000..fb1fc8c --- /dev/null +++ b/TS29520_Nnwdaf_MLModelProvision.yaml @@ -0,0 +1,558 @@ +openapi: 3.0.0 + +info: + title: Nnwdaf_MLModelProvision + version: 1.1.0-alpha.5 + description: | + Nnwdaf_MLModelProvision API Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.520 V18.4.0; 5G System; Network Data Analytics Services. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.520/ + +servers: + - url: '{apiRoot}/nnwdaf-mlmodelprovision/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-mlmodelprovision + +paths: + /subscriptions: + post: + summary: Create a new Individual NWDAF ML Model Provision Subscription resource. + operationId: CreateNWDAFMLModelProvisionSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelProvSubsc' + responses: + '201': + description: Create a new Individual NWDAF ML Model Provision Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelProvSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnwdaf-mlmodelprovision/v1/subscriptions/{subscriptionId}. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NwdafMLModelProvNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + put: + summary: update an existing Individual NWDAF ML Model Provision Subscription + operationId: UpdateNWDAFMLModelProvisionSubcription + tags: + - Individual NWDAF ML Model Provision Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelProvSubsc' + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_MLModelProvision Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual NWDAF ML Model Provision Subscription resource was modified successfully + and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelProvSubsc' + '204': + description: > + The Individual NWDAF ML Model Provision Subscription resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing Individual NWDAF ML Model Provision Subscription. + operationId: DeleteNWDAFMLModelProvisionSubcription + tags: + - Individual NWDAF ML Model Provision Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_MLModelProvision Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual NWDAF ML Model Provision Subscription matching the + subscriptionId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnwdaf-mlmodelprovision: Access to the Nnwdaf_MLModelProvision API + + schemas: + NwdafMLModelProvSubsc: + description: Represents NWDAF Event Subscription resources. + type: object + properties: + mLEventSubscs: + type: array + items: + $ref: '#/components/schemas/MLEventSubscription' + minItems: 1 + description: Subscribed events + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mLEventNotifs: + type: array + items: + $ref: '#/components/schemas/MLEventNotif' + minItems: 1 + description: > + Notifications about Individual Events.Shall only be present if the immediate reporting + indication in the "immRep" attribute within the "eventReq" attribute sets to true in the + event subscription, and the reports are available. + suppFeats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + notifCorreId: + type: string + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + failEventReports: + type: array + items: + $ref: '#/components/schemas/FailureEventInfoForMLModel' + minItems: 1 + description: > + Supplied by the NWDAF containing MTLF when available, shall contain the event(s) that + the subscription is not successful including the failure reason(s). + required: + - mLEventSubscs + - notifUri + + ModelProvisionParamsExt: + description: > + Extended parameters for ML model provisioning which can optionally be set by a service + consuumer NF. + type: object + properties: + reqRepRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + inferInpDataInfos: + type: array + items: + $ref: '#/components/schemas/InputDataInfo' + minItems: 1 + description: > + Inference information that is used by NWDAF containing AnLF during inference. + multModelsInd: + type: boolean + description: Indicates if the NF service consumer supports multiple models. + numModels: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + accuLevels: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Accuracy' + minItems: 1 + description: > + Provided accuracy levels of interest for ML models. + + InputDataInfo: + description: Contains information about inference that is used by NWDAF containing AnLF. + type: object + properties: + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxNumSamples: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxTimeInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + inpEvent: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/DccfEvent' + nfInstanceIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + nfSetIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + minItems: 1 + required: + - inpEvent + + + MLEventSubscription: + description: Represents a subscription to a single event. + type: object + properties: + mLEvent: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + mLEventFilter: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/EventFilter' + tgtUe: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TargetUeInformation' + mLTargetPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + expiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeModelNeeded: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mlEvRepCon: + $ref: '#/components/schemas/MLRepEventCondition' + modelInterInfo: + type: string + description: String representing the ML Model Interoperability Information. + nfConsumerInfo: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/VendorId' + modelProvExt: + $ref: '#/components/schemas/ModelProvisionParamsExt' + description: > + Extended ML model parameters that a service consumer optionally sets when subscribing to + an ML model to be provisioned. + useCaseCxt: + type: string + description: > + Indicates the context of usage of the analytics. The value and format of this parameter + are not standardized. + inferDataForModel: + $ref: '#/components/schemas/InferenceDataForModelTrain' + required: + - mLEvent + - mLEventFilter + + NwdafMLModelProvNotif: + description: Represents notifications on events that occurred. + type: object + properties: + eventNotifs: + type: array + items: + $ref: '#/components/schemas/MLEventNotif' + minItems: 1 + description: Notifications about Individual Events. + subscriptionId: + type: string + description: String identifying a subscription to the Nnwdaf_MLModelProvision Service. + required: + - eventNotifs + - subscriptionId + + MLEventNotif: + description: Represents a notification related to a single event that occurred. + type: object + properties: + event: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + notifCorreId: + type: string + mLFileAddr: + $ref: '#/components/schemas/MLModelAddr' + mLModelAdrf: + $ref: '#/components/schemas/MLModelAdrf' + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + spatialValidity: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + addModelInfo: + $ref: '#/components/schemas/AdditionalMLModelInformation' + allOf: + - required: [event] + - oneOf: + - required: [mLFileAddr] + - required: [mLModelAdrf] + + FailureEventInfoForMLModel: + description: > + Represents the event(s) that the subscription is not successful including the failure + reason(s). + type: object + properties: + event: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + failureCode: + $ref: '#/components/schemas/FailureCode' + required: + - event + - failureCode + + MLModelAddr: + description: Addresses of ML model files. + type: object + properties: + mLModelUrl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mlFileFqdn: + type: string + description: The FQDN of the ML Model file. + oneOf: + - required: [mLModelUrl] + - required: [mlFileFqdn] + + + MLRepEventCondition: + description: Indicates the ML event reporting condition. + type: object + properties: + mlTrainRound: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + mlTrainRepTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + mlAccuracyThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + modelMetric: + $ref: '#/components/schemas/MLModelMetric' + + + AdditionalMLModelInformation: + description: Represents the additional ML Model Information. + type: object + properties: + mLFileAddr: + $ref: '#/components/schemas/MLModelAddr' + mLModelAdrf: + $ref: '#/components/schemas/MLModelAdrf' + validityPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + spatialValidity: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + modelUniqueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + description: Unique identifier for an ML model. + modelRepRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + description: > + Minimum percentage of UEs whose data is used for training an ML model. + mlDegradInd: + type: boolean + description: > + Set to "true" to indicate support degration of an ML model. Set to "false" to indicate + not support degration of an ML model. Default value is "false" if omitted. + trainInpInfos: + type: array + items: + $ref: '#/components/schemas/TrainInputDataInfo' + minItems: 1 + description: > + Training information that is used by NWDAF containing MTLF during training. + modelMetric: + $ref: '#/components/schemas/MLModelMetric' + accMLModel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + + MLModelAdrf: + description: ADRF (Set) information of the ML Model. + type: object + properties: + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + adrfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + storTransId: + type: string + description: String identifying a Storage Transaction ID. + oneOf: + - required: [adrfId] + - required: [adrfSetId] + + TrainInputDataInfo: + description: Contains Training input data information that is used by NWDAF containing MTLF. + type: object + properties: + dataInfo: + $ref: '#/components/schemas/InputDataInfo' + time: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataStatisticsInfos: + type: string + + InferenceDataForModelTrain: + description: > + Indicates the inference data stored in ADRF which can be used by MTLF to retrain or + reprovision of the ML model. + type: object + properties: + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + adrfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + dataSetTag: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataSetTag' + modelId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + oneOf: + - required: [adrfId] + - required: [adrfSetId] + +# +# ENUMERATIONS DATA TYPES +# + FailureCode: + anyOf: + - type: string + enum: + - UNAVAILABLE_ML_MODEL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the failure code. + Possible values are: + - UNAVAILABLE_ML_MODEL: Indicates the requested ML model for the event is unavailable. + + MLModelMetric: + anyOf: + - type: string + enum: + - ACCURACY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the metric of the ML model. + Possible values are: + - ACCURACY: ML Model Accuracy metric. diff --git a/TS29520_Nnwdaf_MLModelTraining.yaml b/TS29520_Nnwdaf_MLModelTraining.yaml new file mode 100644 index 0000000..163849a --- /dev/null +++ b/TS29520_Nnwdaf_MLModelTraining.yaml @@ -0,0 +1,612 @@ +openapi: 3.0.0 + +info: + title: Nnwdaf_MLModelTraining + version: 1.0.0-alpha.2 + description: | + Nnwdaf_MLModelTraining API Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.520 V18.3.0; 5G System; Network Data Analytics Services. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.520/ + +servers: + - url: '{apiRoot}/nnwdaf-mlmodeltraining/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnwdaf-mlmodeltraining + +paths: + /subscriptions: + post: + summary: Create a new Individual NWDAF ML Model Training Subscription resource. + operationId: CreateNWDAFMLModelTrainingSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubsc' + responses: + '201': + description: Create a new Individual NWDAF ML Model Training Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnwdaf-mlmodeltraining/v1/subscriptions/{subscriptionId}. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NwdafMLModelTrainNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + put: + summary: update an existing Individual NWDAF ML Model Training Subscription + operationId: UpdateNWDAFMLModelTrainingSubcription + tags: + - Individual NWDAF ML Model Training Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubsc' + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_MLModelTraining Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual NWDAF ML Model Training Subscription resource was modified successfully + and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubsc' + '204': + description: > + The Individual NWDAF ML Model Training Subscription resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: partial update an existing Individual NWDAF ML Model Training Subscription + operationId: PartialUpdateNWDAFMLModelTrainingSubcription + tags: + - Individual NWDAF ML Model Training Subscription (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubscPatch' + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_MLModelTraining Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual NWDAF ML Model Training Subscription resource was partial modified + successfully and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NwdafMLModelTrainSubsc' + '204': + description: > + The Individual NWDAF ML Model Training Subscription resource was partial modified + successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing Individual NWDAF ML Model Training Subscription. + operationId: DeleteNWDAFMLModelTrainingSubcription + tags: + - Individual NWDAF ML Model Training Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying a subscription to the Nnwdaf_MLModelTraining Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual NWDAF ML Model Training Subscription matching the + subscriptionId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnwdaf-mlmodeltraining: Access to the Nnwdaf_MLModelTraining API + + schemas: + NwdafMLModelTrainSubsc: + description: Represents a ML Model Training subscription.. + type: object + properties: + mLEventSubscs: + type: array + items: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLEventSubscription' + minItems: 1 + description: Subscribed events + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suppFeats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + failEventReports: + type: array + items: + $ref: '#/components/schemas/FailureEventInfoForMLModelTrain' + minItems: 1 + description: > + Supplied by the NWDAF containing MTLF when available, shall contain the event(s) that + the subscription is not successful including the failure reason(s). + mLCorreId: + type: string + description: String identifying the subscription is for a Federated Learning procedure. + mLModelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLEventNotif' + minItems: 1 + description: Represents the ML Model information. + immReports: + type: array + items: + $ref: '#/components/schemas/NwdafMLModelTrainNotif' + minItems: 1 + description: Immediately reported ML Model Training notifications. + mLModelTrainInfos: + type: array + items: + $ref: '#/components/schemas/MLModelTrainInfo' + minItems: 1 + description: Represents the ML Model training information. + mLPreFlag: + type: boolean + description: > + Indicates whether the subscription is for preparation of ML Model training. Set to + "true" if it is for ML training preparation, otherwise set to "false". + mLAccChkFlg: + type: boolean + description: > + Indicates whether request using the local training data as the testing dataset to + calculate the Model Accuracy of the global ML model provided by the consumer. Set to + "true" if it is requested, otherwise set to "false". + mLTrainRepInfo: + $ref: '#/components/schemas/MLTrainReportInfo' + notifCorreId: + type: string + description: > + String identifying the Notification Correlation ID in the corresponding notification. + roundInd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tgtRepUe: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TargetUeInformation' + uCaseCont: + type: string + description: > + String identifying the use case context of the ML model. The value and format of this + parameter are not standardized. + required: + - mLEventSubscs + - notifUri + - notifCorreId + + NwdafMLModelTrainSubscPatch: + description: > + Represents parameters to request the modification of a ML Model Training subscription. + type: object + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + mLModelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLEventNotif' + minItems: 1 + description: Represents the ML Model information. + mLModelTrainInfos: + type: array + items: + $ref: '#/components/schemas/MLModelTrainInfo' + minItems: 1 + description: Represents the ML Model training information. + mLPreFlag: + type: boolean + description: > + Indicates whether the subscription is for preparation of ML Model training. Set to + "true" if it is for ML training preparation, otherwise set to "false". + mLAccChkFlg: + type: boolean + description: > + Indicates whether request using the local training data as the testing dataset to + Calculate the Model Accuracy of the global ML model provided by the consumer. Set to + "true" if it is requested, otherwise set to "false". + mLTrainRepInfo: + $ref: '#/components/schemas/MLTrainReportInfo' + roundInd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tgtRepUe: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TargetUeInformation' + uCaseCont: + type: string + description: > + String identifying the use case context of the ML model. The value and format of this + parameter are not standardized. + + NwdafMLModelTrainNotif: + description: Represents notifications on events that occurred. + type: object + properties: + delayEventNotif: + $ref: '#/components/schemas/DelayEventNotif' + mLCorreId: + type: string + description: String identifying the subscription is for a Federated Learning procedure. + mLModelInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLEventNotif' + minItems: 1 + description: Represents the ML Model information. + notifCorreId: + type: string + description: > + String identifying the Notification Correlation ID in the corresponding notification. + roundInd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + statusReport: + $ref: '#/components/schemas/StatusReportInfo' + termTrainReq: + $ref: '#/components/schemas/TermTrainCause' + uCaseCont: + type: string + description: > + String identifying the context of use of ML model. The value and format of this + parameter are not standardized. + required: + - notifCorreId + oneOf: + - required: [delayEventNotif] + - required: [mLModelInfos] + - required: [termTrainReq] + - required: [mLModelInfos, termTrainReq] + + + MLModelTrainInfo: + description: > + Represents the ML Model training information, include requirement on data availability and + time availability, training filter information. + type: object + properties: + dataAvReq: + $ref: '#/components/schemas/DataAvReq' + timeAvReq: + type: string + description: > + String representing the requirement on available time for the ML model training. + + MLTrainReportInfo: + description: Represents the ML Model training reporting information. + type: object + properties: + maxResTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + FailureEventInfoForMLModelTrain: + description: Represents the failure event information for a ML Model Training subscription. + type: object + properties: + mLTrainEvent: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + failureCodeTrain: + $ref: '#/components/schemas/FailureCodeTrain' + required: + - mLTrainEvent + - failureCodeTrain + + + DataAvReq: + description: Represents the requirement on available data for the ML model training. + type: object + properties: + dataStatProps: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DatasetStatisticalProperty' + minItems: 1 + inpEvents: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/DccfEvent' + minItems: 1 + minNumSamples: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeWindows: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + required: + - inpEvents + + DelayEventNotif: + description: > + Indicating that the NWDAF containing MTLF is not able to complete the training of ML model + within the maximum response time, the cause code, and the expected time complete the + training. + type: object + properties: + delayEventInd: + type: boolean + description: > + Indicates that the NWDAF containing MTLF is not able to complete the training of ML + model within the maximum response time. Set to "true" if not able to complete the ML + model training on time, otherwise set to "false". + delayCause: + $ref: '#/components/schemas/DelayCause' + expCompTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - delayEventInd + + StatusReportInfo: + description: > + Indicating status information generated by the NWDAF containing MTLF during ML model + training. + type: object + properties: + mlModelAcc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + trainInDataInfo: + $ref: '#/components/schemas/TrainDataInfo' + + TrainDataInfo: + description: Represents the training input data information. + type: object + properties: + areaDataSet: + type: string + description: Indicates the areas covered by the data set. + maxValues: + type: array + items: + type: string + minItems: 1 + description: Represents the maximum value of one dimension of data. + minValues: + type: array + items: + type: string + minItems: 1 + description: Represents the minimum value of one dimension of data. + samplRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + +# +# ENUMERATIONS DATA TYPES +# + FailureCodeTrain: + anyOf: + - type: string + enum: + - UNAVAILABLE_ML_MODEL_TRAIN + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the failure reason. + Possible values are: + - UNAVAILABLE_ML_MODEL_TRAIN: The ML model training is unavailable. + + TermTrainCause: + anyOf: + - type: string + enum: + - NWDAF_OVERLOAD + - NOT_AVAILABLE_ML_TRAIN + - OTHERS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the reasons that ML Model Training to be terminated. + Possible values are: + - NWDAF_OVERLOAD: The NWDAF is overloaded for the ML model training. + - NOT_AVAILABLE_ML_TRAIN: The ML model training process is not available. + - OTHERS: Other cause. + + DelayCause: + anyOf: + - type: string + enum: + - ML_MODEL_TRAIN_FAILURE + - NEED_MORE_TIME + - OTHERS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the reasons for ML Model training delay. + Possible values are: + - ML_MODEL_TRAIN_FAILURE: The ML model training is failure. + - NEED_MORE_TIME: The ML model training needs more time. + - OTHERS: Other cause. diff --git a/TS29521_Nbsf_Management.yaml b/TS29521_Nbsf_Management.yaml new file mode 100644 index 0000000..0f8c4d5 --- /dev/null +++ b/TS29521_Nbsf_Management.yaml @@ -0,0 +1,1364 @@ +openapi: 3.0.0 + +info: + version: 1.4.0-alpha.3 + title: Nbsf_Management + description: | + Binding Support Management Service API. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.521 V18.2.0; 5G System; Binding Support Management Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.521/' + +servers: + - url: '{apiRoot}/nbsf-management/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nbsf-management + +paths: + /pcfBindings: + post: + summary: Create a new Individual PCF for a PDU Session binding information + operationId: CreatePCFBinding + tags: + - PCF Bindings (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcfBinding' + responses: + '201': + description: The creation of an individual PCF for a PDU Session binding. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfBinding' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nbsf-management//pcf-mbs-bindings/{bindingId} + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: > + The existing PCF binding information stored in the BSF for the indicated combination is + returned. + + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Read PCF for a PDU Session Bindings information + operationId: GetPCFBindings + tags: + - PCF Bindings (Collection) + parameters: + - name: ipv4Addr + in: query + description: The IPv4 Address of the served UE. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + - name: ipv6Prefix + in: query + description: > + The IPv6 Address of the served UE. The NF service consumer shall append '/128' to the + IPv6 address in the attribute value. E.g. '2001:db8:85a3::8a2e:370:7334/128'. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + - name: macAddr48 + in: query + description: The MAC Address of the served UE. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + - name: dnn + in: query + description: DNN. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: supi + in: query + description: Subscription Permanent Identifier. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: gpsi + in: query + description: Generic Public Subscription Identifier + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: snssai + in: query + description: The identification of slice. + required: false + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: ipDomain + in: query + description: The IPv4 address domain identifier. + required: false + schema: + type: string + - name: supp-feat + in: query + description: To filter irrelevant responses related to unsupported features. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + The individual PCF for a PDU Session binding session binding information resource + matching the query parameter(s) is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfBinding' + '204': + description: > + There is no PCF for a PDU Session binding information matching the query parameter(s). + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pcfBindings/{bindingId}: + delete: + summary: Delete an existing Individual PCF for a PDU Session Binding information + operationId: DeleteIndPCFBinding + tags: + - Individual PCF Binding (Document) + parameters: + - name: bindingId + in: path + description: Represents the individual PCF for a PDU Session Binding. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual PCF for a PDU Session Binding information resource is + deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Update an existing Individual PCF for a PDU Session Binding information + operationId: UpdateIndPCFBinding + tags: + - Individual PCF for a PDU Session Binding (Document) + parameters: + - name: bindingId + in: path + description: Represents the individual PCF for a PDU Session Binding. + required: true + schema: + type: string + requestBody: + description: Parameters to update the existing PCF for a PDU Session binding. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PcfBindingPatch' + responses: + '200': + description: OK (Successful update of the PCF for a PDU Session binding). + content: + application/json: + schema: + $ref: '#/components/schemas/PcfBinding' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions: + post: + operationId: CreateIndividualSubcription + summary: Create an individual subscription for event notifications from the BSF + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BsfSubscription' + responses: + '201': + description: Created. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nsmf-management//subscriptions/{subId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/BsfSubscriptionResp' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BsfNotification' + responses: + '204': + description: No Content. Notification was successful. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subId}: + put: + operationId: ReplaceIndividualSubcription + summary: Replace an individual subscription for event notifications from the BSF + tags: + - IndividualSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BsfSubscription' + parameters: + - name: subId + in: path + description: Subscription correlation ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was successfully modified and representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/BsfSubscriptionResp' + '204': + description: No Content. Resource was successfully modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualSubcription + summary: Delete an individual subscription for event notifications from the BSF + tags: + - IndividualSubscription (Document) + parameters: + - name: subId + in: path + description: Subscription correlation ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pcf-ue-bindings: + post: + summary: Create a new Individual PCF for a UE binding information + operationId: CreatePCFforUEBinding + tags: + - PCF for a UE Bindings (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcfForUeBinding' + responses: + '201': + description: The creation of an individual PCF for a UE binding. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfForUeBinding' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nbsf-management//pcf-ue-bindings/{bindingId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Read PCF for a UE Bindings information + operationId: GetPCFForUeBindings + tags: + - PCF for a UE Bindings (Collection) + parameters: + - name: supi + in: query + description: Subscription Permanent Identifier. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: gpsi + in: query + description: Generic Public Subscription Identifier + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: supp-feat + in: query + description: To filter irrelevant responses related to unsupported features. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + The individual PCF for a UE binding session binding information resource matching the + query parameter(s) is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PcfForUeBinding' + minItems: 0 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pcf-ue-bindings/{bindingId}: + delete: + summary: Delete an existing Individual PCF for a UE Binding information + operationId: DeleteIndPCFforUEBinding + tags: + - Individual PCF for a UE Binding (Document) + parameters: + - name: bindingId + in: path + description: Represents the individual PCF for a UE Binding. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual PCF for a UE binding information resource is deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Update an existing Individual PCF for a UE Binding information + operationId: UpdateIndPCFforUEBinding + tags: + - Individual PCF for a UE Binding (Document) + parameters: + - name: bindingId + in: path + description: Represents the individual PCF for a UE Binding. + required: true + schema: + type: string + requestBody: + description: Parameters to update the existing PCF for a UE binding. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PcfForUeBindingPatch' + responses: + '200': + description: OK. Successful update of the PCF for a PDU Session binding. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfForUeBinding' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pcf-mbs-bindings: + post: + summary: Create a new Individual PCF for an MBS Session binding. + operationId: CreatePCFMbsBinding + tags: + - PCF for an MBS Session Bindings (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcfMbsBinding' + responses: + '201': + description: > + Created. A new Individual PCF for an MBS Session Binding resource is created + and the corresponding URI is returned in an HTTP Location header. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfMbsBinding' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nbsf-management/v1/pcf-mbs-bindings/{bindingId} + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + + description: > + The existing PCF binding information stored in the BSF for the MBS session is + returned. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/MbsExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve an existing PCF for an MBS Session binding. + operationId: GetPCFMbsBinding + tags: + - PCF for an MBS Session Bindings (Collection) + parameters: + - name: mbs-session-id + in: query + description: > + Contains the identifier of the MBS Session to which the requested MBS Session + binding is related. + required: true + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + - name: supp-feat + in: query + description: > + Contains the list of features supported by the NF service consumer and used to + filter irrelevant responses related to unsupported features. + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + OK. The Individual PCF for an MBS Session Binding resource(s) matching the provided + query parameter(s) are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PcfMbsBinding' + minItems: 0 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pcf-mbs-bindings/{bindingId}: + parameters: + - name: bindingId + in: path + description: > + Represents the identifier of the Individual PCF for an MBS Session Binding resource. + required: true + schema: + type: string + + patch: + summary: Request the modification of an existing Individual PCF for an MBS Session Binding resource. + operationId: ModifyIndPCFMbsBinding + tags: + - Individual PCF for an MBS Session Binding (Document) + requestBody: + description: Parameters to request the modification of the PCF for an MBS Session Binding. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PcfMbsBindingPatch' + responses: + '200': + description: > + OK. The Individual PCF for an MBS Session Binding resource is successfully modified and + a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/PcfMbsBinding' + '204': + description: > + No Content. The Individual PCF for an MBS Session Binding resource is successfully + modified and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual PCF for an MBS Session Binding. + operationId: DeleteIndPCFMbsBinding + tags: + - Individual PCF for an MBS Session Binding (Document) + responses: + '204': + description: > + No Content. The Individual PCF for an MBS Session Binding resource is successfully + Deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nbsf-management: Access to the Nbsf_Management API + + schemas: + + PcfBinding: + description: Identifies an Individual PCF for a PDU Session binding. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + addIpv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: The additional IPv6 Address Prefixes of the served UE. + ipDomain: + type: string + macAddr48: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + addMacAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + description: The additional MAC Addresses of the served UE. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_PolicyAuthorization service + pcfDiamHost: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + pcfDiamRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + pcfSmFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfSmIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_SMPolicyControl service. + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + paraCom: + $ref: '#/components/schemas/ParameterCombination' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + ipv4FrameRouteList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrMask' + minItems: 1 + ipv6FrameRouteList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + required: + - dnn + - snssai + + PcfBindingPatch: + description: Identifies an Individual PCF binding used in an HTTP Patch method. + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrRm' + ipDomain: + type: string + nullable: true + ipv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6PrefixRm' + addIpv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: The additional IPv6 Address Prefixes of the served UE. + nullable: true + macAddr48: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48Rm' + addMacAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + description: The additional MAC Addresses of the served UE. + nullable: true + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_PolicyAuthorization service. + pcfDiamHost: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + pcfDiamRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + ParameterCombination: + description: > + Represents the combination used by the BSF to check whether there is an existing PCF binding + information. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + ExtProblemDetails: + description: > + Contains the FQDN or IP endpoints of the existing PCF and the cause value if there is an + existing PCF binding information for the indicated combination. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/BindingResp' + + MbsExtProblemDetails: + description: > + Contains the FQDN or IP endpoints of the existing PCF and the cause value if there is an + existing PCF binding information for the MBS session. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/MbsBindingResp' + + BindingResp: + description: Contains the binding information for a PCF for a PDU Session. + type: object + properties: + pcfSmFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfSmIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_SMPolicyControl service. + + MbsBindingResp: + description: Contains the binding information for a PCF for an MBS Session. + type: object + properties: + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF handling the MBS Session. + anyOf: + - required: [pcfFqdn] + - required: [pcfIpEndPoints] + + BsfSubscription: + description: Contains the event subscription data. + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/BsfEvent' + minItems: 1 + description: Contain te subscribed events. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorreId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssaiDnnPairs: + $ref: '#/components/schemas/SnssaiDnnPair' + addSnssaiDnnPairs: + type: array + items: + $ref: '#/components/schemas/SnssaiDnnPair' + minItems: 1 + description: > + Represents the additional S-NSSAI and DNN pair(s) for which the binding event report(s) + shall apply. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - events + - notifUri + - notifCorreId + - supi + + BsfNotification: + description: Contains the event notifications. + type: object + properties: + notifCorreId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + eventNotifs: + type: array + items: + $ref: '#/components/schemas/BsfEventNotification' + minItems: 1 + description: Notifications about Individual Events. + required: + - notifCorreId + - eventNotifs + + BsfEventNotification: + description: Contains an event notification. + type: object + properties: + event: + $ref: '#/components/schemas/BsfEvent' + pcfForUeInfo: + $ref: '#/components/schemas/PcfForUeInfo' + pcfForPduSessInfos: + type: array + items: + $ref: '#/components/schemas/PcfForPduSessionInfo' + minItems: 1 + description: The information of the PCF for a PDU session. + matchSnssaiDnns: + type: array + items: + $ref: '#/components/schemas/SnssaiDnnPair' + minItems: 1 + description: Matching S-NSSAI and DNN pairs. + required: + - event + + PcfForUeInfo: + description: Contains the information of the PCF for a UE. + type: object + properties: + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_AmPolicyAuthorization service. + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + + PcfForPduSessionInfo: + description: Contains the informaiton of the PCF for a PDU session. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_AmPolicyAuthorization service. + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4AddrRm' + ipDomain: + type: string + ipv6Prefixes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + minItems: 1 + description: The IPv6 Address Prefixes of the served UE. + macAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + description: The MAC Addresses of the served UE. + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + required: + - snssai + - dnn + + PcfForUeBinding: + description: Identifies an Individual PCF for a UE binding. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pcfForUeFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfForUeIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_AmPolicyAuthorization service. + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + anyOf: + - required: [pcfForUeFqdn] + - required: [pcfForUeIpEndPoints] + + + PcfForUeBindingPatch: + description: Identifies the updates of an Individual PCF for a UE binding. + type: object + properties: + pcfForUeFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfForUeIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + description: IP end points of the PCF hosting the Npcf_AmPolicyAuthorization service. + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + SnssaiDnnPair: + description: Contains a S-NSSAI and DNN combination. + type: object + required: + - snssai + - dnn + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + PcfMbsBinding: + description: Represents an Individual PCF for an MBS Session binding. + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pcfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + bindLevel: + $ref: '#/components/schemas/BindingLevel' + recoveryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsSessionId + anyOf: + - required: [pcfFqdn] + - required: [pcfIpEndPoints] + + PcfMbsBindingPatch: + description: > + Represents the requested modification to an Individual PCF for an MBS Session binding. + type: object + properties: + pcfFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + pcfIpEndPoints: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/IpEndPoint' + minItems: 1 + pcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + + BindingLevel: + anyOf: + - type: string + enum: + - NF_SET + - NF_INSTANCE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the binding level. + Possible values are: + - NF_SET: Indicates the NF set level of binding. + - NF_INSTANCE: Indicates the NF instance level of binding. + BsfEvent: + description: Represents an event to be notified by the BSF. + anyOf: + - type: string + enum: + - PCF_PDU_SESSION_BINDING_REGISTRATION + - PCF_PDU_SESSION_BINDING_DEREGISTRATION + - PCF_UE_BINDING_REGISTRATION + - PCF_UE_BINDING_DEREGISTRATION + - SNSSAI_DNN_BINDING_REGISTRATION + - SNSSAI_DNN_BINDING_DEREGISTRATION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + + BsfSubscriptionResp: + description: > + It represents a response to a modification or creation request of an Individual Binding + Subscription resource. It may contain the notification of the already met events. + anyOf: + - $ref: '#/components/schemas/BsfSubscription' + - $ref: '#/components/schemas/BsfNotification' diff --git a/TS29522_5GLANParameterProvision.yaml b/TS29522_5GLANParameterProvision.yaml new file mode 100644 index 0000000..a508695 --- /dev/null +++ b/TS29522_5GLANParameterProvision.yaml @@ -0,0 +1,704 @@ +openapi: 3.0.0 + +info: + title: 3gpp-5glan-pp + version: 1.2.0-alpha.4 + description: | + API for 5G LAN Parameter Provision. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-5glan-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + get: + summary: read all of the active subscriptions for the AF + operationId: RealAllSubscriptions + tags: + - 5GLAN Parameters Provision Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/5GLanParametersProvision' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateAnSubscription + tags: + - 5GLAN Parameters Provision Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new subscription creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + 5GLANParamProvNotif: + '{request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParamProvNotif' + responses: + '204': + description: No Content. Successful reception of the notification. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual 5GLAN Parameters Provision Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual 5GLAN Parameters Provision Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + responses: + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partial updates an existing subscription resource + operationId: PartialUpdateAnSubscription + tags: + - Individual 5GLAN Parameters Provision Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/5GLanParametersProvisionPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/5GLanParametersProvision' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual 5GLAN Parameters Provision Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + 5GLanParametersProvision: + description: Represents an individual 5G LAN parameters provision subscription resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + 5gLanParams: + $ref: '#/components/schemas/5GLanParameters' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - 5gLanParams + - suppFeat + + 5GLanParametersProvisionPatch: + description: > + Represents the 5G LAN parameters to request the modification of a subscription + to provision parameters. + type: object + properties: + 5gLanParamsPatch: + $ref: '#/components/schemas/5GLanParametersPatch' + + 5GLanParameters: + description: Represents 5G LAN service related parameters that need to be provisioned. + type: object + properties: + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsis: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minProperties: 1 + description: > + Contains the list of 5G VN Group members, each member is identified by GPSI. + Any string value can be used as a key of the map. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + aaaIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + aaaIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + aaaUsgs: + type: array + items: + $ref: '#/components/schemas/AaaUsage' + minItems: 1 + description: > + This attribute shall contain at most 2 array elements. It is however kept + defined as it is (i.e. with a cardinality of "1..N") for backward + compatibility considerations. + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + sessionType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sessionTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + minItems: 1 + description: Further allowed PDU Session types. + appDesps: + type: object + additionalProperties: + $ref: '#/components/schemas/AppDescriptor' + minProperties: 1 + description: > + Describes the operation systems and the corresponding applications for each + operation systems. The key of map is osId. + vnGroupCommInd: + type: boolean + description: > + Indicates whether the 5G VN group is associated with 5G VN group communication when + When set to "true", it indicates that the 5G VN group is associated with 5G VN group + communication. When set to "false", it indicates that the 5G VN group is not + associated with 5G VN group communication. The default value when omitted is "false". + maxGrpDataRateInfo: + $ref: '#/components/schemas/MaxGrpDataRateInfo' + cpParams: + $ref: '#/components/schemas/CpParams' + npConfigParams: + $ref: '#/components/schemas/NpConfigParams' + lpiParams: + $ref: '#/components/schemas/LpiParams' + acsParams: + $ref: '#/components/schemas/AcsParams' + ecsAddrParams: + $ref: '#/components/schemas/ECSAddrParams' + dnnSnssaiParams: + $ref: '#/components/schemas/DnnSnssaiParams' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true to request to send a test notification as defined in clause 5.2.5.3. + Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + required: + - exterGroupId + - gpsis + - dnn + - snssai + - sessionType + - appDesps + + 5GLanParametersPatch: + description: Represents 5G LAN service related parameters that need to be modified. + type: object + properties: + gpsis: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GpsiRm' + minProperties: 1 + description: > + Contains the list of 5G VN Group members, each member is identified by GPSI. + Any string value can be used as a key of the map. + appDesps: + type: object + additionalProperties: + $ref: '#/components/schemas/AppDescriptorRm' + minProperties: 1 + description: > + Describes the operation systems and the corresponding applications for + each operation systems. The key of map is osId. + cpParams: + $ref: '#/components/schemas/CpParams' + npConfigParams: + $ref: '#/components/schemas/NpConfigParams' + lpiParams: + $ref: '#/components/schemas/LpiParams' + acsParams: + $ref: '#/components/schemas/AcsParams' + ecsAddrParams: + $ref: '#/components/schemas/ECSAddrParams' + dnnSnssaiParams: + $ref: '#/components/schemas/DnnSnssaiParams' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + + AppDescriptor: + description: Represents an operation system and the corresponding applications. + type: object + properties: + osId: + $ref: 'TS29519_Policy_Data.yaml#/components/schemas/OsId' + appIds: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minProperties: 1 + description: > + Identifies applications that are running on the UE's operating system. + Any string value can be used as a key of the map. + required: + - osId + - appIds + + AppDescriptorRm: + description: > + Represents the same as the AppDescriptor data type but with the nullable:true + property. + type: object + properties: + appIds: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationIdRm' + minProperties: 1 + description: > + Identifies applications that are running on the UE's operating system. + Any string value can be used as a key of the map. + + MaxGrpDataRateInfo: + description: > + Represents the Maximum Group Data Rate related information. + type: object + properties: + maxGrpDataRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxGrpDataRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + anyOf: + - required: [maxGrpDataRateUl] + - required: [maxGrpDataRateDl] + + CpParams: + description: Represents Communication Pattern parameters. + type: object + properties: + cpParameterSets: + type: object + additionalProperties: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/CpParameterSet' + minProperties: 1 + description: > + Contains one or more set(s) of CP parameters information for the 5G VN group. + Any string value may be used as a key of the map. + cpReports: + type: object + additionalProperties: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/CpReport' + minProperties: 1 + description: > + Contains the identifier(s) of the set(s) of CP parameters for which the provided CP + parameters are not added or modified successfully with the corresponding failure reason. + Each element provides the related information for one or more CP set identifier(s). + The key of the map is a string representing the failure identifier. + readOnly: true + required: + - cpParameterSets + + NpConfigParams: + description: Represents Network Parameters Configuration information. + type: object + properties: + maximumLatency: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + suggestedNumberOfDlPackets: + type: integer + minimum: 0 + description: > + Contains the number of packets that the serving gateway shall buffer in case the UE is + not reachable. + groupReportingGuardTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + validityTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + + LpiParams: + description: Represents Location Privacy Indication parameters. + type: object + properties: + lpi: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/Lpi' + required: + - lpi + + AcsParams: + description: Represents ACS configuration parameters. + type: object + properties: + acsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AcsInfo' + required: + - acsInfo + + ECSAddrParams: + description: Represents ECS address configuration parameters. + type: object + properties: + ecsServerAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EcsServerAddr' + spatialValidityCond: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SpatialValidityCond' + required: + - ecsServerAddr + + DnnSnssaiParams: + description: Represents DNN and S-NSSAI specific Group Parameters. + type: object + properties: + defQos: + $ref: 'TS29522_GroupParametersProvisioning.yaml#/components/schemas/AfReqDefaultQoS' + ladnServArea: + $ref: 'TS29522_GroupParametersProvisioning.yaml#/components/schemas/LadnServArea' + anyOf: + - required: [ defQos ] + - required: [ ladnServArea ] + + 5GLanParamProvNotif: + description: Represents a 5G LAN Parameter Provisioning Event Notification. + type: object + properties: + npConfigNotif: + $ref: '#/components/schemas/NpConfigNotif' + + NpConfigNotif: + description: Represents a Network Parameters Configuration related notification. + type: object + properties: + configResults: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ConfigResult' + minItems: 1 + appliedParam: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/AppliedParameterConfiguration' + + AaaUsage: + anyOf: + - type: string + enum: + - AUTH + - IP_ALLOC + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the usage of the DN-AAA server. + Possible values are: + - AUTH: secondary authentication/authorization needed from DN-AAA server + - IP_ALLOC: UE IP address allocation needed from DN-AAA server diff --git a/TS29522_ACSParameterProvision.yaml b/TS29522_ACSParameterProvision.yaml new file mode 100644 index 0000000..f032853 --- /dev/null +++ b/TS29522_ACSParameterProvision.yaml @@ -0,0 +1,379 @@ +openapi: 3.0.0 +info: + title: 3gpp-acs-pp + version: 1.1.2 + description: | + API for 5G ACS Parameter Provision. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V17.8.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-acs-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /{afId}/subscriptions: + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - ACS Configuration Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AcsConfigurationData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateAnSubscription + tags: + - ACS Configuration Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new subscription creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual ACS Configuration Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual ACS Configuration Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + responses: + '200': + description: OK (Successful update of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partial modifies an existing subscription resource. + operationId: PartialUpdateAnSubscription + tags: + - Individual ACS Configuration Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to modify the existing subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AcsConfigurationDataPatch' + responses: + '200': + description: > + OK. The subscription resource was successfully modified and a representation of the + updated resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AcsConfigurationData' + '204': + description: > + No Content. The resource has been successfully modified and no additional content is to + be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual ACS Configuration Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + AcsConfigurationData: + description: Represents an individual ACS Configuration subscription resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + acsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AcsInfo' + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - acsInfo + - suppFeat + AcsConfigurationDataPatch: + description: > + Represents the parameters to request to modify an existing Individual ACS Configuration + subscription resource. + type: object + properties: + acsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AcsInfo' + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' diff --git a/TS29522_AKMA.yaml b/TS29522_AKMA.yaml new file mode 100644 index 0000000..74bb172 --- /dev/null +++ b/TS29522_AKMA.yaml @@ -0,0 +1,123 @@ +openapi: 3.0.0 +info: + title: 3gpp-akma + version: 1.1.0-alpha.1 + description: | + API for AKMA. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-akma/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /retrieve: + post: + summary: Retrieve AKMA Application Key Information. + operationId: RetrieveAKMAAppKey + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AkmaAfKeyRequest' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AkmaAfKeyData' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: + nnef-akma:gpsi-access: > + Return GPSI in the AKMA Application Key information for the UE. + + schemas: + AkmaAfKeyRequest: + description: > + Represents the parameters to request the retrieval of AKMA Application Key information. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + afId: + $ref: '#/components/schemas/AfId' + aKId: + $ref: '#/components/schemas/AKId' + anonInd: + type: boolean + description: > + Indicates whether an anonymous user access. Set to "true" if an anonymous user access is + requested; otherwise set to "false". Default value is "false" if omitted. + default: false + required: + - afId + - aKId + AkmaAfKeyData: + description: Represents AKMA Application Key information data. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + expiry: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + kaf: + type: string + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - kaf + - expiry + AfId: + description: Represents an AF identifier. + type: string + AKId: + description: Represents an AKMA Key Identifier. + type: string diff --git a/TS29522_AMInfluence.yaml b/TS29522_AMInfluence.yaml new file mode 100644 index 0000000..9a3f6e0 --- /dev/null +++ b/TS29522_AMInfluence.yaml @@ -0,0 +1,481 @@ +openapi: 3.0.0 +info: + title: AMInfluence + version: 1.1.0-alpha.1 + description: | + AMInfluence API Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V18.2.0; 5G System; Network Exposure Function Northbound APIs. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/ +servers: + - url: '{apiRoot}/3gpp-am-influence/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: [] +paths: + /{afId}/subscriptions: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + get: + summary: Read all of the active subscriptions for the AF. + tags: + - AM Influence Subscription + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF). + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmInfluSub' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create a new subscription to AM influence. + operationId: CreateAMInfluenceSubcription + tags: + - AM Influence Subscription + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + responses: + '201': + description: Create a new Individual AM Influence Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-am-influence/v1/{afId}/subscriptions/{subscriptionId}. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{$request.body#/notificationDestination}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AmInfluEventNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + in: path + description: Identifier of the AF. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource. + required: true + schema: + type: string + get: + summary: Read an active subscription identified by the subscriptionId. + tags: + - Individual AM Influence Subscription + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update/Replace an existing subscription resource. + tags: + - Individual AM Influence Subscription + requestBody: + description: Parameters to update/replace the existing subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Update/Replace an existing subscription resource. + tags: + - Individual AM Influence Subscription + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AmInfluSubPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AmInfluSub' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing subscription. + tags: + - Individual AM Influence Subscription + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: {} + schemas: + AmInfluSub: + description: Represents an AM influence subscription. + type: object + properties: + afTransId: + type: string + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + anyUeInd: + type: boolean + description: > + Identifies whether the AF request applies to any UE. This attribute shall + set to "true" if applicable for any UE, otherwise, set to "false". + roamUePlmnIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + description: > + Indicates a list of PLMNs representing the home PLMN for the inbound roaming + UEs. + dnnSnssaiInfos: + type: array + items: + $ref: '#/components/schemas/DnnSnssaiInformation' + minItems: 1 + description: Each of the element identifies a (DNN, S-NSSAI) combination. + afAppIds: + type: array + items: + type: string + minItems: 1 + description: Each of the element identifies an application. + highThruInd: + type: boolean + geoAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Identifies geographic areas of the user where the request is applicable. + policyDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + subscribedEvents: + type: array + items: + $ref: '#/components/schemas/AmInfluEvent' + minItems: 1 + description: Indicates one or more AM influence related events. + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the AF to request the NEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afTransId + anyOf: + - required: [highThruInd] + - required: [geoAreas] + oneOf: + - required: [gpsi] + - required: [externalGroupId] + - required: [anyUeInd] + - required: [roamUePlmnIds] + AmInfluSubPatch: + description: > + Represents parameters to request the modification of an AM influence subscription resource. + type: object + properties: + highThruInd: + type: boolean + nullable: true + geoAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + description: Identifies geographic areas of the user where the request is applicable. + nullable: true + policyDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + dnnSnssaiInfos: + type: array + items: + $ref: '#/components/schemas/DnnSnssaiInformation' + minItems: 1 + nullable: true + description: Each of the element identifies a (DNN, S-NSSAI) combination. + afAppIds: + type: array + items: + type: string + minItems: 1 + nullable: true + description: Each of the element identifies an application. + subscribedEvents: + type: array + items: + $ref: '#/components/schemas/AmInfluEvent' + minItems: 1 + nullable: true + description: Indicates one or more AM influence related events. + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LinkRm' + AmInfluEventNotif: + description: Represents an AM influence event notification. + type: object + properties: + afTransId: + type: string + event: + $ref: '#/components/schemas/AmInfluEvent' + geoAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Identifies geographic areas of the user where the request is applicable. + required: + - event + - afTransId + DnnSnssaiInformation: + description: Represents a (DNN, SNSSAI) combination. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + +# ENUMERATIONS DATA TYPES +# + AmInfluEvent: + description: Represents the service area coverage outcome event. + anyOf: + - type: string + enum: + - SERVICE_AREA_COVRG_OUTCOME + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. diff --git a/TS29522_AMPolicyAuthorization.yaml b/TS29522_AMPolicyAuthorization.yaml new file mode 100644 index 0000000..1408a80 --- /dev/null +++ b/TS29522_AMPolicyAuthorization.yaml @@ -0,0 +1,526 @@ +openapi: 3.0.0 +info: + title: 3gpp-am-policyauthorization + version: 1.0.2 + description: | + API for AM policy authorization. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V17.8.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-am-policyauthorization/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /{afId}/app-am-contexts: + post: + summary: Creates a new Individual application AM Context resource + operationId: PostAppAmContexts + tags: + - Application AM Contexts + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new resource creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextExpData' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextExpRespData' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + amEventNotification: + '{$request.body#/evSubscs/eventNotifUri}': + post: + requestBody: + description: Notification of an event occurrence. + required: true + content: + application/json: + schema: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/app-am-contexts/{appAmContextId}: + get: + summary: read an existing Individual application AM context + operationId: GetAppAmContext + tags: + - Individual Application AM Context + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: appAmContextId + in: path + description: Identifier of the Individual application AM context + required: true + schema: + type: string + responses: + '200': + description: OK (A representation of the resource is successfully returned) + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextExpData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: partial modifies an existing Individual application AM context + operationId: ModAppAmContext + tags: + - Individual Application AM Context + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: appAmContextId + in: path + description: Identifier of the application AM context resource + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AppAmContextExpUpdateData' + responses: + '200': + description: > + successful modification of the resource and a representation of that + resource is returned. If a subscribed event is matched, the event + notification is also included in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextExpRespData' + '204': + description: The successful modification + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing Individual Application AM Context + operationId: DeleteAppAmContext + tags: + - Individual Application AM Context + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: appAmContextId + in: path + description: string identifying the Individual aaplication AM context resource + required: true + schema: + type: string + responses: + '204': + description: The deletion is confirmed without returning additional data. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/app-am-contexts/{appAmContextId}/events-subscription: + put: + summary: creates or modifies an AM Policy Events Subscription sub-resource. + operationId: UpdateAmEventsSubsc + tags: + - AM Policy Events Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: appAmContextId + in: path + description: string identifying the AM Policy Events Subscription subresource + required: true + schema: + type: string + requestBody: + description: > + Creation or modification of an application AM Policy Events Subscription sub-resource. + required: true + content: + application/json: + schema: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsSubscData' + responses: + '201': + description: > + The creation of the application AM Policy Events Subscription sub-resource + is confirmed and its representation is returned. If an AM Event is matched, + the response also includes the notification. + content: + application/json: + schema: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsSubscRespData' + headers: + Location: + description: > + Contains the URI of the created AM Policy Events Subscription + subresource, according to the structure + {apiRoot}/3gpp-am-policyauthorization/v1/{afId}/app-am- + contexts/{appAmContextId}/events-subscription} + required: true + schema: + type: string + '200': + description: > + The modification of the AM Policy Events Subscription subresource is confirmed + and its representation is returned. If an AM Event is matched, the response also + includes the notification. + content: + application/json: + schema: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsSubscRespData' + '204': + description: > + The modification of the AM Policy Events Subscription subresource is confirmed + without returning additional data. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + amEventNotification: + '{$request.body#/evSubscs/eventNotifUri}': + post: + requestBody: + description: Contains the information for the notification of an event occurrence. + required: true + content: + application/json: + schema: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: deletes the AM Policy Events Subscription sub-resource + operationId: DeleteAmEventsSubsc + tags: + - AM Policy Events Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: appAmContextId + in: path + description: string identifying the Individual Application AM Context resource. + required: true + schema: + type: string + responses: + '204': + description: > + The deletion of the of the AM Policy Events Subscription subresource + is confirmed without returning additional data. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + AppAmContextExpData: + description: Represents an Individual application AM context exposure resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + evSubscs: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsSubscData' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + highThruInd: + type: boolean + covReqs: + type: array + items: + $ref: '#/components/schemas/GeographicalArea' + minItems: 1 + nullable: true + policyDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSecRm' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestTestNotification: + type: boolean + description: > + Set to true by the AF to request the NEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + required: + - gpsi + anyOf: + - required: [highThruInd] + - required: [covReqs] + + AppAmContextExpUpdateData: + description: > + Contains the modification(s) to be applied to the Individual application + AM context exposure resource. + type: object + properties: + evSubscs: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsSubscDataRm' + highThruInd: + type: boolean + covReqs: + type: array + items: + $ref: '#/components/schemas/GeographicalArea' + minItems: 1 + policyDuration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + + GeographicalArea: + description: Contains geographical area information (e.g.a civic address or shapes). + type: object + properties: + civicAddress: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + shapes: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + + AppAmContextExpRespData: + description: > + It represents a response to a modification or creation request of an Individual + Application AM resource. It may contain the notification of the already met events + anyOf: + - $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AppAmContextData' + - $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/AmEventsNotification' diff --git a/TS29522_ASTI.yaml b/TS29522_ASTI.yaml new file mode 100644 index 0000000..93ffa78 --- /dev/null +++ b/TS29522_ASTI.yaml @@ -0,0 +1,450 @@ +openapi: 3.0.0 + +info: + title: 3gpp-asti + version: 1.1.0-alpha.2 + description: | + API for ASTI. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-asti/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/configurations: + get: + summary: read all of the active configurations of 5G access stratum time distribution for the AF + operationId: ReadAllConfigurations + tags: + - ASTI Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active configurations for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AccessTimeDistributionData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new configuration resource + operationId: CreateNewConfiguration + tags: + - ASTI Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new configuration creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + astiNotification: + '{$request.body#/astiNotifUri}': + post: + requestBody: + description: Notification of an ASTI configuration change event. + required: true + content: + application/json: + schema: + $ref: 'TS29565_Ntsctsf_ASTI.yaml#/components/schemas/AstiConfigNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/configurations/retrieve: + post: + summary: Request the status of the 5G access stratum time distribution configuration for a list of UEs. + operationId: RetrieveStatusofConfiguration + tags: + - ASTI Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: Contains the list of GPSIs. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusRequestData' + responses: + '200': + description: Successful retrieval of the status of the 5G access stratum time distribution + content: + application/json: + schema: + $ref: '#/components/schemas/StatusResponseData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/configurations/{configId}: + get: + summary: Reads an active configuration for the AF and the configuration Id + operationId: ReadAnConfiguration + tags: + - Individual ASTI Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Modifies an active configuration for the AF and the configuration Id + operationId: FullyModifyAnConfiguration + tags: + - Individual ASTI Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing configuration + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + responses: + '200': + description: OK (Successful update of the configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing configuration + operationId: DeleteAnConfiguration + tags: + - Individual ASTI Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing configuration) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + AccessTimeDistributionData: + description: > + Contains the parameters for the creation of 5G access stratum time distribution configuration. + type: object + properties: + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + asTimeDisParam: + $ref: 'TS29565_Ntsctsf_ASTI.yaml#/components/schemas/AsTimeDistributionParam' + coverageArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SpatialValidityCond' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + astiNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - asTimeDisParam + oneOf: + - required: [gpsis] + - required: [interGrpId] + + StatusRequestData: + description: > + Contains the parameters for retrieval of the status of the access stratum time distribution + for a list of UEs. + type: object + properties: + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + required: + - gpsis + + StatusResponseData: + description: > + Contains the parameters for the status of the access stratum time distribution for a list of + UEs. + type: object + properties: + inactiveUes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + activeUes: + type: array + items: + $ref: '#/components/schemas/ActiveUe' + minItems: 1 + + ActiveUe: + description: > + Contains the UE identifier whose status of the access stratum time distribution is active + and the optional requested time synchronization error budget. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + timeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' diff --git a/TS29522_AnalyticsExposure.yaml b/TS29522_AnalyticsExposure.yaml new file mode 100644 index 0000000..b18e78e --- /dev/null +++ b/TS29522_AnalyticsExposure.yaml @@ -0,0 +1,1245 @@ +openapi: 3.0.0 + +info: + title: 3gpp-analyticsexposure + version: 1.2.0-alpha.5 + description: | + API for Analytics Exposure. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-analyticsexposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Analytics Exposure Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: supp-feat + in: query + description: Features supported by the NF service consumer + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateNewSubscription + tags: + - Analytics Exposure Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new subscription creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + callbacks: + notification: + '{request.body#/notifUri}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsEventNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '204': + description: > + Successful case. The resource has been successfully created and no additional + content is to be sent in the response message. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual Analytics Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + - name: supp-feat + in: query + description: Features supported by the NF service consumer + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual Analytics Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + responses: + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsExposureSubsc' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Analytics Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/fetch: + post: + summary: Fetch analytics information + operationId: FetchAnalyticsInfo + tags: + - AnalyticsExposure API Fetch analytics information + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsRequest' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AnalyticsData' + '204': + description: No Content (The requested Analytics data does not exist) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + description: > + The request is rejected by the NEF and more details (not only the ProblemDetails) + are returned. + content: + application/problem+json: + schema: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/ProblemDetailsAnalyticsInfoRequest' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + AnalyticsExposureSubsc: + description: Represents an analytics exposure subscription. + type: object + properties: + analyEventsSubs: + type: array + items: + $ref: '#/components/schemas/AnalyticsEventSubsc' + minItems: 1 + analyRepInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + eventNotifis: + type: array + items: + $ref: '#/components/schemas/AnalyticsEventNotif' + minItems: 1 + failEventReports: + type: array + items: + $ref: '#/components/schemas/AnalyticsFailureEventInfo' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the AF to request the NEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + required: + - analyEventsSubs + - notifUri + - notifId + + AnalyticsEventNotification: + description: Represents an analytics event(s) notification. + type: object + properties: + notifId: + type: string + analyEventNotifs: + type: array + items: + $ref: '#/components/schemas/AnalyticsEventNotif' + minItems: 1 + termCause: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TermCause' + required: + - notifId + - analyEventNotifs + + AnalyticsEventNotif: + description: Represents an analytics event to be reported. + type: object + properties: + analyEvent: + $ref: '#/components/schemas/AnalyticsEvent' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeStamp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + failNotifyCode: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafFailureCode' + rvWaitTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + ueMobilityInfos: + type: array + items: + $ref: '#/components/schemas/UeMobilityExposure' + minItems: 1 + ueCommInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommunication' + minItems: 1 + abnormalInfos: + type: array + items: + $ref: '#/components/schemas/AbnormalExposure' + minItems: 1 + congestInfos: + type: array + items: + $ref: '#/components/schemas/CongestInfo' + minItems: 1 + dataVlTrnsTmIfs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeInfo' + minItems: 1 + nwPerfInfos: + type: array + items: + $ref: '#/components/schemas/NetworkPerfExposure' + minItems: 1 + qosSustainInfos: + type: array + items: + $ref: '#/components/schemas/QosSustainabilityExposure' + minItems: 1 + disperInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionInfo' + minItems: 1 + dnPerfInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerfInfo' + minItems: 1 + svcExps: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ServiceExperienceInfo' + minItems: 1 + movBehavInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavInfo' + minItems: 1 + relProxInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RelProxInfo' + minItems: 1 + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeStampGen: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + pauseInd: + type: boolean + description: > + Pause analytics consumption indication. Set to "true" to indicate the consumer to stop + the consumption of the analytics. Default value is "false" if omitted. + resumeInd: + type: boolean + description: > + Resume analytics consumption indication. Set to "true" to indicate the consumer to + resume the consumption of the analytics. Default value is "false" if omitted. + accuInfo: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyInfo' + required: + - analyEvent + - timeStamp + + AnalyticsEventSubsc: + description: Represents a subscribed analytics event. + type: object + properties: + analyEvent: + $ref: '#/components/schemas/AnalyticsEvent' + analyEventFilter: + $ref: '#/components/schemas/AnalyticsEventFilterSubsc' + tgtUe: + $ref: '#/components/schemas/TargetUeId' + required: + - analyEvent + + AnalyticsEventFilterSubsc: + description: Represents an analytics event filter. + type: object + properties: + nwPerfReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfRequirement' + minItems: 1 + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + fineGranAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Indicates the fine granularity areas to which the subscription applies. + temporalGranSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + spatialGranSizeTa: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + spatialGranSizeCell: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + dataVlTrnsTmRqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeReq' + minItems: 1 + excepRequs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Exception' + minItems: 1 + exptAnaType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ExpectedAnalyticsType' + exptUeBehav: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExpectedUeBehaviourData' + matchingDir: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MatchingDirection' + reptThlds: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ThresholdLevel' + minItems: 1 + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nsiIdInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NsiIdInfo' + minItems: 1 + qosReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/QosRequirement' + qosFlowRetThds: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RetainabilityThreshold' + minItems: 1 + ranUeThrouThds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minItems: 1 + disperReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionRequirement' + minItems: 1 + listOfAnaSubsets: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsSubset' + minItems: 1 + dnPerfReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerformanceReq' + minItems: 1 + dataVlTrnsTmReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeReq' + minItems: 1 + bwRequs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/BwRequirement' + minItems: 1 + ratFreqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RatFreqInformation' + minItems: 1 + appServerAddrs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + minItems: 1 + extraReportReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventReportingRequirement' + maxNumOfTopAppUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxNumOfTopAppDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + visitedLocAreas: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + minItems: 1 + pduSesInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + ueCommReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommReq' + minItems: 1 + userDataConOrderCri: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UserDataConOrderCrit' + locGranularity: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocInfoGranularity' + locOrientation: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocationOrientation' + ueMobilityReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeMobilityReq' + minItems: 1 + movBehavReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavReq' + minItems: 1 + relProxReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RelProxReq' + minItems: 1 + useCaseCxt: + type: string + description: > + Indicates the context of usage of the analytics. The value and format of this parameter + are not standardized. + pauseFlg: + type: boolean + description: > + Pause analytics consumption flag. Set to "true" to indicate the NWDAF to stop sending + the notifications of analytics. Default value is "false" if omitted. + resumeFlg: + type: boolean + description: > + Resume analytics consumption flag. Set to "true" to indicate the NWDAF to resume sending + the notifications of analytics. Default value is "false" if omitted. + accuReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyReq' + feedback: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsFeedbackInfo' + + TargetUeId: + description: Represents the target UE(s) information. + type: object + properties: + anyUeInd: + type: boolean + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + + UeMobilityExposure: + description: Represents a UE mobility information. + type: object + properties: + ts: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + recurringTime: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + duration: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + durationVariance: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + locInfo: + type: array + items: + $ref: '#/components/schemas/UeLocationInfo' + minItems: 1 + directionInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DirectionInfo' + minItems: 1 + required: + - duration + - locInfo + + UeLocationInfo: + description: Represents a UE location information. + type: object + properties: + loc: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + geoDistrInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/GeoDistributionInfo' + minItems: 1 + required: + - loc + + AnalyticsRequest: + description: Represents the parameters to request to retrieve analytics information. + type: object + properties: + analyEvent: + $ref: '#/components/schemas/AnalyticsEvent' + analyEventFilter: + $ref: '#/components/schemas/AnalyticsEventFilter' + analyRep: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/EventReportingRequirement' + tgtUe: + $ref: '#/components/schemas/TargetUeId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - analyEvent + - suppFeat + + AnalyticsEventFilter: + description: Represents analytics event filter information. + type: object + properties: + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + fineGranAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Indicates the fine granularity areas to which the request applies. + temporalGranSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + spatialGranSizeTa: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + spatialGranSizeCell: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + dnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + nwPerfTypes: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfType' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + excepIds: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ExceptionId' + minItems: 1 + exptAnaType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ExpectedAnalyticsType' + exptUeBehav: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ExpectedUeBehaviourData' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nsiIdInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NsiIdInfo' + minItems: 1 + qosReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/QosRequirement' + listOfAnaSubsets: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AnalyticsSubset' + minItems: 1 + dnPerfReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerformanceReq' + minItems: 1 + bwRequs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/BwRequirement' + minItems: 1 + ratFreqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RatFreqInformation' + minItems: 1 + appServerAddrs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + minItems: 1 + maxNumOfTopAppUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxNumOfTopAppDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + visitedLocAreas: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + minItems: 1 + pduSesInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + ueCommReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommReq' + minItems: 1 + userDataConReq: + $ref: 'TS29520_Nnwdaf_AnalyticsInfo.yaml#/components/schemas/UserDataCongestReq' + locGranularity: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocInfoGranularity' + locOrientation: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/LocationOrientation' + ueMobilityReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeMobilityReq' + minItems: 1 + movBehavReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavReq' + minItems: 1 + useCaseCxt: + type: string + description: > + Indicates the context of usage of the analytics. The value and format of this parameter + are not standardized. + accuReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyReq' + + AnalyticsData: + description: Represents analytics data. + type: object + properties: + start: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeStampGen: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + ueMobilityInfos: + type: array + items: + $ref: '#/components/schemas/UeMobilityExposure' + minItems: 1 + ueCommInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/UeCommunication' + minItems: 1 + nwPerfInfos: + type: array + items: + $ref: '#/components/schemas/NetworkPerfExposure' + minItems: 1 + abnormalInfos: + type: array + items: + $ref: '#/components/schemas/AbnormalExposure' + minItems: 1 + congestInfos: + type: array + items: + $ref: '#/components/schemas/CongestInfo' + minItems: 1 + dataVlTrnsTmInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/E2eDataVolTransTimeInfo' + minItems: 1 + qosSustainInfos: + type: array + items: + $ref: '#/components/schemas/QosSustainabilityExposure' + minItems: 1 + disperInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionInfo' + minItems: 1 + dnPerfInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DnPerfInfo' + minItems: 1 + svcExps: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ServiceExperienceInfo' + minItems: 1 + disperReqs: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/DispersionRequirement' + minItems: 1 + movBehavInfos: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MovBehavInfo' + minItems: 1 + accuInfo: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AccuracyInfo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suppFeat + + NetworkPerfExposure: + description: Represents network performance information. + type: object + properties: + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + anaPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + nwPerfType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NetworkPerfType' + relativeRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + absoluteNum: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + rscUsgReq: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ResourceUsageRequirement' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - locArea + - nwPerfType + + AbnormalExposure: + description: Represents a user's abnormal behavior information. + type: object + properties: + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + excep: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/Exception' + ratio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + addtMeasInfo: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/AdditionalMeasurement' + required: + - excep + + CongestInfo: + description: Represents a UE's user data congestion information. + type: object + properties: + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + cngAnas: + type: array + items: + $ref: '#/components/schemas/CongestionAnalytics' + minItems: 1 + required: + - locArea + - cngAnas + + CongestionAnalytics: + description: > + Represents data congestion analytics for transfer over the user plane, + control plane or both. + type: object + properties: + cngType: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/CongestionType' + tmWdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + nsi: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ThresholdLevel' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + topAppListUl: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TopApplication' + minItems: 1 + topAppListDl: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/TopApplication' + minItems: 1 + required: + - cngType + - tmWdw + - nsi + + QosSustainabilityExposure: + description: Represents a QoS sustainability information. + type: object + properties: + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + fineAreaInfos: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: This attribute contains the geographical locations in a fine granularity. + startTs: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + endTs: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + qosFlowRetThd: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/RetainabilityThreshold' + ranUeThrouThd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + confidence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - locArea + - startTs + - endTs + + AnalyticsFailureEventInfo: + description: > + Represents an event for which the subscription request was not successful + and including the associated failure reason. + type: object + properties: + event: + $ref: '#/components/schemas/AnalyticsEvent' + failureCode: + $ref: '#/components/schemas/AnalyticsFailureCode' + required: + - event + - failureCode + + AnalyticsEvent: + anyOf: + - type: string + enum: + - UE_MOBILITY + - UE_COMM + - ABNORMAL_BEHAVIOR + - CONGESTION + - NETWORK_PERFORMANCE + - QOS_SUSTAINABILITY + - DISPERSION + - DN_PERFORMANCE + - SERVICE_EXPERIENCE + - E2E_DATA_VOL_TRANS_TIME + - MOVEMENT_BEHAVIOUR + - RELATIVE_PROXIMITY + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the analytics event that is subscribed or notified. + Possible values are: + - UE_MOBILITY: The AF requests to be notified about analytics information of UE mobility. + - UE_COMM: The AF requests to be notified about analytics information of UE communication. + - ABNORMAL_BEHAVIOR: The AF requests to be notified about analytics information of UE's + abnormal behavior. + - CONGESTION: The AF requests to be notified about analytics information of user data + congestion information. + - NETWORK_PERFORMANCE: The AF requests to be notified about analytics information + of network performance. + - QOS_SUSTAINABILITY: The AF requests to be notified about analytics information + of QoS sustainability. + - DISPERSION: The AF requests to be notified about analytics information of Dispersion + analytics. + - DN_PERFORMANCE: The AF requests to be notified about analytics information of DN + performance. + - SERVICE_EXPERIENCE: The AF requests to be notified about analytics information of service + experience. + - E2E_DATA_VOL_TRANS_TIME: The AF requests to be notified about analytics information of + E2E data volume transfer time. + - MOVEMENT_BEHAVIOUR: The AF requests to be notified about analytics information of + Movement Behaviour. + - RELATIVE_PROXIMITY: The AF requests to be notified about analytics information of + Relative Proximity. + + AnalyticsFailureCode: + anyOf: + - type: string + enum: + - UNAVAILABLE_DATA + - BOTH_STAT_PRED_NOT_ALLOWED + - UNSATISFIED_REQUESTED_ANALYTICS_TIME + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Identifies the failure reason. + Possible values are: + - UNAVAILABLE_DATA: The event is rejected since necessary data to perform the service + is unavailable. + - BOTH_STAT_PRED_NOT_ALLOWED: The event is rejected since the start time is in the past + and the end time is in the future, which means the NF service consumer requested both + statistics and prediction for the analytics. + - UNSATISFIED_REQUESTED_ANALYTICS_TIME: Indicates that the requested event is rejected + since the analytics information is not ready when the time indicated by the timeAnaNeeded + attribute (as provided during the creation or modification of subscription) is reached. + - OTHER: The event is rejected due to other reasons. diff --git a/TS29522_ApplyingBdtPolicy.yaml b/TS29522_ApplyingBdtPolicy.yaml new file mode 100644 index 0000000..c9f92b2 --- /dev/null +++ b/TS29522_ApplyingBdtPolicy.yaml @@ -0,0 +1,280 @@ +openapi: 3.0.0 +info: + title: 3gpp-applying-bdt-policy + version: 1.1.1 + description: | + API for applying BDT policy + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V17.7.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-applying-bdt-policy/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Applied BDT Policy Subscription + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AppliedBdtPolicy' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateNewSubscription + tags: + - Applied BDT Policy Subscription + requestBody: + description: Request to create a new subscription resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppliedBdtPolicy' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AppliedBdtPolicy' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + get: + summary: read an active subscriptions for the SCS/AS and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual Applied BDT Policy Subscription + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/AppliedBdtPolicy' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partial updates/replaces an existing subscription resource + operationId: PartialUpdateAnSubscription + tags: + - Individual Applied BDT Policy Subscription + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AppliedBdtPolicyPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AppliedBdtPolicy' + '204': + description: No content. The subscription was modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Applied BDT Policy Subscription + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + AppliedBdtPolicy: + description: Represents an applied BDT policy. + type: object + properties: + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + required: + - bdtRefId + - suppFeat + oneOf: + - required: [gpsi] + - required: [externalGroupId] + AppliedBdtPolicyPatch: + description: > + Represents the parameters to request the modification of a subscription to + applied BDT policy. + type: object + properties: + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + required: + - bdtRefId diff --git a/TS29522_DNAIMapping.yaml b/TS29522_DNAIMapping.yaml new file mode 100644 index 0000000..9876c69 --- /dev/null +++ b/TS29522_DNAIMapping.yaml @@ -0,0 +1,329 @@ +openapi: 3.0.0 + +info: + title: 3gpp-dnaimapping + version: 1.0.0-alpha.3 + description: | + API for DNAI Mapping. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-dnai-mapping/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - DNAI Mapping Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DnaiMapSub' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateNewSubscription + tags: + - DNAI Mapping Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new subscription creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DnaiMapSub' + callbacks: + notification: + '{request.body#/notifUri}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DnaiMapUpdateNotif' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/DnaiMapSub' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual DNAI Mapping Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/DnaiMapSub' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Dnai Mapping Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + DnaiMapSub: + description: Represents a DNAI Mapping subscription. + type: object + properties: + easIpAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + description: > + IP address(es) of the EASs in the Local part of the DN or the IP address ranges(IPv4 + subnetwork(s) and/or IPv6 prefix(es) of the Local part of the DN where the EAS is + deployed. + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + immReport: + $ref: '#/components/schemas/DnaiMapUpdateNotif' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + requestTestNotification: + type: boolean + description: > + Set to true by the AF to request the NEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oneOf: + - required: [easIpAddrs] + - required: [fqdn] + required: + - notifUri + - notifCorrId + + DnaiMapUpdateNotif: + description: Represents an updated DNAI Mapping notification. + type: object + properties: + dnaiEasAddrMap: + type: array + items: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/DnaiEasInfo' + minItems: 1 + description: > + Contains the mapping information between DNAI(s) and EAS address(es). + notifCorrId: + type: string + description: Notification correlation identifier. + required: + - dnaiEasAddrMap + - notifCorrId diff --git a/TS29522_DataReporting.yaml b/TS29522_DataReporting.yaml new file mode 100644 index 0000000..55f3361 --- /dev/null +++ b/TS29522_DataReporting.yaml @@ -0,0 +1,270 @@ +openapi: 3.0.0 +info: + title: 3gpp-data-reporting + version: 1.0.0 + description: | + API for 3GPP Data Reporting. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V17.6.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-data-reporting/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. + +paths: + /sessions: + post: + summary: Create a new Data Reporting Session. + operationId: CreateDataRepSession + tags: + - Data Reporting Sessions + requestBody: + description: > + Representation of the Data Reporting Session to be created in the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + responses: + '201': + description: Created. Successful creation of a new Data Reporting Session. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + headers: + Location: + required: true + schema: + type: string + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-data-reporting/v1/sessions/{sessionId} + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + description: Identifier of the Data Reporting Session. + required: true + schema: + type: string + get: + summary: Request the retrieval of an existing Individual Data Reporting Session resource. + operationId: GetIndDataRepSession + tags: + - Individual Data Reporting Session + responses: + '200': + description: > + OK. The requested Individual Data Reporting Session resource is + Successfully returned. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Data Reporting Session resource. + operationId: UpdateIndDataRepSession + tags: + - Individual Data Reporting Session + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + responses: + '200': + description: > + OK. The Individual Data Reporting Session resource was successfully + updated. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + '204': + description: > + No Content. The Individual Data Reporting Session resource was successfully + updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing Data Reporting Session resource. + operationId: DeleteIndDataRepSession + tags: + - Individual Data Reporting Session + responses: + '204': + description: > + No Content. The concerned Individual Data Reporting Session resource was + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}/report: + parameters: + - name: sessionId + in: path + description: Identifier of the Data Reporting Session. + required: true + schema: + type: string + post: + summary: Report collected UE data. + operationId: ReportUEData + tags: + - Individual Data Reporting Session + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReport' + responses: + '200': + description: OK. The UE data report was successfully received. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReporting.yaml#/components/schemas/DataReportingSession' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} diff --git a/TS29522_DataReportingProvisioning.yaml b/TS29522_DataReportingProvisioning.yaml new file mode 100644 index 0000000..bb6259e --- /dev/null +++ b/TS29522_DataReportingProvisioning.yaml @@ -0,0 +1,411 @@ +openapi: 3.0.0 +info: + title: 3gpp-data-reporting-provisioning + version: 1.0.1 + description: | + API for 3GPP Data Reporting and Provisioning. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V17.7.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-data-reporting-provisioning/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. + +paths: + /sessions: + post: + summary: Create a new Data Reporting Provisioning Session. + operationId: CreateDataRepProvSession + tags: + - Data Reporting Provisioning Sessions + requestBody: + description: > + Representation of the Data Reporting Provisioning Session to be created in the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingProvisioningSession' + responses: + '201': + description: Created. Successful creation of a new Data Reporting Provisioning Session. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingProvisioningSession' + headers: + Location: + required: true + schema: + type: string + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-data-reporting-provisioning/v1/sessions/{sessionId} + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + description: Identifier of the Data Reporting Provisioning Session. + required: true + schema: + type: string + get: + summary: Request the retrieval of an existing Individual Data Reporting Provisioning Session resource. + operationId: GetIndDataRepProvSession + tags: + - Individual Data Reporting Provisioning Session + responses: + '200': + description: > + OK. The requested Individual Data Reporting Provisioning Session resource is + Successfully returned. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingProvisioningSession' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing Individual Data Reporting Provisioning Session resource. + operationId: DeleteIndDataRepProvSession + tags: + - Individual Data Reporting Provisioning Session + responses: + '204': + description: > + No Content. The concerned Individual Data Reporting Provisioning Session resource was + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}/configurations: + parameters: + - name: sessionId + in: path + description: Identifier of the Data Reporting Provisioning Session. + required: true + schema: + type: string + post: + summary: Create a new Data Reporting Configuration resource. + operationId: CreateDataRepConfig + tags: + - Data Reporting Configurations + requestBody: + description: > + Representation of the Data Reporting Configuration to be created in the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + responses: + '201': + description: Created. Successful creation of a new Data Reporting Configuration. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + headers: + Location: + required: true + schema: + type: string + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-data-reporting-provisioning/v1/sessions/{sessionId}/configurations/{configurationId} + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}/configurations/{configurationId}: + parameters: + - name: sessionId + in: path + description: Identifier of the Data Reporting Provisioning Session. + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the Data Reporting Configuration. + required: true + schema: + type: string + get: + summary: Request the retrieval of an existing Individual Data Reporting Configuration resource. + operationId: GetIndDataRepConfig + tags: + - Individual Data Reporting Configuration + responses: + '200': + description: > + OK. The requested Individual Data Reporting Configuration resource is successfully + returned. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request to update an existing Individual Data Reporting Configuration resource. + operationId: UpdateIndDataRepConfig + tags: + - Individual Data Reporting Configuration + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + responses: + '200': + description: > + OK. The Individual Data Reporting Configuration resource was successfully updated. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + '204': + description: > + No Content. The Individual Data Reporting Configuration resource was successfully + updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request to modify an existing Individual Data Reporting Configuration resource. + operationId: ModifyIndDataRepConfig + tags: + - Individual Data Reporting Configuration + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfigurationPatch' + responses: + '200': + description: > + OK. The Individual Data Reporting Configuration resource was successfully modified. + content: + application/json: + schema: + $ref: 'TS26532_Ndcaf_DataReportingProvisioning.yaml#/components/schemas/DataReportingConfiguration' + '204': + description: > + No Content. The Individual Data Reporting Configuration resource was successfully + modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing Data Reporting Configuration resource. + operationId: DeleteIndDataRepConfig + tags: + - Individual Data Reporting Configuration + responses: + '204': + description: > + No Content. The concerned Individual Data Reporting Configuration resource was + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} diff --git a/TS29522_EASDeployment.yaml b/TS29522_EASDeployment.yaml new file mode 100644 index 0000000..9cdf401 --- /dev/null +++ b/TS29522_EASDeployment.yaml @@ -0,0 +1,416 @@ +openapi: 3.0.0 + +info: + title: 3gpp-eas-deployment + version: 1.1.0-alpha.2 + description: | + API for AF provisioned EAS Deployment. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.2.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-eas-deployment/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/eas-deployment-info: + get: + summary: Read all EAS Deployment information for a given AF + operationId: ReadAllDeployment + tags: + - EAS Deployment Information (Collection) + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the EAS Deployment information for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EasDeployInfo' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Create a new Individual EAS Deployment information resource. + operationId: CreateAnDeployment + tags: + - EAS Deployment Information (Collection) + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new resource creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfo' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfo' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/eas-deployment-info/{easDeployInfoId}: + get: + summary: Read an active Individual EAS Deployment Information resource for the AF + operationId: ReadAnDeployment + tags: + - Individual EAS Deployment Information + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: easDeployInfoId + in: path + description: Identifier of an EAS Deployment Information. + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active resource) + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing resource + operationId: FullyUpdateAnDeployment + tags: + - Individual EAS Deployment Information + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: easDeployInfoId + in: path + description: Identifier of the EAS Deployment information resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfo' + responses: + '200': + description: OK (Successful update of the existing resource) + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfo' + '204': + description: > + Successful case. The resource has been successfully updated and no additional content is + sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing EAS Deployment information resource + operationId: DeleteAnDeployment + tags: + - Individual EAS Deployment Information + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: easDeployInfoId + in: path + description: Identifier of the EAS Deployment information resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing resource) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /remove-edis: + post: + summary: Remove EAS Deployment Information based on given criteria. + operationId: DeleteEDIs + tags: + - EAS Deployment Information removal + requestBody: + description: Criteria to be used for deleting EAS Deployment Information that match them. + content: + application/json: + schema: + $ref: '#/components/schemas/EdiDeleteCriteria' + required: true + responses: + '204': + description: > + No Content. The EDIs matching the provided criteria have been successfully deleted. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + EasDeployInfo: + description: Represents EAS Deployment Information. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + afServiceId: + type: string + fqdnPatternList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + appId: + type: string + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + dnaiInfos: + type: object + additionalProperties: + $ref: '#/components/schemas/DnaiInformation' + minProperties: 1 + description: > + list of DNS server identifier (consisting of IP address and port) and/or IP address(s) + of the EAS in the local DN for each DNAI. The key of map is the DNAI. + targetAfId: + type: string + description: > + Identifier of the AF that is responsible for the EAS associated with this EAS + deployment information. + required: + - fqdnPatternList + + DnaiInformation: + description: Represents DNAI information. + type: object + properties: + dnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + dnsServIds: + type: array + items: + $ref: '#/components/schemas/DnsServerIdentifier' + minItems: 1 + easIpAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + required: + - dnai + anyOf: + - required: [dnsServIds] + - required: [easIpAddrs] + + DnsServerIdentifier: + description: Represents DNS server identifier (consisting of IP address and port). + type: object + properties: + dnsServIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - dnsServIpAddr + - portNumber + + EdiDeleteCriteria: + description: > + Contains criteria to be used for deleting EAS Deployment Information entries that match + them. + type: object + properties: + afId: + $ref: 'TS29522_AKMA.yaml#/components/schemas/AfId' + dnnSnssai: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + anyOf: + - required: [afId] + - required: [dnnSnssai] diff --git a/TS29522_EcsAddressProvision.yaml b/TS29522_EcsAddressProvision.yaml new file mode 100644 index 0000000..26fa0a8 --- /dev/null +++ b/TS29522_EcsAddressProvision.yaml @@ -0,0 +1,309 @@ +openapi: 3.0.0 + +info: + title: 3gpp-ecs-address-provision + version: 1.1.0-alpha.1 + description: | + API for ECS Address Provisioning. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-ecs-address-provision/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/configurations: + get: + summary: Read all active configurations for a given AF + operationId: ReadAllConfigurations + tags: + - ECS Address Provision Configurations (Collection) + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active resources for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/EcsAddressProvision' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new configuration resource + operationId: CreateNewConfiguration + tags: + - ECS Address Provision Configurations (Collection) + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new resource creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddressProvision' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddressProvision' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/configurations/{configurationId}: + get: + summary: Read an active resource for the AF and the configuration Id + operationId: ReadAnConfiguration + tags: + - Individual ECS Address Provision Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active resource) + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddressProvision' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing resource + operationId: FullyUpdateAnConfiguration + tags: + - Individual ECS Address Provision Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddressProvision' + responses: + '200': + description: OK (Successful update of the existing resource) + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddressProvision' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing configuration resource + operationId: DeleteAnConfiguration + tags: + - Individual ECS Address Provision Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing resource) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + EcsAddressProvision: + description: Represents ECS address provision configuration. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + ecsServerAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EcsServerAddr' + spatialValidityCond: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SpatialValidityCond' + tgtUe: + $ref: 'TS29522_AnalyticsExposure.yaml#/components/schemas/TargetUeId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ecsServerAddr + - suppFeat diff --git a/TS29522_GroupParametersProvisioning.yaml b/TS29522_GroupParametersProvisioning.yaml new file mode 100644 index 0000000..b3606aa --- /dev/null +++ b/TS29522_GroupParametersProvisioning.yaml @@ -0,0 +1,407 @@ +openapi: 3.0.0 + +info: + title: 3gpp-grp-pp + version: 1.0.0-alpha.1 + description: | + API for Group Parameters Provisioning. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-grp-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /pp: + get: + summary: Request to retrieve all the active Group Parameters Provisioning resources at the NEF. + operationId: GetGrpParamsProvisionings + tags: + - Group Parameters Provisionings (Collection) + responses: + '200': + description: > + OK. All the active Group Parameters Provisioning resources managed by the NEF are + returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/GrpPpData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Group Parameters Provisioning. + tags: + - Group Parameters Provisioning (Collection) + operationId: CreateGrpParamsProvisioning + requestBody: + description: > + Representation of the new Group Parameters Provisioning to be created at the NEF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + responses: + '201': + description: > + Created. Successful creation of a new Individual Group Parameters Provisioning resource. + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-grp-pp/v1/pp/{ppId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /pp/{ppId}: + parameters: + - name: ppId + in: path + description: > + Represents the identifier of the Individual Group Parameters Provisioning resource. + required: true + schema: + type: string + + get: + summary: Request to retrieve an existing Individual Group Parameters Provisioning resource. + operationId: GetIndGrpParamsProvisioning + tags: + - Individual Group Parameters Provisioning (Document) + responses: + '200': + description: > + OK. Successful retrieval of the requested Individual Group Parameters Provisioning. + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Group Parameters Provisioning resource. + tags: + - Individual Group Parameters Provisioning (Document) + operationId: UpdateIndGrpParamsProvisioning + requestBody: + description: > + Represents the updated Individual Group Parameters Provisioning resource representation. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + responses: + '200': + description: > + OK. The Individual Group Parameters Provisioning resource is successfully updated and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + '204': + description: > + No Content. The Individual Group Parameters Provisioning resource is successfully + Updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Group Parameters Provisioning resource. + tags: + - Individual Group Parameters Provisioning (Document) + operationId: ModifyIndGrpParamsProvisioning + requestBody: + description: > + Contains the parameters to request the modification of the Individual Group Parameters + Provisioning resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/GrpPpDataPatch' + responses: + '200': + description: > + OK. The Individual Group Parameters Provisioning resource is successfully modified and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/GrpPpData' + '204': + description: > + No Content. The Individual Group Parameters Provisioning resource is successfully + Modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Group Parameters Provisioning resource. + tags: + - Individual Group Parameters Provisioning (Document) + operationId: DeleteIndGrpParamsProvisioning + responses: + '204': + description: > + No Content. The Individual Group Parameters Provisioning resource is successfully + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: +# +# STRUCTURED DATA TYPES +# + GrpPpData: + description: Represents the Group Parameters Provisioning data. + type: object + properties: + afId: + type: string + dnnSnssaiGrpData: + $ref: '#/components/schemas/DnnSnssaiGrpData' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + + GrpPpDataPatch: + description: > + Represents the requested modification to the existing Group Parameters Provisioning data + instance. + type: object + properties: + dnnSnssaiGrpData: + $ref: '#/components/schemas/DnnSnssaiGrpData' + + DnnSnssaiGrpData: + description: Represents DNN and S-NSSAI specific Group Parameters data. + type: object + properties: + extGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + defQos: + $ref: '#/components/schemas/AfReqDefaultQoS' + ladnServArea: + $ref: '#/components/schemas/LadnServArea' + required: + - extGroupId + - dnn + - snssai + anyOf: + - required: [ defQos ] + - required: [ ladnServArea ] + + AfReqDefaultQoS: + description: Represents the AF requested default QoS. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevelRm' + required: + - 5qi + - arp + + LadnServArea: + description: Represents an LADN Service Area. + type: object + properties: + geographicAreas: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + civicAddresses: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + tais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + oneOf: + - required: [ geographicAreas ] + - required: [ civicAddresses ] + - required: [ tais ] + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29522_IPTVConfiguration.yaml b/TS29522_IPTVConfiguration.yaml new file mode 100644 index 0000000..f3c9846 --- /dev/null +++ b/TS29522_IPTVConfiguration.yaml @@ -0,0 +1,435 @@ +openapi: 3.0.0 + +info: + title: 3gpp-iptvconfiguration + version: 1.2.0-alpha.1 + description: | + API for IPTV configuration. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-iptvconfiguration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/configurations: + get: + summary: read all of the active configurations for the AF + operationId: ReadAllSubscriptions + tags: + - IPTV Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active configurations for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/IptvConfigData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new configuration resource + operationId: CreateNewSubscription + tags: + - IPTV Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new configuration creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + responses: + '201': + description: Created (Successful creation of configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/configurations/{configurationId}: + get: + summary: read an active configuration for the AF and the configuration Id + operationId: ReadAnSubscription + tags: + - Individual IPTV Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing configuration resource + operationId: FullyUpdateAnSubscription + tags: + - Individual IPTV Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing configuration + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + responses: + '200': + description: OK (Successful deletion of the existing configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partial updates an existing configuration resource + operationId: PartialUpdateAnSubscription + tags: + - Individual IPTV Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/IptvConfigDataPatch' + responses: + '200': + description: OK. The configuration was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/IptvConfigData' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing configuration + operationId: DeleteAnSubscription + tags: + - Individual IPTV Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: configurationId + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing configuration) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + IptvConfigData: + description: Represents an individual IPTV Configuration resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + afAppId: + type: string + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + multiAccCtrls: + type: object + additionalProperties: + $ref: '#/components/schemas/MulticastAccessControl' + minProperties: 1 + description: > + Identifies a list of multicast address access control information. + Any string value can be used as a key of the map. + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afAppId + - multiAccCtrls + - suppFeat + + IptvConfigDataPatch: + description: > + Represents the parameters to request the modification of an IPTV Configuration resource. + type: object + properties: + multiAccCtrls: + type: object + additionalProperties: + $ref: '#/components/schemas/MulticastAccessControl' + minProperties: 1 + description: > + Identifies a list of multicast address access control information. + Any string value can be used as a key of the map. + + MulticastAccessControl: + description: Represents multicast address access control information. + type: object + properties: + srcIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + srcIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + multicastV4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + multicastV6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + accStatus: + $ref: '#/components/schemas/AccessRightStatus' + required: + - accStatus + + AccessRightStatus: + anyOf: + - type: string + enum: + - FULLY_ALLOWED + - PREVIEW_ALLOWED + - NO_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the access right status for parameter provision. + Possible values are: + - FULLY_ALLOWED: The User is fully allowed to access to the channel. + - PREVIEW_ALLOWED: The User is preview allowed to access to the channel. + - NO_ALLOWED: The User is not allowed to access to the channel. diff --git a/TS29522_LpiParameterProvision.yaml b/TS29522_LpiParameterProvision.yaml new file mode 100644 index 0000000..e92ca36 --- /dev/null +++ b/TS29522_LpiParameterProvision.yaml @@ -0,0 +1,389 @@ +openapi: 3.0.0 + +info: + title: 3gpp-lpi-pp + version: 1.2.0-alpha.1 + description: | + API for Location Privacy Indication Parameters Provisioning. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-lpi-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/provisionedLpis: + get: + summary: read all of the active LPI Parameters Provisioning resources for the AF + operationId: ReadAllResources + tags: + - LPI Parameters Provisionings + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active resources for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/LpiParametersProvision' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new LPI Parameters Provisioning resource + operationId: CreateNewResource + tags: + - LPI Parameters Provisionings + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new resource creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/provisionedLpis/{provisionedLpiId}: + get: + summary: read an active LPI Parameters Provisioning resource for the AF and the provisioned LPI Id + operationId: ReadAnResource + tags: + - Individual LPI Parameters Provisioning + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: provisionedLpiId + in: path + description: Identifier of the provisioned LPI parameter resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active resource) + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing LPI Parameters Provisioning resource + operationId: FullyUpdateAnResource + tags: + - Individual LPI Parameters Provisioning + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: provisionedLpiId + in: path + description: Identifier of the provisioned LPI parameter resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + responses: + '200': + description: > + OK. The resource has been successfully updated and a representation of the updated + resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partially modifies an existing LPI Parameters Provisioning resource. + operationId: PartialUpdateAnResource + tags: + - Individual LPI Parameters Provisioning + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: provisionedLpiId + in: path + description: Identifier of the provisioned LPI parameter resource + required: true + schema: + type: string + requestBody: + description: Parameters to modify the existing resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvisionPatch' + responses: + '200': + description: > + OK. The resource has been successfully modified and a representation of the + updated resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/LpiParametersProvision' + '204': + description: > + Successful case. The resource has been successfully modified and no additional content + is sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing LPI Parameters Provisioning resource + operationId: DeleteAnResource + tags: + - Individual LPI Parameters Provisioning + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: provisionedLpiId + in: path + description: Identifier of the provisioned LPI parameter resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing resource) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + LpiParametersProvision: + description: Represents an individual LPI Parameters Provisionings resource. + type: object + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + lpi: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/Lpi' + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - lpi + - suppFeat + + LpiParametersProvisionPatch: + description: > + Represents the parameters to modify an existing Individual LPI Parameters + Provisionings resource. + type: object + properties: + lpi: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/Lpi' + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' diff --git a/TS29522_MBSGroupMsgDelivery.yaml b/TS29522_MBSGroupMsgDelivery.yaml new file mode 100644 index 0000000..7566067 --- /dev/null +++ b/TS29522_MBSGroupMsgDelivery.yaml @@ -0,0 +1,379 @@ +openapi: 3.0.0 + +info: + title: 3gpp-mbs-group-msg + version: 1.0.0-alpha.4 + description: | + API for MBS Group Message Delivery. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-mbs-group-msg/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /deliveries: + get: + summary: Retrieve all the active MBS Group Message Deliveries. + operationId: GetMbsGroupMsgDeliveries + tags: + - MBS Group Message Deliveries (Collection) + responses: + '200': + description: > + OK. All the active MBS Group Message Deliveries managed by the NEF are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MbsGroupMsgDel' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of an MBS Group Message Delivery. + operationId: CreateMbsGroupMsgDelivery + tags: + - MBS Group Message Deliveries (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDel' + responses: + '201': + description: > + Created. Successful case. The requested MBS Group Message Delivery is successfully + created. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDel' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + MbsGroupMsgDelStatusNotif: + '{$request.body#/notifUri}': + post: + requestBody: + description: > + Represents the notification on the status of MBS Group Message Delivery. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDelStatusNotif' + responses: + '204': + description: > + No content. The MBS Group Message Delivery Status notification is successfully + received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /deliveries/{delRef}: + parameters: + - name: delRef + in: path + description: > + Contains the identifier of the Individual MBS Group Message Delivery resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing MBS Group Message Delivery. + operationId: GetMbsGroupMsgDelivery + tags: + - Individual MBS Group Message Delivery (Document) + responses: + '200': + description: > + OK. All the requested MBS Group Message Delivery is successfully returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDel' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing MBS Group Message Delivery. + operationId: ModifyMbsGroupMsgDelivery + tags: + - Individual MBS Group Message Delivery (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDelPatch' + responses: + '200': + description: > + OK. Successful case. The MBS Group Message Delivery is successfully modified and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsGroupMsgDel' + '204': + description: > + No Content. Successful case. The MBS Group Message Delivery is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS Group Message Delivery resource. + operationId: DeleteMbsGroupMsgDelivery + tags: + - Individual MBS Group Message Delivery (Document) + responses: + '204': + description: > + No Content. The targeted MBS Group Message Delivery is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# STRUCTURED DATA TYPES + + MbsGroupMsgDel: + description: Represents the MBS Group Message Delivery. + type: object + properties: + afId: + type: string + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + groupMsgDelPayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + mbsServArea: + $ref: '#/components/schemas/MbsServArea' + startTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + delStatus: + type: boolean + description: > + Indicates the status of Group Message Delivery. + true indicates a successful delivery. + false indicates a failed delivery. + The default value if omitted is true. + mbsUserServiceAnmt: + $ref: 'TS26517_MBSUserServiceAnnouncement.yaml#/components/schemas/UserServiceDescription' + servAreaWithoutMbs: + $ref: '#/components/schemas/MbsServArea' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - externalGroupId + - mbsServArea + - startTime + - stopTime + - notifUri + + MbsGroupMsgDelPatch: + description: Represents the requested modifications to an existing MBS Group Message Delivery. + type: object + properties: + groupMsgDelPayload: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + mbsServArea: + $ref: '#/components/schemas/MbsServArea' + startTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + MbsGroupMsgDelStatusNotif: + description: Represents the status notification information for an MBS group message delivery. + type: object + properties: + delStatus: + type: boolean + description: > + Indicates the status of Group Message Delivery. + true indicates a successful delivery. + false indicates a failed delivery. + required: + - delStatus + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS + +# +# Data types describing alternative data types or combinations of data types + + MbsServArea: + description: Represents an MBS service area. + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalMbsServiceArea' diff --git a/TS29522_MBSSession.yaml b/TS29522_MBSSession.yaml new file mode 100644 index 0000000..cf6078f --- /dev/null +++ b/TS29522_MBSSession.yaml @@ -0,0 +1,759 @@ +openapi: 3.0.0 + +info: + title: 3gpp-mbs-session + version: 1.2.0-alpha.1 + description: | + API for MBS Session Management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-mbs-session/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /mbs-sessions: + post: + summary: Request the creation of a new MBS Session. + tags: + - MBS Sessions collection + operationId: CreateMBSSession + requestBody: + description: Representation of the new MBS session to be created at the NEF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionCreateReq' + responses: + '201': + description: > + Created. Successful creation of a new Individual MBS session resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionCreateRsp' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-mbs-session/v1/mbs-sessions/{mbsSessionRef} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-sessions/{mbsSessionRef}: + parameters: + - name: mbsSessionRef + in: path + description: Identifier of the Individual MBS Session resource. + required: true + schema: + type: string + + patch: + summary: Request the modification of an existing Individual MBS Session resource. + operationId: ModifyIndMBSSession + tags: + - Individual MBS Session + requestBody: + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '204': + description: > + No Content. The concerned Individual MBS Session resource was successfully modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the Deletion of an existing Individual MBS Session resource. + operationId: DeleteIndMBSSession + tags: + - Individual MBS Session + responses: + '204': + description: > + No Content. Successful deletion of the concerned Individual MBS Session resource. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /mbs-sessions/subscriptions: + get: + summary: Retrieve all the active MBS Sessions subscriptions. + operationId: ReadMBSSessionsSubscs + tags: + - MBS Session Subscriptions + responses: + '200': + description: > + OK. All the active MBS Session Subscriptions resources managed by the NEF are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MbsSessionSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Individual MBS Session subscription resource. + operationId: CreateMBSSessionsSubsc + tags: + - MBS Session Subscriptions + requestBody: + description: Request the creation of a new MBS Session subscription resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionSubsc' + responses: + '201': + description: > + Created. Successful creation of a new Individual MBS Session subscription. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionSubsc' + headers: + Location: + description: Contains the URI of the newly created resource, according to the + structure + {apiRoot}/3gpp-mbs-session/v1/mbs-sessions/subscriptions/{subscriptionId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + MBSSessionStatusNotification: + '{request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionStatusNotif' + responses: + '204': + description: No Content. Successful reception of the notification. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-sessions/subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: Identifier of the Individual MBS Session Subscription resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS Session Subscription resource. + operationId: ReadIndMBSSessionsSubsc + tags: + - Individual MBS Session subscription + responses: + '200': + description: > + OK. Successful retrieval of the targeted Individual MBS Session subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsSessionSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS Session subscription resource. + operationId: DeleteIndMBSSessionsSubsc + tags: + - Individual MBS Session Subscription + responses: + '204': + description: > + No Content. Successful deletion of the existing Individual MBS Session subscription + resource. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-pp: + get: + summary: Request to retrieve all the active MBS Parameters Provisioning resources at the NEF. + operationId: GetMBSParamsProvisionings + tags: + - MBS Parameters Provisionings + responses: + '200': + description: > + OK. All the active MBS Parameters Provisioning resources managed by the NEF are + returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MbsPpData' + minItems: 1 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new MBS Parameters Provisioning. + tags: + - MBS Parameters Provisioning + operationId: CreateMBSParamsProvisioning + requestBody: + description: Representation of the new MBS Parameters Provisioning to be created at the NEF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + responses: + '201': + description: > + Created. Successful creation of a new Individual MBS Parameters Provisioning resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-mbs-session/v1/mbs-pp/{mbsPpId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-pp/{mbsPpId}: + parameters: + - name: mbsPpId + in: path + description: > + Represents the identifier of the Individual MBS Parameters Provisioning resource. + required: true + schema: + type: string + + get: + summary: Request to retrieve an existing Individual MBS Parameters Provisioning resource. + operationId: GetIndMBSParamsProvisioning + tags: + - Individual MBS Parameters Provisioning + responses: + '200': + description: > + OK. Successful retrieval of the requested Individual MBS Parameters Provisioning. + resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS Parameters Provisioning resource. + tags: + - Individual MBS Parameters Provisioning + operationId: UpdateIndMBSParamsProvisioning + requestBody: + description: > + Represents the updated Individual MBS Parameters Provisioning resource representation. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + responses: + '200': + description: > + OK. The Individual MBS Parameters Provisioning resource is successfully updated and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + '204': + description: > + No Content. The Individual MBS Parameters Provisioning resource is successfully updated. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS Parameters Provisioning resource. + tags: + - Individual MBS Parameters Provisioning + operationId: ModifyIndMBSParamsProvisioning + requestBody: + description: > + Contains the parameters to request the modification of the Individual Parameters + Provisioning resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MbsPpDataPatch' + responses: + '200': + description: > + OK. The Individual MBS Parameters Provisioning resource is successfully modified and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPpData' + '204': + description: > + No Content. The Individual MBS Parameters Provisioning resource is successfully + modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS Parameters Provisioning resource. + tags: + - Individual MBS Parameters Provisioning + operationId: DeleteIndMBSParamsProvisioning + responses: + '204': + description: > + No Content. The Individual MBS Parameters Provisioning resource is successfully + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: +# +# STRUCTURED DATA TYPES +# + MbsSessionCreateReq: + description: Represents the parameters to request MBS Session creation. + type: object + properties: + afId: + type: string + mbsSession: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSession' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + - mbsSession + + MbsSessionCreateRsp: + description: Represents the parameters to be returned in an MBS Session creation response.. + type: object + properties: + mbsSession: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSession' + eventList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionEventReportList' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsSession + + MbsSessionSubsc: + description: Represents an MBS Session Subscription. + type: object + properties: + afId: + type: string + subscription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionSubscription' + subscriptionId: + type: string + required: + - afId + - subscription + + MbsSessionStatusNotif: + description: Represents an MBS Session Status notification. + type: object + properties: + eventList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionEventReportList' + required: + - eventList + + MbsPpData: + description: Represents MBS Parameters Provisioning data. + type: object + properties: + afId: + type: string + mbsSessAuthData: + $ref: '#/components/schemas/MbsSessAuthData' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + + MbsSessAuthData: + description: Represents the MBS Session Authorization data. + type: object + properties: + extGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsisList: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minProperties: 1 + description: > + Represents the list of the GPSI(s) of the member UE(s) constituting the multicast MBS + group. Any + value of type can be used as a key of the map. + mbsSessionIdList: + $ref: 'TS29503_Nudm_PP.yaml#/components/schemas/5MbsAuthorizationInfo' + required: + - extGroupId + - mbsSessionIdList + + MbsPpDataPatch: + description: > + Represents the requested modification to existing MBS Parameters Provisioning data. + type: object + properties: + mbsSessAuthData: + $ref: '#/components/schemas/MbsSessAuthData' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29522_MBSTMGI.yaml b/TS29522_MBSTMGI.yaml new file mode 100644 index 0000000..17d3478 --- /dev/null +++ b/TS29522_MBSTMGI.yaml @@ -0,0 +1,237 @@ +openapi: 3.0.0 + +info: + title: 3gpp-mbs-tmgi + version: 1.1.0-alpha.2 + description: | + API for the allocation, deallocation and management of TMGI(s) for MBS. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.2.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-mbs-tmgi/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /allocate: + post: + summary: Request the allocation of TMGI(s) for new MBS session(s) or the refresh of the expiry time of already allocated TMGI(s). + operationId: AllocateTmgi + tags: + - TMGI Allocation or Timer Expiry Refresh + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TmgiAllocRequest' + responses: + '200': + description: > + OK. Successful case. The allocated TMGI(s) or a refreshed expiry time for the concerned + already allocated TMGI(s) is/are returned to the requesting AF. + content: + application/json: + schema: + $ref: '#/components/schemas/TmgiAllocResponse' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + TmgiTimerExpiryNotification: + '{$request.body#/notificationUri}': + post: + requestBody: + description: > + Represents the MBS TMGI(s) timer expiry notification information (e.g. list of + TMGI(s) for which the timer has expired). + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ExpiryNotif' + responses: + '204': + description: No content. The notification is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /deallocate: + post: + summary: Request the deallocation of MBS TMGI(s). + operationId: DeallocateTmgi + tags: + - MBS TMGI Deallocation + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TmgiDeallocRequest' + responses: + '204': + description: No Content. Successful case, the TMGI(s) are deallocated. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + TmgiAllocRequest: + description: > + Represents the full set of parameters to initiate an MBS TMGI(s) allocation request + or the refresh of the expiry time of already allocated TMGI(s). + type: object + properties: + afId: + type: string + tmgiParams: + $ref: 'TS29532_Nmbsmf_TMGI.yaml#/components/schemas/TmgiAllocate' + notificationUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + mbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + extMbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalMbsServiceArea' + requestTestNotification: + type: boolean + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + - tmgiParams + not: + required: [mbsServiceArea, extMbsServiceArea] + + TmgiAllocResponse: + description: > + Represents MBS TMGI(s) allocation information or the refreshed expiry time for + already allocated TMGI(s) + type: object + properties: + tmgiInfo: + $ref: 'TS29532_Nmbsmf_TMGI.yaml#/components/schemas/TmgiAllocated' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - tmgiInfo + + TmgiDeallocRequest: + description: Represents information to request the deallocation of MBS TMGI(s). + type: object + properties: + afId: + type: string + tmgis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + minItems: 1 + required: + - afId + - tmgis + + ExpiryNotif: + description: Represents MBS TMGI(s) timer expiry notification information. + type: object + properties: + tmgis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + minItems: 1 + required: + - tmgis diff --git a/TS29522_MBSUserDataIngestSession.yaml b/TS29522_MBSUserDataIngestSession.yaml new file mode 100644 index 0000000..b2b334c --- /dev/null +++ b/TS29522_MBSUserDataIngestSession.yaml @@ -0,0 +1,649 @@ +openapi: 3.0.0 + +info: + title: 3gpp-mbs-ud-ingest + version: 1.1.0-alpha.2 + description: | + API for MBS User Data Ingest Session. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-mbs-ud-ingest/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /sessions: + get: + summary: Retrieve all the active MBS User Data Ingest Sessions managed by the NEF. + tags: + - MBS User Data Ingest Sessions (Collection) + operationId: RetrieveMBSUserDataIngestSessions + responses: + '200': + description: > + OK. All the active MBS User Data Ingest Sessions managed by the NEF are returned. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Individual MBS User Data Ingest Session resource. + tags: + - MBS User Data Ingest Sessions (Collection) + operationId: CreateMBSUserDataIngestSession + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Data Ingest Session + at the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + responses: + '201': + description: > + Created. A new MBS User Data Ingest Session is successfully created and a representation + of the created Individual MBS User Data Ingest Session resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-mbs-ud-ingest/v1/sessions/{sessionId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + description: Identifier of the Individual MBS User Data Ingest Session resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: RetrieveIndivMBSUserDataIngestSession + responses: + '200': + description: > + OK. The requested Individual MBS User Data Ingest Session resource is successfully + returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: UpdateIndivMBSUserDataIngestSession + requestBody: + description: > + Contains the updated representation of the Individual MBS User Data Ingest Session + resource. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session resource is successfully + updated and a representation of the updated resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session resource is + successfully updated. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: ModifyIndivMBSUserDataIngestSession + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User Data Ingest + Session resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSessionPatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session resource is successfully + modified and a representation of the updated resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngSession' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session resource is + successfully modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: DeleteIndivMBSUserDataIngestSession + responses: + '204': + description: > + No Content. The Individual MBS User Data Ingest Session resource is successfully + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /status-subscriptions: + get: + summary: Retrieve all the active MBS User Data Ingest Session Status Subscriptions resources managed by the NEF. + tags: + - MBS User Data Ingest Session Status Subscriptions (Collection) + operationId: RetrieveMBSUserDataIngStatSubscs + responses: + '200': + description: > + OK. All the active MBS User Data Ingest Session Status Subscriptions managed by the NEF + are returned. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - MBS User Data Ingest Session Status Subscriptions (Collection) + operationId: CreateMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Data Ingest Session + Status Subscription resource. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + responses: + '201': + description: > + Created. Successful creation of a new Individual MBS User Data Ingest Session + Status Subscription resource. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + mbsUserDataIngestSessionStatusNotif: + '{request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatNotif' + responses: + '204': + description: No Content. Successful reception of the notification. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /status-subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Identifier of the Individual MBS User Data Ingest Session Status Subscription resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: RetrieveIndMBSUserDataIngStatSubsc + responses: + '200': + description: > + OK. Successful retrieval of the requested Individual MBS User Data Ingest Session + Status Subscription resource. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: UpdateIndMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the updated representation of the Individual MBS User Data Ingest Session Status + Subscription resource. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session Status Subscription resource + is successfully updated and a representation of the updated resource is returned in the + response body. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session Status Subscription + resource is successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: ModifyIndMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User Data Ingest + Session Status Subscription resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubscPatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session Status Subscription resource + is successfully modified and a representation of the updated resource is returned in the + response body. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/MBSUserDataIngStatSubsc' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session Status Subscription + resource is successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: DeleteIndMBSUserDataIngStatSubsc + responses: + '204': + description: > + No Content. Successful deletion of the existing Individual MBS User Data Ingest Session + Status Subscription resource. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + +# +# STRUCTURED DATA TYPES +# + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29522_MBSUserService.yaml b/TS29522_MBSUserService.yaml new file mode 100644 index 0000000..6f4229c --- /dev/null +++ b/TS29522_MBSUserService.yaml @@ -0,0 +1,321 @@ +openapi: 3.0.0 + +info: + title: 3gpp-mbs-us + version: 1.1.0-alpha.1 + description: | + API for MBS User Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-mbs-us/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /mbs-user-services: + get: + summary: Retrieve all the active MBS User Service resources managed by the NEF. + tags: + - MBS User Services + operationId: RetrieveMBSUserServices + responses: + '200': + description: > + OK. All the active MBS User Services managed by the NEF are returned. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Individual MBS User Service resource. + tags: + - MBS User Services + operationId: CreateMBSUserService + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Service at the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + responses: + '201': + description: > + Created. A new MBS User Service is successfully created and a representation of the + created Individual MBS User Service resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-mbs-us/v1/mbs-user-services/{mbsUserServId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /mbs-user-services/{mbsUserServId}: + parameters: + - name: mbsUserServId + in: path + description: Identifier of the Individual MBS User Service resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service + operationId: RetrieveIndivMBSUserService + responses: + '200': + description: > + OK. The requested Individual MBS User Service resource is successfully returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service + operationId: UpdateIndivMBSUserService + requestBody: + description: > + Contains the updated representation of the Individual MBS User Service resource. + required: true + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + responses: + '200': + description: > + OK. The concerned Individual MBS User Service resource is successfully updated and a + representation of the updated resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + '204': + description: > + No Content. The concerned Individual MBS User Service resource is successfully updated. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service + operationId: ModifyIndivMBSUserService + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User + Service resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserServicePatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Service resource is successfully modified and a + representation of the updated resource is returned. + content: + application/json: + schema: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/MBSUserService' + '204': + description: > + No Content. The concerned Individual MBS User Service resource is successfully modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service + operationId: DeleteIndivMBSUserService + responses: + '204': + description: > + No Content. The Individual MBS User Service resource is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + +# +# STRUCTURED DATA TYPES +# + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29522_MSEventExposure.yaml b/TS29522_MSEventExposure.yaml new file mode 100644 index 0000000..d947a06 --- /dev/null +++ b/TS29522_MSEventExposure.yaml @@ -0,0 +1,314 @@ +openapi: 3.0.0 + +info: + title: 3gpp-ms-event-exposure + version: 1.1.0-alpha.1 + description: | + API for Media Streaming Event Exposure. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.1.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-ms-event-exposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /subscriptions: + get: + summary: Retrieve all the active Media Streaming Event Exposure Subscription resources managed by the NEF. + tags: + - Media Streaming Event Exposure Subscriptions (Collection) + operationId: RetrieveMSEventExposureSubscs + responses: + '200': + description: > + OK. All the active Media Streaming Event Exposure Subscriptions managed by the NEF are + returned. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Individual Media Streaming Event Exposure Subscription resource. + tags: + - Media Streaming Event Exposure Subscriptions (Collection) + operationId: CreateMSEventExposureSubsc + requestBody: + description: > + Contains the parameters to request the creation of a new Media Streaming Event Exposure + Subscriptionat the NEF. + required: true + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + responses: + '201': + description: > + Created. Successful creation of a new Individual Media Streaming Event Exposure + Subscription resource. + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + msEventExposureNotif: + '{request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureNotif' + responses: + '204': + description: No Content. Successful reception of the notification. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Identifier of the Individual Media Streaming Event Exposure Subscription resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Media Streaming Event Exposure Subscription resource. + tags: + - Individual Media Streaming Event Exposure Subscription (Document) + operationId: RetrieveIndivMSEventExposureSubsc + responses: + '200': + description: > + OK. The requested Individual Media Streaming Event Exposure Subscription resource is + successfully returned. + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Media Streaming Event Exposure Subscription resource. + tags: + - Individual Media Streaming Event Exposure Subscription (Document) + operationId: UpdateIndivMSEventExposureSubsc + requestBody: + description: > + Contains the updated representation of the Individual Media Streaming Event Exposure + Subscription resource. + resource. + required: true + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + responses: + '200': + description: > + OK. The concerned Individual Media Streaming Event Exposure Subscription resource is + successfully updated and a representation of the updated resource is returned in the + response body. + content: + application/json: + schema: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + '204': + description: > + No Content. The concerned Individual Media Streaming Event Exposure Subscription + resource was successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Media Streaming Event Exposure Subscription resource. + tags: + - Individual Media Streaming Event Exposure Subscription (Document) + operationId: DeleteIndivMSEventExposureSubsc + responses: + '204': + description: > + No Content. The Individual Media Streaming Event Exposure Subscription resource is + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + +# +# STRUCTURED DATA TYPES +# + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29522_MemberUESelectionAssistance.yaml b/TS29522_MemberUESelectionAssistance.yaml new file mode 100644 index 0000000..1d92211 --- /dev/null +++ b/TS29522_MemberUESelectionAssistance.yaml @@ -0,0 +1,381 @@ +openapi: 3.0.0 + +info: + title: 3gpp-musa + version: 1.0.0-alpha.2 + description: | + API for Member UE Selection Assistance. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +servers: + - url: '{apiRoot}/3gpp-musa/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /{afId}/subscriptions: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Member UE Selection Assistance Subscription + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + post: + summary: Create a new subscription to Member UE Selection Assistance. + operationId: CreateMemberUESelectionAssistanceSubcription + tags: + - Member UE Selection Assistance Subscription + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + responses: + '201': + description: Create a new Individual Member UE Selection Assistance Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-musa/v1/{afId}/subscriptions/{subscriptionId}. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MemUeSeletAssistNotif' + minItems: 1 + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + in: path + description: Identifier of the AF. + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource. + required: true + schema: + type: string + get: + summary: Read an active subscription identified by the subscriptionId. + tags: + - Individual Member UE Selection Assistance Subscription + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update/Replace an existing subscription resource. + tags: + - Individual Member UE Selection Assistance Subscription + requestBody: + description: Parameters to replace the existing subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/MemUeSelectAssistSubsc' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an existing subscription. + tags: + - Individual Member UE Selection Assistance Subscription + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: {} + schemas: + MemUeSelectAssistSubsc: + description: Represents an Member UE Selection Assistance Subscription. + type: object + properties: + tgtUes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + description: Identifies the list of UEs for Member Selection Assistance Reporting. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + filterCriters: + type: string + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + expTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeWins: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - tgtUes + - notifUri + - notifId + - filterCriters + + MemUeSeletAssistNotif: + description: Represents a Member UE Selection Assistance notification. + type: object + properties: + notifId: + type: string + remdUes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + description: Identifies the list of UEs for Member Selection Assistance Reporting. + memUeSelectRpts: + type: array + items: + $ref: '#/components/schemas/MemUeSeletReport' + minItems: 1 + description: Identifies the list of UEs for Member Selection Assistance Reporting. + required: + - notifId + - remdUes + + MemUeSeletReport: + description: Indicates the Member UE selection report. + type: object + properties: + criterionType: + $ref: '#/components/schemas/FilterCriterionType' + numForCriterion: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - criterionType + - numForCriterion + + FilterCriterionType: + anyOf: + - type: string + enum: + - QOS + - ACCESS_RAT_TYPE + - E2E_DATA_VOLUME_TRANSFER_TIME + - UE_LOCATION + - UE_HISTORICAL_LOCATION + - UE_DIRECTION + - UE_DISTANCE + - SERVICE_EXPERIENCE + - DNN + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration and + is not used to encode content defined in the present version of this API. + description: | + Represents the filter criterion event + Possible values are: + - QOS: Indicates QoS criterion. + - ACCESS_RAT_TYPE: Indicates Access and Rat types criterion. + - E2E_DATA_VOLUME_TRANSFER_TIME: Indicates End-to-end data volume transfer time criterion. + - UE_LOCATION: Indicates UE location criterion. + - UE_HISTORICAL_LOCATION: Indicates UE historical location criterion. + - UE_DIRECTION: Indicates UE direction criterion. + - UE_DISTANCE: Indicates UE distance criterion. + - SERVICE_EXPERIENCE: Indicates the Service Experience criterion. + - DNN: Indicates the DNN criterion. diff --git a/TS29522_MoLcsNotify.yaml b/TS29522_MoLcsNotify.yaml new file mode 100644 index 0000000..06f4a1a --- /dev/null +++ b/TS29522_MoLcsNotify.yaml @@ -0,0 +1,108 @@ +openapi: 3.0.0 +info: + title: 3gpp-mo-lcs-notify + version: 1.2.0-alpha.1 + description: | + API for UE updated location information notification. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/3gpp-mo-lcs-notify/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /: + post: + summary: UE location information update notification + operationId: UELocationNotify + tags: + - AF level UE location update notification operation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocUpdateData' + required: true + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/LocUpdateDataReply' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + LocUpdateData: + description: Represents a UE updated location information. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + locInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + lcsQosClass: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LcsQosClass' + svcId: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/ServiceIdentity' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + additionalLocInfo: + type: array + items: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + minItems: 1 + required: + - gpsi + - lcsQosClass + - locInfo + - suppFeat + LocUpdateDataReply: + description: Represents a reply to a MO LCS notification. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suppFeat diff --git a/TS29522_NIDDConfigurationTrigger.yaml b/TS29522_NIDDConfigurationTrigger.yaml new file mode 100644 index 0000000..27aaa2f --- /dev/null +++ b/TS29522_NIDDConfigurationTrigger.yaml @@ -0,0 +1,101 @@ +openapi: 3.0.0 +info: + title: 3gpp-nidd-configuration-trigger + version: 1.1.1 + description: | + API for NIDD Configuration Trigger. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.522 V17.7.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. +paths: + /: + post: + operationId: NiddConfigurationTrigger + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfigurationTrigger' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/NiddConfigurationTriggerReply' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + NiddConfigurationTrigger: + description: Represents a NIDD configuration trigger. + type: object + properties: + afId: + type: string + description: Identifies the trigger receiving entity. + nefId: + type: string + description: Identifies the trigger sending entity. + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + - nefId + - gpsi + - suppFeat + NiddConfigurationTriggerReply: + description: Represents a reply to a NIDD configuration trigger. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - suppFeat diff --git a/TS29522_PDTQPolicyNegotiation.yaml b/TS29522_PDTQPolicyNegotiation.yaml new file mode 100644 index 0000000..b7a2286 --- /dev/null +++ b/TS29522_PDTQPolicyNegotiation.yaml @@ -0,0 +1,414 @@ +openapi: 3.0.0 + +info: + title: 3gpp-pdtq-policy-negotiation + version: 1.0.0-alpha.2 + description: | + API for PDTQ policy negotiation. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-pdtq-policy-negotiation/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + + /{afId}/subscriptions: + parameters: + - name: afId + description: String identifying the AF. + in: path + required: true + schema: + type: string + + get: + summary: Fetches all active PDTQ policy subscription resources for a given AF. + operationId: FetchAllActivePDTQSubscriptions + tags: + - PDTQ Policy Subscriptions + responses: + '200': + description: OK, all active PDTQ policy subscriptions resources returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Pdtq' + minItems: 1 + description: Contains individual PDTQ policy subscriptions. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new PDTQ policy subscription resource. + operationId: CreatePDTQSubscription + tags: + - PDTQ Policy Subscriptions + requestBody: + description: Contains the data to create a PDTQ Policy Subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Pdtq' + responses: + '201': + description: > + An Individual PDTQ Policy Subscription resource is created and a representation + of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Pdtq' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + PDTQWarningNotification: + '{$request.body#/notificationDestination}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: No Content, (successful notification). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + description: String identifying the AF. + in: path + required: true + schema: + type: string + - name: subscriptionId + description: String identifying the individual PDTQ policy resource in the NEF. + in: path + required: true + schema: + type: string + + get: + summary: Read a PDTQ subscription resource. + operationId: FetchIndPDTQSubscription + tags: + - Individual PDTQ Policy Subscription + responses: + '200': + description: > + OK, a representation of an Individual Policy Subscription resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Pdtq' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modifies an existing PDTQ policy subscription resource. + operationId: ModifyIndPDTQSubscription + tags: + - Individual PDTQ Policy Subscription + requestBody: + description: Contains modifications to be performed on the Pdtq data structure. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PdtqPatch' + responses: + '200': + description: > + The Individual PDTQ Policy Subscription resource is modified and a representation + of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/Pdtq' + '204': + description: The Individual PDTQ Policy Subscription resource is modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete a PDTQ policy subscription resource. + operationId: DeleteIndPDTQSubscription + tags: + - Individual PDTQ Policy Subscription + responses: + '204': + description: The Individual PDTQ Policy Subscription resource is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + Pdtq: + description: Represents a PDTQ Policy Subscription. + type: object + properties: + altQosParamSets: + type: array + items: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/AltQosParamSet' + minItems: 1 + description: > + Contains the alternative QoS requirements as a list of individual QoS parameter + sets in a prioritized order. + altQosRefs: + type: array + items: + type: string + minItems: 1 + description: > + Contains the alternative QoS requirements as the list of QoS references in a + prioritized order. + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + aspId: + description: Contains an identity of an application service provider. + type: string + desTimeInts: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + description: Identifies the time interval(s). + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + numberOfUEs: + type: integer + description: Identifies the number of UEs. + pdtqPolicies: + type: array + items: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqPolicy' + minItems: 1 + description: Contains the PDTQ policies. + qosParamSet: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/QosParameterSet' + qosReference: + type: string + description: > + Requested QoS requirements expressed as the QoS Reference which represents + a pre-defined QoS information. + referenceId: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqReferenceId' + selectedPolicy: + type: integer + description: > + Identity of the selected PDTQ policy. Shall not be present in initial message + exchange, can be provided by NF service consumer in a subsequent message exchange. + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + warnNotifEnabled: + type: boolean + description: > + Indicates whether the PDTQ warning notification is enabled (true) or not (false). + Default value is false. + required: + - aspId + - desTimeInts + - numberOfUEs + oneOf: + - required: [qosReference] + - required: [qosParamSet] + + PdtqPatch: + description: Represents the modification of an individual PDTQ policy subscription. + type: object + properties: + selectedPolicy: + type: integer + description: Identity of the selected PDTQ policy. + warnNotifEnabled: + type: boolean + description: > + Indicates whether the PDTQ warning notification is enabled (true) or not (false). + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + + Notification: + description: Represents a PDTQ notification. + type: object + properties: + pdtqRefId: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqReferenceId' + locationArea5G: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + candPolicies: + type: array + items: + $ref: 'TS29543_Npcf_PDTQPolicyControl.yaml#/components/schemas/PdtqPolicy' + minItems: 1 + description: > + This IE indicates a list of the candidate PDTQ policies from which the AF may select + a new PDTQ policy due to network performance degradation. + required: + - pdtqRefId diff --git a/TS29522_ServiceParameter.yaml b/TS29522_ServiceParameter.yaml new file mode 100644 index 0000000..e826eec --- /dev/null +++ b/TS29522_ServiceParameter.yaml @@ -0,0 +1,890 @@ +openapi: 3.0.0 + +info: + title: 3gpp-service-parameter + version: 1.2.0-alpha.5 + description: | + API for AF service paramter + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-service-parameter/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Service Parameter Subscriptions + parameters: + - name: gpsis + in: query + description: The GPSI of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + - name: ip-addrs + in: query + description: The IP address(es) of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + - name: ip-domain + in: query + description: > + The IPv4 address domain identifier. The attribute may only be provided + if IPv4 address is included in the ip-addrs query parameter. + required: false + schema: + type: string + - name: mac-addrs + in: query + description: The MAC address(es) of the requested UE(s). + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + minItems: 1 + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ServiceParameterData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateAnSubscription + tags: + - Service Parameter Subscriptions + requestBody: + description: Request to create a new subscription resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{$request.body#/notificationDestination}': + post: + requestBody: + description: > + Notifications upon AF Service Parameter Authorization Update, + and/or AF subscribed event notification of the outcome related + to the invocation of service parameters provisioning. + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AfNotification' + minItems: 1 + responses: + '204': + description: Expected response to a successful callback processing without a body + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + get: + summary: read an active subscriptions for the SCS/AS and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual Service Parameter Subscription + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual Service Parameter Subscription + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + '204': + description: OK (Successful update of the subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partial updates/replaces an existing subscription resource + operationId: PartialUpdateAnSubscription + tags: + - Individual Service Parameter Subscription + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServiceParameterDataPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceParameterData' + '204': + description: OK. The subscription was modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Service Parameter Subscription + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ServiceParameterData: + description: Represents an individual Service Parameter subscription resource. + type: object + properties: + afServiceId: + type: string + description: Identifies a service on behalf of which the AF is issuing the request. + appId: + type: string + description: Identifies an application. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + anyUeInd: + type: boolean + description: > + Identifies whether the AF request applies to any non-roaming UE. This attribute, + when provided, shall set to "true" if applicable for any UE, otherwise, set to "false". + roamUeNetDescs: + type: array + items: + $ref: '#/components/schemas/NetworkDescription' + minItems: 1 + description: Each element identifies one or more PLMN IDs of inbound roamers. + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ueIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + subNotifEvents: + type: array + items: + $ref: '#/components/schemas/Event' + minItems: 1 + notificationDestination: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by the AF to request the NEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + paramOverPc5: + $ref: '#/components/schemas/ParameterOverPc5' + paramOverUu: + $ref: '#/components/schemas/ParameterOverUu' + paramForProSeDd: + $ref: '#/components/schemas/ParamForProSeDd' + paramForProSeDc: + $ref: '#/components/schemas/ParamForProSeDc' + paramForProSeU2NRelUe: + $ref: '#/components/schemas/ParamForProSeU2NRelUe' + paramForProSeRemUe: + $ref: '#/components/schemas/ParamForProSeRemUe' + paramForProSeU2URelUe: + $ref: '#/components/schemas/ParamForProSeU2URelUe' + paramForProSeEndUe: + $ref: '#/components/schemas/ParamForProSeEndUe' + paramForRangingSlPos: + $ref: '#/components/schemas/ParamForRangingSlPos' + urspGuidance: + type: array + items: + $ref: '#/components/schemas/UrspRuleRequest' + minItems: 1 + description: Contains the service parameter used to guide the URSP. + a2xParamsPc5: + $ref: '#/components/schemas/A2xParamsPc5' + tnaps: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + minItems: 1 + description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user. + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ServiceParameterDataPatch: + description: > + Represents the parameters to request the modification of a service parameter + subscription resource. + type: object + properties: + paramOverPc5: + $ref: '#/components/schemas/ParameterOverPc5Rm' + paramOverUu: + $ref: '#/components/schemas/ParameterOverUuRm' + paramForProSeDd: + $ref: '#/components/schemas/ParamForProSeDdRm' + paramForProSeDc: + $ref: '#/components/schemas/ParamForProSeDcRm' + paramForProSeU2NRelUe: + $ref: '#/components/schemas/ParamForProSeU2NRelUeRm' + paramForProSeRemUe: + $ref: '#/components/schemas/ParamForProSeRemUeRm' + paramForProSeU2URelUe: + $ref: '#/components/schemas/ParamForProSeU2URelUeRm' + paramForProSeEndUe: + $ref: '#/components/schemas/ParamForProSeEndUeRm' + paramForRangingSlPos: + $ref: '#/components/schemas/ParamForRangingSlPosRm' + urspGuidance: + type: array + items: + $ref: '#/components/schemas/UrspRuleRequest' + minItems: 1 + description: Contains the service parameter used to guide the URSP. + a2xParamsPc5: + $ref: '#/components/schemas/A2xParamsPc5Rm' + tnaps: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + minItems: 1 + description: Contains the TNAP IDs collocated with the 5G-RG(s) of a specific user. + nullable: true + subNotifEvents: + type: array + items: + $ref: '#/components/schemas/Event' + minItems: 1 + nullable: true + notificationDestination: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + ParameterOverPc5: + description: > + Represents configuration parameters for V2X communications over PC5 reference point. + type: string + + ParameterOverPc5Rm: + description: > + Represents the same as the ParameterOverPc5 data type but with the nullable:true property. + type: string + nullable: true + + ParameterOverUu: + description: > + Represents configuration parameters for V2X communications over Uu reference point. + type: string + + ParameterOverUuRm: + description: > + Represents the same as the ParameterOverUu data type but with the nullable:true property. + type: string + nullable: true + + ParamForProSeDd: + description: Represents the service parameters for 5G ProSe direct discovery. + type: string + + ParamForProSeDdRm: + description: > + This data type is defined in the same way as the ParamForProSeDd data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForProSeDc: + description: Represents the service parameters for 5G ProSe direct communications. + type: string + + ParamForProSeDcRm: + description: > + This data type is defined in the same way as the ParamForProSeDc data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForProSeU2NRelUe: + description: Represents the service parameters for 5G ProSe UE-to-network relay UE. + type: string + + ParamForProSeU2NRelUeRm: + description: > + This data type is defined in the same way as the ParamForProSeU2NRelay data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForProSeRemUe: + description: Represents the service parameters for 5G ProSe Remote UE. + type: string + + ParamForProSeRemUeRm: + description: > + This data type is defined in the same way as the ParamForProSeRemUe data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForProSeU2URelUe: + description: Represents the service parameters for 5G ProSe UE-to-UE relay UE. + type: string + + ParamForProSeU2URelUeRm: + description: > + This data type is defined in the same way as the ParamForProSeU2URelay data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForProSeEndUe: + description: Represents the service parameters for 5G ProSe End UE. + type: string + + ParamForProSeEndUeRm: + description: > + This data type is defined in the same way as the ParamForProSeEndUe data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + ParamForRangingSlPos: + description: Represents the service parameters for ranging and sidelink positioning. + type: string + + ParamForRangingSlPosRm: + description: > + This data type is defined in the same way as the ParamForRangingslpos data type, + but with the OpenAPI nullable property set to true. + type: string + nullable: true + + A2xParamsPc5: + description: > + Represents configuration parameters for A2X communications over PC5 reference point. + type: string + + A2xParamsPc5Rm: + description: > + Represents the same as the A2xParamsPc5 data type but with the nullable:true property. + type: string + nullable: true + + UrspRuleRequest: + description: Contains parameters that can be used to guide the URSP. + type: object + properties: + trafficDesc: + $ref: '#/components/schemas/TrafficDescriptorComponents' + relatPrecedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + visitedNetDescs: + type: array + items: + $ref: '#/components/schemas/NetworkDescription' + minItems: 1 + description: > + Each element identifies one or more PLMN IDs where AF guidance for VPLMN-specific + URSP rule applies. + routeSelParamSets: + type: array + items: + $ref: '#/components/schemas/RouteSelectionParameterSet' + minItems: 1 + description: > + Sets of parameters that may be used to guide the Route Selection Descriptors of the + URSP. + + RouteSelectionParameterSet: + description: > + Contains parameters that can be used to guide the Route Selection + Descriptors of the URSP. + type: object + properties: + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + precedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + spatialValidityAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: > + Indicates where the route selection parameters apply. It may correspond + to a geographical area, for example using a geographic shape that + is known to the AF and is configured by the operator to correspond to a list + of or TAIs. + spatialValidityTais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + description: > + Indicates the TAIs in which the route selection parameters apply. This attribute is + applicable only within the 5GC and it shall not be included in the request messages of + untrusted AFs for URSP guidance. + + Event: + anyOf: + - type: string + enum: + - SUCCESS_UE_POL_DEL_SP + - UNSUCCESS_UE_POL_DEL_SP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the AF subscribe to event notification of the outcome related to the + invocation of AF provisioned service parameters. + Possible values are: + - SUCCESS_UE_POL_DEL_SP: Successful UE Policy Delivery related to + the invocation of AF provisioned Service Parameters. + - UNSUCCESS_UE_POL_DEL_SP: Unsuccessful UE Policy Delivery related to the invocation of AF + provisioned Service Parameters. + + AfNotification: + description: > + Notifications upon AF Service Parameter Authorization Update e.g. to + revoke the authorization, and/or AF subscribed event notification of the + outcome related to the invocation of service parameter provisioning. + type: object + properties: + subscription: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + reportEvent: + $ref: '#/components/schemas/Event' + authResult: + $ref: '#/components/schemas/AuthorizationResult' + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + eventInfo: + $ref: '#/components/schemas/EventInfo' + required: + - subscription + anyOf: + - required: [reportEvent] + - required: [authResult] + + TrafficDescriptorComponents: + description: Traffic descriptor components for the requested URSP. + type: object + properties: + appDescs: + type: object + additionalProperties: + $ref: 'TS29522_5GLANParameterProvision.yaml#/components/schemas/AppDescriptor' + minProperties: 1 + description: > + Describes the operation systems and the corresponding applications for each + operation systems. The key of map is osId. + flowDescs: + type: array + items: + type: string + minItems: 1 + description: > + Represents a 3-tuple with protocol, server ip and server port for UL/DL + application traffic. The content of the string has the same encoding as the IPFilterRule + AVP value as defined in IETF RFC 6733. + domainDescs: + type: array + items: + type: string + minItems: 1 + description: > + FQDN(s) or a regular expression which are used as a domain name matching + criteria. + ethFlowDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: > + Descriptor(s) for destination information of non-IP traffic in which only + ethernet flow description is defined. + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: This is matched against the DNN information provided by the application. + connCaps: + type: array + items: + $ref: '#/components/schemas/ConnectionCapabilities' + minItems: 1 + description: > + This is matched against the information provided by a UE application when it + requests a network connection with certain capabilities. + anyOf: + - required: [appDescs] + - required: [flowDescs] + - required: [domainDescs] + - required: [ethFlowDescs] + - required: [dnns] + - required: [connCaps] + + NetworkDescription: + description: > + Represents the description of a PLMN, by the definition of the PLMN ID, the MCC (and + applicable MNC(s)) or the indication of any PLMN. + type: object + properties: + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + mcc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Mcc' + mncs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Mnc' + minItems: 1 + anyPlmnInd: + type: boolean + description: Indicates any PLMN. + oneOf: + - required: [plmnId] + - required: [mcc] + - required: [anyPlmnInd] + + AuthorizationResult: + anyOf: + - type: string + enum: + - AUTH_REVOKED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the NEF notify the AF about the service parameters authorization updates result, + e.g. to revoke an authorization. + Possible values are: + - AUTH_REVOKED: Indicated the service parameters authorization is revoked. + + EventInfo: + description: Indicates the event information. + type: object + properties: + failureCause: + $ref: '#/components/schemas/Failure' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + + Failure: + oneOf: + - type: string + enum: + - UNSPECIFIED + - UE_NOT_REACHABLE + - UNKNOWN + - UE_TEMP_UNREACHABLE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the failure reason for the unsuccessful result. + Possible values are: + - UNSPECIFIED: Indicates the PCF received the UE sent UE policy delivery service cause #111 + (Protocol error, unspecified). + - UE_NOT_REACHABLE: Indicates the PCF received the notification from the AMF that the UE is + not reachable. + - UNKNOWN: Indicates unknown reasons upon no response from the UE, e.g. UPDS message type is + not defined or not implemented by the UE, or not compatible with the UPDS state, in which + the UE shall ignore the UPDS message. + - UE_TEMP_UNREACHABLE: Indicates the PCF received the notification from the AMF that the UE + is not reachable but the PCF will retry again. + + ConnectionCapabilities: + anyOf: + - type: string + enum: + - IMS + - MMS + - SUPL + - INTERNET + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the information provided by a UE application when it requests a network + connection with certain capabilities. + Possible values are: + - IMS: Indicates the connection capability to support IMS service. + - MMS: Indicates the connection capability to support MMS service. + - SUPL: Indicates the connection capability to support SUPL service. + - INTERNET: Indicates the connection capability to support Internet service. diff --git a/TS29522_SliceParamProvision.yaml b/TS29522_SliceParamProvision.yaml new file mode 100644 index 0000000..eb97b5d --- /dev/null +++ b/TS29522_SliceParamProvision.yaml @@ -0,0 +1,375 @@ +openapi: 3.0.0 + +info: + title: Slice Parameters Provisionings + version: 1.0.0-alpha.2 + description: | + API for Slice Parameters Provisionings. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-slice-pp/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + + +paths: + /pp: + get: + summary: Request to retrieve all the active Slice Parameters Provisionings + resources at the NEF. + operationId: GetSliceParamProvisionings + tags: + - Slice Parameters Provisionings (Collection) + responses: + '200': + description: > + OK. All the active Slice Parameters Provisioning resources managed by the + NEF are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SlicePpData' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new Slice Parameters Provisioning. + tags: + - Slice Parameters Provisionings (Collection) + operationId: CreateSliceParamProvisioning + requestBody: + description: > + Representation of the new Slice Parameters Provisioning to be created at + the NEF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + responses: + '201': + description: > + Created. Successful creation of a new Individual Slice Parameters + Provisioning resource. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/3gpp-slice-pp/v1/pp/{ppId} + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /pp/{ppId}: + parameters: + - name: ppId + in: path + description: > + Represents the identifier of the Individual Slice Parameters + Provisioning resource. + required: true + schema: + type: string + + get: + summary: Request to retrieve an existing Individual Slice Parameters + Provisioning resource. + operationId: GetIndSliceParamProvisioning + tags: + - Individual Slice Usage Control Parameters Provisioning (Document) + responses: + '200': + description: > + OK. Successful retrieval of the requested Individual Slice + Parameters Provisioning resource. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request to update an existing Individual Slice Parameters + Provisioning resource. + tags: + - Individual Slice Parameters Provisioning (Document) + operationId: UpdateIndSliceParamProvisioning + requestBody: + description: > + Represents the updated Individual Slice Parameters Provisioning + resource representation. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + responses: + '200': + description: > + OK. The Individual Slice Parameters Provisioning resource is successfully + updated and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + '204': + description: > + No Content. The Individual Slice Parameters Provisioning resource + is successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Slice Parameters + Provisioning resource. + tags: + - Individual Slice Parameters Provisioning (Document) + operationId: ModifyIndSliceParamProvisioning + requestBody: + description: > + Contains the requested modifications to the Individual Slice Parameters + Provisioning resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SlicePpDataPatch' + responses: + '200': + description: > + OK. The Individual Slice Parameters Provisioning resource is successfully + modified and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/SlicePpData' + '204': + description: > + No Content. The Individual Slice Parameters Provisioning resource + is successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Slice Parameters + Provisioning resource. + tags: + - Individual Slice Parameters Provisioning (Document) + operationId: DeleteIndSliceParamProvisioning + responses: + '204': + description: > + No Content. The Individual Slice Parameters Provisioning resource + is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: +# +# STRUCTURED DATA TYPES +# + SlicePpData: + description: Represents the Slice Parameters Provisioning data. + type: object + properties: + afId: + type: string + sliceUsgCtrlData: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceUsageControlInfo' + minProperties: 1 + description: > + Contains the Network Slice Usage Control information to be provisioned. + The key of the map shall be the AF dedicated S-NSSAI to which the Network Slice Usage + Control information is related and that is provided within the snssai attribute of the + corresponding map value encoded via the SliceUsageControlInfo data structure. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + + SlicePpDataPatch: + description: > + Represents the requested modifications to an existing Slice Parameters + Provisioning data. + type: object + properties: + sliceUsgCtrlData: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SliceUsageControlInfo' + minProperties: 1 + description: > + Contains the updated Network Slice Usage Control information to be provisioned. + The key of the map shall be the AF dedicated S-NSSAI to which the Network Slice Usage + Control information are related and that is provided within the snssai attribute of the + corresponding map value encoded via the SliceUsageControlInfo data structure. + + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + diff --git a/TS29522_TimeSyncExposure.yaml b/TS29522_TimeSyncExposure.yaml new file mode 100644 index 0000000..a9ad24a --- /dev/null +++ b/TS29522_TimeSyncExposure.yaml @@ -0,0 +1,1124 @@ +openapi: 3.0.0 + +info: + title: 3gpp-time-sync-exposure + version: 1.1.0-alpha.5 + description: | + API for time synchronization exposure. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-time-sync/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Time Synchronization Exposure Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active subscriptions for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateNewSubscription + tags: + - Time Synchronization Exposure Subscriptions + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + requestBody: + description: new subscription creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + timeSyncSubsNotification: + '{$request.body#/subsNotifUri}': + post: + requestBody: + description: Notification for Time Synchronization Capability for a list of UEs. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsNotif' + responses: + '204': + description: Expected response to a successful callback processing without a body + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual Time Synchronization Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual Time Synchronization Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + responses: + '200': + description: OK (Successful deletion of the existing subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Time Synchronization Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}/configurations: + get: + summary: read all of the active configurations for the AF + operationId: ReadAllConfirguations + tags: + - Time Synchronization Exposure Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + description: > + String identifying the individual synchronization Exposure Subscription resource + in the NEF + in: path + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active configurations for the AF) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TimeSyncExposureConfig' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new configuration resource + operationId: CreateNewConfirguation + tags: + - Time Synchronization Exposure Configurations + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + description: > + String identifying the individual synchronization Exposure Subscription + resource in the NEF. + in: path + required: true + schema: + type: string + requestBody: + description: new configuration creation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + timeSyncConfigNotification: + '{$request.body#/configNotifUri}': + post: + requestBody: + description: Notification for Time Synchronization Service status. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfigNotif' + responses: + '204': + description: Expected response to a successful callback processing without a body + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}/configurations/{instanceReference}: + get: + summary: read an active subscription for the AF and the subscription Id + operationId: ReadTimeSynSubscription + tags: + - Individual Time Synchronization Exposure Subscription + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + - name: instanceReference + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing configuration resource + operationId: FullyUpdateAnConfiguration + tags: + - Individual Time Synchronization Exposure Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + - name: instanceReference + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing configuration + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + responses: + '200': + description: OK (Successful deletion of the existing configuration) + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + '204': + description: > + Successful case. The resource has been successfully updated and no additional + content is to be sent in the response message. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing configuration + operationId: DeleteAnConfiguration + tags: + - Individual Time Synchronization Exposure Configuration + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + - name: instanceReference + in: path + description: Identifier of the configuration resource + required: true + schema: + type: string + responses: + '204': + description: No Content (Successful deletion of the existing configuration) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + TimeSyncExposureSubsc: + description: > + Contains requested parameters for the subscription to the notification + of time synchronization capability. + type: object + properties: + exterGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + description: > + Contains a list of UE for which the time synchronization capabilities is requested. + anyUeInd: + type: boolean + description: > + Any UE indication. This IE shall be present if the event subscription + is applicable to any UE. Default value "false" is used, if not present. + afServiceId: + type: string + description: Identifies a service on behalf of which the AF is issuing the request. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + subsNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + subsNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + subscribedEvents: + type: array + items: + $ref: '#/components/schemas/SubscribedEvent' + minItems: 1 + description: Subscribed events + eventFilters: + type: array + items: + $ref: '#/components/schemas/EventFilter' + minItems: 1 + description: > + Contains the filter conditions to match for notifying the event(s) + of time synchronization capabilities for a list of UE(s). + notifMethod: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + maxReportNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the SCEF to send a test notification + as defined in clause 5.2.5.3 of 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subsNotifUri + - subsNotifId + + TimeSyncCapability: + description: Contains time synchronization capability. + type: object + properties: + upNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + gmCapables: + type: array + items: + $ref: '#/components/schemas/GmCapable' + description: > + Indicates whether user plane node supports acting as a gPTP and/or PTP grandmaster. + asTimeRes: + $ref: '#/components/schemas/AsTimeResource' + ptpCapForUes: + type: object + additionalProperties: + $ref: '#/components/schemas/PtpCapabilitiesPerUe' + minProperties: 1 + description: > + Contains the PTP capabilities supported by each of the UE(s). + The key of the map is the gpsi. + required: + - upNodeId + anyOf: + - required: [gmCapables] + - required: [asTimeRes] + + TimeSyncExposureConfig: + description: Contains the Time Synchronization Configuration parameters. + type: object + properties: + upNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + reqPtpIns: + $ref: '#/components/schemas/PtpInstance' + gmEnable: + type: boolean + description: > + Indicates that the AF requests 5GS to act as a grandmaster for PTP + or gPTP if it is included and set to true. + gmPrio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + configNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + configNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tempValidity: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + coverageArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SpatialValidityCond' + clkQltDetLvl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityDetailLevel' + clkQltAcptCri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityAcceptanceCriterion' + required: + - upNodeId + - reqPtpIns + - timeDom + - configNotifId + - configNotifUri + + TimeSyncExposureSubsNotif: + description: Contains the notification of time synchronization capability. + type: object + properties: + subsNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + eventNotifs: + type: array + items: + $ref: '#/components/schemas/SubsEventNotification' + minItems: 1 + description: > + Notifications about subscribed Individual Events. + required: + - subsNotifId + - eventNotifs + + SubsEventNotification: + description: Notifications about subscribed Individual Events. + type: object + properties: + event: + $ref: '#/components/schemas/SubscribedEvent' + timeSyncCapas: + type: array + items: + $ref: '#/components/schemas/TimeSyncCapability' + minItems: 1 + description: > + Contains a list of time synchronization capabilities for the UE(s). + required: + - event + + TimeSyncExposureConfigNotif: + description: Contains the notification of time synchronization service state. + type: object + properties: + configNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + stateOfConfig: + $ref: '#/components/schemas/StateOfConfiguration' + required: + - configNotifId + - stateOfConfig + + PtpCapabilitiesPerUe: + description: Contains the supported PTP capabilities per UE. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ptpCaps: + type: array + items: + $ref: '#/components/schemas/EventFilter' + minItems: 1 + description: > + Contains the reported PTP capabilities for the UE. + required: + - gpsi + - ptpCaps + + EventFilter: + description: > + Contains the filter conditions to match for notifying the event(s) of time + synchronization capabilities. + type: object + properties: + instanceTypes: + type: array + items: + $ref: '#/components/schemas/InstanceType' + minItems: 1 + description: > + Indicates the PTP instance type(s). + transProtocols: + type: array + items: + $ref: '#/components/schemas/Protocol' + minItems: 1 + description: > + Indicates the transport protocol type(s). + ptpProfiles: + type: array + items: + type: string + minItems: 1 + description: > + Identifies the supported PTP profiles. + + PtpInstance: + description: Contains PTP instance configuration and activation requested by the AF. + type: object + properties: + instanceType: + $ref: '#/components/schemas/InstanceType' + protocol: + $ref: '#/components/schemas/Protocol' + ptpProfile: + type: string + description: Identifies the PTP profile. + portConfigs: + type: array + items: + $ref: '#/components/schemas/ConfigForPort' + minItems: 1 + description: > + Contains the configurations for the PTP port(s) in the PTP instance. + required: + - instanceType + - protocol + - ptpProfile + + ConfigForPort: + description: Contains configuration for each port. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + n6Ind: + type: boolean + description: > + Indicates the N6 termination which the parameters below apply. + ptpEnable: + type: boolean + description: > + This is used to set the portDS.portEnable. If omitted, the default value as described + in the PTP Profile is used. + logSyncInter: + type: integer + description: > + Specifies the mean time interval between successive Sync messages. + logSyncInterInd: + type: boolean + description: > + When set to "false", the value of "logSyncInter" attribute is used to set the + initialLogSyncInterval as described in IEEE Std 802.1AS [46]. When set to "true", + the value of "logSyncInter" attribute is used to set the mgtSettableLogSyncInterval + as described in IEEE Std 802.1AS [46]. + logAnnouInter: + type: integer + description: > + Specifies the mean time interval between successive Announce messages. + logAnnouInterInd: + type: boolean + description: > + When set to "false", the value of "logAnnouInter" attribute is used to set the + initialLogAnnounceInterval as described in IEEE 802.1AS [46]. When set to "true", + the value of "logAnnouInter" attribute is used to set the + mgtSettableLogAnnounceInterval as described in IEEE Std 802.1AS [46]. + + StateOfConfiguration: + description: Contains the state of the time synchronization configuration. + type: object + properties: + stateOfNwtt: + type: boolean + description: > + When the PTP port state is Leader, Follower or Passive, it is included and set to true + to indicate the state of configuration for NW-TT port is active; when PTP port state is + in any other case, it is included and set to false to indicate the state of + configuration for NW-TT port is inactive. Default value is false. + stateOfDstts: + description: > + Contains the PTP port states of the DS-TT(s). + type: array + items: + $ref: '#/components/schemas/StateOfDstt' + minItems: 1 + clkQltAcptCriReports: + description: > + Indicates if the clock quality acceptance criteria is met or not for the indicated + UE(s). + type: array + items: + $ref: '#/components/schemas/ClockQualityAcceptanceCriteriaResult' + minItems: 1 + + StateOfDstt: + description: Contains the PTP port state of a DS-TT. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + state: + type: boolean + description: > + When the PTP port state is Leader, Follower or Passive, it is included and set to true + to indicate the state of configuration for DS-TT port is active; when PTP port state is + in any other case, it is included and set to false to indicate the state of + configuration for DS port is inactive. Default value is false. + required: + - gpsi + - state + + ClockQualityAcceptanceCriteriaResult: + description: > + Indicates whether the clock quality acceptance criteria is met or not for the indicated + PTP port, i.e. per the indicated UE. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + clkQltAcptCriResInd: + $ref: '#/components/schemas/AcceptanceCriteriaResultIndication' + required: + - clkQltAcptCriResInd + anyOf: + - required: [supi] + - required: [gpsi] + + Protocol: + anyOf: + - type: string + enum: + - ETH + - IPV4 + - IPV6 + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Identifies the supported protocol. + Possible values are: + - ETH: Indicates Ethernet as defined in IEEE Std 1588 [45] Annex E is supported. + - IPV4: Indicates IPv4 as defined in IEEE Std 1588 [45] Annex C is supported. + - IPV6: Indicates IPv6 as defined in IEEE Std 1588 [45] Annex D is supported. + + GmCapable: + anyOf: + - type: string + enum: + - GPTP + - PTP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Identifies the supported grandmaster. + Possible values are: + - GPTP: gPTP grandmaster is supported. + - PTP: PTP grandmaste is supported. + + InstanceType: + anyOf: + - type: string + enum: + - BOUNDARY_CLOCK + - E2E_TRANS_CLOCK + - P2P_TRANS_CLOCK + - P2P_RELAY_INSTANCE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Identifies the supported PTP instance type. + Possible values are: + - BOUNDARY_CLOCK: Indicates Boundary Clock as defined in IEEE Std 1588. + - E2E_TRANS_CLOCK: Indicates End-to-End Transparent Clock as defined in IEEE Std 1588. + - P2P_TRANS_CLOCK: Indicates Peer-to-Peer Transparent Clock as defined in IEEE Std 1588. + - P2P_RELAY_INSTANCE: Indicates PTP Relay instance as defined in IEEE Std 802.1AS. + + SubscribedEvent: + anyOf: + - type: string + enum: + - AVAILABILITY_FOR_TIME_SYNC_SERVICE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Identifies the supported event. + Possible values are: + - AVAILABILITY_FOR_TIME_SYNC_SERVICE: The UE is availability for time synchronization + service. + + AsTimeResource: + anyOf: + - type: string + enum: + - ATOMIC_CLOCK + - GNSS + - TERRESTRIAL_RADIO + - SERIAL_TIME_CODE + - PTP + - NTP + - HAND_SET + - INTERNAL_OSCILLATOR + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Identifies the supported 5G clock quality. + Possible values are: + - ATOMIC_CLOCK: Indicates atomic clock is supported. + - GNSS: Indicates Global Navigation Satellite System is supported. + - TERRESTRIAL_RADIO: Indicates terrestrial radio is supported. + - SERIAL_TIME_CODE: Indicates serial time code is supported. + - PTP: Indicates PTP is supported. + - NTP: Indicates NTP is supported. + - HAND_SET: Indicates hand set is supported. + - INTERNAL_OSCILLATOR: Indicates internal oscillator is supported. + - OTHER: Indicates other source of time is supported. + + AcceptanceCriteriaResultIndication: + anyOf: + - type: string + enum: + - ACCEPTABLE + - NON_ACCEPTABLE + - type: string + description: > + Contains the acceptable/not acceptable indication of the clock quality acceptance criteria + result information. + description: | + Identifies the supported acceptable/not acceptable indication. + Possible values are: + - ACCEPTABLE: PTP port meets the clock quality acceptance criteria. + - NON_ACCEPTABLE: PTP port does not meet the clock quality acceptance criteria. diff --git a/TS29522_TrafficInfluence.yaml b/TS29522_TrafficInfluence.yaml new file mode 100644 index 0000000..af968b1 --- /dev/null +++ b/TS29522_TrafficInfluence.yaml @@ -0,0 +1,793 @@ +openapi: 3.0.0 + +info: + title: 3gpp-traffic-influence + version: 1.3.0-alpha.4 + description: | + API for AF traffic influence + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-traffic-influence/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122. + +paths: + /{afId}/subscriptions: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + get: + summary: read all of the active subscriptions for the AF + operationId: ReadAllSubscriptions + tags: + - Traffic Influence Subscription + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TrafficInfluSub' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Creates a new subscription resource + operationId: CreateNewSubscription + tags: + - Traffic Influence Subscription + requestBody: + description: Request to create a new subscription resource + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotification' + callbacks: + afAcknowledgement: + '{request.body#/afAckUri}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AfAckInfo' + responses: + '204': + description: No Content (successful acknowledgement) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation of subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /{afId}/subscriptions/{subscriptionId}: + parameters: + - name: afId + in: path + description: Identifier of the AF + required: true + schema: + type: string + - name: subscriptionId + in: path + description: Identifier of the subscription resource + required: true + schema: + type: string + get: + summary: read an active subscriptions for the SCS/AS and the subscription Id + operationId: ReadAnSubscription + tags: + - Individual Traffic Influence Subscription + responses: + '200': + description: OK (Successful get the active subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Fully updates/replaces an existing subscription resource + operationId: FullyUpdateAnSubscription + tags: + - Individual Traffic Influence Subscription + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Partially updates/replaces an existing subscription resource + operationId: PartialUpdateAnSubscription + tags: + - Individual Traffic Influence Subscription + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/TrafficInfluSubPatch' + responses: + '200': + description: OK. The subscription was modified successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluSub' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an already existing subscription + operationId: DeleteAnSubscription + tags: + - Individual Traffic Influence Subscription + responses: + '204': + description: No Content (Successful deletion of the existing subscription) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + TrafficInfluSub: + description: Represents a traffic influence subscription. + type: object + properties: + afServiceId: + type: string + description: Identifies a service on behalf of which the AF is issuing the request. + afAppId: + type: string + description: Identifies an application. + afTransId: + type: string + description: Identifies an NEF Northbound interface transaction, generated by the AF. + appReloInd: + type: boolean + description: > + Identifies whether an application can be relocated once a location of + the application has been selected. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + externalGroupId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + externalGroupIds: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + minItems: 1 + description: Each element identifies a group of users. + extSubscCats: + type: array + items: + type: string + minItems: 1 + anyUeInd: + type: boolean + description: > + Identifies whether the AF request applies to any UE. This attribute shall + set to "true" if applicable for any UE, otherwise, set to "false". + subscribedEvents: + type: array + items: + $ref: '#/components/schemas/SubscribedEvent' + minItems: 1 + description: Identifies the requirement to be notified of the event(s). + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipDomain: + type: string + ipv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + macAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + requestTestNotification: + type: boolean + description: > + Set to true by the SCS/AS to request the NEF to send a test notification + as defined in clause 5.2.5.3. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + trafficFilters: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Identifies IP packet filters. + ethTrafficFilters: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet filters. + trafficRoutes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: Identifies the N6 traffic routing requirement. + sfcIdDl: + type: string + description: > + Reference to a pre-configured steering of user traffic to service function chain in + downlink. + sfcIdUl: + type: string + description: > + Reference to a pre-configured steering of user traffic to service function chain in + uplink. + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + tfcCorrInd: + type: boolean + tempValidities: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + validGeoZoneIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies a geographic zone that the AF request applies only to the traffic + of UE(s) located in this specific zone. + deprecated: true + geoAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Identifies geographical areas within which the AF request applies. + afAckInd: + type: boolean + addrPreserInd: + type: boolean + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily + maintained for the source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + easRedisInd: + type: boolean + description: > + Indicates the EAS rediscovery is required for the application if it is included + and set to "true". + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + eventReports: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + candDnaiInd: + type: boolean + description: > + Indication of reporting candidate DNAI(s). If it is included and set to "true", the + candidate DNAI(s) for the PDU session need to be reported. Otherwise set to "false" or + omitted. + tfcCorreInfo: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + portNumber: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + allOf: + - oneOf: + - required: [afAppId] + - required: [trafficFilters] + - required: [ethTrafficFilters] + - oneOf: + - required: [ipv4Addr] + - required: [ipv6Addr] + - required: [macAddr] + - required: [gpsi] + - required: [externalGroupId] + - required: [anyUeInd] + anyOf: + - not: + required: [subscribedEvents] + - required: [notificationDestination] + + TrafficInfluSubPatch: + description: > + Represents parameters to request the modification of a traffic influence + subscription resource. + type: object + properties: + appReloInd: + type: boolean + description: > + Identifies whether an application can be relocated once a location of + the application has been selected. + nullable: true + trafficFilters: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + description: Identifies IP packet filters. + ethTrafficFilters: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + description: Identifies Ethernet packet filters. + trafficRoutes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: Identifies the N6 traffic routing requirement. + sfcIdDl: + type: string + description: > + Reference to a pre-configured steering of user traffic to service function chain in + downlink. + nullable: true + sfcIdUl: + type: string + description: > + Reference to a pre-configured steering of user traffic to service function chain in + uplink. + nullable: true + metadata: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Metadata' + tfcCorrInd: + type: boolean + nullable: true + tempValidities: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + minItems: 1 + nullable: true + validGeoZoneIds: + type: array + items: + type: string + minItems: 1 + description: > + Identifies a geographic zone that the AF request applies only to the traffic + of UE(s) located in this specific zone. + nullable: true + deprecated: true + geoAreas: + type: array + items: + $ref: 'TS29522_AMPolicyAuthorization.yaml#/components/schemas/GeographicalArea' + minItems: 1 + description: Identifies geographical areas within which the AF request applies. + nullable: true + afAckInd: + type: boolean + nullable: true + addrPreserInd: + type: boolean + nullable: true + simConnInd: + type: boolean + description: > + Indicates whether simultaneous connectivity should be temporarily maintained + for the source and target PSA. + simConnTerm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maxAllowedUpLat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + nullable: true + easRedisInd: + type: boolean + description: > + Indicates the EAS rediscovery is required for the application if it is included + and set to "true". + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + tfcCorreInfo: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficCorrelationInfo' + + EventNotification: + description: Represents a traffic influence event notification. + type: object + properties: + afTransId: + type: string + description: Identifies an NEF Northbound interface transaction, generated by the AF. + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + sourceTrafficRoute: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + subscribedEvent: + $ref: '#/components/schemas/SubscribedEvent' + targetTrafficRoute: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + sourceDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + candidateDnais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + description: The candidate DNAI(s) for the PDU Session. + candDnaisPrioInd: + type: boolean + description: > + If provided and set to true, it indicates that the candidate DNAIs provided + in the candidateDnais attribute are in descending priority order, i.e., + the lower the array index the higher the priority of the respective DNAI. + If omitted, the default value is false. + easRediscoverInd: + type: boolean + description: > + Indication of EAS re-discovery. If present and set to "true", it indicates the EAS + re-discovery is performed, e.g. due to change of common EAS. Default value is "false" if + omitted. May be included for event "UP_PATH_CHANGE". + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + srcUeIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + srcUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + tgtUeIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + tgtUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + afAckUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Link' + required: + - dnaiChgType + - subscribedEvent + + AfResultInfo: + description: Identifies the result of application layer handling. + type: object + properties: + afStatus: + $ref: '#/components/schemas/AfResultStatus' + trafficRoute: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + upBuffInd: + type: boolean + description: > + If present and set to "true" it indicates that buffering of uplink traffic + to the target DNAI is needed. + easIpReplaceInfos: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EasIpReplacementInfo' + minItems: 1 + description: Contains EAS IP replacement information. + required: + - afStatus + + AfAckInfo: + description: Represents acknowledgement information of a traffic influence event notification. + type: object + properties: + afTransId: + type: string + ackResult: + $ref: '#/components/schemas/AfResultInfo' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + required: + - ackResult + + SubscribedEvent: + anyOf: + - type: string + enum: + - UP_PATH_CHANGE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the type of UP path management events for which the AF requests to be notified. + Possible values are: + - UP_PATH_CHANGE: The AF requests to be notified when the UP path changes for + the PDU session. + + AfResultStatus: + anyOf: + - type: string + enum: + - SUCCESS + - TEMPORARY_CONGESTION + - RELOC_NO_ALLOWED + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the status of application handling result. + Possible values are: + - SUCCESS: The application layer is ready or the relocation is completed. + - TEMPORARY_CONGESTION: The application relocation fails due to temporary congestion. + - RELOC_NO_ALLOWED: The application relocation fails because application relocation + is not allowed. + - OTHER: The application relocation fails due to other reason. diff --git a/TS29522_UEAddress.yaml b/TS29522_UEAddress.yaml new file mode 100644 index 0000000..981b8cc --- /dev/null +++ b/TS29522_UEAddress.yaml @@ -0,0 +1,103 @@ +openapi: 3.0.0 + +info: + title: 3gpp-ue-address + version: 1.0.0-alpha.1 + description: | + API for UE Address service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.522 V18.4.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-ue-address/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. + +paths: + /retrieve: + post: + summary: Retrieve UE Address. + operationId: RetrieveUEAddress + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UeAddressReq' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/UeAddressInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + UeAddressReq: + description: Represents the parameters to request the retrieval of UE Address. + type: object + properties: + afId: + type: string + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - afId + - gpsi + + UeAddressInfo: + description: Represents UE Address information. + type: object + properties: + ueIpAddrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + required: + - ueIpAddrs diff --git a/TS29522_UEId.yaml b/TS29522_UEId.yaml new file mode 100644 index 0000000..1ee345e --- /dev/null +++ b/TS29522_UEId.yaml @@ -0,0 +1,113 @@ +openapi: 3.0.0 + +info: + title: 3gpp-ueid + version: 1.1.0-alpha.1 + description: | + API for UE ID service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.522 V18.3.0; 5G System; Network Exposure Function Northbound APIs. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.522/' +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/3gpp-ueid/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 5.2.4 of 3GPP TS 29.122. + +paths: + /retrieve: + post: + summary: Retrieve AF specific UE ID. + operationId: RetrieveUEId + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdReq' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + schemas: + UeIdReq: + description: Represents the parameters to request the retrieval of AF specific UE ID. + type: object + properties: + afId: + type: string + appPortId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + ipDomain: + type: string + mtcProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + portNumber: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ueMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + required: + - afId + oneOf: + - required: [ueIpAddr] + - required: [ueMacAddr] + UeIdInfo: + description: Represents UE ID information. + type: object + properties: + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + required: + - externalId diff --git a/TS29523_Npcf_EventExposure.yaml b/TS29523_Npcf_EventExposure.yaml new file mode 100644 index 0000000..8585347 --- /dev/null +++ b/TS29523_Npcf_EventExposure.yaml @@ -0,0 +1,524 @@ +openapi: 3.0.0 +info: + version: 1.3.0-alpha.3 + title: Npcf_EventExposure + description: | + PCF Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.523 V18.2.0; 5G System; Policy Control Event Exposure Service; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.523/ + +servers: + - url: '{apiRoot}/npcf-eventexposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npcf-eventexposure + +paths: + /subscriptions: + post: + summary: Creates a new Individual Policy Control Events Subscription resource + operationId: PostPcEventExposureSubsc + tags: + - Policy Control Events Subscription (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureSubsc' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureSubsc' + headers: + Location: + description: > + Contains the URI of the created individual policy control events subscription + resource, according to the structure + {apiRoot}/npcf-eventexposure/v1/subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + PcEventNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureNotif' + responses: + '204': + description: No Content, Notification was succesfull. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + get: + summary: "Reads an existing Individual Policy Control Events Subscription" + operationId: GetPcEventExposureSubsc + tags: + - Individual Policy Control Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Policy Control Event Subscription ID. + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureSubsc' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: "Modifies an existing Individual Policy Control Events Subscription " + operationId: PutPcEventExposureSubsc + tags: + - Individual Policy Control Events Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureSubsc' + parameters: + - name: subscriptionId + in: path + description: Policy Control Event Subscription ID. + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PcEventExposureSubsc' + '204': + description: No Content. Resource was succesfully modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: "Cancels an existing Individual Policy Control Events Subscription " + operationId: DeletePcEventExposureSubsc + tags: + - Individual Policy Control Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Policy Control Event Subscription ID. + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-eventexposure: Access to the Npcf_EventExposure API. + + schemas: + + PcEventExposureNotif: + description: > + Represents notifications about Policy Control events related to an Individual + Policy Events Subscription resource. + type: object + properties: + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/PcEventNotification' + minItems: 1 + required: + - notifId + - eventNotifs + + + PcEventExposureSubsc: + description: Represents an Individual Policy Events Subscription resource. + type: object + properties: + eventSubs: + type: array + items: + $ref: '#/components/schemas/PcEvent' + minItems: 1 + eventsRepInfo: + $ref: '#/components/schemas/ReportingInformation' + groupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + filterDnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + filterSnssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + snssaiDnns: + type: array + items: + $ref: '#/components/schemas/SnssaiDnnCombination' + minItems: 1 + filterServices: + type: array + items: + $ref: '#/components/schemas/ServiceIdentification' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/PcEventNotification' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eventSubs + - notifId + - notifUri + + ReportingInformation: + description: Represents the type of reporting that the subscription requires. + type: object + properties: + immRep: + type: boolean + notifMethod: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + maxReportNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + monDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + sampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + partitionCriteria: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartitioningCriteria' + minItems: 1 + description: Criteria for partitioning the UEs before applying the sampling ratio. + grpRepTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + notifFlagInstruct: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingSetting: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + + ServiceIdentification: + description: Identifies the service to which the subscription applies. + type: object + properties: + servEthFlows: + type: array + items: + $ref: '#/components/schemas/EthernetFlowInfo' + minItems: 1 + servIpFlows: + type: array + items: + $ref: '#/components/schemas/IpFlowInfo' + minItems: 1 + afAppId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AfAppId' + # All conditions in allOf must be met + allOf: + # First condition is that servEthFlows and servIpFlows are mutually exclusive + - not: + required: [servEthFlows, servIpFlows] + # Second condition is that at least one the servEthFlows, servIpFlows and afAppId shall be present + - anyOf: + - required: [servEthFlows] + - required: [servIpFlows] + - required: [afAppId] + + EthernetFlowInfo: + description: Identifies an UL/DL ethernet flow. + type: object + properties: + ethFlows: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + maxItems: 2 + flowNumber: + type: integer + required: + - flowNumber + + IpFlowInfo: + description: Identifies an UL/DL IP flow. + type: object + properties: + ipFlows: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + maxItems: 2 + flowNumber: + type: integer + required: + - flowNumber + + PcEventNotification: + description: Represents the information reported for a Policy Control event. + type: object + properties: + event: + $ref: '#/components/schemas/PcEvent' + accType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + addAccessInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AdditionalAccessInfo' + relAccessInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AdditionalAccessInfo' + anGwAddr: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AnGwAddress' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + appliedCov: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/ServiceAreaCoverageInfo' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pduSessionInfo: + $ref: '#/components/schemas/PduSessionInformation' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + repServices: + $ref: '#/components/schemas/ServiceIdentification' + delivFailure: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/Failure' + required: + - event + - timeStamp + + PduSessionInformation: + description: Represents PDU session identification information. + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + ueIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + ipDomain: + type: string + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + required: + - snssai + - dnn + oneOf: + - required: [ueMac] + - anyOf: + - required: [ueIpv4] + - required: [ueIpv6] + SnssaiDnnCombination: + description: Represents a combination of S-NSSAI and DNN(s). + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + +# Simple data types and Enumerations + + PcEvent: + description: Represents the policy control events that can be subscribed. + anyOf: + - type: string + enum: + - AC_TY_CH + - PLMN_CH + - SAC_CH + - SAT_CATEGORY_CH + - SUCCESS_UE_POL_DEL_SP + - UNSUCCESS_UE_POL_DEL_SP + - APPLICATION_START + - APPLICATION_STOP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. diff --git a/TS29525_Npcf_UEPolicyControl.yaml b/TS29525_Npcf_UEPolicyControl.yaml new file mode 100644 index 0000000..d74e544 --- /dev/null +++ b/TS29525_Npcf_UEPolicyControl.yaml @@ -0,0 +1,1009 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.5 + title: Npcf_UEPolicyControl + description: | + UE Policy Control Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.525 V18.4.0; 5G System; UE Policy Control Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.525/' + +servers: + - url: '{apiRoot}/npcf-ue-policy-control/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npcf-ue-policy-control + +paths: + /policies: + post: + operationId: CreateIndividualUEPolicyAssociation + summary: Create individual UE policy association. + tags: + - UE Policy Associations (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociationRequest' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociation' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/npcf-ue-policy-control/v1/policies/{polAssoId}' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + policyUpdateNotification: + '{$request.body#/notificationUri}/update': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyUpdate' + responses: + '200': + description: > + OK. The current applicable values corresponding to the policy control request + trigger is reported + content: + application/json: + schema: + $ref: '#/components/schemas/UeRequestedValueRep' + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + policyAssocitionTerminationRequestNotification: + '{$request.body#/notificationUri}/terminate': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TerminationNotification' + responses: + '204': + description: No Content, Notification was successful + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policies/{polAssoId}: + get: + operationId: ReadIndividualUEPolicyAssociation + summary: Read individual UE policy association. + tags: + - Individual UE Policy Association (Document) + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualUEPolicyAssociation + summary: Delete individual UE policy association. + tags: + - Individual UE Policy Association (Document) + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /policies/{polAssoId}/update: + post: + operationId: ReportObservedEventTriggersForIndividualUEPolicyAssociation + summary: > + Report observed event triggers and possibly obtain updated policies for an individual UE + policy association. + tags: + - Individual UE Policy Association (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyAssociationUpdateRequest' + parameters: + - name: polAssoId + in: path + description: Identifier of a policy association + required: true + schema: + type: string + responses: + '200': + description: OK. Updated policies are returned + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyUpdate' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-ue-policy-control: Access to the Npcf_UEPolicyControl API + + schemas: + PolicyAssociation: + description: > + Contains the description of a policy association that is returned by the PCF when a policy + Association is created, updated, or read. + type: object + properties: + request: + $ref: '#/components/schemas/PolicyAssociationRequest' + uePolicy: + $ref: '#/components/schemas/UePolicy' + n2Pc5Pol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + n2Pc5PolA2x: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + n2Pc5ProSePol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + description: > + Request Triggers that the PCF subscribes. + pras: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfoRm' + minProperties: 1 + description: > + Contains the presence reporting area(s) for which reporting was requested. + The praId attribute within the PresenceInfoRm data type is the key of the map. + andspDelInd: + type: boolean + description: > + Indication that the updated ANDSP/WLANSP has been successfully delivered to the UE. + andspInd: + description: > + Indication of UE support of ANDSP. When set to true, it indicates the UE supports ANDSP, + when set to false it indicates the UE does not support ANDSP. + type: boolean + pduSessions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + description: Combination of DNN and S-NSSAIs for which LBO information is requested. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + n2Pc5RsppPol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + required: + - suppFeat + + PolicyAssociationRequest: + description: > + Represents information that the NF service consumer provides when requesting the creation of + a policy association. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altNotifIpv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + description: Alternate or backup IPv4 Address(es) where to send Notifications. + altNotifIpv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + description: Alternate or backup IPv6 Address(es) where to send Notifications. + altNotifFqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + description: Alternate or backup FQDN(s) where to send Notifications. + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + servingPlmn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + groupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + hPcfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + uePolReq: + $ref: '#/components/schemas/UePolicyRequest' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + serviceName: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/ServiceName' + servingNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pc5Capab: + $ref: '#/components/schemas/Pc5Capability' + pc5CapA2x: + $ref: '#/components/schemas/Pc5Capability' + proSeCapab: + type: array + items: + $ref: '#/components/schemas/ProSeCapability' + minItems: 1 + confSnssais: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/ConfiguredSnssai' + minItems: 1 + description: > + The Configured NSSAI for the serving PLMN, and the mapped S-NSSAI value of home + network corresponding to the configured S-NSSAI in the serving PLMN. + n3gNodeReSel: + $ref: '#/components/schemas/Non3gppAccess' + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + 5gsToEpsMob: + type: boolean + description: > + It indicates the UE Policy Association is triggered by a 5GS to EPS mobility + scenario. + vpsUePolGuidance: + type: object + additionalProperties: + $ref: '#/components/schemas/UePolicyParameters' + minProperties: 1 + description: > + Contains the service parameter used to guide the VPLMN-specific URSP and may contain + the subscription to VPLMN-specific URSP delivery outcome. + The key of the map represents the AF request to guide VPLMN-specific URSP rules. + This attribute only applies in roaming and when the V-PCF is the NF service consumer. + lboRoamInfo: + type: array + items: + $ref: '#/components/schemas/LboRoamingInformation' + minItems: 1 + description: > + Contains LBO roaming information for DNN and S-NSSAI combination(s). + This attribute only applies in roaming and when the AMF is the NF service consumer. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + rangingSlCapab: + type: boolean + description: > + It indicates whether the PC5 Capability for Ranging/SL is supported by the UE or not. + "true": Indicates that the PC5 Capability for Ranging/SL is supported by the UE. + "false": Indicates that the PC5 Capability for Ranging/SL is not supported by the UE. + Default value when omitted is "false". + required: + - notificationUri + - suppFeat + - supi + + PolicyAssociationUpdateRequest: + description: > + Represents Information that the NF service consumer provides when requesting the update of + a policy association. + type: object + properties: + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + altNotifIpv4Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + description: Alternate or backup IPv4 Address(es) where to send Notifications. + altNotifIpv6Addrs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + description: Alternate or backup IPv6 Address(es) where to send Notifications. + altNotifFqdns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + minItems: 1 + description: Alternate or backup FQDN(s) where to send Notifications. + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + description: Request Triggers that the NF service consumer observes. + praStatuses: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + description: > + Contains the UE presence status for tracking area for which changes of the UE presence + occurred. The praId attribute within the PresenceInfo data type is the key of the map. + minProperties: 1 + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uePolDelResult: + $ref: '#/components/schemas/UePolicyDeliveryResult' + uePolTransFailNotif: + $ref: '#/components/schemas/UePolicyTransferFailureNotification' + uePolReq: + $ref: '#/components/schemas/UePolicyRequest' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + servingNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + connectState: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmState' + groupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + proSeCapab: + type: array + items: + $ref: '#/components/schemas/ProSeCapability' + minItems: 1 + confSnssais: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/ConfiguredSnssai' + minItems: 1 + description: > + The Configured NSSAI for the serving PLMN, and the mapped S-NSSAI value of home + network corresponding to the configured S-NSSAI in the serving PLMN. + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + urspEnfRep: + type: object + additionalProperties: + $ref: '#/components/schemas/UrspEnforcementPduSession' + description: > + Contains information about the enforced URSP rule(s) in one or more PDU sessions. + The key of the map is a character string that represents an integer value. + minProperties: 1 + vpsUePolGuidance: + type: object + additionalProperties: + $ref: '#/components/schemas/UePolicyParameters' + minProperties: 1 + description: > + Contains the service parameter used to guide the VPLMN-specific URSP and may contain + the subscription to VPLMN-specific URSP delivery outcome. + The key of the map represents the AF request to guide VPLMN-specific URSP rules. + This attribute only applies in roaming and when the V-PCF is the NF service consumer. + lboRoamInfo: + type: array + items: + $ref: '#/components/schemas/LboRoamingInformation' + minItems: 1 + description: > + Contains LBO roaming information for DNN and S-NSSAI combination(s). + This attribute only applies in roaming and when the AMF is the NF service consumer. + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + accessStatus: + $ref: '#/components/schemas/AccessStatus' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + rangingSlCapab: + type: boolean + description: > + It indicates whether the PC5 Capability for Ranging/SL is supported by the UE or not. + "true": Indicates that the PC5 Capability for Ranging/SL is supported by the UE. + "false": Indicates that the PC5 Capability for Ranging/SL is not supported by the UE. + PolicyUpdate: + description: > + Represents updated policies that the PCF provides in a notification or in the reply to an + Update Request. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + uePolicy: + $ref: '#/components/schemas/UePolicy' + n2Pc5Pol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + n2Pc5PolA2x: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + n2Pc5ProSePol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + triggers: + type: array + items: + $ref: '#/components/schemas/RequestTrigger' + minItems: 1 + nullable: true + description: > + Request Triggers that the PCF subscribes. + pras: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + description: > + Contains the presence reporting area(s) for which reporting was requested. + The praId attribute within the PresenceInfo data type is the key of the map. + minProperties: 1 + nullable: true + andspDelInd: + type: boolean + description: > + Indication that the updated ANDSP/WLANSP has been successfully delivered to the UE. + delivReport: + type: object + additionalProperties: + $ref: '#/components/schemas/UePolicyNotification' + minProperties: 1 + description: > + Contains the delivery outcome of the VPLMN-specific URSP. + The key of the map represents the AF request of the corresponding subscription, i.e. its + value shall match the key that was previously provided by the V-PCF in the + vpsUePolGuidance attribute. + This attribute only applies in roaming and when the V-PCF is the NF service consumer. + pduSessions: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionInfo' + minItems: 1 + description: > + Combination of DNN and S-NSSAIs for which LBO information is requested. + nullable: true + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + n2Pc5RsppPol: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N2InfoContent' + required: + - resourceUri + + TerminationNotification: + description: > + Represents a request to terminate a policy association that the PCF provides in a + notification. + type: object + properties: + resourceUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + cause: + $ref: '#/components/schemas/PolicyAssociationReleaseCause' + required: + - resourceUri + - cause + + UePolicyTransferFailureNotification: + description: > + Represents information on the failure of a UE policy transfer to the UE because the UE is not + reachable. + type: object + properties: + cause: + $ref: 'TS29518_Namf_Communication.yaml#/components/schemas/N1N2MessageTransferCause' + ptis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + required: + - cause + - ptis + + UeRequestedValueRep: + description: > + Contains the current applicable values corresponding to the policy control request triggers. + type: object + properties: + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + praStatuses: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 1 + description: > + Contains the UE presence statuses for tracking areas. The praId attribute within the + PresenceInfo data type is the key of the map. + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + connectState: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmState' + confSnssais: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/ConfiguredSnssai' + minItems: 1 + description: > + The Configured NSSAI for the serving PLMN, and the mapped S-NSSAI value of home + network corresponding to the configured S-NSSAI in the serving PLMN. + satBackhaulCategory: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SatelliteBackhaulCategory' + urspEnfRep: + type: object + additionalProperties: + $ref: '#/components/schemas/UrspEnforcementPduSession' + description: > + Contains information about the enforced URSP rule(s) in one or more PDU sessions. + The key of the map is a character string that represents an integer value. + minProperties: 1 + lboRoamInfo: + type: array + items: + $ref: '#/components/schemas/LboRoamingInformation' + minItems: 1 + description: > + Contains LBO roaming information for DNN and S-NSSAI combination(s). + accessTypes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + minItems: 1 + UePolicyParameters: + description: > + Contains the service parameters used to guide the VPLMN-specific URSP rule determination. + type: object + properties: + urspGuidance: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/UrspRuleRequest' + minItems: 1 + description: > + Contains the service parameter used to guide the VPLMN-specific URSP. + deliveryEvents: + type: array + items: + $ref: 'TS29522_ServiceParameter.yaml#/components/schemas/Event' + minItems: 1 + description: > + AF subscribed event(s) notifications related to AF provisioned guidance + for VPLMN-specific URSP rules. + + LboRoamingInformation: + description: > + Contains LBO roaming information for a DNN and S-NSSAI. + type: object + properties: + lboRoamAllowed: + type: boolean + description: > + Indicates whether LBO for the DNN and S-NSSAI is allowed when roaming. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - dnn + - snssai + + UrspEnforcementPduSession: + description: > + Represents URSP rule enforcement information for a PDU session. + type: object + required: + - urspEnfInfo + properties: + urspEnfInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/UrspEnforcementInfo' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + ueReqDnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + redundantPduSessionInfo: + $ref: 'TS29502_Nsmf_PDUSession.yaml#/components/schemas/RedundantPduSessionInformation' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + pduSessInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/PduSessionInformation' + + UePolicyNotification: + description: > + Contains the delivery outcome of VPLMN-specific URSP rules. + type: object + properties: + eventNotifs: + type: array + items: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/PcEventNotification' + minItems: 1 + description: > + Represents the events to be reported according to the subscription to notifications + of VPLMN-specific URSP delivery outcome events. + + UePolicy: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + UePolicyDeliveryResult: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + UePolicyRequest: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + RequestTrigger: + anyOf: + - type: string + enum: + - LOC_CH + - PRA_CH + - UE_POLICY + - PLMN_CH + - CON_STATE_CH + - GROUP_ID_LIST_CHG + - UE_CAP_CH + - SAT_CATEGORY_CHG + - NON_3GPP_NODE_RESELECTION + - CONF_NSSAI_CH + - LBO_INFO_CH + - FEAT_RENEG + - URSP_ENF_INFO + - ACCESS_TYPE_CH + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the possible request triggers. + Possible values are: + - LOC_CH: Location change (tracking area). The tracking area of the UE has changed. + - PRA_CH: Change of UE presence in PRA. The AMF reports the current presence status + of the UE in a Presence Reporting Area, and notifies that the UE enters/leaves the + Presence Reporting Area. + - UE_POLICY: A MANAGE UE POLICY COMPLETE message or a MANAGE UE POLICY COMMAND REJECT + message, as defined in Annex D.5 of 3GPP TS 24.501 or a "UE POLICY PROVISIONING REQUEST" + message, as defined in clause 7.2.1.1 of 3GPP TS 24.587, has been received by the AMF + and is being forwarded. + - PLMN_CH: PLMN change. the serving PLMN of UE has changed. + - CON_STATE_CH: Connectivity state change: the connectivity state of UE has changed. + - GROUP_ID_LIST_CHG: UE Internal Group Identifier(s) has changed. This policy + control request + trigger does not require a subscription. + - UE_CAP_CH: UE Capabilities change: the UE provided 5G ProSe capabilities have changed. + This policy control request trigger does not require subscription. + - SAT_CATEGORY_CHG: Indicates that the AMF has detected a change between different satellite + category, or non-satellite backhaul. + - NON_3GPP_NODE_RESELECTION: The UE has connected to a wrong non-3GPP access node that + does not match its subscribed S-NSSAI(s). This policy control request trigger does not + require a subscription. + - CONF_NSSAI_CH: Configured NSSAI change. Indicates that the configured NSSAI has changed. + - LBO_INFO_CH: LBO information change. The AMF reports LBO roaming allowed or not allowed + for the requested DNN(s) and S-NSSAI(s). This policy control request trigger only applies + in roaming scenarios when the NF service consumer is the AMF. + - FEAT_RENEG: The NF service consumer notifies that the target AMF is requesting feature + re-negotiation. + - URSP_ENF_INFO: The V-PCF has received URSP rule enforcement information for one or more URSP + rules. This trigger applies in roaming scenarios and to the V-PCF. + - ACCESS_TYPE_CH: Access Type change. The registered access type has changed, an access type + is added or an access type is removed. + + PolicyAssociationReleaseCause: + anyOf: + - type: string + enum: + - UNSPECIFIED + - UE_SUBSCRIPTION + - INSUFFICIENT_RES + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the cause why the PCF requests the policy association termination. + Possible values are: + - UNSPECIFIED: This value is used for unspecified reasons. + - UE_SUBSCRIPTION: This value is used to indicate that the policy association needs to be + terminated because the subscription of UE has changed (e.g. was removed). + - INSUFFICIENT_RES: This value is used to indicate that the server is overloaded and needs + to abort the policy association. + + Pc5Capability: + anyOf: + - type: string + enum: + - LTE_PC5 + - NR_PC5 + - LTE_NR_PC5 + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the specific PC5 RAT(s) which the UE supports for V2X or A2X communications over + PC5 reference point. + Possible values are: + - LTE_PC5: This value is used to indicate that UE supports PC5 LTE RAT for V2X + communications or A2X communications over the PC5 reference point + + + over the PC5 reference point. + - NR_PC5: This value is used to indicate that UE supports PC5 NR RAT for V2X communications + or A2X communications over the PC5 reference point. + - LTE_NR_PC5: This value is used to indicate that UE supports both PC5 LTE and NR RAT for + V2X communications or A2X communications over the PC5 reference point. + + ProSeCapability: + anyOf: + - type: string + enum: + - PROSE_DD + - PROSE_DC + - PROSE_L2_U2N_RELAY + - PROSE_L3_U2N_RELAY + - PROSE_L2_REMOTE_UE + - PROSE_L3_REMOTE_UE + - PROSE_L2_U2U_RELAY + - PROSE_L3_U2U_RELAY + - PROSE_L2_END_UE + - PROSE_L3_END_UE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + the content defined in the present version of this API. + description: | + Represents the 5G ProSe capabilities. + Possible values are: + - PROSE_DD: This value is used to indicate that 5G ProSe Direct Discovery is supported + by the UE. + - PROSE_DC: This value is used to indicate that 5G ProSe Direct Communication is supported + by the UE. + - PROSE_L2_U2N_RELAY: This value is used to indicate that Layer-2 5G ProSe UE-to-Network + Relay is supported by the UE. + - PROSE_L3_U2N_RELAY: This value is used to indicate that Layer-3 5G ProSe UE-to-Network + Relay is supported by the UE. + - PROSE_L2_REMOTE_UE: This value is used to indicate that Layer-2 5G ProSe Remote UE is + supported by the UE. + - PROSE_L3_REMOTE_UE: This value is used to indicate that Layer-3 5G ProSe Remote UE is + supported by the UE. + - PROSE_L2_U2U_RELAY: This value is used to indicate that Layer-2 5G ProSe UE-to-UE + Relay is supported by the UE. + - PROSE_L3_U2U_RELAY: This value is used to indicate that Layer-3 5G ProSe UE-to-UE + Relay is supported by the UE. + - PROSE_L2_END_UE: This value is used to indicate that Layer-2 5G ProSe End UE is + supported by the UE. + - PROSE_L3_END_UE: This value is used to indicate that Layer-3 5G ProSe End UE is + supported by the UE. + + Non3gppAccess: + anyOf: + - type: string + enum: + - N3IWF + - TNGF + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents a non-3gpp access node. + Possible values are: + - N3IWF: Non-3gpp Interworking Function. + - TNGF: Trusted Non-3gpp Gateway Function. + + AccessStatus: + anyOf: + - type: string + enum: + - ADDITION + - REMOVAL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents whether the type of change is a replacement, addition or removal. + Possible values are: + - ADDITION: The type of change is an addition. + - REMOVAL: The type of change is a removal. diff --git a/TS29526_Nnssaaf_AIW.yaml b/TS29526_Nnssaaf_AIW.yaml new file mode 100644 index 0000000..fa9abb4 --- /dev/null +++ b/TS29526_Nnssaaf_AIW.yaml @@ -0,0 +1,228 @@ +openapi: 3.0.0 + +info: + title: Nnssaaf_AIW + version: 1.1.0-alpha.2 + description: | + AAA Interworking Authentication and Authorization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS29.526, NSSAA Service, version 18.3.0. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.526/ + +servers: + - url: '{apiRoot}/nnssaaf-aiw/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnssaaf-aiw + +paths: + /authentications: + post: + summary: Create authentication context + operationId: CreateAuthenticationContext + tags: + - Authentications (Collections) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthInfo' + required: true + responses: + '201': + description: AuthContext successfully created + content: + application/json: + schema: + $ref: '#/components/schemas/AuthContext' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nnssaaf-aiw//authentications/{authCtxId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + + /authentications/{authCtxId}: + put: + summary: Confirm the authentication result + operationId: ConfirmAuthentication + tags: + - Authentication (Document) + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthConfirmationData' + responses: + '200': + description: Request processed (EAP success or Failure) + content: + application/json: + schema: + $ref: '#/components/schemas/AuthConfirmationResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnssaaf-aiw: Access to the nnssaaf-aiw API + + schemas: + +# +# COMPLEX TYPES: +# + + AuthInfo: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + eapIdRsp: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + ttlsInnerMethodContainer: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + + AuthContext: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + authCtxId: + $ref: '#/components/schemas/AuthCtxId' + eapMessage: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + ttlsInnerMethodContainer: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + - authCtxId + + AuthConfirmationData: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + eapMessage: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + - eapMessage + + AuthConfirmationResponse: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + eapMessage: + $ref: 'TS29526_Nnssaaf_NSSAA.yaml#/components/schemas/EapMessage' + authResult: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AuthStatus' + pvsInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServerAddressingInfo' + minItems: 1 + msk: + $ref: 'TS29509_Nausf_UEAuthentication.yaml#/components/schemas/Msk' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + - eapMessage + +# +# SIMPLE TYPES: +# + + AuthCtxId: + type: string + description: contains the resource ID of authentication context + nullable: false + +# +# ENUMS: +# diff --git a/TS29526_Nnssaaf_NSSAA.yaml b/TS29526_Nnssaaf_NSSAA.yaml new file mode 100644 index 0000000..fc641c2 --- /dev/null +++ b/TS29526_Nnssaaf_NSSAA.yaml @@ -0,0 +1,422 @@ +openapi: 3.0.0 + +info: + title: Nnssaaf_NSSAA + version: 1.2.0-alpha.2 + description: | + Network Slice-Specific Authentication and Authorization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS29.526, NSSAA Service, version 18.3.0. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.526/ + +servers: + - url: '{apiRoot}/nnssaaf-nssaa/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnssaaf-nssaa + +paths: + /slice-authentications: + post: + summary: Create slice authentication context + operationId: CreateSliceAuthenticationContext + tags: + - Slice Authentication Context Creation + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthInfo' + required: true + responses: + '201': + description: SliceAuthContext + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthContext' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nnssaaf-nssaa//slice-authentications/{authCtxId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request from the AMF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden due to slice authentication rejected + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: User does not exist + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: Network error or remote peer error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + callbacks: + reauthenticationNotification: + '{request.body#/reauthNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthReauthNotification' + responses: + '204': + description: slice re-authentication notification response + '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' + 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' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + revocationNotification: + '{request.body#/revocNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthRevocNotification' + responses: + '204': + description: slice revocation notification response + '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' + 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' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /slice-authentications/{authCtxId}: + put: + summary: Confirm the slice authentication result + operationId: ConfirmSliceAuthentication + tags: + - Confirm Slice Authentication + parameters: + - name: authCtxId + in: path + required: true + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthConfirmationData' + responses: + '200': + description: Request processed (EAP success or Failure) + content: + application/json: + schema: + $ref: '#/components/schemas/SliceAuthConfirmationResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: Network error or remote peer error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnssaaf-nssaa: Access to the nnssaaf-nssaa API + + schemas: + + # + # COMPLEX TYPES: + # + + SliceAuthInfo: + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + eapIdRsp: + $ref: '#/components/schemas/EapMessage' + amfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + reauthNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + revocNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - gpsi + - snssai + - eapIdRsp + + SliceAuthContext: + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + authCtxId: + $ref: '#/components/schemas/SliceAuthCtxId' + eapMessage: + $ref: '#/components/schemas/EapMessage' + required: + - gpsi + - snssai + - authCtxId + - eapMessage + + SliceAuthConfirmationData: + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + eapMessage: + $ref: '#/components/schemas/EapMessage' + required: + - gpsi + - snssai + - eapMessage + + SliceAuthConfirmationResponse: + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + eapMessage: + $ref: '#/components/schemas/EapMessage' + authResult: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AuthStatus' + required: + - gpsi + - snssai + - eapMessage + + SliceAuthReauthNotification: + type: object + properties: + notifType: + $ref: '#/components/schemas/SliceAuthNotificationType' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - notifType + - gpsi + - snssai + + SliceAuthRevocNotification: + type: object + properties: + notifType: + $ref: '#/components/schemas/SliceAuthNotificationType' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - notifType + - gpsi + - snssai + + # + # SIMPLE TYPES: + # + + SliceAuthCtxId: + type: string + description: contains the resource ID of slice authentication context + nullable: false + + EapMessage: + type: string + format: byte + description: contains an EAP packet + nullable: true + + # + # ENUMS: + # + + SliceAuthNotificationType: + type: string + enum: + - SLICE_RE_AUTH + - SLICE_REVOCATION diff --git a/TS29531_Nnssf_NSSAIAvailability.yaml b/TS29531_Nnssf_NSSAIAvailability.yaml new file mode 100644 index 0000000..dc62a99 --- /dev/null +++ b/TS29531_Nnssf_NSSAIAvailability.yaml @@ -0,0 +1,758 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.5' + title: 'NSSF NSSAI Availability' + description: | + NSSF NSSAI Availability Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +security: + - {} + - oAuth2ClientCredentials: + - nnssf-nssaiavailability +servers: + - url: '{apiRoot}/nnssf-nssaiavailability/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +externalDocs: + description: 3GPP TS 29.531 V18.5.0; 5G System; Network Slice Selection Services; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.531/ +paths: + /nssai-availability/{nfId}: + put: + summary: Updates/replaces the NSSF with the S-NSSAIs the NF service consumer (e.g AMF)supports per TA + tags: + - NF Instance ID (Document) + operationId: NSSAIAvailabilityPut + parameters: + - name: nfId + in: path + description: Identifier of the NF service consumer instance + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Parameters to update/replace at the NSSF, the S-NSSAIs supported per TA + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NssaiAvailabilityInfo' + responses: + '200': + description: OK (Successful update of SNSSAI information per TA) + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedNssaiAvailabilityInfo' + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '204': + description: No Content (No supported slices after Successful update) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + patch: + summary: Updates an already existing S-NSSAIs per TA provided by the NF service consumer (e.g AMF) + tags: + - NF Instance ID (Document) + operationId: NSSAIAvailabilityPatch + parameters: + - name: nfId + in: path + description: Identifier of the NF service consumer instance + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: JSON Patch instructions to update at the NSSF, the S-NSSAIs supported per TA + required: true + content: + application/json-patch+json:: + schema: + $ref: '#/components/schemas/PatchDocument' + + responses: + '200': + description: OK (Successful update of SNSSAI information per TA) + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedNssaiAvailabilityInfo' + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '204': + description: No Content (No supported slices after Successful update) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + delete: + summary: Deletes an already existing S-NSSAIs per TA provided by the NF service consumer (e.g AMF) + tags: + - NF Instance ID (Document) + operationId: NSSAIAvailabilityDelete + parameters: + - name: nfId + in: path + description: Identifier of the NF service consumer instance + required: true + schema: + type: string + + responses: + '204': + description: No Content (Successful deletion of SNSSAI information per TA) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + default: + description: Unexpected error + + + /nssai-availability/subscriptions: + post: + summary: Creates subscriptions for notification about updates to NSSAI availability information + tags: + - Subscriptions (Collection) + operationId: NSSAIAvailabilityPost + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Subscription for notification about updates to NSSAI availability information + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NssfEventSubscriptionCreateData' + callbacks: + nssaiAvailabilityNotification: + '{request.body#/nfNssaiAvailabilityUri}': + post: + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NssfEventNotification' + responses: + '204': + description: No Content (successful notification) + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + responses: + '201': + description: Created (Successful creation of subscription for notification) + content: + application/json: + schema: + $ref: '#/components/schemas/NssfEventSubscriptionCreatedData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nnssf-nssaiavailability//nssai-availability/subscriptions/{subscriptionId} + required: true + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /nssai-availability/subscriptions/{subscriptionId}: + delete: + summary: Deletes an already existing NSSAI availability notification subscription + tags: + - Subscription ID (Document) + operationId: NSSAIAvailabilityUnsubscribe + parameters: + - name: subscriptionId + in: path + description: Identifier of the subscription for notification + required: true + schema: + type: string + + responses: + '204': + description: No Content (Successful deletion of subscription for NSSAI Availability notification) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + + default: + description: Unexpected error + + patch: + summary: updates an already existing NSSAI availability notification subscription + tags: + - Subscription ID (Document) + operationId: NSSAIAvailabilitySubModifyPatch + parameters: + - name: subscriptionId + in: path + description: Identifier of the subscription for notification + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: JSON Patch instructions to update at the NSSF, the NSSAI availability notification subscription + required: true + content: + application/json-patch+json:: + schema: + $ref: '#/components/schemas/PatchDocument' + + responses: + '200': + description: OK (Successful update of NSSAI availability notification subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/NssfEventSubscriptionCreatedData' + headers: + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /nssai-availability: + options: + summary: Discover communication options supported by NSSF for NSSAI Availability + operationId: NSSAIAvailabilityOptions + tags: + - NSSAI Availability Store + responses: + '200': + description: OK + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnssf-nssaiavailability: Access to the Nnssf_NSSAIAvailability API + + schemas: + NssaiAvailabilityInfo: + description: This contains the Nssai availability information requested by the AMF + type: object + required: + - supportedNssaiAvailabilityData + properties: + supportedNssaiAvailabilityData: + type: array + items: + $ref: '#/components/schemas/SupportedNssaiAvailabilityData' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + amfSetId: + type: string + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{2}-[0-3][A-Fa-f0-9]{2}$' + + SupportedNssaiAvailabilityData: + description: This contains the Nssai availability data information per TA supported by the AMF + type: object + required: + - tai + - supportedSnssaiList + properties: + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + supportedSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + nsagInfos: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsagInfo' + minItems: 1 + + AuthorizedNssaiAvailabilityData: + description: This contains the Nssai availability data information per TA authorized by the NSSF + type: object + required: + - tai + - supportedSnssaiList + properties: + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + supportedSnssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + restrictedSnssaiList: + type: array + items: + $ref: '#/components/schemas/RestrictedSnssai' + minItems: 1 + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + nsagInfos: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsagInfo' + minItems: 1 + + RestrictedSnssai: + description: This contains the restricted SNssai information per PLMN + type: object + required: + - homePlmnId + - sNssaiList + properties: + homePlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + sNssaiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtSnssai' + minItems: 1 + homePlmnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + roamingRestriction: + type: boolean + default: false + + AuthorizedNssaiAvailabilityInfo: + description: This contains the Nssai availability data information authorized by the NSSF + type: object + required: + - authorizedNssaiAvailabilityData + properties: + authorizedNssaiAvailabilityData: + type: array + items: + $ref: '#/components/schemas/AuthorizedNssaiAvailabilityData' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + NssfEventSubscriptionCreateData: + description: This contains the information for event subscription + type: object + required: + - nfNssaiAvailabilityUri + - event + properties: + nfNssaiAvailabilityUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + event: + $ref: '#/components/schemas/NssfEventType' + additionalEvents: + type: array + items: + $ref: '#/components/schemas/NssfEventType' + minItems: 1 + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + amfSetId: + type: string + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{2}-[0-3][A-Fa-f0-9]{2}$' + taiRangeList: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + allAmfSetTaiInd: + type: boolean + default: false + nsrpSubscribeInfo: + $ref: '#/components/schemas/SnssaiReplacementSubscribeInfo' + nsiunSubscribeInfo: + $ref: '#/components/schemas/NsiUnavailabilitySubscribeInfo' + + NssfEventSubscriptionCreatedData: + description: This contains the information for created event subscription + type: object + required: + - subscriptionId + properties: + subscriptionId: + type: string + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + authorizedNssaiAvailabilityData: + type: array + items: + $ref: '#/components/schemas/AuthorizedNssaiAvailabilityData' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + NssfEventNotification: + description: This contains the notification for created event subscription + type: object + required: + - subscriptionId + properties: + subscriptionId: + type: string + authorizedNssaiAvailabilityData: + type: array + items: + $ref: '#/components/schemas/AuthorizedNssaiAvailabilityData' + altNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SnssaiReplaceInfo' + minItems: 1 + description: > + Indicate the impacted S-NSSAIs, the current status for each reported S-NSSAI, and + if available the alternative S-NSSAI per impacted S-NSSAI for the S-NSSAIs that are + reported as being not available. + unavailableNsiList: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + minItems: 1 + + SnssaiReplacementSubscribeInfo: + description: Present if the NF service consumer subscribes to events related to Network Slice Replacement. + type: object + properties: + snssaiToSubscribe: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + required: + - snssaiToSubscribe + - nfType + - nfId + + NsiUnavailabilitySubscribeInfo: + description: Present if the NF service consumer subscribes to events related to Network Slice Instance Replacement. + type: object + properties: + nsiToSubscribe: + type: array + items: + $ref: 'TS29531_Nnssf_NSSelection.yaml#/components/schemas/NsiId' + snssaiToSubscribe: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + NssfEventType: + description: This contains the event for the subscription + anyOf: + - type: string + enum: + - SNSSAI_STATUS_CHANGE_REPORT + - SNSSAI_REPLACEMENT_REPORT + - NSI_UNAVAILABILITY_REPORT + - type: string + PatchDocument: + description: This contains the JSON Patch instructions for updating the Nssai availability data information at the NSSF + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 diff --git a/TS29531_Nnssf_NSSelection.yaml b/TS29531_Nnssf_NSSelection.yaml new file mode 100644 index 0000000..9636722 --- /dev/null +++ b/TS29531_Nnssf_NSSelection.yaml @@ -0,0 +1,427 @@ +openapi: 3.0.0 + +info: + version: '2.3.0-alpha.2' + title: 'NSSF NS Selection' + description: | + NSSF Network Slice Selection Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +security: + - {} + - oAuth2ClientCredentials: + - nnssf-nsselection +servers: + - url: '{apiRoot}/nnssf-nsselection/v2' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +externalDocs: + description: 3GPP TS 29.531 V18.2.0; 5G System; Network Slice Selection Services; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.531/ +paths: + /network-slice-information: + get: + summary: Retrieve the Network Slice Selection Information + tags: + - Network Slice Information (Document) + operationId: NSSelectionGet + parameters: + - name: nf-type + in: query + description: NF type of the NF service consumer + required: true + schema: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + - name: nf-id + in: query + description: NF Instance ID of the NF service consumer + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + - name: slice-info-request-for-registration + in: query + description: Requested network slice information during Registration procedure + content: + application/json: + schema: + $ref: '#/components/schemas/SliceInfoForRegistration' + - name: slice-info-request-for-pdu-session + in: query + description: Requested network slice information during PDU session establishment procedure + content: + application/json: + schema: + $ref: '#/components/schemas/SliceInfoForPDUSession' + - name: slice-info-request-for-ue-cu + in: query + description: Requested network slice information during UE confuguration update procedure + content: + application/json: + schema: + $ref: '#/components/schemas/SliceInfoForUEConfigurationUpdate' + - name: home-plmn-id + in: query + description: PLMN ID of the HPLMN + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + - name: tai + in: query + description: TAI of the UE + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + - name: supported-features + in: query + description: Features required to be supported by the NFs in the target slice instance + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + responses: + '200': + description: OK (Successful Network Slice Selection) + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizedNetworkSliceInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnssf-nsselection: Access to the Nnssf_NSSelection API + schemas: + AuthorizedNetworkSliceInfo: + description: Contains the authorized network slice information + type: object + properties: + allowedNssaiList: + type: array + items: + $ref: '#/components/schemas/AllowedNssai' + minItems: 1 + configuredNssai: + type: array + items: + $ref: '#/components/schemas/ConfiguredSnssai' + minItems: 1 + targetAmfSet: + type: string + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{2}-[0-3][A-Fa-f0-9]{2}$' + candidateAmfList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + minItems: 1 + rejectedNssaiInPlmn: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + rejectedNssaiInTa: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nsiInformation: + $ref: '#/components/schemas/NsiInformation' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + nrfAmfSet: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfAmfSetNfMgtUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfAmfSetAccessTokenUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfOauth2Required: + type: object + description: > + Map indicating whether the NRF requires Oauth2-based authorization for accessing + its services. The key of the map shall be the name of an NRF service, + e.g. "nnrf-nfm" or "nnrf-disc" + additionalProperties: + type: boolean + minProperties: 1 + targetAmfServiceSet: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfServiceSetId' + targetNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nsagInfos: + type: array + items: + $ref: '#/components/schemas/NsagInfo' + minItems: 1 + + SubscribedSnssai: + description: Contains the subscribed S-NSSAI + type: object + required: + - subscribedSnssai + properties: + subscribedSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + defaultIndication: + type: boolean + subscribedNsSrgList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsSrg' + minItems: 1 + + + AllowedSnssai: + description: > + Contains the authorized S-NSSAI and optional mapped home S-NSSAI and + network slice instance information + type: object + required: + - allowedSnssai + properties: + allowedSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nsiInformationList: + type: array + items: + $ref: '#/components/schemas/NsiInformation' + minItems: 1 + mappedHomeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + AllowedNssai: + description: > + Contains an array of allowed S-NSSAI that constitute the allowed NSSAI information + for the authorized network slice information + type: object + required: + - allowedSnssaiList + - accessType + properties: + allowedSnssaiList: + type: array + items: + $ref: '#/components/schemas/AllowedSnssai' + minItems: 1 + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + + NsiInformation: + description: > + Contains the API URIs of NRF services to be used to discover NFs/services, + subscribe to NF status changes and/or request access tokens within the selected + Network Slice instance and optional the Identifier of the selected Network Slice instance + type: object + required: + - nrfId + properties: + nrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nsiId: + $ref: '#/components/schemas/NsiId' + nrfNfMgtUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfAccessTokenUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nrfOauth2Required: + type: object + description: > + Map indicating whether the NRF requires Oauth2-based authorization for accessing + its services. The key of the map shall be the name of an NRF service, + e.g. "nnrf-nfm" or "nnrf-disc" + additionalProperties: + type: boolean + minProperties: 1 + + MappingOfSnssai: + description: Contains the mapping of S-NSSAI in the serving network and the value of the home network + type: object + required: + - servingSnssai + - homeSnssai + properties: + servingSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + homeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + + SliceInfoForRegistration: + description: Contains the slice information requested during a Registration procedure + type: object + properties: + subscribedNssai: + type: array + items: + $ref: '#/components/schemas/SubscribedSnssai' + minItems: 1 + allowedNssaiCurrentAccess: + $ref: '#/components/schemas/AllowedNssai' + allowedNssaiOtherAccess: + $ref: '#/components/schemas/AllowedNssai' + sNssaiForMapping: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + requestedNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + defaultConfiguredSnssaiInd: + type: boolean + default: false + mappingOfNssai: + type: array + items: + $ref: '#/components/schemas/MappingOfSnssai' + minItems: 1 + requestMapping: + type: boolean + ueSupNssrgInd: + type: boolean + suppressNssrgInd: + type: boolean + nsagSupported: + type: boolean + default: false + + SliceInfoForPDUSession: + description: Contains the slice information requested during PDU Session establishment procedure + type: object + required: + - sNssai + - roamingIndication + properties: + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + roamingIndication: + $ref: '#/components/schemas/RoamingIndication' + homeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + SliceInfoForUEConfigurationUpdate: + description: Contains the slice information requested during UE configuration update procedure + type: object + properties: + subscribedNssai: + type: array + items: + $ref: '#/components/schemas/SubscribedSnssai' + minItems: 1 + allowedNssaiCurrentAccess: + $ref: '#/components/schemas/AllowedNssai' + allowedNssaiOtherAccess: + $ref: '#/components/schemas/AllowedNssai' + defaultConfiguredSnssaiInd: + type: boolean + requestedNssai: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + mappingOfNssai: + type: array + items: + $ref: '#/components/schemas/MappingOfSnssai' + minItems: 1 + ueSupNssrgInd: + type: boolean + suppressNssrgInd: + type: boolean + rejectedNssaiRa: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + nsagSupported: + type: boolean + default: false + + ConfiguredSnssai: + description: Contains the configured S-NSSAI(s) authorized by the NSSF in the serving PLMN and optional mapped home S-NSSAI + type: object + required: + - configuredSnssai + properties: + configuredSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + mappedHomeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + + NsagInfo: + description: Contains the association of NSAGs and S-NSSAI(s) along with the TA(s) within which the association is valid. + type: object + required: + - nsagIds + - snssaiList + properties: + nsagIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsagId' + 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: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/TaiRange' + minItems: 1 + + RoamingIndication: + description: Contains the indication on roaming + anyOf: + - type: string + enum: + - NON_ROAMING + - LOCAL_BREAKOUT + - HOME_ROUTED_ROAMING + - type: string + NsiId: + description: Contains the Identifier of the selected Network Slice instance + type: string diff --git a/TS29532_Nmbsmf_MBSSession.yaml b/TS29532_Nmbsmf_MBSSession.yaml new file mode 100644 index 0000000..304a09e --- /dev/null +++ b/TS29532_Nmbsmf_MBSSession.yaml @@ -0,0 +1,1175 @@ +openapi: 3.0.0 + +info: + title: 'Nmbsmf-MBSSession' + version: 1.2.0-alpha.2 + description: | + MB-SMF MBSSession Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.532 V18.3.0; 5G System; 5G Multicast-Broadcast Session Management Services; + Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.532/ + +servers: + - url: '{apiRoot}/nmbsmf-mbssession/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + +paths: + /mbs-sessions: + post: + summary: Create + tags: + - MBS sessions collection + operationId: Create + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + requestBody: + description: > + Representation of the MBS session to be created in the MB-SMF + Creates an individual MBS session resource in the MB-SMF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateReqData' + responses: + '201': + description: > + Successful creation of an MBS session + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRspData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nmbsmf-mbssession//mbs-sessions/{mbsSessionRef}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/{mbsSessionRef}: + patch: + summary: Updates an individual MBS session resource in the MB-SMF. + tags: + - Individual MBS session + operationId: Update + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + parameters: + - name: mbsSessionRef + in: path + required: true + description: Unique ID of the MBS session to be modified + schema: + type: string + requestBody: + description: Data within the Update Request + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '204': + description: > + Successful modification of the MBS session without content in the response. + '200': + description: > + Successful modification of the MBS session with content in the response + content: + application/json: + schema: + $ref: '#/components/schemas/UpdateRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an individual MBS session resource in the MB-SMF. + tags: + - Individual MBS session + operationId: Release + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + parameters: + - name: mbsSessionRef + in: path + required: true + description: Unique ID of the MBS session to be released + schema: + type: string + responses: + '204': + description: > + Successful release of the MBS session without content in the response. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/contexts/update: + post: + summary: ContextUpdate + tags: + - MBS sessions collection + operationId: ContextUpdate + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-contexts + requestBody: + description: Data within the ContextUpdate Request + required: true + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/ContextUpdateReqData' + multipart/related: # message with binary body part + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/ContextUpdateReqData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + responses: + '200': + description: Successful response with content in the response + content: + application/json: # message without binary body part + schema: + $ref: '#/components/schemas/ContextUpdateRspData' + multipart/related: # message with binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/ContextUpdateRspData' + binaryDataN2Information: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataN2Information: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + '204': + description: Successful response without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/subscriptions: + post: + summary: StatusSubscribe creating a subscription + tags: + - Subscriptions collection for MBS sessions + operationId: StatusSubscribe + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + requestBody: + description: Data within the StatusSubscribe Request + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusSubscribeReqData' + responses: + '201': + description: Data within a successful StatusSubscribe Response + content: + application/json: + schema: + $ref: '#/components/schemas/StatusSubscribeRspData' + '204': + description: Successful response without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + callbacks: + statusNotification: + '{$request.body#/notifUri}': + post: + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Notification Content + content: + application/json: + schema: + $ref: '#/components/schemas/StatusNotifyReqData' + responses: + '204': + description: Expected response to a successful callback processing + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/subscriptions/{subscriptionId}: + patch: + summary: StatusSubscribe to modify (update or renew) an individual subscription + tags: + - Individual Subscription for an MBS session + operationId: StatusSubscribeMod + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the individual subscription to be modified + schema: + type: string + requestBody: + description: Data to be modified in the MBSSessionSubscription + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '200': + description: Successful modification of the individual Status Subscription + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: StatusUnSubscribe to unsubscribe from the Status Subscription + tags: + - Individual Subscription for an MBS session + operationId: StatusUnSubscribe + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-sessions + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be deleted + schema: + type: string + responses: + '204': + description: Successful deletion of the subscription + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/contexts/subscriptions: + post: + summary: ContextStatusSubscribe creating a subscription + tags: + - Subscriptions collection for MBS contexts + operationId: ContextStatusSubscribe + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-contexts + requestBody: + description: Data within the ContextStatusSubscribe Request + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ContextStatusSubscribeReqData' + responses: + '201': + description: successful creation of a Context Status Subscription + content: + application/json: + schema: + $ref: '#/components/schemas/ContextStatusSubscribeRspData' + '204': + description: Successful response without content in the response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + callbacks: + contextStatusNotification: + '{$request.body#/subscription/notifUri}': + post: + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Notification Content + content: + application/json: + schema: + $ref: '#/components/schemas/ContextStatusNotifyReqData' + responses: + '204': + description: Expected response to a successful callback processing + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-sessions/contexts/subscriptions/{subscriptionId}: + patch: + summary: ContextStatusSubscribe modifying an individual subscription + tags: + - Individual Subscription for an MBS context + operationId: ContextStatusSubscribeMod + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-contexts + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be modified + schema: + type: string + requestBody: + description: Data to be modified in the ContextStatusSubscription + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '200': + description: Successful modification of a Context Status Subscription + content: + application/json: + schema: + $ref: '#/components/schemas/ContextStatusSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: ContextStatusUnSubscribe + tags: + - Individual Subscription for an MBS context + operationId: ContextStatusUnSubscribe + security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - oAuth2ClientCredentials: + - nmbsmf-mbssession + - nmbsmf-mbssession:mbs-contexts + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be deleted + schema: + type: string + responses: + '204': + description: Successful deletion + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmbsmf-mbssession: Access to the Nmbsmf-MBSSession API + nmbsmf-mbssession:mbs-sessions: > + Access to service operations applying to MBS session resources, i.e. Create, Update, + Delete, StatusSubscribe, StatusUnsubscribe + nmbsmf-mbssession:mbs-contexts: > + Access to service operations applying to MBS session context resources, i.e. + ContextUpdate, ContextStatusSubscribe and ContextStatusUnsubscribe + + schemas: +# +# STRUCTURED DATA TYPES +# + CreateReqData: + description: Data within Create Request + type: object + properties: + mbsSession: + $ref: '#/components/schemas/ExtMbsSession' + required: + - mbsSession + + CreateRspData: + description: Data within Create Response + type: object + properties: + mbsSession: + $ref: '#/components/schemas/ExtMbsSession' + eventList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionEventReportList' + required: + - mbsSession + + ExtMbsSession: + description: MbsSession common data type with MB-SMF API specific extensions + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSession' + - $ref: '#/components/schemas/MbsSessionExtension' + + MbsSessionExtension: + description: MB-SMF API specific extensions to the MbsSession common data type + type: object + properties: + mbsSecurityContext: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSecurityContext' + contactPcfInd: + type: boolean + default: false + areaSessionPolicyId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionPolicyId' + + ContextUpdateReqData: + description: Data within ContextUpdate Request + type: object + properties: + nfcInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + requestedAction: + $ref: '#/components/schemas/ContextUpdateAction' + dlTunnelInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + n2MbsSmInfo: + $ref: '#/components/schemas/N2MbsSmInfo' + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + leaveInd: + type: boolean + enum: + - true + required: + - nfcInstanceId + - mbsSessionId + + ContextUpdateRspData: + description: Data within ContextUpdate Response + type: object + properties: + llSsm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ssm' + cTeid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + n2MbsSmInfo: + $ref: '#/components/schemas/N2MbsSmInfo' + + + ContextStatusSubscribeReqData: + description: Data within ContextStatusSubscribe Request + type: object + properties: + subscription: + $ref: '#/components/schemas/ContextStatusSubscription' + required: + - subscription + + ContextStatusSubscription: + description: Context Status Subscription + type: object + properties: + nfcInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + eventList: + type: array + items: + $ref: '#/components/schemas/ContextStatusEvent' + minItems: 1 + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + expiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - nfcInstanceId + - mbsSessionId + - eventList + - notifyUri + + ContextStatusEvent: + description: Context Status Event + type: object + properties: + eventType: + $ref: '#/components/schemas/ContextStatusEventType' + immediateReportInd: + type: boolean + default: false + reportingMode: + $ref: '#/components/schemas/ReportingMode' + required: + - eventType + + ContextStatusSubscribeRspData: + description: Data within ContextStatusSubscribe Response + type: object + properties: + subscription: + $ref: '#/components/schemas/ContextStatusSubscription' + reportList: + type: array + items: + $ref: '#/components/schemas/ContextStatusEventReport' + minItems: 1 + mbsContextInfo: + $ref: '#/components/schemas/MbsContextInfo' + required: + - subscription + + MbsContextInfo: + description: MBS context information + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + anyUeInd: + type: boolean + default: false + llSsm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ssm' + cTeid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + mbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + mbsServiceAreaInfoList: + description: > + A map (list of key-value pairs) where the key identifies an areaSessionId + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo' + minProperties: 1 + + + ContextStatusEventReport: + description: Context Status Event Report + type: object + properties: + eventType: + $ref: '#/components/schemas/ContextStatusEventType' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qosInfo: + $ref: '#/components/schemas/QosInfo' + statusInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionActivityStatus' + mbsServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + mbsServiceAreaInfoList: + description: > + A map (list of key-value pairs) where the key identifies an areaSessionId + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceAreaInfo' + minProperties: 1 + multicastTransAddInfo: + $ref: '#/components/schemas/MulticastTransportAddressChangeInfo' + mbsSecurityContext: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSecurityContext' + required: + - eventType + - timeStamp + + ContextStatusNotifyReqData: + description: Context Status Notification + type: object + properties: + reportList: + type: array + items: + $ref: '#/components/schemas/ContextStatusEventReport' + minItems: 1 + notifyCorrelationId: + type: string + required: + - reportList + + StatusSubscribeReqData: + description: Data within the StatusSubscribe Request + type: object + properties: + subscription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionSubscription' + required: + - subscription + + + StatusSubscribeRspData: + description: Data within StatusSubscribe Response + type: object + properties: + subscription: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionSubscription' + eventList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionEventReportList' + required: + - subscription + + + StatusNotifyReqData: + description: Status Notification + type: object + properties: + eventList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionEventReportList' + required: + - eventList + + + N2MbsSmInfo: + description: N2 MBS Session Management information + type: object + properties: + ngapIeType: + $ref: '#/components/schemas/NgapIeType' + ngapData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - ngapIeType + - ngapData + + MulticastTransportAddressChangeInfo: + description: Multicast Transport Address Change Information + type: object + properties: + llSsm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ssm' + cTeid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + areaSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AreaSessionId' + required: + - llSsm + - cTeid + + QosInfo: + description: QoS Information + type: object + properties: + qosFlowsAddModRequestList: + type: array + items: + $ref: '#/components/schemas/QosFlowAddModifyRequestItem' + minItems: 1 + qosFlowsRelRequestList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + minItems: 1 + + + QosFlowAddModifyRequestItem: + description: Individual MBS QoS flow requested to be created or modified + type: object + properties: + qfi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + qosFlowProfile: + $ref: '#/components/schemas/QosFlowProfile' + required: + - qfi + + QosFlowProfile: + description: MBS QoS flow profile + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + nonDynamic5Qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NonDynamic5Qi' + dynamic5Qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dynamic5Qi' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + gbrQosFlowInfo: + $ref: '#/components/schemas/GbrQosFlowInformation' + required: + - 5qi + + GbrQosFlowInformation: + description: GBR MBS QoS flow information + type: object + properties: + maxFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + guaFbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxPacketLossRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + required: + - maxFbrDl + - guaFbrDl + ExtProblemDetails: + description: Extended Problem Details data structure + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ProblemDetailsExtension' + + ProblemDetailsExtension: + description: Extensions to ProblemDetails + type: object + properties: + accMbsServiceInfo: + $ref: 'TS29537_Npcf_MBSPolicyAuthorization.yaml#/components/schemas/AcceptableMbsServInfo' + + UpdateRspData: + description: Data within Update Response + type: object + properties: + mbsSession: + $ref: '#/components/schemas/ExtMbsSession' + required: + - mbsSession + + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + ContextUpdateAction: + description: Start or Terminate MBS data reception + anyOf: + - type: string + enum: + - START + - TERMINATE + - type: string + + ContextStatusEventType: + description: Context Status Event Type + anyOf: + - type: string + enum: + - QOS_INFO + - STATUS_INFO + - SERVICE_AREA_INFO + - SESSION_RELEASE + - MULT_TRANS_ADD_CHANGE + - SECURITY_INFO + - type: string + + ReportingMode: + description: Reporting Mode + anyOf: + - type: string + enum: + - CONTINUOUS + - ONE_TIME + - type: string + + + NgapIeType: + description: NGAP Information Element Type + anyOf: + - type: string + enum: + - MBS_DIS_SETUP_REQ + - MBS_DIS_SETUP_RSP + - MBS_DIS_SETUP_FAIL + - MBS_DIS_REL_REQ + - type: string \ No newline at end of file diff --git a/TS29532_Nmbsmf_TMGI.yaml b/TS29532_Nmbsmf_TMGI.yaml new file mode 100644 index 0000000..21a8ade --- /dev/null +++ b/TS29532_Nmbsmf_TMGI.yaml @@ -0,0 +1,175 @@ +openapi: 3.0.0 + +info: + title: 'Nmbsmf_TMGI' + version: 1.0.1 + description: | + MB-SMF TMGI Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.532 V17.3.0; 5G System; 5G Multicast-Broadcast Session Management Services; + Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.532/ + +servers: + - url: '{apiRoot}/nmbsmf-tmgi/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nmbsmf-tmgi + +paths: + /tmgi: + post: + summary: Allocate TMGIs + tags: + - TMGI collection + operationId: AllocateTmgi + requestBody: + description: representation of the TMGIs to be created in the MB-SMF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TmgiAllocate' + responses: + '200': + description: successful allocation of TMGIs + content: + application/json: + schema: + $ref: '#/components/schemas/TmgiAllocated' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deallocate one or more TMGIs + operationId: TMGIDeallocate + tags: + - TMGI collection + parameters: + - name: tmgi-list + in: query + description: One of more TMGIs to be deallocated + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + minItems: 1 + responses: + '204': + description: successful deallocation of TMGIs + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmbsmf-tmgi: Access to the nmbsmf-tmgi API + + schemas: + # API specific definitions +# +# STRUCTURED DATA TYPES +# + TmgiAllocate: + description: Data within TMGI Allocate Request + type: object + properties: + tmgiNumber: + description: The number of requested TMGIs + type: integer + minimum: 1 + maximum: 255 + tmgiList: + description: The list of TMGIs to be refreshed + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + minItems: 1 + + TmgiAllocated: + description: Data within TMGI Allocate Response + type: object + properties: + tmgiList: + description: One or more TMGI values + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tmgi' + minItems: 1 + expirationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + nid: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Nid' + required: + - tmgiList + - expirationTime + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# diff --git a/TS29534_Npcf_AMPolicyAuthorization.yaml b/TS29534_Npcf_AMPolicyAuthorization.yaml new file mode 100644 index 0000000..a74ba05 --- /dev/null +++ b/TS29534_Npcf_AMPolicyAuthorization.yaml @@ -0,0 +1,767 @@ +openapi: 3.0.0 +# +info: + title: Npcf_AMPolicyAuthorization Service API + version: 1.1.0-alpha.2 + description: | + PCF Access and Mobility Policy Authorization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.534 V18.1.0; + 5G System; Access and Mobility Policy Authorization Service; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.534/' +# +servers: + - url: '{apiRoot}/npcf-am-policyauthorization/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +# +security: + - {} + - oAuth2ClientCredentials: + - npcf-am-policyauthorization +# +paths: + /app-am-contexts: + post: + summary: Creates a new Individual Application AM Context resource + operationId: PostAppAmContexts + tags: + - Application AM contexts (Collection) + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextData' + responses: + '201': + description: Successful creation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextRespData' + headers: + Location: + description: > + Contains the URI of the created individual application AM context resource, + according to the structure + {apiRoot}/npcf-am-policyauthorization//app-am-contexts/{appAmContextId} + or the URI of the created AM Policy events subscription subresource, + according to the structure + {apiRoot}/npcf-am-policyauthorization//app-am-contexts/{appAmContextId}/events-subscription} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + terminationRequest: + '{$request.body#/termNotifUri}': + post: + requestBody: + description: Request of the termination of the Individual Application AM Context. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmTerminationInfo' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + amEventNotification: + '{$request.body#/evSubsc/eventNotifUri}': + post: + requestBody: + description: Notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# + /app-am-contexts/{appAmContextId}: + get: + summary: "Reads an existing Individual Application AM Context" + operationId: GetAppAmContext + tags: + - Individual Application AM Context (Document) + parameters: + - name: appAmContextId + description: String identifying the resource. + in: path + required: true + schema: + type: string + responses: + '200': + description: A representation of the resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# + patch: + summary: "Modifies an existing Individual Application AM Context" + operationId: ModAppAmContext + tags: + - Individual Application AM Context (Document) + parameters: + - name: appAmContextId + description: String identifying the resource. + in: path + required: true + schema: + type: string + requestBody: + description: Modification of the resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AppAmContextUpdateData' + responses: + '200': + description: > + Successful modification of the resource and a representation of that resource is + returned. If a subscribed event is matched, the event notification is also included + in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/AppAmContextRespData' + '204': + description: The successful modification. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + amEventNotification: + '{$request.body#/evSubsc/eventNotifUri}': + post: + requestBody: + description: Notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# + delete: + summary: Deletes an existing Individual Application AM Context + operationId: DeleteAppAmContext + tags: + - Individual Application AM Context (Document) + parameters: + - name: appAmContextId + description: String identifying the Individual Application AM Context resource. + in: path + required: true + schema: + type: string + responses: + '204': + description: The deletion is confirmed without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# + /app-am-contexts/{appAmContextId}/events-subscription: + put: + summary: creates or modifies an AM Policy Events Subscription subresource. + operationId: updateAmEventsSubsc + tags: + - AM Policy Events Subscription (Document) + parameters: + - name: appAmContextId + description: String identifying the AM Policy Events Subscription subresource. + in: path + required: true + schema: + type: string + requestBody: + description: Creation or modification of an AM Policy Events Subscription subresource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsSubscData' + responses: + '201': + description: > + The creation of the AM Policy Events Subscription subresource is confirmed and its + representation is returned. If an AM Event is matched, the response also includes the + notification. + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsSubscRespData' + headers: + Location: + description: > + Contains the URI of the created AM Policy Events Subscription subresource, + according to the structure + {apiRoot}/npcf-am-policyauthorization//app-am-contexts/{appAmContextId}/events-subscription} + required: true + schema: + type: string + '200': + description: > + The modification of the AM Policy Events Subscription subresource is confirmed and + its representation is returned. If an AM Event is matched, the response also includes + the notification. + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsSubscRespData' + '204': + description: > + The modification of the AM Policy Events Subscription subresource is confirmed + without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + amEventNotification: + '{$request.body#/evSubsc/eventNotifUri}': + post: + requestBody: + description: > + Contains the information for the notification of an event occurrence in the PCF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AmEventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: deletes the AM Policy Events Subscription subresource + operationId: DeleteAmEventsSubsc + tags: + - AM Policy Events Subscription (Document) + parameters: + - name: appAmContextId + description: String identifying the Individual Application AM Context resource. + in: path + required: true + schema: + type: string + responses: + '204': + description: > + The deletion of the of the AM Policy Events Subscription subresource + is confirmed without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# +# +components: +# + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-am-policyauthorization: Access to the Npcf_AMPolicyAuthorization API +# + schemas: +# + AppAmContextData: + description: Represents an Individual Application AM Context resource. + type: object + required: + - supi + - termNotifUri + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + termNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + evSubsc: + $ref: '#/components/schemas/AmEventsSubscData' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + highThruInd: + type: boolean + description: Indicates whether high throughput is desired for the indicated UE traffic. + covReq: + type: array + description: > + Identifies a list of Tracking Areas per serving network where service is allowed. + items: + $ref: '#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + asTimeDisParam: + $ref: 'TS29507_Npcf_AMPolicyControl.yaml#/components/schemas/AsTimeDistributionParam' + anyOf: + - anyOf: + - required: [highThruInd] + - required: [covReq] + - required: [asTimeDisParam] + - required: [evSubsc] +# +# + AppAmContextUpdateData: + description: Describes the modifications to an Individual Application AM resource. + type: object + properties: + termNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + evSubsc: + $ref: '#/components/schemas/AmEventsSubscDataRm' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSecRm' + highThruInd: + description: Indicates whether high throughput is desired for the indicated UE traffic. + type: boolean + nullable: true + covReq: + type: array + description: > + Identifies a list of Tracking Areas per serving network where service is allowed. + items: + $ref: '#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + nullable: true + asTimeDisParam: + $ref: 'TS29507_Npcf_AMPolicyControl.yaml#/components/schemas/AsTimeDistributionParam' +# + AmEventsSubscData: + description: > + It represents the AM Policy Events Subscription subresource and identifies the events + the application subscribes to. + type: object + required: + - eventNotifUri + properties: + eventNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + events: + type: array + items: + $ref: '#/components/schemas/AmEventData' + minItems: 1 +# + AmEventsNotification: + description: > + Describes the notification about the events occurred within an Individual Application + AM Context resource. + type: object + required: + - repEvents + properties: + appAmContextId: + type: string + description: > + Contains the AM Policy Events Subscription resource identifier related to the event + notification. + repEvents: + type: array + items: + $ref: '#/components/schemas/AmEventNotification' + minItems: 1 +# + AmTerminationInfo: + description: > + Includes information related to the termination of the Individual Application AM + Context resource. + type: object + required: + - appAmContextId + - termCause + properties: + appAmContextId: + type: string + description: > + Contains the Individual application AM context resource identifier related to + the termination notification. + termCause: + $ref: '#/components/schemas/AmTerminationCause' +# + AmEventsSubscDataRm: + description: > + This data type is defined in the same way as the AmEventsSubscData but with the OpenAPI + nullable property set to true. + type: object + properties: + eventNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + events: + type: array + items: + $ref: '#/components/schemas/AmEventData' + minItems: 1 + nullable: true +# + AmEventData: + description: > + This data type contains the event identifier and the related event reporting information. + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/AmEvent' + immRep: + type: boolean + notifMethod: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + maxReportNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + monDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' +# + AmEventNotification: + description: Describes the notification of a subscription. + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/AmEvent' + appliedCov: + $ref: '#/components/schemas/ServiceAreaCoverageInfo' + pduidInfo: + $ref: '#/components/schemas/PduidInformation' +# + PduidInformation: + description: Contains the ProSe Discovery UE ID and its validity timer. + type: object + required: + - expiry + - pduid + properties: + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pduid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Pduid' +# + ServiceAreaCoverageInfo: + description: It represents a list of Tracking Areas within a serving network. + type: object + required: + - tacList + properties: + tacList: + type: array + description: Indicates a list of Tracking Areas where the service is allowed. + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tac' + servingNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' +# +# ENUMERATIONS DATA TYPES +# + AmTerminationCause: + description: > + It represents the cause values that the PCF should report when requesting from an NF + service consumer the deletion of an "AF application AM context" resource. + anyOf: + - type: string + enum: + - UE_DEREGISTERED + - UNSPECIFIED + - INSUFFICIENT_RESOURCES + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. +# + AmEvent: + anyOf: + - type: string + enum: + - SAC_CH + - PDUID_CH + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the PCF notification event to the NF service consumer. + Possible values are: + - SAC_CH: Service Area Coverage Change. + - PDUID_CH: The PDUID assigned to a UE for the UE ProSe Policies changed. +# +# + AppAmContextRespData: + description: It represents a response to a modification or creation request of an Individual Application AM resource. It may contain the notification of the already met events. + anyOf: + - $ref: '#/components/schemas/AppAmContextData' + - $ref: '#/components/schemas/AmEventsNotification' +# + AmEventsSubscRespData: + description: Identifies the events the application subscribes to within an AM Policy Events Subscription subresource data. It may contain the notification of the already met events. + anyOf: + - $ref: '#/components/schemas/AmEventsSubscData' + - $ref: '#/components/schemas/AmEventsNotification' +# diff --git a/TS29535_Naanf_AKMA.yaml b/TS29535_Naanf_AKMA.yaml new file mode 100644 index 0000000..191e5aa --- /dev/null +++ b/TS29535_Naanf_AKMA.yaml @@ -0,0 +1,238 @@ +openapi: 3.0.0 +info: + title: 3gpp-akma + version: 1.1.0-alpha.4 + description: | + API for Naanf_AKMA. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.535 V18.3.0; 5G System; AKMA Anchor Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.535/' + +security: + - {} + - oAuth2ClientCredentials: + - naanf-akma +servers: + - url: '{apiRoot}/naanf-akma/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + + +paths: + /register-anchorkey: + post: + summary: Store AKMA related key material. + operationId: RegisterAKMAKey + tags: + - Register the AKMA related key material + security: + - {} + - oAuth2ClientCredentials: + - naanf-akma + - oAuth2ClientCredentials: + - naanf-akma + - naanf-akma:anchorkey + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AkmaKeyInfo' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/AkmaKeyInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /retrieve-applicationkey: + post: + summary: Request to retrieve AKMA Application Key information. + operationId: GetAKMAAPPKeyMaterial + tags: + - Retrieve the AKMA Application key material (Collection) + security: + - {} + - oAuth2ClientCredentials: + - naanf-akma + - oAuth2ClientCredentials: + - naanf-akma + - naanf-akma:applicationkeyget + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29522_AKMA.yaml#/components/schemas/AkmaAfKeyRequest' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: 'TS29522_AKMA.yaml#/components/schemas/AkmaAfKeyData' + '204': + description: No Content (The requested AKMA Application material does not exist.) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /remove-context: + post: + summary: Request to remove the AKMA related key material. + operationId: RemoveContext + tags: + - Remove the AKMA Application key material (deletion) + security: + - {} + - oAuth2ClientCredentials: + - naanf-akma + - oAuth2ClientCredentials: + - naanf-akma + - naanf-akma:anchorkey + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CtxRemove' + responses: + '204': + description: No Content (The AKMA context for the UE has been removed successfully.) + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + naanf_akma: Access to the Naanf_AKMA API + naanf_akma:anchorkey: > + Access to service operations applying to store or remove the AKMA related key + material. + naanf_akma:applicationkeyget: > + Access to service operations applying to request the AKMA Application Key information + for the UE. + naanf-akma:applicationkeyget:supi-access: > + Return SUPI in the AKMA Application Key information for the UE. + + schemas: + AkmaKeyInfo: + description: Represents AKMA related key material. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + aKId: + $ref: 'TS29522_AKMA.yaml#/components/schemas/AKId' + kAkma: + type: string + required: + - aKId + - kAkma + oneOf: + - required: [supi] + - required: [gpsi] + + CtxRemove: + description: > + Parameters to request to delete the AKMA context for the UE, the "supi" attribute shall be + included. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' diff --git a/TS29536_Nnsacf_NSAC.yaml b/TS29536_Nnsacf_NSAC.yaml new file mode 100644 index 0000000..b4d626a --- /dev/null +++ b/TS29536_Nnsacf_NSAC.yaml @@ -0,0 +1,631 @@ +openapi: 3.0.0 + +info: + title: Nnsacf_NSAC + version: 1.1.0-alpha.4 + description: | + Nnsacf_NSAC Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.536 V18.4.0; 5G System; Network Slice Admission Control Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.536/ + +servers: + - url: '{apiRoot}/nnsacf-nsac/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnsacf-nsac + +paths: + /slices/ues: + post: + summary: Network Slice Admission Control on the Number of UEs + operationId: NumOfUEsUpdate + tags: + - slice collection + security: + - {} + - oAuth2ClientCredentials: + - nnsacf-nsac + - oAuth2ClientCredentials: + - nnsacf-nsac + - nnsacf-nsac:slice-ues + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeACRequestData' + required: true + responses: + '200': + description: Partial successful ACU operation + content: + application/json: + schema: + $ref: '#/components/schemas/UeACResponseData' + '204': + description: Successful ACU operation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Unsucessful ACU operation - Bad Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Unsuccessful ACU operation – Slice Not Subject to NSAC + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Unsuccessful ACU operation – Slice Not Found + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + callbacks: + eacNotification: + '{request.body#/eacNotificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EacNotification' + responses: + '204': + description: slice re-authentication notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /slices/pdus: + post: + summary: Network Slice Admission Control on the number of PDU Sessions + operationId: NumOfPDUsUpdate + tags: + - slice collection + security: + - {} + - oAuth2ClientCredentials: + - nnsacf-nsac + - oAuth2ClientCredentials: + - nnsacf-nsac + - nnsacf-nsac:slice-pdus + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/PduACRequestData' + required: true + responses: + '200': + description: Partial successful ACU operation + content: + application/json: + schema: + $ref: '#/components/schemas/PduACResponseData' + '204': + description: Successful ACU operation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Unsucessful ACU operation - Bad Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Unsuccessful ACU operation – Slice Not Subject to NSAC + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Unsuccessful ACU operation – Slice Not Found + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + + /slices/local-configs/update: + post: + summary: > + Network Slice Admission Control update of the local maximum number of registered UEs and/or + PDU sessions of the network slice at NSACF. + operationId: LocalNumberUpdate + tags: + - slice collection + security: + - {} + - oAuth2ClientCredentials: + - nnsacf-nsac + - oAuth2ClientCredentials: + - nnsacf-nsac + - nnsacf-nsac:local-configs-update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ACUpdateData' + required: true + responses: + '204': + description: Successful ACU operation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + + /slices/roaming-quotas/query: + post: + summary: > + Network Slice Admission Control fetching of the maximum number of registered UEs and/or + number of PDU sessions of the network slice at NSACF. + operationId: QuotaUpdate + tags: + - slice collection + security: + - {} + - oAuth2ClientCredentials: + - nnsacf-nsac + - oAuth2ClientCredentials: + - nnsacf-nsac + - nnsacf-nsac:roaming-quotas-query + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/QuotaUpdateRequestData' + required: true + responses: + '200': + description: Successful operation + content: + application/json: + schema: + $ref: '#/components/schemas/QuotaUpdateResponseData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnsacf-nsac: Access to the Nnsacf_NSAC API + nnsacf-nsac:slice-ues: > + Access to service operations applying to the collection of slice subject to NSAC for + UEs + nnsacf-nsac:slice-pdus: > + Access to service operations applying to the collection of slice subject to NSAC for + PDU sessions + nnsacf-nsac:local-configs-update: > + Access to the NSAC update of the local maximum number of registered UEs and/or + PDU sessions of the network slice at NSACF + + schemas: + + # + # STRUCTURED DATA TYPES: + # + + UeACRequestData: + type: object + properties: + ueACRequestInfo: + type: array + items: + $ref: '#/components/schemas/UeACRequestInfo' + minItems: 1 + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfType: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType' + eacNotificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nsacServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsacSai' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueACRequestInfo + - nfId + + UeACRequestInfo: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + acuOperationList: + type: array + items: + $ref: '#/components/schemas/AcuOperationItem' + minItems: 1 + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - supi + - anType + - acuOperationList + + UeACResponseData: + type: object + properties: + acuFailureList: + description: A map (list of key-value pairs) where the key of the map shall be UE's supi + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AcuFailureItem' + minItems: 1 + minProperties: 1 + ueAdmissionList: + type: array + items: + $ref: '#/components/schemas/UeAdmissionValue' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AcuOperationItem: + type: object + properties: + updateFlag: + $ref: '#/components/schemas/AcuFlag' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + ueRegInd: + type: boolean + enum: + - true + servingPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + nsacMode: + $ref: '#/components/schemas/NsacAdmissionMode' + required: + - updateFlag + - snssai + + AcuFailureItem: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + reason: + $ref: '#/components/schemas/AcuFailureReason' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + required: + - snssai + + EacNotification: + description: A map (list of key-value pairs) where Snssai converted to a string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/EACMode' + minProperties: 1 + + PduACRequestData: + type: object + properties: + pduACRequestInfo: + type: array + items: + $ref: '#/components/schemas/PduACRequestInfo' + minItems: 1 + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + pgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + nsacServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NsacSai' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - pduACRequestInfo + + PduACRequestInfo: + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + anType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + acuOperationList: + type: array + items: + $ref: '#/components/schemas/AcuOperationItem' + minItems: 1 + maxItems: 2 + additionalAnType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - supi + - anType + - pduSessionId + - acuOperationList + + PduACResponseData: + type: object + properties: + acuFailureList: + description: A map (list of key-value pairs) where the key of the map shall be UE's supi + type: object + additionalProperties: + type: array + items: + $ref: '#/components/schemas/AcuFailureItem' + minItems: 1 + maxItems: 2 + minProperties: 1 + pduAdmissionList: + type: array + items: + $ref: '#/components/schemas/PduAdmissionValue' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UeAdmissionValue: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + maxNumUes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ueAdmissionThreshold: + type: integer + minimum: 0 + maximum: 100 + required: + - snssai + + PduAdmissionValue: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + maxNumPdus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - snssai + - maxNumPdus + + ACUpdateData: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + maxUesNumber: + type: integer + maxPdusNumber: + type: integer + required: + - snssai + + QuotaUpdateRequestData: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + quotaType: + items: + $ref: '#/components/schemas/SliceQuotaType' + required: + - snssai + - plmnId + - quotaType + + QuotaUpdateResponseData: + type: object + properties: + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + maxUesNumber: + type: integer + maxPdusNumber: + type: integer + required: + - snssai + + + # + # SIMPLE DATA TYPES + # + + + # + # ENUMERATIONS + # + + EACMode: + anyOf: + - type: string + enum: + - ACTIVE + - DEACTIVE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + EAC mode. Possible values are + - ACTIVE + - DEACTIVE + + AcuFlag: + anyOf: + - type: string + enum: + - INCREASE + - DECREASE + - UPDATE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Update Flag of ACU operation. Possible values are + - INCREASE + - DECREASE + - UPDATE + + AcuFailureReason: + anyOf: + - type: string + enum: + - SLICE_NOT_FOUND + - EXCEED_MAX_UE_NUM + - EXCEED_MAX_UE_NUM_3GPP + - EXCEED_MAX_UE_NUM_N3GPP + - EXCEED_MAX_PDU_NUM + - EXCEED_MAX_PDU_NUM_3GPP + - EXCEED_MAX_PDU_NUM_N3GPP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Failure Reason of ACU operation to an S-NSSAI. Possible values are + - SLICE_NOT_FOUND + - EXCEED_MAX_UE_NUM + - EXCEED_MAX_UE_NUM_3GPP + - EXCEED_MAX_UE_NUM_N3GPP + - EXCEED_MAX_PDU_NUM + - EXCEED_MAX_PDU_NUM_3GPP + - EXCEED_MAX_PDU_NUM_N3GPP + + SliceQuotaType: + anyOf: + - type: string + enum: + - MAX_UE_NUM + - MAX_PDU_NUM + - BOTH + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Slice quota type. Possible values are + - MAX_UE_NUM + - MAX_PDU_NUM + - BOTH + + NsacAdmissionMode: + description: > + Indicates the NSAC admission mode applied in roaming case. + anyOf: + - type: string + enum: + - VPLMN_ADMISSION + - VPLMN_WITH_HPLMN_ASSISTANCE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + - VPLMN_ADMISSION + - VPLMN_WITH_HPLMN_ASSISTANCE + diff --git a/TS29536_Nnsacf_SliceEventExposure.yaml b/TS29536_Nnsacf_SliceEventExposure.yaml new file mode 100644 index 0000000..032e53b --- /dev/null +++ b/TS29536_Nnsacf_SliceEventExposure.yaml @@ -0,0 +1,445 @@ +openapi: 3.0.0 + +info: + title: Nnsacf_SliceEventExposure + version: 1.1.0-alpha.4 + description: | + Nnsacf_SliceEventExposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.536 V18.4.0; 5G System; Network Slice Admission Control Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.536/ + +servers: + - url: '{apiRoot}/nnsacf-slice-ee/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnsacf-slice-ee + +paths: + /subscriptions: + post: + summary: Nnsacf_SliceEventExposure Subscribe service Operation + tags: + - Subscriptions collection (Collection) + operationId: CreateSubscription + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SACEventSubscription' + required: true + responses: + '201': + description: Subsription Created + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nnsacf-slice-ee//subscriptions/{subscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedSACEventSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + eventReport: + '{$request.body#/subscription/eventNotifyUri}': + post: + summary: Event Notificaiton Delivery + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SACEventReport' + required: true + responses: + '204': + description: Successful acknowledgement + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /subscriptions/{subscriptionId}: + patch: + summary: Nnsacf_SliceEventExposure Subscribe partial modify service Operation + tags: + - Individual subscription (Document) + operationId: PartialModifySubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be modified + 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: Subsription modified successfully + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedSACEventSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + put: + summary: Nnsacf_SliceEventExposure Subscribe complete modify service Operation + tags: + - Individual subscription (Document) + operationId: CompleteModifySubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be modified + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SACEventSubscription' + required: true + responses: + '200': + description: Subsription modified successfully + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedSACEventSubscription' + '204': + description: Events subscription modification is accepted entirely + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: Nnsacf_SliceEventExposure Unsubscribe service Operation + tags: + - Individual subscription (Document) + operationId: DeleteSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be deleted + schema: + type: string + responses: + '204': + description: Subsription deleted successfully + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnsacf-slice-ee: Access to the Nnsacf_SliceEventExposure API + + schemas: + + # + # STRUCTURED DATA TYPES + # + + SACEventSubscription: + description: Request data to create the event subscription + type: object + required: + - event + - eventNotifyUri + - nfId + properties: + event: + $ref: '#/components/schemas/SACEvent' + eventNotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + notifyCorrelationId: + type: string + maxReports: + type: integer + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + mutingExcInstructions: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingNotSettings: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + CreatedSACEventSubscription: + description: Response data on created event subscription + type: object + required: + - subscription + - subscriptionId + properties: + subscription: + $ref: '#/components/schemas/SACEventSubscription' + subscriptionId: + type: string + report: + $ref: '#/components/schemas/SACEventReportItem' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SACEventReport: + description: Event notification + type: object + required: + - report + properties: + report: + $ref: '#/components/schemas/SACEventReportItem' + notifyCorrelationId: + type: string + + SACEvent: + description: Describes an event to be subscribed + type: object + required: + - eventType + - eventFilter + properties: + eventType: + $ref: '#/components/schemas/SACEventType' + eventTrigger: + $ref: '#/components/schemas/SACEventTrigger' + eventFilter: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + notificationPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + notifThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SACInfo' + immediateFlag: + type: boolean + default: false + varRepPeriodInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarRepPeriod' + minItems: 1 + + SACEventReportItem: + description: Represents a report triggered by a subscribed event type + type: object + required: + - eventType + - eventState + - timeStamp + - eventFilter + properties: + eventType: + $ref: '#/components/schemas/SACEventType' + eventState: + $ref: '#/components/schemas/SACEventState' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + eventFilter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + sliceStautsInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SACEventStatus' + + SACEventState: + description: Represents the state of a subscribed event + type: object + required: + - active + properties: + active: + type: boolean + remainReports: + type: integer + remainDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + # + # SIMPLE DATA TYPES + # + + + # + # ENUMERATIONS + # + + SACEventType: + description: Describes the supported event types + anyOf: + - type: string + enum: + - NUM_OF_REGD_UES + - NUM_OF_ESTD_PDU_SESSIONS + - type: string + + SACEventTrigger: + description: Describes how NSACF should generate the report for the event + anyOf: + - type: string + enum: + - THRESHOLD + - PERIODIC + - type: string + diff --git a/TS29537_Npcf_MBSPolicyAuthorization.yaml b/TS29537_Npcf_MBSPolicyAuthorization.yaml new file mode 100644 index 0000000..56645cf --- /dev/null +++ b/TS29537_Npcf_MBSPolicyAuthorization.yaml @@ -0,0 +1,285 @@ +openapi: 3.0.0 +info: + title: Npcf_MBSPolicyAuthorization API + version: 1.1.0-alpha.1 + description: | + MBS Policy Authorization Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.537 V18.0.0; 5G System; Multicast/Broadcast Policy Control Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.537/' + +security: + - {} + - oAuth2ClientCredentials: + - npcf-mbspolicyauth + +servers: + - url: '{apiRoot}/npcf-mbspolicyauth/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 4.4 of 3GPP TS 29.501. + +paths: + /contexts: + post: + summary: Request the creation of a new Individual MBS Application Session Context resource. + operationId: CreateMBSAppSessionCtxt + tags: + - MBS Application Session Contexts (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsAppSessionCtxt' + responses: + '201': + description: > + Created. An Individual MBS Application Session Context resource is successfully created + and a representation of the created resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsAppSessionCtxt' + headers: + Location: + description: > + Contains the URI of the newly created Individual MBS Application Session Context + resource. + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/MbsExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /contexts/{contextId}: + parameters: + - name: contextId + in: path + description: > + Contains the identifier of the Individual MBS Application Session Context resource. + required: true + schema: + type: string + + get: + summary: Read an existing Individual MBS Application Session Context resource. + operationId: GetMBSAppSessionCtxt + tags: + - Individual MBS Application Session Context (Document) + responses: + '200': + description: > + OK. The requested Individual MBS Application Session Context resource is successfully + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsAppSessionCtxt' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS Application Session Context resource. + operationId: ModifyMBSAppSessionCtxt + tags: + - Individual MBS Application Session Context (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MbsAppSessionCtxtPatch' + responses: + '200': + description: > + OK. The requested Individual MBS Application Session Context resource is successfully + modified and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsAppSessionCtxt' + '204': + description: > + No Content. The corresponding Individual MBS Application Session Context resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: '#/components/schemas/MbsExtProblemDetails' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS Application Session Context resource. + operationId: DeleteMBSAppSessionCtxt + tags: + - Individual MBS Application Session Context (Document) + responses: + '204': + description: > + No Content. The corresponding Individual MBS Application Session Context resource is + successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-mbspolicyauth: Access to the Npcf_MBSPolicyAuthorization API + + schemas: + MbsAppSessionCtxt: + description: > + Represents the parameter of an MBS Application Session Context. + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + mbsServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + contactPcfInd: + type: boolean + default: false + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsSessionId + + MbsAppSessionCtxtPatch: + description: > + Represents the modifications to an existing MBS Application Session Context resource. + type: object + properties: + mbsServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + + AcceptableMbsServInfo: + description: > + Contains the MBS Service Information that can be accepted by the PCF. + type: object + properties: + accMbsServInfo: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsMediaComp' + minProperties: 1 + accMaxMbsBw: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + oneOf: + - required: [accMbsServInfo] + - required: [accMaxMbsBw] + +# Data types describing alternative data types or combinations of data types: + + MbsExtProblemDetails: + description: Identifies the MBS related extensions to the ProblemDetails data structure. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AcceptableMbsServInfo' diff --git a/TS29537_Npcf_MBSPolicyControl.yaml b/TS29537_Npcf_MBSPolicyControl.yaml new file mode 100644 index 0000000..8796d2d --- /dev/null +++ b/TS29537_Npcf_MBSPolicyControl.yaml @@ -0,0 +1,510 @@ +openapi: 3.0.0 + +info: + title: Npcf_MBSPolicyControl API + version: 1.1.0-alpha.2 + description: | + MBS Policy Control Service + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.537 V18.1.0; 5G System; Multicast/Broadcast Policy Control Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.537/' + +security: + - {} + - oAuth2ClientCredentials: + - npcf-mbspolicycontrol + +servers: + - url: '{apiRoot}/npcf-mbspolicycontrol/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /mbs-policies: + post: + summary: Request the creation of a new MBS Policy Association. + operationId: CreateMBSPolicy + tags: + - MBS Policies (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPolicyCtxtData' + responses: + '201': + description: > + Created. An Individual MBS Policy resource is successfully created. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPolicyData' + headers: + Location: + description: > + Contains the URI of the newly created Individual MBS Policy resource. + required: true + schema: + type: string + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: 'TS29537_Npcf_MBSPolicyAuthorization.yaml#/components/schemas/MbsExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-policies/{mbsPolicyId}: + parameters: + - name: mbsPolicyId + in: path + description: > + Contains the identifier of the concerned Individual MBS Policy resource. + required: true + schema: + type: string + + get: + summary: Read an Individual MBS Policy resource. + operationId: GetIndMBSPolicy + tags: + - Individual MBS Policy (Document) + responses: + '200': + description: > + OK. The requested Individual MBS Policy resource is successfully returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPolicyData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an existing Individual MBS Policy resource. + operationId: DeleteIndMBSPolicy + tags: + - Individual MBS Policy (Document) + parameters: + - name: mbsPolicyId + in: path + description: > + Contains the identifier of the concerned Individual MBS Policy resource. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The concerned Individual MBS Policy resource is successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mbs-policies/{mbsPolicyId}/update: + post: + summary: Request the update of an existing MBS Policy Association. + operationId: UpdateIndMBSPolicy + tags: + - Individual MBS Policy (Document) + parameters: + - name: mbsPolicyId + in: path + description: > + Contains the identifier of the concerned Individual MBS Policy resource. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPolicyCtxtDataUpdate' + responses: + '200': + description: > + OK. The targeted Individual MBS Policy resource is successfully updated. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsPolicyData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden. + content: + application/problem+json: + schema: + $ref: 'TS29537_Npcf_MBSPolicyAuthorization.yaml#/components/schemas/MbsExtProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-mbspolicycontrol: Access to the Npcf_MBSPolicyControl API + + schemas: + MbsPolicyCtxtData: + description: > + Contains the parameters used to request the creation of an MBS Policy + Association. + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + mbsServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsSessionId + + MbsPolicyDecision: + description: > + Represents the parameters constituting an MBS Policy Decision. + type: object + properties: + mbsPccRules: + type: object + additionalProperties: + $ref: '#/components/schemas/MbsPccRule' + minProperties: 1 + description: > + A map of MBS PCC rule(s) with each map entry containing the MbsPccRule data structure. + The key of the map for each entry is the mbsPccRuleId attribute of the corresponding + MbsPccRule data structure. + nullable: true + mbsQosDecs: + type: object + additionalProperties: + $ref: '#/components/schemas/MbsQosDec' + minProperties: 1 + description: > + A map of MBS QoS Decision(s) with each map entry containing the MbsQosDec data structure. + The key of the map for each entry is the mbsQosId attribute of the corresponding + MbsQosDec data structure. + mbsQosChars: + type: object + additionalProperties: + $ref: '#/components/schemas/MbsQosChar' + minProperties: 1 + description: > + A map of MBS QoS Characteristics set(s) with each map entry containing the MbsQosChar data + structure. The key of the map for each entry is the 5QI attribute of the corresponding + MbsQosDec data structure. + authMbsSessAmbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + mbsPcrts: + type: array + items: + $ref: '#/components/schemas/MbsPcrt' + minItems: 1 + nullable: true + + MbsPolicyData: + description: > + Contains the MBS policy data provisioned as part of an MBS Policy Association. + type: object + properties: + mbsPolicyCtxtData: + $ref: '#/components/schemas/MbsPolicyCtxtData' + mbsPolicies: + $ref: '#/components/schemas/MbsPolicyDecision' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsPolicyCtxtData + + MbsPccRule: + description: Represents the parameters constituting an MBS PCC rule. + type: object + properties: + mbsPccRuleId: + type: string + mbsDlIpFlowInfo: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowDescription' + minItems: 1 + precedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + refMbsQosDec: + type: array + items: + type: string + minItems: 1 + maxItems: 1 + required: + - mbsPccRuleId + + MbsQosDec: + description: Represents the parameters constituting an MBS QoS Decision. + type: object + properties: + mbsQosId: + type: string + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + mbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + arp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Arp' + averWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + mbsMaxDataBurstVol: + $ref: '#/components/schemas/MbsMaxDataBurstVol' + required: + - mbsQosId + + MbsQosChar: + description: > + Represents the parameters constituting a set of explicitly signalled QoS characteristics. + type: object + properties: + 5qi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5Qi' + priorityLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + resourceType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/QosResourceType' + packetDelayBudget: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + packetErrorRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + averWindow: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + mbsMaxDataBurstVol: + $ref: '#/components/schemas/MbsMaxDataBurstVol' + required: + - 5qi + - resourceType + - priorityLevel + - packetDelayBudget + - packetErrorRate + - mbsMaxDataBurstVol + + MbsPolicyCtxtDataUpdate: + description: > + Contains the parameters to request the modification of an existing MBS Policy Association. + type: object + properties: + mbsServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + mbsPcrts: + type: array + items: + $ref: '#/components/schemas/MbsPcrt' + minItems: 1 + mbsErrorReport: + $ref: '#/components/schemas/MbsErrorReport' + + MbsErrorReport: + description: > + Represents the reporting of MBS Policy decision level failure(s) and/or MBS PCC rule level + failure(s). + type: object + properties: + mbsReports: + type: array + items: + $ref: '#/components/schemas/MbsReport' + minItems: 1 + + MbsReport: + description: > + Contains information about the MBS Policy Decision level failure(s) and/or the MBS PCC + rule level failure(s). + type: object + properties: + mbsPccRuleIds: + type: array + items: + type: string + minItems: 1 + mbsPccRuleStatus: + $ref: '#/components/schemas/MbsPccRuleStatus' + failureCode: + $ref: '#/components/schemas/MbsFailureCode' + +# Simple data types: + + MbsMaxDataBurstVol: + description: Represents the MBS Maximum Data Burst Volume expressed in Bytes. + type: integer + minimum: 1 + maximum: 2000000 + +# ENUMS: + + MbsPcrt: + anyOf: + - type: string + enum: + - MBS_SESSION_UPDATE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the MBS Policy Control Request Trigger. + Possible values are: + - MBS_SESSION_UPDATE: Indicates the MBS Session Update policy control request trigger. + + MbsPccRuleStatus: + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the MBS PCC rule status. + Possible values are: + - ACTIVE: Indicates that the MBS PCC rule(s) are successfully installed. + - INACTIVE: Indicates that the MBS PCC rule(s) are removed. + + MbsFailureCode: + anyOf: + - type: string + enum: + - NF_MALFUNCTION + - NF_RESOURCES_UNAVAILABLE + - RESOURCE_ALLOCATION_FAILURE + - MBS_QOS_VALIDATION_FAILURE + - NO_MBS_QOS_FLOW + - MBS_QOS_DECISION_ERROR + - MBS_POLICY_PARAM_ERROR + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the reason for the MBS Policy Decision(s) enforcement failure or + the MBS PCC rule(s) installation failure. + Possible values are: + - NF_MALFUNCTION: Indicates that the MBS PCC rule could not be successfully installed due + to MB-SMF/MB-UPF malfunction. + - NF_RESOURCES_UNAVAILABLE: Indicates that the MBS PCC rule could not be successfully + installed due to resources unavailable at the MB-SMF/MB-UPF. + - RESOURCE_ALLOCATION_FAILURE: Indicates that the MBS PCC rule could not be successfully + installed or maintained since the associated MBS QoS flow establishment/modification + failed or the associated MBS QoS flow was released. + - MBS_QOS_VALIDATION_FAILURE: Indicates that MBS QoS validation has failed. + - NO_MBS_QOS_FLOW: Indicates that there is no MBS QoS flow to which the MB-SMF can bind + the MBS PCC rule(s). + - MBS_QOS_DECISION_ERROR: Indicates failure in the provisioning of MBS QoS Decision data. + - MBS_POLICY_PARAM_ERROR: Indicates that the information related to the provisioned MBS + policy parameter(s) is incorrect, incomplete or inconsistent. diff --git a/TS29538_MSGG_BGDelivery.yaml b/TS29538_MSGG_BGDelivery.yaml new file mode 100644 index 0000000..3b1917f --- /dev/null +++ b/TS29538_MSGG_BGDelivery.yaml @@ -0,0 +1,100 @@ +openapi: 3.0.0 + +info: + title: MSGG_BGDelivery + version: 1.0.0-alpha.2 + description: | + API for Broadcast Message Delivery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.538 V18.4.0; Enabling MSGin5G Service; Application Programming Interfaces (API) + specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.538/ + +servers: + - url: '{apiRoot}/msgg-bgdelivery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /deliver-message: + post: + summary: deliver message to Broadcast Message Gateway + tags: + - Broadcast Message delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BgMessageDelivery' + responses: + '204': + description: No Content, Message delivery successful + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + schemas: +# +# STRUCTURED DATA TYPES +# + BgMessageDelivery: + description: Broadcast message delivery data + type: object + required: + - oriAddr + - destAddr + - msgId + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + destAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + appId: + type: string + msgId: + type: string + delivStReqInd: + type: boolean + payload: + type: string \ No newline at end of file diff --git a/TS29538_MSGG_L3GDelivery.yaml b/TS29538_MSGG_L3GDelivery.yaml new file mode 100644 index 0000000..048f69f --- /dev/null +++ b/TS29538_MSGG_L3GDelivery.yaml @@ -0,0 +1,187 @@ +openapi: 3.0.0 +info: + title: MSGG_L3GDelivery + version: 1.1.0-alpha.2 + description: | + API for MSGG L3G Message Delivery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.538 V18.4.0; Enabling MSGin5G Service; Application Programming Interfaces (API) + specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.538/ + +servers: + - url: '{apiRoot}/msgg-l3gdelivery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + + +paths: + /deliver-message: + post: + summary: deliver message to Legacy 3GPP Message Gateway + tags: + - L3G Message delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/L3gMessageDelivery' + responses: + '204': + description: No Content, Message delivery successful + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /deliver-report: + post: + summary: deliver status report to Legacy 3GPP Message Gateway + tags: + - L3G status report delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29538_MSGS_MSGDelivery.yaml#/components/schemas/DeliveryStatusReport' + responses: + '204': + description: No Content, status report delivery successfully + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + + schemas: +# +# STRUCTURED DATA TYPES +# + L3gMessageDelivery: + description: Contains the L3G message delivery data + type: object + required: + - oriAddr + - destAddr + - msgId + properties: + oriAddr: + $ref: '#/components/schemas/Address' + destAddr: + $ref: '#/components/schemas/Address' + appId: + type: string + msgId: + type: string + delivStReqInd: + type: boolean + payload: + type: string + segInd: + type: boolean + segParams: + $ref: 'TS29538_MSGS_MSGDelivery.yaml#/components/schemas/MessageSegmentParameters' + + + Address: + description: Contains the Message type data + type: object + required: + - addrType + - addr + properties: + addrType: + $ref: '#/components/schemas/AddressType' + addr: + type: string + + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + AddressType: + anyOf: + - type: string + enum: + - UE + - AS + - GROUP + - BC + - TOPIC + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represent the type of message request. + Possible values are: + - UE: The address type is UE. + - AS: The address type is AS. + - GROUP: The address type is GROUP. + - BC: The address type is BC. + - TOPIC: The address type is TOPIC. diff --git a/TS29538_MSGG_N3GDelivery.yaml b/TS29538_MSGG_N3GDelivery.yaml new file mode 100644 index 0000000..dc32b87 --- /dev/null +++ b/TS29538_MSGG_N3GDelivery.yaml @@ -0,0 +1,141 @@ +openapi: 3.0.0 +info: + title: MSGG_N3GDelivery + version: 1.1.0-alpha.1 + description: | + API for MSGG N3G Message Delivery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.538 V18.4.0; Enabling MSGin5G Service; Application Programming Interfaces (API) + specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.538/ + +servers: + - url: '{apiRoot}/msgg-n3gdelivery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /deliver-message: + post: + summary: deliver message to NON-3GPP Message Gateway + tags: + - N3G Message delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/N3gMessageDelivery' + responses: + '204': + description: No Content,Message delivery successful + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /deliver-report: + post: + summary: deliver status report to NON-3GPP Message Gateway + tags: + - N3G status report delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29538_MSGS_MSGDelivery.yaml#/components/schemas/DeliveryStatusReport' + responses: + '204': + description: No Content, status report delivery successfully + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + + schemas: +# +# STRUCTURED DATA TYPES +# + N3gMessageDelivery: + description: N3G message delivery data + type: object + required: + - oriAddr + - destAddr + - msgId + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + destAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + appId: + type: string + msgId: + type: string + delivStReqInd: + type: boolean + payload: + type: string + segInd: + type: boolean + segParams: + $ref: 'TS29538_MSGS_MSGDelivery.yaml#/components/schemas/MessageSegmentParameters' diff --git a/TS29538_MSGS_ASRegistration.yaml b/TS29538_MSGS_ASRegistration.yaml new file mode 100644 index 0000000..7a43ea1 --- /dev/null +++ b/TS29538_MSGS_ASRegistration.yaml @@ -0,0 +1,179 @@ +openapi: 3.0.0 +info: + title: MSGS_ASRegistration + version: 1.1.0-alpha.2 + description: | + API for MSGS AS Registration Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.538 V18.4.0; Enabling MSGin5G Service; Application Programming Interfaces (API) + specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.538/ + +servers: + - url: '{apiRoot}/msgs-asregistration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + + +paths: + /registrations: + post: + summary: Registers a new AS at a MSGin5G Server + tags: + - AS registration + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ASRegistration' + responses: + '201': + description: AS information is registered successfully at MSGin5G Server + content: + application/json: + schema: + $ref: '#/components/schemas/ASRegistrationAck' + headers: + Location: + description: 'Contains the URI of the newly created resource' + 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' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + delete: + summary: Delete an existing AS registration at MSGin5G Server + tags: + - AS DeRegistration + parameters: + - name: registrationId + in: path + description: AS registration Id + required: true + schema: + type: string + responses: + '200': + description: The individual AS registration is deleted successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/ASRegistrationAck' + '204': + description: > + No Content. The individual AS registration resource is deleted successfully. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + schemas: +# +# STRUCTURED DATA TYPES +# + ASRegistration: + description: AS registration data + type: object + required: + - asSvcId + properties: + asSvcId: + type: string + appId: + type: string + targetUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + asProf: + $ref: '#/components/schemas/ASProfile' + + ASRegistrationAck: + description: AS registration response data + type: object + required: + - asSvcId + - result + properties: + asSvcId: + type: string + result: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + + + ASProfile: + description: AS profile information + type: object + properties: + appName: + type: string + appProviders: + type: array + items: + type: string + minItems: 1 + description: The provider of the AS. + appSenarios: + type: array + items: + type: string + minItems: 1 + description: The application scenario. + appCategory: + type: string + asStatus: + type: string diff --git a/TS29538_MSGS_MSGDelivery.yaml b/TS29538_MSGS_MSGDelivery.yaml new file mode 100644 index 0000000..dfd2751 --- /dev/null +++ b/TS29538_MSGS_MSGDelivery.yaml @@ -0,0 +1,346 @@ +openapi: 3.0.0 +info: + title: MSGS_MSGDelivery + version: 1.1.0-alpha.3 + description: | + API for MSGG MSGin5G Server Message Delivery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.538 V18.4.0; Enabling MSGin5G Service; Application Programming Interfaces (API) + specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.538/ + +servers: + - url: '{apiRoot}/msgs-msgdelivery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + + +paths: + /deliver-as-message: + post: + summary: AS deliver message to MSGin5G Server + tags: + - AS Message delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ASMessageDelivery' + responses: + '200': + description: OK, AS Message delivery successful + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliveryAck' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /deliver-ue-message: + post: + summary: UE deliver message to MSGin5G Server + tags: + - UE Message delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UEMessageDelivery' + responses: + '200': + description: OK, UE Message delivery successful + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliveryAck' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /deliver-report: + post: + summary: AS or UE deliver status report to MSGin5G Server + tags: + - AS/UE status report delivery + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeliveryStatusReport' + responses: + '200': + description: OK, status report delivery successfully + content: + application/json: + schema: + $ref: '#/components/schemas/MessageDeliveryAck' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29571_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + + schemas: +# +# STRUCTURED DATA TYPES +# + ASMessageDelivery: + description: Contains the AS message delivery data + type: object + required: + - oriAddr + - destAddr + - msgId + - stoAndFwInd + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + destAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + appId: + type: string + msgId: + type: string + delivStReqInd: + type: boolean + payload: + type: string + priority: + $ref: '#/components/schemas/Priority' + segInd: + type: boolean + segParams: + $ref: '#/components/schemas/MessageSegmentParameters' + stoAndFwInd: + type: boolean + stoAndFwParams: + $ref: '#/components/schemas/StoreAndForwardParameters' + latency: + type: integer + + UEMessageDelivery: + description: Contains the UE message delivery data + type: object + required: + - oriAddr + - destAddr + - msgId + - stoAndFwInd + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + destAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + appId: + type: string + msgId: + type: string + delivStReqInd: + type: boolean + payload: + type: string + segInd: + type: boolean + segParams: + $ref: '#/components/schemas/MessageSegmentParameters' + stoAndFwInd: + type: boolean + stoAndFwParams: + $ref: '#/components/schemas/StoreAndForwardParameters' + + MessageDeliveryAck: + description: Contains the message delivery ack data + type: object + required: + - oriAddr + - msgId + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + msgId: + type: string + status: + $ref: '#/components/schemas/DeliveryStatus' + failureCause: + type: string + + MessageSegmentParameters: + description: Contains the message segment parameters data + type: object + properties: + segId: + type: string + totalSegCount: + type: integer + segNumb: + type: integer + lastSegFlag: + type: boolean + + StoreAndForwardParameters: + description: Contains the store and forward parameters data + type: object + properties: + exprTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + DeliveryStatusReport: + description: Contains the delivery status report data + type: object + required: + - oriAddr + - destAddr + - msgId + - delivSt + properties: + oriAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + destAddr: + $ref: 'TS29538_MSGG_L3GDelivery.yaml#/components/schemas/Address' + msgId: + type: string + failureCause: + type: string + delivSt: + $ref: '#/components/schemas/ReportDeliveryStatus' + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + DeliveryStatus: + anyOf: + - type: string + enum: + - DELY_FAILED + - DELY_STORED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates if delivery is a failure, or if the message is stored for deferred delivery. + Possible values are: + - DELY_FAILED: Indicates that the message delivery is failed. + - DELY_STORED: Indicates that the message is stored for deferred delivery. + + ReportDeliveryStatus: + anyOf: + - type: string + enum: + - REPT_DELY_SUCCESS + - REPT_DELY_FAILED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + The delivery status description, including success or failure in delivery. + Possible values are: + - REPT_DELY_SUCCESS: Indicates that the report delivery is successful. + - REPT_DELY_FAILED: Indicates that the report delivery is failed. + + Priority: + anyOf: + - type: string + enum: + - HIGH + - MIDDLE + - LOW + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Application priority level requested for this message. + Possible values are: + - HIGH: Indicates the messages should be sent in high priority. + - MIDDLE: Indicates the messages should be sent in middle priority. + - LOW: Indicates the messages should be sent in low priority. diff --git a/TS29540_Nsmsf_SMService.yaml b/TS29540_Nsmsf_SMService.yaml new file mode 100644 index 0000000..8f98643 --- /dev/null +++ b/TS29540_Nsmsf_SMService.yaml @@ -0,0 +1,534 @@ +openapi: 3.0.0 + +info: + version: '2.3.0-alpha.2' + title: 'Nsmsf_SMService Service API' + description: | + SMSF SMService. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.540 V18.1.0; 5G System; SMS Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.540/' + +security: + - oAuth2ClientCredentials: + - nsmsf-sms + - {} + +servers: + - url: '{apiRoot}/nsmsf-sms/v2' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /ue-contexts/{supi}: + put: + summary: Activate SMS Service for a given UE + operationId: SMServiceActivation + tags: + - Activation of SMS service + parameters: + - name: supi + in: path + required: true + description: Subscriber Permanent Identifier (SUPI) + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeSmsContextData' + required: true + responses: + '201': + description: UE Context for SMS is created in SMSF + content: + application/json: + schema: + $ref: '#/components/schemas/UeSmsContextData' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nsmsf-sms//ue-contexts/{supi}' + required: true + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 7232, 2.3 + schema: + type: string + '204': + description: UE Context for SMS is updated in SMSF + headers: + ETag: + description: Entity Tag, containing a strong validator, as described in IETF RFC 7232, 2.3 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Invalid Service Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Unable to create/update UE Context for SMS in SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Unable to found subscription for service user or UE Context for SMS in SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + default: + description: Unexpected error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + patch: + summary: Update a parameter in the UE SMS Context in SMSF + operationId: SMSServiceParameterUpdate + tags: + - Parameter update in the UE SMS Context in SMSF + parameters: + - name: supi + in: path + required: true + description: Subscriber Permanent Identifier (SUPI) + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + - $ref: '#/components/schemas/UeSmsContextData' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: Deactivate SMS Service for a given UE + operationId: SMServiceDeactivation + tags: + - Deactivation of SMS service + parameters: + - name: supi + in: path + required: true + description: Subscriber Permanent Identifier (SUPI) + schema: + type: string + - name: If-Match + in: header + description: Validator for conditional requests, as described in IETF RFC 7232, 3.1 + schema: + type: string + responses: + '204': + description: UE Context for SMS is deleted from SMSF + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Invalid Service Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + description: Unable to found UE Context for SMS in SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + + /ue-contexts/{supi}/sendsms: + post: + summary: Send SMS payload for a given UE + operationId: SendSMS + tags: + - Send SMS payload in uplink direction + parameters: + - name: supi + in: path + required: true + description: Subscriber Permanent Identifier (SUPI) + schema: + type: string + requestBody: + content: + multipart/related: + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SmsRecordData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: SMS payload is received by SMSF, and is being delivered out + content: + application/json: + schema: + $ref: '#/components/schemas/SmsRecordDeliveryData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Invalid Service Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Unable to deliver SMS at SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Unable to found UE Context for SMS in SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + + /ue-contexts/{supi}/send-mt-sms: + post: + summary: Send MT SMS payload for a given UE + operationId: SendMtSMS + tags: + - Send SMS payload in downlink direction + parameters: + - name: supi + in: path + required: true + description: Subscriber Permanent Identifier (SUPI) + schema: + type: string + requestBody: + content: + multipart/related: + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: sending delivery report + content: + multipart/related: + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsDeliveryData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Invalid Service Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Unable to deliver SMS at SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Unable to found UE Context for SMS in SMSF + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nsmsf-sms: Access to the nsmsf-sms API + + schemas: + + UeSmsContextData: + description: Represents the information used for activating the SMS service for a service user, or updating the parameters of the SMS service. + type: object + required: + - supi + - amfId + - accessType + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + guamis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + minItems: 1 + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + additionalAccessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + traceData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TraceData' + backupAmfInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BackupAmfInfo' + minItems: 1 + udmGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfGroupId' + routingIndicator: + type: string + hNwPubKeyId: + type: integer + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + additionalRatType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SmsRecordData: + description: Represents the information sent within a request message of the UplinkSMS service operation, for delivering SMS payload. + type: object + required: + - smsRecordId + - smsPayload + properties: + smsRecordId: + $ref: '#/components/schemas/RecordId' + smsPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + ueLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + + RecordId: + description: Represents a record ID, used to identify a message carrying SMS payload. + type: string + + SmsRecordDeliveryData: + description: Represents information on the result of invoking the UplinkSMS service operation. + type: object + required: + - smsRecordId + - deliveryStatus + properties: + smsRecordId: + $ref: '#/components/schemas/RecordId' + deliveryStatus: + $ref: '#/components/schemas/SmsDeliveryStatus' + + SmsDeliveryStatus: + description: Represents the Status of an SMS delivery attempt. + type: string + enum: + - SMS_DELIVERY_PENDING + - SMS_DELIVERY_COMPLETED + - SMS_DELIVERY_FAILED + - SMS_DELIVERY_SMSF_ACCEPTED diff --git a/TS29541_Nnef_SMContext.yaml b/TS29541_Nnef_SMContext.yaml new file mode 100644 index 0000000..438a99e --- /dev/null +++ b/TS29541_Nnef_SMContext.yaml @@ -0,0 +1,560 @@ +openapi: 3.0.0 + +info: + title: Nnef_SMContext + version: 1.2.0-alpha.1 + description: | + Nnef SMContext Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.541 V18.0.0; 5G System; Session Management Services for Non-IP Data Delivery (NIDD). + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.541/ + +servers: + - url: '{apiRoot}/nnef-smcontext/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnef-smcontext + +paths: + /sm-contexts: + post: + summary: Create SM Context + operationId: Create + tags: + - SM Contexts Collection (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextCreateData' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextCreatedData' + headers: + Location: + description: > + 'Contains the URI of the newly created Individual SM Context resource, according to the structure: + {apiRoot}/nnef-smcontext//sm-contexts/{smContextId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + StatusNotify: + '{$request.body#/notificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextStatusNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextId}/release: + post: + summary: Delete SM Context + operationId: Delete + tags: + - Individual SM Context (Document) + parameters: + - name: smContextId + in: path + description: SM Context Resource ID + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextReleaseData' + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextReleasedData' + '204': + description: No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextId}/update: + post: + summary: Update SM Context + operationId: Update + tags: + - Individual SM Context (Document) + parameters: + - name: smContextId + in: path + description: SM Context Resource ID + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SmContextUpdateData' + responses: + '204': + description: No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /sm-contexts/{smContextId}/deliver: + post: + summary: Deliver Uplink MO Data + operationId: Deliver + tags: + - Individual SM Context (Document) + parameters: + - name: smContextId + in: path + description: SM Context Resource ID + required: true + schema: + type: string + requestBody: + required: true + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/DeliverReqData' + binaryMoData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMoData: + contentType: application/octet-stream + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-smcontext: Access to the Nnef_SMContext API + + schemas: +# +# Structured Data Types +# + SmContextCreateData: + description: Representation of the Individual SM context to be created. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nefId: + type: string + description: This IE shall contain the NEF ID of the target NEF. + dlNiddEndPoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + niddInfo: + $ref: '#/components/schemas/NiddInformation' + rdsSupport: + type: boolean + description: | + When present, this IE shall indicate the UE capability to support RDS. + The value of this IE shall be set as following + - true UE supports RDS + - false (default) UE does not support RDS + smContextConfig: + $ref: '#/components/schemas/SmContextConfiguration' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - supi + - pduSessionId + - dnn + - snssai + - nefId + - dlNiddEndPoint + - notificationUri + + SmContextCreatedData: + description: Representation of an Individual SM context successfully created. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pduSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + nefId: + type: string + description: This IE shall contain the NEF ID of the target NEF. + rdsSupport: + type: boolean + default: false + description: | + When present, this IE shall indicate the NEF capability to support RDS. + The value of this IE shall be set as following + - true NEF supports RDS + - false (default) NEF does not support RDS + extBufSupport: + type: boolean + default: false + description: | + When present, this IE shall indicate whether Extended Buffering applies or not. + The value of this IE shall be set as following + - true Extended Buffering applies + - false (default) Extended Buffering does not apply + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + maxPacketSize: + type: integer + required: + - supi + - pduSessionId + - dnn + - snssai + - nefId + + SmContextReleaseData: + description: Representation of the information to release the Individual SM context. + type: object + properties: + cause: + $ref: '#/components/schemas/ReleaseCause' + required: + - cause + + SmContextReleasedData: + description: Successful release of an Individual SM context with information sent to the NF service consumer. + type: object + properties: + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + + SmContextStatusNotification: + description: Representation of the SM Context status notification. + type: object + properties: + status: + $ref: '#/components/schemas/SmContextStatus' + smContextId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + cause: + $ref: '#/components/schemas/ReleaseCause' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + apnRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApnRateStatus' + required: + - status + - smContextId + + NiddInformation: + description: Informaiton related to NIDD used for the SM Context. + type: object + properties: + extGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + afId: + type: string + description: When present, this IE shall contain the AF Id used for the SM Context. + + SmContextConfiguration: + description: NIDD Configuration for the SM context. + type: object + properties: + smalDataRateControl: + $ref: '#/components/schemas/SmallDataRateControl' + smallDataRateStatus: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SmallDataRateStatus' + servPlmnDataRateCtl: + type: integer + minimum: 10 + nullable: true + description: > + When present, this IE shall contain the maximum allowed number of + Downlink NAS Data PDUs per deci hour of the serving PLMN, as specified + in subclause 5.31.14.2 of 3GPP TS 23.501 [2]. + Minimum 10 + + SmallDataRateControl: + description: Configuration of Small Data Rate Control for the SM Context. + type: object + properties: + timeUnit: + $ref: '#/components/schemas/SmallDataRateControlTimeUnit' + maxPacketRateUl: + type: integer + maxPacketRateDl: + type: integer + maxAdditionalPacketRateUl: + type: integer + maxAdditionalPacketRateDl: + type: integer + required: + - timeUnit + + SmContextUpdateData: + description: Representation of the updates to apply to the Individual SM context. + type: object + properties: + dlNiddEndPoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + smContextConfig: + $ref: '#/components/schemas/SmContextConfiguration' + + DeliverReqData: + description: The data for Deliver service request, including the Mobile Originated data to be delivered via NEF. + type: object + properties: + data: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - data +# +# Simple Data Types +# + + +# +# Enumeration Data Types +# + SmContextStatus: + anyOf: + - type: string + enum: + - RELEASED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are + - RELEASED: Indicates that the Individual SM Context for NIDD is released. + + SmallDataRateControlTimeUnit: + anyOf: + - type: string + enum: + - MINUTE + - HOUR + - DAY + - WEEK + - 6MINUTES + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are + - MINUTE: Indicates the rate control is applied per minute. + - HOUR: Indicates the rate control is applied per hour. + - DAY: Indicates the rate control is applied per day. + - WEEK: Indicates the rate control is applied per week. + - 6MINUTES: Indicates the rate control is applied per 6 minutes. + + ReleaseCause: + anyOf: + - type: string + enum: + - PDU_SESSION_RELEASED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + The cause to release the SM Context. Possible values are + - PDU_SESSION_RELEASED: Indicates that the Individual SM Context for NIDD is released. diff --git a/TS29541_Nnef_SMService.yaml b/TS29541_Nnef_SMService.yaml new file mode 100644 index 0000000..1a9a3ed --- /dev/null +++ b/TS29541_Nnef_SMService.yaml @@ -0,0 +1,129 @@ +openapi: 3.0.0 + +info: + title: Nnef_SMService + version: 1.1.0-alpha.1 + description: | + Nnef SMService Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.541 V18.0.0; 5G System; Session Management Services for Non-IP Data Delivery (NIDD). + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.541/ + +servers: + - url: '{apiRoot}/nnef-smservice/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnef-smservice + +paths: + /sm-contexts/{supi}/sendsms: + post: + summary: Send SMS payload for a given UE + operationId: SendSMS + tags: + - Send MO SMS message and the delivery report + parameters: + - name: supi + in: path + required: true + description: Subscription Permanent Identifier (SUPI) + schema: + type: string + requestBody: + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: sending delivery report + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsDeliveryData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + 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/403' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-smcontext: Access to the Nnef_SMContext API + +# schemas: + +# COMPLEX TYPES: + + + +# SIMPLE TYPES: + + + +# ENUMS: diff --git a/TS29542_Nsmf_NIDD.yaml b/TS29542_Nsmf_NIDD.yaml new file mode 100644 index 0000000..e719e6e --- /dev/null +++ b/TS29542_Nsmf_NIDD.yaml @@ -0,0 +1,140 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'Nsmf_NIDD' + description: | + SMF NIDD Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.542 V18.0.0; 5G System; Session Management Services for Non-IP Data Delivery (NIDD); Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.542/ + +servers: + - url: '{apiRoot}/nsmf-nidd/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nsmf-nidd + +paths: + '/pdu-sessions/{pduSessionRef}/deliver': + post: + summary: Delivery Service Operation + tags: + - Individual PDU session + operationId: Deliver + parameters: + - name: pduSessionRef + in: path + description: PDU session reference + required: true + schema: + type: string + requestBody: + description: representation of the payload of Deliver Request + required: true + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/DeliverReqData' + binaryMtData: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryMtData: + contentType: application/vnd.3gpp.5gnas + headers: + Content-Id: + schema: + type: string + responses: + '204': + description: successful transfering of Delivery + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + description: unsuccessful delivery of mobile terminated data - gateway timeout + content: + application/json: + schema: + $ref: '#/components/schemas/DeliverError' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nsmf-nidd: Access to the nsmf-nidd API + + schemas: +# +# STRUCTURED DATA TYPES +# + + DeliverReqData: + description: Representation of the payload of a Deliver Request. + type: object + properties: + mtData: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + required: + - mtData + + DeliverAddInfo: + description: Additional information in an error response to a Deliver Request. + type: object + properties: + maxWaitingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + +# +# DATA TYPES DESCRIBING ALTERNATIVE OR COMBINATION OF DATA TYPES +# + + DeliverError: + description: Representation of the payload in an error response to a Deliver Request. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/DeliverAddInfo' diff --git a/TS29543_Npcf_PDTQPolicyControl.yaml b/TS29543_Npcf_PDTQPolicyControl.yaml new file mode 100644 index 0000000..1250b20 --- /dev/null +++ b/TS29543_Npcf_PDTQPolicyControl.yaml @@ -0,0 +1,417 @@ +openapi: 3.0.0 + +info: + title: Npcf_PDTQPolicyControl API + version: 1.0.0-alpha.3 + description: | + PCF PDTQ Policy Control service. + © <2023>, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.543 V0.4.0; 5G System; Data Transfer Policy Control Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.543/' + +servers: + - url: '{apiRoot}/npcf-pdtq-policy-control/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - npcf-pdtq-policy-control + +paths: + + /pdtq-policies: + post: + summary: Creates a new Individual PDTQ policy resource. + operationId: CreatePDTQPolicy + tags: + - PDTQ policies (Collection) + requestBody: + description: > + Contains information for the creation of a new Individual PDTQ policy resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqPolicyData' + responses: + '201': + description: > + Created, an Individual PDTQ policy resource is created and a representation of that + resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqPolicyData' + headers: + Location: + description: > + Contains the URI of the created Individual PDTQ policy resource, + according to the structure + {apiRoot}/npcf-pdtq-policy-control/v1/pdtq-policies/{pdtqPolicyId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + PDTQNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: > + No Content, the reception of a PDTQ warning notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /pdtq-policies/{pdtqPolicyId}: + + get: + summary: Reads an Individual PDTQ policy resource. + operationId: GetIndPDTQPolicy + tags: + - Individual PDTQ policy (Document) + parameters: + - name: pdtqPolicyId + description: String identifying the individual PDTQ policy resource in the PCF. + in: path + required: true + schema: + type: string + responses: + '200': + description: OK, a representation of an Individual PDTQ policy resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqPolicyData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modifies an existing Individual PDTQ policy resource. + operationId: ModifyIndPDTQPolicy + tags: + - Individual PDTQ policy (Document) + parameters: + - name: pdtqPolicyId + description: String identifying the individual PDTQ policy resource in the PCF. + in: path + required: true + schema: + type: string + requestBody: + description: > + Contains modifications that shall be applied on the existing Individual PDTQ + policy resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PdtqPolicyPatchData' + responses: + '200': + description: > + OK, the Individual PDTQ policy resource is modified and a representation of + that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PdtqPolicyData' + '204': + description: No Content, the Individual PDTQ policy resource is modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-pdtq-policy-control: Access to the Npcf_PDTQPolicyControl API + + schemas: + +# Structured data types + + PdtqPolicyData: + description: Describes an Individual PDTQ policy resource. + type: object + required: + - aspId + - desTimeInts + - numOfUes + oneOf: + - required: [qosReference] + - required: [qosParamSet] + properties: + altQosParamSets: + description: > + Contains the alternative QoS requirements expressed as the list of individual + QoS parameter sets in a prioritized order. The lower the index of the array for + a given entry, the higher the priority. + type: array + items: + $ref: '#/components/schemas/AltQosParamSet' + minItems: 1 + altQosRefs: + description: > + Contains the alternative QoS requirements expressed as the list of QoS References + in a prioritized order. The lower the index of the array for a given entry, the + higher the priority. + type: array + items: + type: string + minItems: 1 + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + aspId: + description: Contains an identity of an application service provider. + type: string + desTimeInts: + description: Contains a list of desired time windows for PDTQ. + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nwAreaInfo: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + numOfUes: + description: Indicates a number of UEs. + type: integer + pdtqPolicies: + description: Contains PDTQ policies. + type: array + items: + $ref: '#/components/schemas/PdtqPolicy' + minItems: 1 + pdtqRefId: + $ref: '#/components/schemas/PdtqReferenceId' + qosParamSet: + $ref: '#/components/schemas/QosParameterSet' + qosReference: + description: > + Contains the requested QoS requirements expressed as the QoS Reference which + represents a pre-defined QoS information. + type: string + selPdtqPolicyId: + description: Contains the identity of the selected PDTQ policy. + type: integer + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + warnNotifReq: + description: > + Indicates whether the PDTQ warning notification is enabled (true) or + disabled (false). Default value is false. + type: boolean + default: false + + QosParameterSet: + description: > + Contains the QoS requirements expressed as one or more individual QoS parameters. + type: object + properties: + extMaxBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExtMaxDataBurstVol' + gfbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gfbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxBitRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxBitRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxBurstSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MaxDataBurstVol' + pdb: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + per: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + priorLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5QiPriorityLevel' + + AltQosParamSet: + description: > + Contains the alternative QoS requirements expressed as the list of individual QoS + parameter sets. + type: object + properties: + gfbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + gfbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + pdb: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + per: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketErrRate' + + PdtqPolicy: + description: Describes a PDTQ policy. + type: object + required: + - pdtqPolicyId + - recTimeInt + properties: + pdtqPolicyId: + description: Contains an identity of a PDTQ policy. + type: integer + recTimeInt: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + + PdtqPolicyPatchData: + description: Represents modifications of an Individual PDTQ policy resource. + type: object + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + selPdtqPolicyId: + description: Contains the identity of the selected PDTQ policy. + type: integer + warnNotifReq: + description: > + Indicates whether the PDTQ warning notification is enabled (true) or + disabled (false). + type: boolean + + Notification: + description: Contains the PDTQ notification information. + type: object + required: + - pdtqRefId + - candPolicies + properties: + pdtqRefId: + $ref: '#/components/schemas/PdtqReferenceId' + candPolicies: + description: > + Contains a list of the candidate PDTQ policies from which the AF may select a new + PDTQ policy. + type: array + items: + $ref: '#/components/schemas/PdtqPolicy' + minItems: 1 + +# Simple data types + + PdtqReferenceId: + description: Represents a PTDQ Reference ID. + type: string diff --git a/TS29544_Nspaf_SecuredPacket.yaml b/TS29544_Nspaf_SecuredPacket.yaml new file mode 100644 index 0000000..25edbd6 --- /dev/null +++ b/TS29544_Nspaf_SecuredPacket.yaml @@ -0,0 +1,126 @@ +openapi: 3.0.0 +info: + title: 'Nspaf_SecuredPacket' + version: '1.2.0-alpha.1' + description: | + Nspaf Secured Packet Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.544, SP-AF Services, version V18.0.0 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.544/ +servers: + - url: '{apiRoot}/nspaf-secured-packet/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nspaf-secured-packet +paths: + /{supi}/provide-secured-packet: + post: + summary: request generation of a secured packet + operationId: ProvideSecuredPacket + tags: + - SecuredPacket Generation (Custom Operation) + parameters: + - name: supi + in: path + description: SUPI of the user + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UiccConfigurationParameter' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SecuredPacket' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nspaf-secured-packet: Access to the nspaf-secured-packet API + schemas: + +# COMPLEX TYPES: + + UiccConfigurationParameter: + description: Represents UICC Configuration Parameters. + type: object + oneOf: + - required: [routingId ] + - required: [steeringContainer ] + - required: [extendedSteeringContainer ] + properties: + routingId: + $ref: '#/components/schemas/RoutingId' + steeringContainer: + type: array + items: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SteeringInfo' + minItems: 1 + extendedSteeringContainer: + $ref: '#/components/schemas/ExtendedSteeringContainer' + + ExtendedSteeringContainer: + description: Represents Extended Steering Containers. + type: object + properties: + steeringContainer: + type: array + items: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SteeringInfo' + minItems: 1 + sorCmci: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SorCmci' + storeSorCmciInMe: + type: boolean + +# SIMPLE TYPES: + + RoutingId: + description: Represents a routing indicator. + type: string + pattern: '^[0-9]{1,4}$' + +# ENUMS: diff --git a/TS29548_SDD_DDContext.yaml b/TS29548_SDD_DDContext.yaml new file mode 100644 index 0000000..4f3142a --- /dev/null +++ b/TS29548_SDD_DDContext.yaml @@ -0,0 +1,249 @@ +openapi: 3.0.0 + +info: + title: SEALDD Server Data Delivery Context Relocation + version: 1.0.0-alpha.3 + description: | + SEALDD Server Data Delivery Context Relocation. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.548 V0.5.0 Service Enabler Architecture Layer for Verticals (SEAL); + SEAL Data Delivery (SEALDD) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.548/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/sdd-ddc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /contexts: + get: + summary: Pull the DD context from the SEALDD Server. + operationId: PullDdContext + tags: + - DD Context Instances (Collection) + parameters: + - name: supp-feats + in: query + description: Contains the list of supported features. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Successful case. The requested DD context is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DdContextResp' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Push the DD context to the SEALDD Server. + tags: + - DD Context Instances (Collection) + requestBody: + description: > + Represents the DD context to be pushed to the + SEALDD Server. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DdContextPushReq' + responses: + '201': + description: > + Created. Successful case. The DD context is successfully pushed to the SEALDD Server and + the related information is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DdContextResp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# +# STRUCTURED DATA TYPES +# + + DdContext: + description: Represents the DD context. + type: object + properties: + uuContext: + $ref: '#/components/schemas/SddUuContext' + sContext: + $ref: '#/components/schemas/SddSContext' + trLayerContext: + $ref: '#/components/schemas/TranspLayerContext' + required: + - uuContext + - sContext + + TranspLayerContext: + description: Represents the transport layer context. + type: object + properties: + transProtoc: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/TransportProtocol' + required: + - transProtoc + + DdContextPushReq: + description: Represents the DD context push request. + type: object + properties: + ddContext: + $ref: '#/components/schemas/DdContext' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ddContext + + DdContextResp: + description: Represents the DD context push response. + type: object + properties: + ddContext: + $ref: '#/components/schemas/DdContext' + endPoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SddUuContext: + description: Represents the context related to the SEALDD-Uu connection. + type: object + properties: + sddFlowId: + type: string + description: Represents the SEALDD flow ID. + valServiceId: + type: string + description: Contains the identifier of the VAL service. + valServerId: + type: string + description: Contains the identifier of the VAL Server. + valServEndPoint: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteInformation' + ddClientConnInfo: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ConnInfo' + ddServConnInfo: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ConnInfo' + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + comLifetime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + valUsersBdw: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ValUsersBdw' + pendingTimer: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + required: + - sddFlowId + - valServEndPoint + + SddSContext: + description: Represents the context related to the SEALDD-S connection. + type: object + properties: + valServerId: + type: string + description: Contains the identifier of the VAL Server. + valServiceId: + type: string + description: Contains the identifier of the VAL service. + valTargetUeId: + type: string + description: Contains the identifier of the target VAL UE. + valServerConnInfo: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ConnInfo' + ddServerConnInfo: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ConnInfo' + qosInfo: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/QosInfo' + valServerBdw: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ValServBdw' + valUsersBdw: + $ref: 'TS29548_SDD_Transmission.yaml#/components/schemas/ValUsersBdw' + required: + - valServerId + - valServerConnInfo + + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + +# Data types describing alternative data types or combinations of data types: +# + diff --git a/TS29548_SDD_DataStorage.yaml b/TS29548_SDD_DataStorage.yaml new file mode 100644 index 0000000..8c0e608 --- /dev/null +++ b/TS29548_SDD_DataStorage.yaml @@ -0,0 +1,983 @@ +openapi: 3.0.0 + +info: + title: SEALDD Server Data Storage Service + version: 1.0.0-alpha.1 + description: | + SEALDD Server Data Storage Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.548 V0.5.0; Service Enabler Architecture Layer for Verticals (SEAL); + SEAL Data Delivery (SEALDD) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.548/ + +servers: + - url: '{apiRoot}/sdd-ds/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /storages: + get: + summary: Retrieve one or several existing Individual Data Storage resource(s). + operationId: GetDataStorages + tags: + - Data Storages (Collection) + parameters: + - name: storage-ids + in: query + description: Contains the identifier(s) of the targeted Data Storage resource(s). + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feats + in: query + description: Contains the list of supported features. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + OK. The requested Individual Data Storage resource shall be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/DataStorage' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a Data Storage. + operationId: CreateDataStorage + tags: + - Data Storages (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorageReq' + responses: + '201': + description: > + Created. The Data Storage is successfully created and a representation of the created + Individual Data Storage resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorage' + headers: + Location: + description: > + Contains the URI of the created Individual Data Storage resource. + required: true + schema: + type: string + '200': + description: > + OK. The Data Storage resource is successfully reserved and Data Storage resource + reservation related information shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ReservRespData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + DataMngtNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataMngtNotif' + responses: + '204': + description: > + No Content. The Data Management and or Status Information Notification is + successfully received and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /storages/{storageId}: + parameters: + - name: storageId + in: path + description: > + Represents the identifier of the Individual Data Storage resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Data Storage resource. + operationId: GetIndDataStorage + tags: + - Individual Data Storage (Document) + responses: + '200': + description: > + OK. The requested Individual Data Storage resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorage' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Data Storage resource. + operationId: UpdateIndDataStorage + tags: + - Individual Data Storage (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorage' + responses: + '200': + description: > + OK. The Individual Data Storage resource is successfully updated and a representation + of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorage' + '204': + description: > + No Content. The Individual Data Storage resource is successfully updated and no content + is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Data Storage resource. + operationId: ModifyIndDataStorage + tags: + - Individual Data Storage (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/DataStoragePatch' + responses: + '200': + description: > + OK. The Individual Data Storage resource is successfully modified and a representation + of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DataStorage' + '204': + description: > + No Content. The Individual Data Storage resource is successfully modified and no content + is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Data Storage resource. + operationId: DeleteIndDataStorage + tags: + - Individual Data Storage (Document) + responses: + '204': + description: > + No Content. The Individual Data Storage resource is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions: + post: + summary: Request the creation of a Data Storage Delivery Subscription. + operationId: CreateDataDelSubsc + tags: + - Data Storage Delivery Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + responses: + '201': + description: > + Created. The Data Storage Delivery Subscription is successfully created and a + representation of the created Individual Data Storage Delivery Subscription resource + shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual Data Storage Delivery Subscription + resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + DataDelNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelNotif' + responses: + '204': + description: > + No Content. The Data Storage Delivery Notification is successfully received + and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of the Individual Data Storage Delivery Subscription resource. + resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Data Storage Delivery Subscription resource. + operationId: GetIndDataDelSubsc + tags: + - Individual Data Storage Delivery Subscription (Document) + responses: + '200': + description: > + OK. The requested Individual Data Storage Delivery Subscription resource shall be + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Data Storage Delivery Subscription resource. + operationId: UpdateIndDataDelSubsc + tags: + - Individual Data Storage Delivery Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + responses: + '200': + description: > + OK. The Individual Data Storage Delivery Subscription resource is successfully + updated and a representation of the updated resource shall be returned in the + response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + '204': + description: > + No Content. The Individual Data Storage Delivery Subscription resource is successfully + updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Data Storage Delivery Subscription resource. + operationId: ModifyIndDataDelSubsc + tags: + - Individual Data Storage Delivery Subscription (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/DataDelSubscPatch' + responses: + '200': + description: > + OK. The Individual Data Storage Delivery Subscription resource is successfully modified + and a representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelSubsc' + '204': + description: > + No Content. The Individual Data Storage Delivery Subscription resource is successfully + modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Data Storage Delivery Subscription resource. + operationId: DeleteIndDataDelSubsc + tags: + - Individual Data Storage Delivery Subscription (Document) + responses: + '204': + description: > + No Content. The Individual Data Storage Delivery Subscription resource is successfully + deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /request-del: + post: + summary: Enables a service consumer to request SEALDD data storage delivery. + operationId: DataDeliveryRequest + tags: + - SEALDD Data Delivery Request + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DataDelReq' + responses: + '204': + description: > + No Content. The SEALDD Data Storage delivery request is successfully received and + processed. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# +# STRUCTURED DATA TYPES +# + + DataStorage: + description: > + Represents a SEALDD Data Storage. + type: object + properties: + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + ctrlPolicies: + type: array + items: + $ref: '#/components/schemas/AccessCtrlPolicy' + minItems: 1 + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + mngtSubsc: + $ref: '#/components/schemas/DataMngtSubsc' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - data + + ReservReqData: + description: > + Represents a Data Storage reservation request. + type: object + properties: + valServiceId: + type: string + dataLength: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valServiceId + + ReservRespData: + description: > + Represents a Data Storage reservation response. + type: object + properties: + resourceAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + required: + - resourceAddr + + DataStoragePatch: + description: > + Represents the requested modifications to a SEALDD Data Storage. + type: object + properties: + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + ctrlPolicies: + type: array + items: + $ref: '#/components/schemas/AccessCtrlPolicy' + minItems: 1 + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + mngtSubsc: + $ref: '#/components/schemas/DataMngtSubsc' + + AccessCtrlPolicy: + description: > + Represents the data access control policy. + type: object + properties: + entityName: + $ref: '#/components/schemas/EntityName' + entityId: + type: string + rights: + type: array + items: + $ref: '#/components/schemas/DataAccessRight' + minItems: 1 + required: + - rights + anyOf: + - required: [entityName] + - required: [entityId] + + DataMngtSubsc: + description: > + Represents the stored data management and/or status information subscription related + information. + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/DataMngtEvent' + minItems: 1 + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + repPeriodicity: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + required: + - events + - notifUri + + DataMngtNotif: + description: > + Represents a SEALDD Data Management and/or Status Information Notification. + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/DataMngtEvent' + minItems: 1 + accessStats: + $ref: '#/components/schemas/DataAccessStats' + mngtStats: + $ref: '#/components/schemas/DataMngtStats' + required: + - events + anyOf: + - required: [accessStats] + - required: [mngtStats] + + DataAccessStats: + description: > + Represents data access statistics. + type: object + properties: + genAccessStats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + detAccessStats: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minProperties: 1 + description: > + Represents the data access statistics of the stored data detailed per consumer SEALDD + entity. It contains how many times the stored data was accessed (i.e., retrieved or + updated) per SEALDD entity. + The key of the map shall be the name of the SEALDD entity, encoded using the EntityName + data type as specified in clause 6.2.6.3.3, to which the data access statistics provided + within the map value are + related. + anyOf: + - required: [genAccessStats] + - required: [detAccessStats] + + DataMngtStats: + description: > + Represents data management statistics. + type: object + properties: + genMngtStats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + detMngtStats: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minProperties: 1 + description: > + Represents the data management statistics of the stored data detailed per consumer + SEALDD entity. It contains how many times the stored data was accessed for management + purposes (i.e., data update) per SEALDD entity. + The key of the map shall be the name of the SEALDD entity, encoded using the EntityName + data type as specified in clause 6.2.6.3.3, to which the data management statistics + provided within the map value are related. + anyOf: + - required: [genMngtStats] + - required: [detMngtStats] + + DataDelSubsc: + description: > + Represents a SEALDD Data Storage Delivery Subscription. + type: object + properties: + requestorId: + type: string + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - requestorId + - notifUri + + DataDelSubscPatch: + description: > + Represents the requested modification to a SEALDD Data Storage Delivery Subscription. + type: object + properties: + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + DataDelNotif: + description: > + Represents a SEALDD Data Storage Delivery Notification. + type: object + properties: + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + storageId: + type: string + oneOf: + - required: [data] + - required: [storageId] + + DataDelReq: + description: > + Represents a SEALDD Data Storage Delivery request. + type: object + properties: + targetId: + type: string + sealddServId: + type: string + storageId: + type: string + data: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bytes' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - targetId + oneOf: + - required: [data] + - required: [storageId] + + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + EntityName: + anyOf: + - type: string + enum: + - SEALDD_SERVER + - SEALDD_CLIENT + - VAL_SERVER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the name of a SEALDD entity. + Possible values are: + - SEALDD_SERVER: Indicates the SEALDD Server. + - SEALDD_CLIENT: Indicates the SEALDD Client. + - VAL_SERVER: Indicates the VAL Server. + + DataAccessRight: + anyOf: + - type: string + enum: + - RETRIEVE + - UPDATE + - DELETE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the data access rights. + Possible values are: + - RETRIEVE: Indicates that the access right is data storage retrieval. + - UPDATE: Indicates that the access right is data storage update. + - DELETE: Indicates that the access right is data storage deletion. + + DataMngtEvent: + anyOf: + - type: string + enum: + - DATA_ACCESS_STATISTICS + - DATA_MNGT_STATISTICS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the Data Management and (or) Status Information events. + Possible values are: + - DATA_ACCESS_STATISTICS: Indicates that the Data Management Event is data access statistics + (i.e., how often the stored data is accessed). + - DATA_MNGT_STATISTICS: Indicates that the Data Management Event is data management + statistics (i.e., how often the stored data is managed). + + +# Data types describing alternative data types or combinations of data types: +# + + DataStorageReq: + description: Represents a SEALDD Data Storage creation or reservation request. + oneOf: + - $ref: '#/components/schemas/DataStorage' + - $ref: '#/components/schemas/ReservReqData' diff --git a/TS29548_SDD_PolicyConfiguration.yaml b/TS29548_SDD_PolicyConfiguration.yaml new file mode 100644 index 0000000..eb701ff --- /dev/null +++ b/TS29548_SDD_PolicyConfiguration.yaml @@ -0,0 +1,397 @@ +openapi: 3.0.0 + +info: + title: SEALDD Server Policy Configuration Service + version: 1.0.0-alpha.2 + description: | + SEALDD Server Policy Configuration Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.548 V0.5.0; Service Enabler Architecture Layer for Verticals (SEAL); + SEAL Data Delivery (SEALDD) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.548/ + +servers: + - url: '{apiRoot}/sdd-pc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /configurations: + post: + summary: Request the creation of a Policy Configuration. + operationId: CreatePolicyConfig + tags: + - Policy Configurations (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + responses: + '201': + description: > + Created. The Policy Configuration is successfully created and a representation of + the created Individual Policy Configuration resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + headers: + Location: + description: > + Contains the URI of the created Individual Policy Configuration resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /configurations/{configId}: + parameters: + - name: configId + in: path + description: > + Represents the identifier of the Individual Policy Configuration resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Policy Configuration resource. + operationId: GetIndPolicyConfig + tags: + - Individual Policy Configuration (Document) + responses: + '200': + description: > + OK. The requested Individual Policy Configuration resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Policy Configuration resource. + operationId: UpdateIndPolicyConfig + tags: + - Individual Policy Configuration (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + responses: + '200': + description: > + OK. The Individual Policy Configuration resource is successfully updated and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + '204': + description: > + No Content. The Individual Policy Configuration resource is successfully updated + and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Policy Configuration resource. + operationId: ModifyIndPolicyConfig + tags: + - Individual Policy Configuration (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PolicyConfigPatch' + responses: + '200': + description: > + OK. The Individual Policy Configuration resource is successfully modified and a + representation of the updated resource shall be returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/PolicyConfig' + '204': + description: > + No Content. The Individual Policy Configuration resource is successfully modified and + no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Policy Configuration resource. + operationId: DeleteIndPolicyConfig + tags: + - Individual Policy Configuration (Document) + responses: + '204': + description: > + No Content. The Individual Policy Configuration resource is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# +# STRUCTURED DATA TYPES +# + + PolicyConfig: + description: > + Represents a SEALDD Policy Configuration. + type: object + properties: + appTrafficIds: + type: array + items: + type: string + minItems: 1 + valUeId: + type: string + sealddPol: + $ref: '#/components/schemas/SealddPolicy' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - appTrafficIds + - sealddPol + + PolicyConfigPatch: + description: > + Represents the requested modifications to a SEALDD Policy Configuration. + type: object + properties: + sealddPol: + $ref: '#/components/schemas/SealddPolicy' + + SealddPolicy: + description: > + Represents a SEALDD Policy. + type: object + properties: + qualGuarSets: + type: array + items: + $ref: '#/components/schemas/QualGuarPolicy' + minItems: 1 + qualOptimSets: + type: array + items: + $ref: '#/components/schemas/QualOptimPolicy' + minItems: 1 + bdwCtrlSets: + type: array + items: + $ref: '#/components/schemas/BdwCtrlPolicy' + minItems: 1 + anyOf: + - required: [qualGuarantee] + - required: [qualOptimSets] + - required: [bdwControl] + + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + QualGuarPolicy: + anyOf: + - type: string + enum: + - ESTABLISH_REDUNDANT_TRANS_PATH + - REESTABLISH_TRANS_PATH + - SWITCH_TO_BACKUP_TRANS_PATH + - CHANGE_SEALDD_SERVER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the quality guarantee policy. + Possible values are: + - ESTABLISH_REDUNDANT_TRANS_PATH: Indicates that the quality guarantee action is to + establish a redundant transmission path. + - REESTABLISH_TRANS_PATH: Indicates that the quality guarantee action is to + reestablish the transmission path. + - SWITCH_TO_BACKUP_TRANS_PATH: Indicates that the quality guarantee action is to + switch to the backup transmission path. + - CHANGE_SEALDD_SERVER: Indicates that the quality guarantee action is to change the + connected SEALDD Server. + + QualOptimPolicy: + anyOf: + - type: string + enum: + - BACK_TO_SINGLE_TRANS_PATH + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the quality optimization policy. + Possible values are: + - BACK_TO_SINGLE_TRANS_PATH: Indicates that the quality optimization action is to switch + back to a single transmission path. + + BdwCtrlPolicy: + anyOf: + - type: string + enum: + - REALLOCATE_DL + - REALLOCATE_UL + - NOT_REALLOCATE_DL + - NOT_REALLOCATE_UL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the bandwidth control policy. + Possible values are: + - REALLOCATE_DL: Indicates that the bandwidth control action is to reallocate the + bandwidth limit between different VAL users for DL traffic. + - REALLOCATE_UL: Indicates that the bandwidth control action is to reallocate the + bandwidth limit between different VAL users for UL traffic. + - NOT_REALLOCATE_DL: Indicates that the bandwidth control action is to not reallocate + the bandwidth limit between different VAL users for DL traffic. + - NOT_REALLOCATE_UL: Indicates that the bandwidth control action is to not reallocate + the bandwidth limit between different VAL users for UL traffic. + + +# Data types describing alternative data types or combinations of data types: +# + diff --git a/TS29548_SDD_Transmission.yaml b/TS29548_SDD_Transmission.yaml new file mode 100644 index 0000000..a5e61a9 --- /dev/null +++ b/TS29548_SDD_Transmission.yaml @@ -0,0 +1,413 @@ +openapi: 3.0.0 + +info: + title: SEALDD Server Data Transmission Service + version: 1.0.0-alpha.3 + description: | + SEALDD Server Data Transmission Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.548 V0.5.0; Service Enabler Architecture Layer for Verticals (SEAL); + SEAL Data Delivery (SEALDD) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.548/ + +servers: + - url: '{apiRoot}/sdd-trans/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /{transType}/request-trans: + parameters: + - name: transType + in: path + description: > + Represents the requested transmission type. + required: true + schema: + $ref: '#/components/schemas/TransType' + + post: + summary: Request SEALDD enabled Regular or URLLC Data Transmission. + operationId: RequestTrans + tags: + - Request SEALDD Data Transmission + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransReq' + responses: + '200': + description: > + OK. The SEALDD enabled Regular or URLLC application data transmission service request + was successfully received and processed. + content: + application/json: + schema: + $ref: '#/components/schemas/TransResp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions: + post: + summary: Request the Creation of a new Connection Status Subscription. + operationId: CreateConnStatusSubsc + tags: + - Connection Status Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConnStatusSubsc' + responses: + '201': + description: > + Successful case. The requested Connection Status Subscription resource is successfully + created and a representation of the created "Individual Connection Status Subscription" + resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ConnStatusSubsc' + headers: + Location: + description: > + Contains the URI of the newly created Individual Connection Status Subscription + resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ConnStatusNotif: + '{$request.body#/notifUri}': + post: + summary: Notify a previously subscribed service consumer on SEALDD connection status event(s). + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConnStatusNotif' + responses: + '204': + description: > + Successful case. The Connection Status Notification is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# +# STRUCTURED DATA TYPES +# + + TransReq: + description: > + Represents the parameters to request the SEALDD enabled Regular or URLLC application data + transmission service. + type: object + properties: + valServerId: + type: string + valServiceId: + type: string + valTargetUeId: + type: string + valServerConnInfo: + $ref: '#/components/schemas/ConnInfo' + qosInfo: + $ref: '#/components/schemas/QosInfo' + valServerBdw: + $ref: '#/components/schemas/ValServBdw' + valUsersBdw: + $ref: '#/components/schemas/ValUsersBdw' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valServerId + - valServerConnInfo + + TransResp: + description: > + Represents a SEALDD enabled Regular or URLLC application data transmission service response. + type: object + properties: + ddServerConnInfo: + $ref: '#/components/schemas/ConnInfo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ConnInfo: + description: > + Represents SEALDD Data transmission connection information. + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + port: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + uri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + oneOf: + - required: [ipv4Addr] + - required: [ipv6Addr] + - required: [uri] + + QosInfo: + description: > + Represents SEALDD related QoS requirements. + type: object + properties: + qosReference: + type: string + altQoSReferences: + type: array + items: + type: string + minItems: 1 + altQosReqs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + anyOf: + - required: [qosReference] + - required: [altQoSReferences] + - required: [altQosReqs] + - not: + required: [altQoSReferences, altQosReqs] + - not: + required: [qosReference, altQosReqs] + + ValServBdw: + description: > + Represents VAL Server related bandwidth information. + type: object + properties: + totalUlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + totalDlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + required: + - totalUlBdw + - totalDlBdw + + ValUsersBdw: + description: > + Represents VAL users related bandwidth information. + type: object + properties: + minUlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + minDlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + maxUlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + maxDlBdw: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Bandwidth' + required: + - minUlBdw + - minDlBdw + - maxUlBdw + - maxDlBdw + + ConnStatusSubsc: + description: > + Represents a Connection Status Subscription. + type: object + properties: + events: + type: array + items: + $ref: '#/components/schemas/ConnStatusEvent' + minItems: 1 + description: > + Represents the subscribed event(s). + valServiceId: + type: string + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + valServerConnInfo: + $ref: '#/components/schemas/ConnInfo' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - events + - valServerConnInfo + - notifUri + + ConnStatusNotif: + description: > + Represents a Connection Status Notification. + type: object + properties: + reports: + type: array + items: + $ref: '#/components/schemas/ConnStatusReport' + minItems: 1 + required: + - reports + + ConnStatusReport: + description: > + Represents a Connection Status Event report. + type: object + properties: + event: + $ref: '#/components/schemas/ConnStatusEvent' + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + connEstData: + $ref: '#/components/schemas/ConnEstabData' + required: + - event + + ConnEstabData: + description: > + Represents SEALDD connection status establishment data. + type: object + properties: + comLifetime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + ConnStatusEvent: + anyOf: + - type: string + enum: + - ESTABLISHED + - RELEASED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents Connection Status Events. + Possible values are: + - ESTABLISHED: Indicates that the SEALDD connection is established. + - RELEASED: Indicates that the SEALDD connection is released. + + TransType: + anyOf: + - type: string + enum: + - regular + - urllc + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the requested transmission type. + Possible values are: + - regular: Indicates that the requested transmission type is Regular transmission. + - urllc: Indicates that the requested transmission type is URLLC transmission. + + +# Data types describing alternative data types or combinations of data types: +# + diff --git a/TS29548_SDD_TransmissionQualityMeasurement.yaml b/TS29548_SDD_TransmissionQualityMeasurement.yaml new file mode 100644 index 0000000..a3ef404 --- /dev/null +++ b/TS29548_SDD_TransmissionQualityMeasurement.yaml @@ -0,0 +1,678 @@ +openapi: 3.0.0 + +info: + title: SEALDD Server Data Transmission Quality Measurement Service + version: 1.0.0-alpha.4 + description: | + SEALDD Server Data Transmission Quality Measurement Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.548 V0.5.0; Service Enabler Architecture Layer for Verticals (SEAL); + SEAL Data Delivery (SEALDD) Server Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.548/ + +servers: + - url: '{apiRoot}/sdd-tqm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /subscriptions: + post: + summary: Request the creation of a Transmission Quality Measurement Subscription. + operationId: CreateTransQualMeasSubsc + tags: + - Transmission Quality Measurement Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + responses: + '201': + description: > + Created. The Transmission Quality Measurement Subscription is successfully created + and a representation of the created Individual Transmission Quality Measurement + Subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual Transmission Quality Measurement + Subscription resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + TransQualMeasNotif: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasNotif' + responses: + '204': + description: > + No Content. The Transmission Quality Measurement notification is successfully + received and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of the Individual Transmission Quality Measurement Subscription + resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual Transmission Quality Measurement Subscription resource. + operationId: GetIndTransQualMeasSubsc + tags: + - Individual Transmission Quality Measurement Subscription (Document) + responses: + '200': + description: > + OK. The requested Individual Transmission Quality Measurement Subscription resource + shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual Transmission Quality Measurement Subscription resource. + operationId: UpdateIndTransQualMeasSubsc + tags: + - Individual Transmission Quality Measurement Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + responses: + '200': + description: > + OK. The Individual Transmission Quality Measurement Subscription resource is + successfully updated and a representation of the updated resource shall be returned in + the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + '204': + description: > + No Content. The Individual Transmission Quality Measurement Subscription resource is + successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual Transmission Quality Measurement Subscription resource. + operationId: ModifyIndTransQualMeasSubsc + tags: + - Individual Transmission Quality Measurement Subscription (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/TransQualMeasSubscPatch' + responses: + '200': + description: > + OK. The Individual Transmission Quality Measurement Subscription resource is + successfully modified and a representation of the updated resource shall be returned in + the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/TransQualMeasSubsc' + '204': + description: > + No Content. The Individual Transmission Quality Measurement Subscription resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual Transmission Quality Measurement Subscription resource. + operationId: DeleteIndTransQualMeasSubsc + tags: + - Individual Transmission Quality Measurement Subscription (Document) + responses: + '204': + description: > + No Content. The Individual Transmission Quality Measurement Subscription resource is + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /reports: + get: + summary: Retrieve Historical Transmission Quality Measurement Report(s). + operationId: GetHistTransQualMeasReports + tags: + - Historical Transmission Quality Measurement Reports (Collection) + parameters: + - name: app-traffic-ids + in: query + required: true + schema: + type: array + items: + type: string + minItems: 1 + - name: val-group-id + in: query + required: false + schema: + type: string + - name: val-ue-ids-list + in: query + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: all-val-ues + in: query + required: false + schema: + type: boolean + default: false + - name: supp-feat + in: query + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + OK. The requested Historical Transmission Quality Measurement Report(s) shall be + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/HistTransQualMeasReports' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + +# +# STRUCTURED DATA TYPES +# + + TransQualMeasSubsc: + description: > + Represents a Transmission Quality Measurement Subscription. + type: object + properties: + appTrafficIds: + type: array + items: + type: string + minItems: 1 + valGroupId: + type: string + valUeIdsList: + type: array + items: + type: string + minItems: 1 + allValUesInd: + type: boolean + default: false + measConds: + type: array + items: + $ref: 'TS29549_SS_Events.yaml#/components/schemas/ValidityConditions' + minItems: 1 + reqs: + type: object + additionalProperties: + $ref: '#/components/schemas/TransQualMeasReq' + minProperties: 1 + nullable: true + description: > + Represents the transmission quality measurement reporting requirements of the + subscription. + The key of the map shall be any unique string encoded value. + subsExpTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTimeRo' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - appTrafficIds + - reqs + - notifUri + oneOf: + - required: [valGroupId] + - required: [valUeIdsList] + - required: [allValUesInd] + + TransQualMeasReq: + description: > + Represents Transmission Quality Measurement requirements. + type: object + properties: + measId: + type: array + items: + $ref: '#/components/schemas/MeasurementId' + minItems: 1 + repType: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + repPeriodicity: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + repGranularity: + $ref: '#/components/schemas/RepGranularity' + measWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + measExpTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + repCriteria: + $ref: '#/components/schemas/TransQualMeasCriteria' + required: + - measId + + TransQualMeasSubscPatch: + description: > + Represents the requested modifications to a Transmission Quality Measurement Subscription. + type: object + properties: + measConds: + type: array + items: + $ref: 'TS29549_SS_Events.yaml#/components/schemas/ValidityConditions' + minItems: 1 + reqs: + type: object + additionalProperties: + $ref: '#/components/schemas/TransQualMeasReq' + minProperties: 1 + nullable: true + description: > + Represents the transmission quality measurement reporting requirements of the + subscription. + The key of the map shall be any unique string encoded value and shall be set to the same + value as the one provided during the creation of the transmission quality measurement + subscription. + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + TransQualMeasNotif: + description: > + Represents a Transmission Quality Measurement Notification. + type: object + properties: + reports: + type: array + items: + $ref: '#/components/schemas/TransQualMeasReport' + minItems: 1 + required: + - reports + + TransQualMeasReport: + description: > + Represents a Transmission Quality Measurement report. + type: object + properties: + measId: + type: array + items: + $ref: '#/components/schemas/MeasurementId' + minItems: 1 + valUeIds: + type: array + items: + type: string + minItems: 1 + measData: + $ref: '#/components/schemas/TransQualMeasData' + required: + - measId + + TransQualMeasCriteria: + description: > + Represents the Transmission Quality Measurement reporting criteria. + type: object + properties: + minLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + maxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UintegerRm' + minBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + minPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + maxPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRateRm' + minJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32Rm' + maxJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32Rm' + anyOf: + - required: [minLatency] + - required: [maxLatency] + - required: [minBitRate] + - required: [maxBitRate] + - required: [minPackLossRate] + - required: [maxPackLossRate] + - required: [minJitter] + - required: [maxJitter] + + TransQualMeasData: + description: > + Represents the Transmission Quality Measurement data. + type: object + properties: + minLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avgLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + stdDevLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + kPercLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + avgBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + stdDevBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + kPercBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + minPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + maxPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + avgPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + stdDevPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + kPercPackLossRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + minJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + avgJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + stdDevJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + kPercJitter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + measPeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + timestamp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + anyOf: + - required: [minLatency] + - required: [maxLatency] + - required: [avgLatency] + - required: [minBitRate] + - required: [maxBitRate] + - required: [avgBitRate] + - required: [minPackLossRate] + - required: [maxPackLossRate] + - required: [avgPackLossRate] + - required: [minJitter] + - required: [maxJitter] + - required: [avgJitter] + + HistTransQualMeasReports: + description: > + Represents Historical Transmission Quality Measurement Report(s). + type: object + properties: + reports: + type: array + items: + $ref: '#/components/schemas/TransQualMeasReport' + minItems: 0 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - reports + + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + MeasurementId: + anyOf: + - type: string + enum: + - LATENCY + - BITRATE + - PACKET_LOSS_RATE + - JITTER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the transmission quality measurement type. + Possible values are: + - LATENCY: Indicates that the requested/reported measurement is the latency. + - BITRATE: Indicates that the requested/reported measurement is the bit rate. + - PACKET_LOSS_RATE: Indicates that the requested/reported measurement is the packet loss + rate. + - JITTER: Indicates that the requested/reported measurement is the jitter. + + RepGranularity: + anyOf: + - type: string + enum: + - INDIVIDUAL_VAL_UE + - VAL_GROUP + - ALL_UES + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the reporting granularity. + Possible values are: + - INDIVIDUAL_VAL_UE: Indicates that the granularity is individual VAL UE. + - VAL_GROUP: Indicates that the granularity is VAL Group. + - ALL_UES: Indicates that the granularity is all VAL UE(s). + + +# Data types describing alternative data types or combinations of data types: +# + diff --git a/TS29549_SS_Events.yaml b/TS29549_SS_Events.yaml new file mode 100644 index 0000000..4df2ea6 --- /dev/null +++ b/TS29549_SS_Events.yaml @@ -0,0 +1,850 @@ +openapi: 3.0.0 + +info: + title: SS_Events + description: | + API for SEAL Events management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.3" + +externalDocs: + description: > + 3GPP TS 29.549 V18.3.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-events/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /subscriptions: + post: + description: Creates a new individual SEAL Event Subscription. + operationId: CreateSealEventSubsc + tags: + - SEAL Events Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventSubscription' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: SEAL Events subscription resource created successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventSubscription' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + delete: + description: Deletes an individual SEAL Event Subscription. + operationId: DeleteIndSealEventSubsc + tags: + - Individual SEAL Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifier of an individual Events Subscription + required: true + schema: + type: string + responses: + '204': + description: > + The individual SEAL Events Subscription matching the subscriptionId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an existing SEAL Event Subscription. + operationId: ModifyIndSealEventSubsc + tags: + - Individual SEAL Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifier of an individual Events Subscription + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SEALEventSubscriptionPatch' + responses: + '200': + description: > + The definition SEAL event subscription is modified successfully and + a representation of the updated service API is returned in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventSubscription' + '204': + description: No Content. The SEAL Event Subscription is modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + description: Replace an existing SEAl event subscription. + operationId: UpdateIndSealEventSubsc + tags: + - Individual SEAL Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Identifier of an individual Events Subscription + required: true + schema: + type: string + requestBody: + description: Individual SEAL events subscription to be replaced. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventSubscription' + responses: + '200': + description: SEAL Event subscription updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/SEALEventSubscription' + '204': + description: No Content. Individual SEAL event subscription was updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + SEALEventSubscription: + description: Represents an individual SEAL Event Subscription resource. + type: object + properties: + subscriberId: + type: string + description: String identifying the subscriber of the event. + eventSubs: + type: array + items: + $ref: '#/components/schemas/EventSubscription' + minItems: 1 + description: Subscribed events. + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the SEAL server to send a test notification. + Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + eventDetails: + type: array + items: + $ref: '#/components/schemas/SEALEventDetail' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subscriberId + - eventSubs + - eventReq + - notificationDestination + + SEALEventSubscriptionPatch: + description: Represents the partial update of individual SEAL Event Subscription resource. + type: object + properties: + eventSubs: + type: array + items: + $ref: '#/components/schemas/EventSubscription' + minItems: 1 + description: Subscribed events. + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + SEALEventNotification: + description: Represents notification information of a SEAL Event. + type: object + properties: + subscriptionId: + type: string + description: Identifier of the subscription resource. + eventDetails: + type: array + items: + $ref: '#/components/schemas/SEALEventDetail' + minItems: 1 + description: Detailed notifications of individual events. + required: + - subscriptionId + - eventDetails + + EventSubscription: + description: Represents the subscription to a single SEAL event. + type: object + properties: + eventId: + $ref: '#/components/schemas/SEALEvent' + valGroups: + type: array + items: + $ref: '#/components/schemas/VALGroupFilter' + minItems: 1 + description: > + Each element of the array represents the VAL group identifier(s) of a VAL service + that the subscriber wants to know in the interested event. + identities: + type: array + items: + $ref: '#/components/schemas/IdentityFilter' + minItems: 1 + description: > + Each element of the array represents the VAL User / UE IDs of a VAL service + that the event subscriber wants to know in the interested event. + monFltr: + type: array + items: + $ref: '#/components/schemas/MonitorFilter' + minItems: 1 + description: > + List of event monitoring details that the subscriber wishes to mmonitor the VAL UEs, + VAL group and/or VAL service. + areaInt: + type: array + items: + $ref: '#/components/schemas/MonitorLocationInterestFilter' + minItems: 1 + description: > + Represents the list of VAL User / UE IDs and the area of interest information + which the subscriber wishes to monitor the location deviation of VAL User / UEs. + locAreaMon: + type: array + items: + $ref: '#/components/schemas/MonLocAreaInterestFltr' + minItems: 1 + description: > + Each element represents the location area monitoring details to monitor the + VA UEs moving in and out of the provided location area. + partialFailRep: + $ref: '#/components/schemas/PartialEventSubscFailRep' + required: + - eventId + + SEALEventDetail: + description: Represents the SEAL event details. + type: object + properties: + eventId: + $ref: '#/components/schemas/SEALEvent' + lmInfos: + type: array + items: + $ref: '#/components/schemas/LMInformation' + minItems: 1 + valGroupDocuments: + type: array + items: + $ref: 'TS29549_SS_GroupManagement.yaml#/components/schemas/VALGroupDocument' + minItems: 1 + description: > + The VAL groups documents with modified membership and configuration information. + profileDocs: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ProfileDoc' + minItems: 1 + description: Updated profile information associated with VAL Users or VAL UEs. + msgFltrs: + type: array + items: + $ref: '#/components/schemas/MessageFilter' + minItems: 1 + description: > + The message filter information for various member VAL User or UEs of the VAL group. + monRep: + type: array + items: + $ref: '#/components/schemas/MonitorEventsReport' + minItems: 1 + description: The events reports with details of the events related to the VAL UE(s). + locAdhr: + type: array + items: + $ref: '#/components/schemas/LocationDevMonReport' + minItems: 1 + description: > + The location deviation information for the interested VAL User ID or UE IDs + in a given location. + tempGroupInfo: + $ref: '#/components/schemas/TempGroupInfo' + locAreaMonRep: + type: array + items: + $ref: '#/components/schemas/LocationAreaMonReport' + minItems: 1 + description: The location area monitoring of the given area of interest. + required: + - eventId + + VALGroupFilter: + description: Represents a filter of VAL group identifiers belonging to a VAL service. + type: object + properties: + valSvcId: + type: string + description: Identity of the VAL service + valGrpIds: + type: array + items: + type: string + minItems: 1 + description: > + VAL group identifiers that event subscriber wants to know in the interested event. + required: + - valGrpIds + + IdentityFilter: + description: Represents a filter of VAL User / UE identities belonging to a VAL service. + type: object + properties: + valSvcId: + type: string + description: Identity of the VAL service + valTgtUes: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: > + VAL User IDs or VAL UE IDs that the event subscriber wants to know + in the interested event. + suppLoc: + type: boolean + description: Set to true by Subscriber to request the supplementary location information. + locQoS: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + + LMInformation: + description: Represents the location information for a VAL User ID or a VAL UE ID. + type: object + properties: + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + locInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + valSvcId: + type: string + description: Identity of the VAL service + required: + - locInfo + - valTgtUe + + MessageFilter: + description: Represents the message filters applicable to a VAL User ID or VAL UE ID. + type: object + properties: + reqUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + tgtUe: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: List of VAL User or UE IDs whose message to be sent. + maxMsgs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + scheds: + type: array + items: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + minItems: 1 + description: Time frame associated with total number of messages. + msgTypes: + type: array + items: + type: string + minItems: 1 + description: List of message types to be sent to VAL UE. + required: + - reqUe + + MonitorFilter: + description: Represents the event monitoring filters applicable to a VAL User ID or VAL UE ID. + type: object + properties: + idnts: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: List of VAL User or UE IDs whose events monitoring is requested. + valSvcId: + type: string + description: Identity of the VAL service. + valGrpId: + type: string + description: Identity of the group of the target UEs. + profId: + type: string + description: The monitoring profile ID identifying a list of monitoring, analytics events. + valCnds: + type: array + items: + $ref: '#/components/schemas/ValidityConditions' + minItems: 1 + description: The temporal,spatial conditions for the events to be considered valid. + evntDets: + type: array + items: + $ref: '#/components/schemas/MonitorEvents' + minItems: 1 + description: List of monitoring, analytics events to be monitored. + + MonitorEvents: + description: List of event types to be monitored in the context of events monitoring service. + type: object + properties: + cnEvnts: + type: array + items: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/MonitoringType' + minItems: 1 + description: List of monitoring events related to VAL UE. + anlEvnts: + type: array + items: + $ref: 'TS29522_AnalyticsExposure.yaml#/components/schemas/AnalyticsEvent' + minItems: 1 + description: List of analytics events related to VAL UE. + + MonitorEventsReport: + description: List of monitoring and/or analytics events related to VAL UE. + type: object + properties: + tgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + evnts: + type: array + items: + $ref: '#/components/schemas/MonitorEvents' + minItems: 1 + description: List of monitoring and analytics events related to VAL UE. + required: + - tgtUe + - evnts + + ValidityConditions: + description: List of monitoring and/or analytics events related to VAL UE. + type: object + properties: + locArea: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + tmWdws: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + description: Time window validity conditions. + + MonitorLocationInterestFilter: + description: Represents the location monitoring filter information. + type: object + properties: + tgtUes: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: List of VAL Users or UE IDs for which location monitoring is requested. + locInt: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + valSvcId: + description: Identifier of the VAL service area to monitor the location deviation. + type: string + notInt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - tgtUes + - notInt + oneOf: + - required: [locInt] + - required: [valSrvId] + + LocationDevMonReport: + description: Location deviation monitoring report. + type: object + properties: + tgtUes: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: List of VAL Users or UE IDs for which report is related to. + locInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + notifType: + $ref: '#/components/schemas/LocDevNotification' + required: + - tgtUes + - locInfo + - notifType + + TempGroupInfo: + description: Represents the created temporary VAL group information. + type: object + properties: + valGrpIds: + type: array + items: + type: string + minItems: 1 + tempValGrpId: + type: string + valServIds: + type: array + items: + type: string + minItems: 1 + required: + - valGrpIds + - tempValGrpId + + MonLocAreaInterestFltr: + description: Filter information indicate the area of interest and triggering events. + type: object + properties: + locInfoCri: + $ref: '#/components/schemas/LocationInfoCriteria' + trigEvnts: + type: array + items: + $ref: '#/components/schemas/MonLocTriggerEvent' + minItems: 1 + description: Triggering events when to send information. + required: + - locInfoCri + + LocationInfoCriteria: + description: > + Geographic location and reference UE details, where the UEs moving in and out + to be monitored. + type: object + properties: + geoArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + refUe: + $ref: '#/components/schemas/ReferenceUEDetail' + oneOf: + - required: [geoArea] + - required: [refUe] + + ReferenceUEDetail: + description: Reference UE details, where the UEs moving in and out to be monitored. + type: object + properties: + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + proxRange: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + proxRangeFrac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + required: + - valTgtUe + - proxRange + + LocationAreaMonReport: + description: Event report to notify the VAL UEs moving in or out from a given location. + type: object + properties: + curPreUEs: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: List of identities of all VAL UEs present in the given location area. + moveInOutUEs: + $ref: '#/components/schemas/MoveInOutUEDetails' + trigEvnt: + $ref: '#/components/schemas/MonLocTriggerEvent' + + MoveInOutUEDetails: + description: List of UEs moved in and out. + type: object + properties: + moveInUEs: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: > + List of identities of VAL UEs who moved in to given location area + since previous notification. + moveOutUEs: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: > + List of identities of VAL UEs who moved out of the given location area + since previous notification. + + PartialEventSubscFailRep: + description: Represents the partial failure report during the subscription creation or update. + type: object + properties: + valTgtUes: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + description: > + List of VAL user(s) / VAL UE(s) whose identifier(s) is not found. + valGrpIds: + type: array + items: + type: string + minItems: 1 + description: > + List of VAL group(s) whose identifier(s) is not found. + oneOf: + - required: [valTgtUes] + - required: [valGrpIds] + +# Simple data types and Enumerations + + SEALEvent: + anyOf: + - type: string + enum: + - LM_LOCATION_INFO_CHANGE + - GM_GROUP_INFO_CHANGE + - CM_USER_PROFILE_CHANGE + - GM_GROUP_CREATE + - NRM_MONITOR_UE_USER_EVENTS + - LM_LOCATION_DEVIATION_MONITOR + - GM_TEMP_GROUP_FORMATION + - LM_LOCATION_AREA_MONITOR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the type of SEAL events that can be subscribed. + Possible values are: + - LM_LOCATION_INFO_CHANGE: Events related to the location information of VAL Users or + VAL UEs from the Location Management Server. + - GM_GROUP_INFO_CHANGE: Events related to the modification of VAL group membership + and configuration information from the Group Management Server. + - CM_USER_PROFILE_CHANGE: Events related to update of user profile information from + the Configuration Management Server. + - GM_GROUP_CREATE: Events related to creation of new VAL groups from the Group + Mananagement Server. + - NRM_MONITOR_UE_USER_EVENTS: Monitoring and analytic events related to VAL UEs, + users or VAL group, from the Network Resource Management Server. + - LM_LOCATION_DEVIATION_MONITOR: Events from Location Management server, + related to the deviation of the VAL User(s) / UE(s) location from an area of interest. + - GM_TEMP_GROUP_FORMATION: Events related to the formation of new temporary VAL groups + from the Group Management Server. + - LM_LOCATION_AREA_MONITOR: Events from Location Management server, related to the list + of UEs moving in or moving out of the specific location. + + LocDevNotification: + anyOf: + - type: string + enum: + - NOTIFY_MISMATCH_LOCATION + - NOTIFY_ABSENCE + - NOTIFY_PRESENCE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + Enumeration of location deviation notification reports. + - NOTIFY_MISMATCH_LOCATION: This value indicates that the location information of + the VAL UE(s) from the SEAL LM client and the core network are not matching. + - NOTIFY_ABSENCE: This value indicates that the current location information of + the VAL UE(s)is deviating from the VAL server's area of interest. + - NOTIFY_PRESENCE: This value indicates that the current location information of + the VAL UE(s) is within the VAL server's area of interest. + + MonLocTriggerEvent: + anyOf: + - type: string + enum: + - DISTANCE_TRAVELLED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Identifies the triggering event in the location area monitor filtering. + Possible values are: + - DISTANCE_TRAVELLED: This value indicates the trigger event for the location area + monitoring based on the distance travelled by the reference UE. diff --git a/TS29549_SS_GroupManagement.yaml b/TS29549_SS_GroupManagement.yaml new file mode 100644 index 0000000..d08356a --- /dev/null +++ b/TS29549_SS_GroupManagement.yaml @@ -0,0 +1,421 @@ +openapi: 3.0.0 + +info: + title: SS_GroupManagement + description: | + API for SEAL Group management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.1" + +externalDocs: + description: > + 3GPP TS 29.549 V18.1.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-gm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /group-documents: + post: + description: Creates a new VAL group document. + operationId: CreateValGroupDoc + tags: + - VAL Group Documents (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + responses: + '201': + description: VAL group created sucessfully. + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + description: Retrieves VAL group documents satisfying filter criteria + operationId: RetrieveValGroupDocs + tags: + - VAL Group Documents (Collection) + parameters: + - name: val-group-id + in: query + description: String identifying the VAL group. + schema: + type: string + - name: val-service-id + in: query + description: String identifying the Val service. + schema: + type: string + responses: + '200': + description: List of VAL group documents matching the query parameters in the request. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/VALGroupDocument' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /group-documents/{groupDocId}: + get: + description: Retrieves VAL group information satisfying filter criteria. + operationId: RetrieveIndValGroupDoc + tags: + - Individual VAL Group Document (Document) + parameters: + - name: groupDocId + in: path + description: String identifying an individual VAL group document resource. + required: true + schema: + type: string + - name: group-members + in: query + description: > + When set to true indicates the group management server to send the members + list information of the VAL group. + schema: + type: boolean + - name: group-configuration + in: query + description: > + When set to true indicates the group management server to send the group + configuration information of the VAL group. + schema: + type: boolean + responses: + '200': + description: > + The VAL group information based on the request from the VAL server. Includes + VAL group members list if group-members flag is set to true in the request, + VAL group configuration information if the group-configuration flag is set to + true in the request, VAL group identifier, whole VAL group document resource + if both group-members and group-configuration flags are omitted/set to false + in the request. + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + description: Updates an individual VAL group document. + operationId: UpdateIndValGroupDoc + tags: + - Individual VAL Group Document (Document) + parameters: + - name: groupDocId + in: path + description: String identifying an individual VAL group document resource + required: true + schema: + type: string + requestBody: + description: VAL group document to be updated in Group management server. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + responses: + '200': + description: VAL group document updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + description: Deletes a VAL Group. + operationId: DeleteIndValGroupDoc + tags: + - Individual VAL Group Document (Document) + parameters: + - name: groupDocId + in: path + description: String identifying an individual VAL group document resource. + required: true + schema: + type: string + responses: + '204': + description: The individual VAL group matching groupDocId was deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an existing VAL Group document. + operationId: ModifyIndValGroupDoc + tags: + - Individual VAL Group Document (Document) + parameters: + - name: groupDocId + in: path + description: Identifier of an individual VAL group document. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/VALGroupDocumentPatch' + responses: + '200': + description: > + The individual VAL Group document is modified successfully and a + representation of the updated VAL Group document is returned in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/VALGroupDocument' + '204': + description: No Content. The individual VAL group document is modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + VALGroupDocument: + description: Represents details of the VAL group document information. + type: object + properties: + valGroupId: + type: string + description: The VAL group idenitity. + grpDesc: + type: string + description: The text description of the VAL group. + members: + type: array + description: The list of VAL User IDs or VAL UE IDs, which are members of the VAL group. + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + valGrpConf: + type: string + description: Configuration data for the VAL group. + valServiceIds: + type: array + description: The list of VAL services enabled on the group. + items: + type: string + minItems: 1 + valSvcInf: + type: string + description: VAL service specific information. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + resUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + locInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + addLocInfo: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + valSvcAreaId: + type: string + description: Identity of the VAL service area. + extGrpId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + com5GLanType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + required: + - valGroupId + + VALGroupDocumentPatch: + description: Represents details of the partial update of VAL group document information. + type: object + properties: + grpDesc: + type: string + description: The text description of the VAL group. + members: + type: array + description: The list of VAL User IDs or VAL UE IDs, which are members of the VAL group. + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + valGrpConf: + type: string + description: Configuration data for the VAL group. + valServiceIds: + type: array + description: The list of VAL services enabled on the group. + items: + type: string + minItems: 1 + locInfo: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + addLocInfo: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + valSvcAreaId: + type: string + description: Identity of the VAL service area. + extGrpId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalGroupId' + com5GLanType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' diff --git a/TS29549_SS_KeyInfoRetrieval.yaml b/TS29549_SS_KeyInfoRetrieval.yaml new file mode 100644 index 0000000..0214eab --- /dev/null +++ b/TS29549_SS_KeyInfoRetrieval.yaml @@ -0,0 +1,109 @@ +openapi: 3.0.0 + +info: + title: SS_KeyInfoRetrieval + description: | + API for SEAL Key Information Retrieval. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.1.1" + +externalDocs: + description: > + 3GPP TS 29.549 V17.6.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-kir/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /key-records: + get: + description: Retrieve key management information specific to VAL service. + operationId: RetrieveKeyMgmtInfo + tags: + - Key Records (Collection) + parameters: + - name: val-service-id + in: query + description: String identifying an individual VAL service + required: true + schema: + type: string + - name: val-tgt-ue + in: query + description: Identifying a VAL target. + required: false + schema: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + responses: + '200': + description: The key management information of the VAL service, VAL User or VAL UE. + content: + application/json: + schema: + $ref: '#/components/schemas/ValKeyInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ValKeyInfo: + description: > + Represents key management information associated with VAL server, VAL user or VAL UE. + type: object + properties: + userUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + skmsId: + type: string + description: String identifying the key management server. + valService: + type: string + description: Unique identifier of a VAL Service. + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + keyInfo: + type: string + description: Key management information specific to VAL service, VAL User or VAL UE. + required: + - userUri + - valService + - keyInfo diff --git a/TS29549_SS_LocationAreaInfoRetrieval.yaml b/TS29549_SS_LocationAreaInfoRetrieval.yaml new file mode 100644 index 0000000..a922c05 --- /dev/null +++ b/TS29549_SS_LocationAreaInfoRetrieval.yaml @@ -0,0 +1,100 @@ +openapi: 3.0.0 + +info: + title: SS_LocationAreaInfoRetrieval + description: | + API for SEAL Location Area Info Retrieval. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.1.0-alpha.2" + +externalDocs: + description: > + 3GPP TS 29.549 V18.3.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-lair/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /location-retrievals: + get: + description: > + Retrieve the UE(s) information in an application defined proximity range of a location. + operationId: RetrieveUeLocInfo + tags: + - Location Information (Collection) + parameters: + - name: location-info + in: query + description: Location information around which the UE(s) information is requested. + required: true + schema: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + - name: val-svc-area-id + in: query + description: > + The val service area identifier around which which the UE(s) information is requested. + schema: + type: string + - name: range + in: query + description: > + The range information over which the UE(s) information is required, + expressed in meters. + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + responses: + '200': + description: > + The UE(s) information in an application defined proximity range of a location. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29549_SS_Events.yaml#/components/schemas/LMInformation' + minItems: 0 + description: > + The UE(s) information in an application defined proximity range of a location. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} diff --git a/TS29549_SS_LocationReporting.yaml b/TS29549_SS_LocationReporting.yaml new file mode 100644 index 0000000..848af54 --- /dev/null +++ b/TS29549_SS_LocationReporting.yaml @@ -0,0 +1,404 @@ +openapi: 3.0.0 + +info: + title: SS_LocationReporting + description: | + API for SEAL Location Reporting Configuration. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.2" + +externalDocs: + description: > + 3GPP TS 29.549 V18.4.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-lr/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /trigger-configurations: + post: + description: Creates a new location reporting configuration. + operationId: CreateLocReportingConfig + tags: + - SEAL Location Reporting Configurations (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + responses: + '201': + description: Location reporting configuration resource is created sucessfully. + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /trigger-configurations/{configurationId}: + get: + description: Retrieves an individual SEAL location reporting configuration information. + operationId: RetrieveLocReportingConfig + tags: + - Individual SEAL Location Reporting Configuration (Document) + parameters: + - name: configurationId + in: path + description: String identifying an individual configuration resource. + required: true + schema: + type: string + responses: + '200': + description: The location reporting configuration information. + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + description: Updates an individual SEAL location reporting configuration. + operationId: UpdateLocReportingConfig + tags: + - Individual SEAL Location Reporting Configuration (Document) + parameters: + - name: configurationId + in: path + description: String identifying an individual configuration resource. + required: true + schema: + type: string + requestBody: + description: Configuration information to be updated in location management server. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + responses: + '200': + description: The configuration is updated successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + description: Deletes an individual SEAL location reporting configuration. + operationId: DeleteLocReportingConfig + tags: + - Individual SEAL Location Reporting Configuration (Document) + parameters: + - name: configurationId + in: path + description: String identifying an individual configuration resource. + required: true + schema: + type: string + responses: + '204': + description: The individual configuration matching configurationId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + description: Modify an existing SEAL Location Reporting Configuration. + operationId: ModifyLocReportingConfig + tags: + - Individual SEAL Location Reporting Configuration (Document) + parameters: + - name: configurationId + in: path + description: Identifier of an individual SEAL location reporting configuration. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/LocationReportConfigurationPatch' + responses: + '200': + description: > + The individual SEAL location reporting configuration is modified successfully and + a representation of the updated SEAL location reporting configuration is returned + in the request body. + content: + application/json: + schema: + $ref: '#/components/schemas/LocationReportConfiguration' + '204': + description: > + No Content. The individual SEAL location reporting configuration is + modified successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + LocationReportConfiguration: + description: Represents the location reporting configuration information. + type: object + properties: + valServerId: + type: string + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + immRep: + type: boolean + monDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + accuracy: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/Accuracy' + valSvcAreaIds: + type: array + minItems: 1 + items: + type: string + description: > + Represents the VAL service area ID(s). + triggCriteria: + $ref: '#/components/schemas/TriggeringCriteria' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valServerId + - valTgtUe + + LocationReportConfigurationPatch: + description: Represents the location reporting configuration information patch. + type: object + properties: + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + monDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + accuracy: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/Accuracy' + valSvcAreaIds: + type: array + minItems: 1 + items: + type: string + description: > + Represents the VAL service area ID(s). + triggCriteria: + $ref: '#/components/schemas/TriggeringCriteria' + + TriggeringCriteria: + description: Represents the location reporting triggering criteria. + type: object + properties: + reportingMode: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + repPer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + locChgCond: + $ref: '#/components/schemas/LocChangeCond' + ioInd: + $ref: '#/components/schemas/InsideOutsideInd' + repSchedules: + type: array + minItems: 1 + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ScheduledCommunicationTime' + description: > + Indicates the requested reporting schedule, e.g., day(s) of the week + and/or time period(s) for the location reporting. + required: + - reportingMode + +# Simple data types and Enumerations + InsideOutsideInd: + anyOf: + - type: string + enum: + - INSIDE + - OUTSIDE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents a desired condition of the location reporting, + e.g., inside or outside the given area. + Possible values are: + - INSIDE: Indicates that the reporting shall occur when the UE is inside the given location. + - OUTSIDE: Indicates that the reporting shall occur when the UE is outside the given + location. + + LocChangeCond: + anyOf: + - type: string + enum: + - CELL + - NODEB + - TA_RA + - WLAN_AN + - CIVIC_ADDR + - GPS + - SAI + - ECGI + - RAT + - VAL_SERVICE_AREA + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents a desired condition of the requested location change. + Possible values are: + - CELL: The condition is cell change. + - NODEB: The condition is eNodeB or gNodeB change. + - TA_RA: The condition is TA or RA change. + - WLAN_AN: The condition is WLAN access network change (e.g., SSID or BSSID change). + - CIVIC_ADDR: The condition is civic address change. + - GPS: The condition is GPS coordinate change. + - SAI: The condition is SAI change.. + - ECGI: The condition is ECGI change. + - RAT: The condition is RAT change. + - VAL_SERVICE_AREA: The condition is VAL service area change. diff --git a/TS29549_SS_NetworkResourceAdaptation.yaml b/TS29549_SS_NetworkResourceAdaptation.yaml new file mode 100644 index 0000000..794a866 --- /dev/null +++ b/TS29549_SS_NetworkResourceAdaptation.yaml @@ -0,0 +1,1343 @@ +openapi: 3.0.0 +info: + version: 1.2.0-alpha.4 + title: SS_NetworkResourceAdaptation + description: | + SS Network Resource Adaptation Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.549 V18.4.0; Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-nra/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /multicast-subscriptions: + post: + summary: Creates a new Individual Multicast Subscription resource + operationId: CreateMulticastSubscription + tags: + - Multicast Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MulticastSubscription' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/MulticastSubscription' + headers: + Location: + description: > + Contains the URI of the created individual multicast subscription resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + UserPlaneNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /multicast-subscriptions/{multiSubId}: + get: + summary: "Reads an existing Individual Multicast Subscription" + operationId: GetMulticastSubscription + tags: + - Individual Multicast Subscription (Document) + parameters: + - name: multiSubId + in: path + description: Multicast Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/MulticastSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: "Delete an existing Individual Multicast Subscription" + operationId: DeleteMulticastSubscription + tags: + - Individual Multicast Subscription (Document) + parameters: + - name: multiSubId + in: path + description: Multicast Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-resources: + post: + summary: Request the creation of a new MBS Resource. + operationId: CreateMBSResource + tags: + - MBS Resources (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResourceReq' + responses: + '201': + description: > + Created. Successfull case. The requested MBS resource is successfully created and a + representation of the created Individual MBS Resource resource is returned in the + response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResourceResp' + headers: + Location: + description: > + Contains the URI of the created Individual MBS Resource resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + UserPlaneNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneNotification' + responses: + '204': + description: No Content. The notification was succesfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-resources/{mbsResId}: + parameters: + - name: mbsResId + in: path + description: Represents the identifier of the Individual MBS Resource resource. + required: true + schema: + type: string + + get: + summary: Request the retrieval of an existing Individual MBS Resource. + operationId: GetIndivMBSResource + tags: + - Individual MBS Resource (Document) + responses: + '200': + description: > + OK. Successful case. A representation of the requested Individual MBS Resource resource + is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResource' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS Resource. + operationId: UpdateIndivMBSResource + tags: + - Individual MBS Resource (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResource' + responses: + '200': + description: > + OK. Successful case. The targeted Individual MBS Resource resource is successfully + updated and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResource' + '204': + description: > + No Content. Successful case. The targeted Individual MBS Resource resource is + successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS Resource. + operationId: ModifyIndivMBSResource + tags: + - Individual MBS Resource (Document) + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MBSResourcePatch' + responses: + '200': + description: > + OK. Successful case. The targeted Individual MBS Resource resource is successfully + modified and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSResource' + '204': + description: > + No Content. Successful case. The targeted Individual MBS Resource resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS Resource. + operationId: DeleteIndivMBSResource + tags: + - Individual MBS Resource (Document) + responses: + '204': + description: > + No Content. Successful case. The targeted Individual MBS Resource resource is + successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-resources/{mbsResId}/activate: + parameters: + - name: mbsResId + in: path + description: Represents the identifier of the Individual MBS Resource resource. + required: true + schema: + type: string + + post: + summary: Request the activation of an existing MBS Resource. + operationId: ActivateMBSResource + tags: + - Individual MBS Resource (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsResAct' + responses: + '200': + description: > + OK. The activation request is successfully received and processed. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsResAct' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /mbs-resources/{mbsResId}/deactivate: + parameters: + - name: mbsResId + in: path + description: Represents the identifier of the Individual MBS Resource resource. + required: true + schema: + type: string + + post: + summary: Request the deactivation of an existing MBS Resource. + operationId: DeactivateMBSResource + tags: + - Individual MBS Resource (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MbsResDeact' + responses: + '200': + description: > + OK. The deactivation request is successfully received and processed. + content: + application/json: + schema: + $ref: '#/components/schemas/MbsResDeact' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /unicast-subscriptions: + post: + summary: Creates a new Individual Unicast Subscription resource + operationId: CreateUnicastSubscription + tags: + - Unicast Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UnicastSubscription' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/UnicastSubscription' + headers: + Location: + description: > + Contains the URI of the created individual unicast subscription resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + UserPlaneNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /unicast-subscriptions/{uniSubId}: + get: + summary: "Reads an existing Individual Unicast Subscription" + operationId: GetUnicastSubscription + tags: + - Individual Unicast Subscription (Document) + parameters: + - name: uniSubId + in: path + description: Unicast Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/UnicastSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: "Delete an existing Individual Unicast Subscription" + operationId: DeleteUnicastSubscription + tags: + - Individual Unicast Subscription (Document) + parameters: + - name: uniSubId + in: path + description: Unicast Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /tsc-stream-availability: + get: + summary: Discover the TSC stream availability information. + operationId: GetTscStreamAvailability + tags: + - TSC stream availability discovery + parameters: + - name: stream-specs + in: query + description: > + The MAC address(es) of the source DS-TT port(s) and the destination DS-TT port(s). + required: true + schema: + type: array + items: + $ref: '#/components/schemas/StreamSpecification' + minItems: 1 + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TscStreamAvailability' + minItems: 0 + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /tsc-streams: + get: + summary: Retrieval of TSC stream data. + operationId: GetTscStream + tags: + - TSC stream retrieval + parameters: + - name: val-stream-ids + in: query + description: Retrieval of TSC Stream data, identified by the VAL Stream ID(s). + required: false + schema: + type: array + items: + type: string + minItems: 1 + + responses: + '200': + description: OK (successful query of TSC stream resource) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TscStreamData' + minItems: 1 + + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /tsc-streams/{valStreamId}: + get: + summary: "Reads an existing Individual TSC stream data information" + operationId: GetTscStreamData + tags: + - Individual TSC Stream Retrieval + parameters: + - name: valStreamId + in: path + description: The VAL Stream ID identifies the TSC stream. + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/TscStreamData' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Create a TSC stream identified by a VAL stream identifier. + operationId: PutTscStream + tags: + - TSC stream creation + description: Create an individual TSC stream identified by VAL Stream ID. + parameters: + - name: valStreamId + in: path + description: VAL stream identifier + required: true + schema: + type: string + requestBody: + description: TSC stream creation request data from the VAL server to the NRM server. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TscStreamData' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/TscStreamData' + headers: + Location: + description: Contains the URI of the created individual TSC stream resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: "Delete an existing Individual TSC stream" + operationId: DeleteTscStream + tags: + - Individual TSC Stream Deletion + parameters: + - name: valStreamId + in: path + description: The VAL Stream ID identifies the TSC stream. + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + MulticastSubscription: + description: Represents a multicast subscription. + type: object + properties: + valGroupId: + type: string + anncMode: + $ref: '#/components/schemas/ServiceAnnoucementMode' + multiQosReq: + type: string + locArea: + $ref: 'TS29122_GMDviaMBMSbyMB2.yaml#/components/schemas/MbmsLocArea' + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + tmgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + localMbmsInfo: + $ref: 'TS29486_VAE_FileDistribution.yaml#/components/schemas/LocalMbmsInfo' + localMbmsActInd: + type: boolean + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reqTestNotif: + type: boolean + wsNotifCfg: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + upIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + upIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + upPortNum: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + radioFreqs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + minItems: 1 + required: + - valGroupId + - anncMode + - multiQosReq + - notifUri + + UnicastSubscription: + description: Represents a unicast subscription. + type: object + properties: + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + uniQosReq: + type: string + duration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reqTestNotif: + type: boolean + wsNotifCfg: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valTgtUe + - notifUri + + UserPlaneNotification: + description: Represents a notification on User Plane events. + type: object + properties: + notifId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + eventNotifs: + type: array + items: + $ref: '#/components/schemas/NrmEventNotification' + minItems: 1 + required: + - notifId + - eventNotifs + + NrmEventNotification: + description: Represents a notification on an individual User Plane event. + type: object + properties: + event: + $ref: '#/components/schemas/NrmEvent' + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + deliveryMode: + $ref: '#/components/schemas/DeliveryMode' + streamIds: + type: array + items: + type: string + minItems: 1 + required: + - event + - ts + + TscStreamAvailability: + description: > + TSC stream availability information includes the stream specification and list of traffic + specifications. This response shall include stream specification matching one of the query + parameters provided in the request. + type: object + properties: + streamSpec: + $ref: '#/components/schemas/StreamSpecification' + trafficSpecs: + type: array + items: + $ref: '#/components/schemas/TrafficSpecification' + minItems: 1 + required: + - streamSpec + - trafficSpecs + + StreamSpecification: + description: > + Stream specification includes MAC addresses of the source and destination DS-TT ports. + type: object + properties: + srcMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + dstMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + required: + - srcMacAddr + - dstMacAddr + + TrafficSpecification: + description: > + The traffic classe supported by the DS-TTs and available end-to-end maximum latency value. + type: object + properties: + trafficClass: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + e2eMaxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - trafficClass + - e2eMaxLatency + + TscStreamData: + description: TSC stream data information. + type: object + properties: + streamSpec: + $ref: '#/components/schemas/StreamSpecification' + trafficSpecInfo: + $ref: '#/components/schemas/TrafficSpecInformation' + required: + - streamSpec + - trafficSpecInfo + + TrafficSpecInformation: + description: > + The traffic classe supported by the DS-TTs and available end-to-end latency + value and Priority Code Point (PCP) value. + type: object + properties: + pcpValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxFramInt: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + maxFramSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxIntFrames: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + required: + - pcpValue + - maxFramInt + - maxFramSize + - maxIntFrames + - maxLatency + + MBSResourceReq: + description: Represents the parameters to request the creation of an MBS Resource. + type: object + properties: + mbsResource: + $ref: '#/components/schemas/MBSResource' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsResource + + MBSResource: + description: Represents an MBS Resource. + type: object + properties: + valGroupId: + type: string + valUeIdsList: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + servAnmtMode: + $ref: '#/components/schemas/ServiceAnnoucementMode' + mbsResServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + mbsResServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalMbsServiceArea' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + netSysInd: + $ref: '#/components/schemas/NetSysIndicator' + localMbmsInfo: + $ref: 'TS29486_VAE_FileDistribution.yaml#/components/schemas/LocalMbmsInfo' + localMbmsActInd: + type: boolean + mbsResRespInfo: + $ref: '#/components/schemas/MBSResourceRespInfo' + oneOf: + - required: [valGroupId] + - required: [valUeIdsList] + not: + required: [localMbmsInfo, localMbmsActInd] + required: + - servAnmtMode + - mbsResServInfo + - notifUri + + MBSResourceRespInfo: + description: Represents NRM Server side information related to the MBS Resource. + type: object + properties: + mbs5gSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + mbmsBearerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + upIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + upIpv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + upPortNum: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Port' + mbs5GInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSession' + anyOf: + - required: [upIpv4Addr] + - required: [upIpv6Addr] + + MBSResourceResp: + description: Represents a response to an MBS Resource creation/modification request. + type: object + properties: + mbsResource: + $ref: '#/components/schemas/MBSResource' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsResource + + MBSResourcePatch: + description: Represents the parameters to request the modification of an MBS Resource. + type: object + properties: + mbsResServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + mbsResServiceArea: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalMbsServiceArea' + notifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + localMbmsInfo: + $ref: 'TS29486_VAE_FileDistribution.yaml#/components/schemas/LocalMbmsInfo' + localMbmsActInd: + type: boolean + mbsResRespInfo: + $ref: '#/components/schemas/MBSResourceRespInfo' + anyOf: + - required: [mbsResServInfo] + - required: [mbsResServiceArea] + - required: [localMbmsInfo] + not: + required: [localMbmsInfo, localMbmsActInd] + + MbsResAct: + description: Represents the parameters related to the activation of the MBS Resource. + type: object + properties: + mbs5gSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbs5gSessionId + + MbsResDeact: + description: Represents the parameters related to the deactivation of the MBS Resource. + type: object + properties: + mbs5gSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbs5gSessionId + + +# Simple data types and Enumerations + + ServiceAnnoucementMode: + anyOf: + - type: string + enum: + - NRM + - VAL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the service announcement mode. + Possible values are: + - NRM: NRM server performs the service announcement. + - VAL: VAL server performs the service announcement. + + DeliveryMode: + anyOf: + - type: string + enum: + - UNICAST + - MULTICAST + - MBS_MULTICAST + - MBS_BROADCAST + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + description: | + Indicates the user plane delivery mode. + Possible values are: + - UNICAST: Indicates Unicast delivery. + - MULTICAST: Indicates EPS MBMS Multicast delivery. + - MBS_MULTICAST: Indicates 5GS MBS Multicast delivery. + - MBS_BROADCAST: Indicates 5GS MBS Broadcast delivery. + + NrmEvent: + anyOf: + - type: string + enum: + - UP_DELIVERY_MODE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the NRM event. + Possible values are: + - UP_DELIVERY_MODE: User Plane delivery mode. + + NetSysIndicator: + anyOf: + - type: string + enum: + - 5GS + - EPS + - 5GS_AND_EPS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + description: | + Represents the network system indicator, i.e. 5GS, EPS or both. + Possible values are: + - 5GS: Indicates that the network system is 5GS. + - EPS: Indicates that the network system is EPS. + - 5GS_AND_EPS: Indicates that the network system is 5GS and EPS. diff --git a/TS29549_SS_NetworkResourceMonitoring.yaml b/TS29549_SS_NetworkResourceMonitoring.yaml new file mode 100644 index 0000000..2b4ea67 --- /dev/null +++ b/TS29549_SS_NetworkResourceMonitoring.yaml @@ -0,0 +1,631 @@ +openapi: 3.0.0 +info: + title: SS_NetworkResourceMonitoring + description: | + API for SEAL Network Resource Monitoring. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.1.0-alpha.2" +externalDocs: + description: > + 3GPP TS 29.549 V18.1.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/ss-nrm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 +paths: + /subscriptions: + post: + summary: Create individual unicast monitoring subscription resource or obtain unicast QoS monitoring data for VAL UEs, VAL Group, or VAL Streams. + operationId: SubscribeUnicastMonitoring + tags: + - Unicast Monitoring Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + responses: + '201': + description: > + The requested individual monitoring subscription resource is successfully created + and a representation of the created resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + headers: + Location: + description: Contains the URI of the newly created individual monitoring resource. + required: true + schema: + type: string + '200': + description: The requested unicast QoS monitoring data is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringReport' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + NotifyUnicastMonitoringData: + '{$request.body#/notifUri}': + post: + summary: Notify on updates of the individual monitoring resorce accoring the requested reporting settings. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringReport' + responses: + '204': + description: The notification is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /subscriptions/{subscriptionId}: + delete: + summary: Remove an existing individual unicast monitoring subscription resource according to the subscriptionId. + operationId: UnsubscribeUnicastMonitoring + tags: + - Individual Unicast Monitoring Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of an individual unicast monitoring subscription resource. + required: true + schema: + type: string + responses: + '204': + description: > + The Individual Unicast Monitoring Subscription resource matching the + subscriptionId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + summary: Read an existing individual unicast monitoring subscription resource according to the subscriptionId. + operationId: ReadUnicastMonitoringSubscription + tags: + - Individual Unicast Monitoring Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of an individual unicast monitoring subscription resource. + required: true + schema: + type: string + responses: + '200': + description: The requested individual unicast monitoring subscription returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: > + Update an individual unicast monitoring subscription identified by the subscriptionId. + operationId: UpdateUnicastMonitoring + tags: + - Individual Unicast Monitoring Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of an individual unicast monitoring subscription resource. + required: true + schema: + type: string + requestBody: + description: Updated details of the unicast QoS monitoring subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + responses: + '200': + description: > + The subscription is updated successfully, and the updated subscription + information returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: > + Modify an individual unicast monitoring subscription identified + by the subscriptionId. + operationId: ModifyUnicastMonitoring + tags: + - Individual Unicast Monitoring Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of an individual unicast monitoring subscription resource. + required: true + schema: + type: string + requestBody: + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MonitoringSubscriptionPatch' + responses: + '200': + description: > + Individual individual unicast QoS monitoring subscription resource is modified + successfully and representation of the modified individual unicast QoS monitoring + subscription resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MonitoringSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + MonitoringReport: + description: Indicates the monitoring information for VAL UEs list, VAL Group, or VAL Stream. + type: object + properties: + valUeIds: + type: array + minItems: 1 + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + description: List of VAL UEs whose QoS monitoring data is requested. + valGroupId: + type: string + description: The VAL Group Id which QoS monitoring data is requested. + valStreamIds: + type: array + minItems: 1 + items: + type: string + description: List of VAL streams for which QoS monitoring data is requested. + measData: + $ref: '#/components/schemas/MeasurementData' + failureRep: + type: array + items: + $ref: '#/components/schemas/FailureReport' + description: > + The failure report indicating the VAL UE(s) or VAL Stream ID(s) whose measurement + data is not obtained successfully. + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - measData + - timestamp + oneOf: + - required: [valUeIds] + - required: [valGroupId] + - required: [valStreamIds] + + MeasurementData: + description: Presents the aggregated measurement data. + type: object + properties: + dlDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + ulDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + rtDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avgPlr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketLossRate' + avgDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxDataRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + avrDlTrafficVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avrUlTrafficVol: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + anyOf: + - required: [dlDelay] + - required: [ulDelay] + - required: [rtDelay] + - required: [avgPlr] + - required: [avgDataRate] + - required: [maxDataRate] + - required: [avrDlTrafficVol] + - required: [avrUlTrafficVol] + + MeasurementPeriod: + description: > + Indicates the measurement time period. + type: object + properties: + measStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + measDuration: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - measStartTime + - measDuration + + ReportingRequirements: + description: Indicates the requested frequency of reporting. + type: object + properties: + reportingMode: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + reportingPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + reportingThrs: + type: array + items: + $ref: '#/components/schemas/ReportingThreshold' + minItems: 1 + immRep: + type: boolean + repTerminMode: + $ref: '#/components/schemas/TerminationMode' + expirationTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maxNumRep: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + termThr: + $ref: '#/components/schemas/MeasurementData' + termThrMode: + $ref: '#/components/schemas/ThresholdHandlingMode' + required: + - reportingMode + + FailureReport: + description: > + Represents the failure report indicating the VAL UE(s) or VAL Stream ID(s) + for which the NRM server failed to obtain the requested data. + type: object + properties: + valUeIds: + type: array + minItems: 1 + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + description: > + List of VAL UE(s) whose measurement data is not obtained successfully. + valStreamIds: + type: array + minItems: 1 + items: + type: string + description: > + List of VAL stream ID(s) whose measurement data is not obtained successfully. + failureReason: + $ref: '#/components/schemas/FailureReason' + measDataType: + $ref: '#/components/schemas/MeasurementDataType' + required: + - measDataType + + MeasurementRequirements: + description: Indicates the measurement requirements. + type: object + properties: + measDataTypes: + type: array + items: + $ref: '#/components/schemas/MeasurementDataType' + minItems: 1 + description: Indicates the required the QoS measurement data types. + measAggrGranWnd: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AverWindow' + measPeriod: + $ref: '#/components/schemas/MeasurementPeriod' + required: + - measDataTypes + + MonitoringSubscription: + description: The unicast monitoring subscription request. + type: object + properties: + valUeIds: + description: List of VAL UEs whose QoS monitoring data is requested. + type: array + minItems: 1 + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + valGroupId: + type: string + description: The VAL Group Id which QoS monitoring data is requested. + valStreamIds: + type: array + minItems: 1 + items: + type: string + description: List of VAL streams for which QoS monitoring data is requested. + measReqs: + $ref: '#/components/schemas/MeasurementRequirements' + monRep: + $ref: '#/components/schemas/MonitoringReport' + reportReqs: + $ref: '#/components/schemas/ReportingRequirements' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reqTestNotif: + type: boolean + wsNotifCfg: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oneOf: + - required: [valUeIds] + - required: [valGroupId] + - required: [valStreamIds] + + ReportingThreshold: + description: > + Indicates the requested reporting termination threshold for the measurement index(es). + type: object + properties: + measThrValues: + $ref: '#/components/schemas/MeasurementData' + thrDirection: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/MatchingDirection' + required: + - measThrValues + - thrDirection + + MonitoringSubscriptionPatch: + description: Represents the monitoring subscription modification request. + type: object + properties: + measReqs: + $ref: '#/components/schemas/MeasurementRequirements' + reportReqs: + $ref: '#/components/schemas/ReportingRequirements' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + +# Simple data types and Enumerations + MeasurementDataType: + anyOf: + - type: string + enum: + - DL_DELAY + - UL_DELAY + - RT_DELAY + - AVG_PLR + - AVG_DATA_RATE + - MAX_DATA_RATE + - AVG_DL_TRAFFIC_VOLUME + - AVG_UL_TRAFFIC_VOLUME + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the requested measurement data type. + Possible values are: + - DL_DELAY: Downlink packet delay. + - UL_DELAY: Uplink packet delay. + - RT_DELAY: Round trip packet delay. + - AVG_PLR: Average packet loss rate. + - AVG_DATA_RATE: Average data rate. + - MAX_DATA_RATE: Maximum data rate. + - AVG_DL_TRAFFIC_VOLUME: Average downlink traffic volume. + - AVG_UL_TRAFFIC_VOLUME: Average uplink traffic volume. + + TerminationMode: + anyOf: + - type: string + enum: + - TIME_TRIGGERED + - EVENT_TRIGGERED_NUM_REPORTS_REACHED + - EVENT_TRIGGERED_MEAS_THR_REACHED + - USER_TRIGGERED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the termination mode. + Possible values are: + - TIME_TRIGGERED: Time-triggered termination mode. + - EVENT_TRIGGERED_NUM_REPORTS_REACHED: Event-triggered termination number of reports + reached mode. + - EVENT_TRIGGERED_MEAS_THR_REACHED: The event-triggered termination measurement index + threshold reached mode. + - USER_TRIGGERED: User-triggered termination mode. + + FailureReason: + anyOf: + - type: string + enum: + - USER_NOT_FOUND + - STREAM_NOT_FOUND + - DATA_NOT_AVAILABLE + - OTHER_REASON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the failure reason. + Possible values are: + - USER_NOT_FOUND: The user is not found. + - STREAM_NOT_FOUND: The stream is not found. + - DATA_NOT_AVAILABLE: The requested data is not available. + - OTHER_REASON: Other reason (unspecified). + + ThresholdHandlingMode: + anyOf: + - type: string + enum: + - ALL_REACHED + - ANY_REACHED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates the multi-parameter threshold handling mode. + Possible values are: + - ALL_REACHED: The decision criterion is met when all the provided thresholds are reached. + - ANY_REACHED: The decision criterion is met when any of the provided threshold(s) + is reached. diff --git a/TS29549_SS_NetworkSliceAdaptation.yaml b/TS29549_SS_NetworkSliceAdaptation.yaml new file mode 100644 index 0000000..f942560 --- /dev/null +++ b/TS29549_SS_NetworkSliceAdaptation.yaml @@ -0,0 +1,101 @@ +openapi: 3.0.0 + +info: + title: SS_NetworkSliceAdaptation + description: | + API for SEAL Network Slice Adaptation. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.1.0-alpha.1" + +externalDocs: + description: > + 3GPP TS 29.549 V18.0.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-nsa/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /request: + post: + summary: request the network slice adaptation. + operationId: RequestNetworkSliceAdaptation + tags: + - Network Slice Adaptation Request + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NwSliceAdptInfo' + responses: + '204': + description: No Content. The requested network slice adaptation is successfully processed. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + NwSliceAdptInfo: + description: > + Represents the information associated with requested network slice adaptation + with the underlying network. + type: object + properties: + valServiceId: + type: string + valTgtUeIds: + type: array + items: + type: string + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valServiceId + - valTgtUeIds diff --git a/TS29549_SS_UserProfileRetrieval.yaml b/TS29549_SS_UserProfileRetrieval.yaml new file mode 100644 index 0000000..7bd6c5f --- /dev/null +++ b/TS29549_SS_UserProfileRetrieval.yaml @@ -0,0 +1,116 @@ +openapi: 3.0.0 + +info: + title: SS_UserProfileRetrieval + description: | + API for SEAL User Profile Retrieval. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.2.0-alpha.1" + +externalDocs: + description: > + 3GPP TS 29.549 V18.0.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-upr/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /val-services: + get: + description: Retrieve VAL User or VAL UE profile information. + operationId: RetrieveValUserProfile + tags: + - VAL Services + parameters: + - name: val-service-id + in: query + description: String identifying an individual VAL service + required: false + schema: + type: string + - name: val-tgt-ue + in: query + description: Identifying a VAL target UE. + required: true + schema: + $ref: '#/components/schemas/ValTargetUe' + responses: + '200': + description: The Profile information of the VAL User or VAL UE. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ProfileDoc' + minItems: 0 + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ProfileDoc: + description: Represents the profile information associated with a VAL user ID or a VAL UE ID. + type: object + properties: + profileInformation: + type: string + description: Profile information associated with the valUserId or valUeId. + valTgtUe: + $ref: '#/components/schemas/ValTargetUe' + required: + - profileInformation + - valTgtUe + + ValTargetUe: + description: Represents the information identifying a VAL user ID or a VAL UE ID. + type: object + properties: + valUserId: + type: string + description: Unique identifier of a VAL user. + valUeId: + type: string + description: Unique identifier of a VAL UE. + oneOf: + - required: [valUserId] + - required: [valUeId] diff --git a/TS29549_SS_VALServiceAreaConfiguration.yaml b/TS29549_SS_VALServiceAreaConfiguration.yaml new file mode 100644 index 0000000..8e2c6e2 --- /dev/null +++ b/TS29549_SS_VALServiceAreaConfiguration.yaml @@ -0,0 +1,527 @@ +openapi: 3.0.0 + +info: + title: SS_VALServiceAreaConfiguration + description: | + API for SEAL VAL Service Area Configuration Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.0.0-alpha.2" + +externalDocs: + description: > + 3GPP TS 29.549 V18.4.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-vsac/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /areas: + get: + summary: Obtain the VAL service area(s) according to the provided filtering criteria. + operationId: ObtainValServiceAreas + tags: + - VAL Service Areas (Collection) + parameters: + - name: val-svc-area-ids + in: query + description: Represents the requested VAL service areas. + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feats + in: query + description: To filter irrelevant responses related to unsupported features. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: The requested VAL service areas information is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaData' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /areas/configure: + post: + summary: Configure VAL service area(s). + operationId: ConfigureValServiceAreas + tags: + - Configure + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaReq' + responses: + '200': + description: > + Successful case. The identifier(s) of the configured VAL service area(s) information are + Returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaResp' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /areas/update: + post: + summary: Update existing VAL service area(s). + operationId: UpdateValServiceAreas + tags: + - Update + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaReq' + responses: + '200': + description: > + Successful case. The identifier(s) of the updated VAL service area(s) information are + returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaResp' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /areas/delete: + post: + summary: Delete existing VAL service area(s). + operationId: DeleteValServiceAreas + tags: + - Delete + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaReq' + responses: + '200': + description: > + Successful case. The identifier(s) of the deleted VAL service area(s) information are + returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaResp' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions: + post: + summary: Create individual VAL service area change event(s) subscription. + operationId: SubscribeChangeEvents + tags: + - VAL Service Area Change Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaSubsc' + responses: + '201': + description: > + The requested individual VAL service area change event(s) subscription + resource is successfully created and a representation of the created + resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaSubsc' + headers: + Location: + description: Contains the URI of the newly created resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + NotifyValServiceAreaChange: + '{$request.body#/notifUri}': + post: + summary: Notify on changes of the VAL service area(s) accodring to the requested reporting settings. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaNotif' + responses: + '204': + description: The notification is successfully received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Represents the identifier of an individual VAL service area change event(s) + subscription resource. + required: true + schema: + type: string + delete: + summary: Remove the existing individual VAL service area change event(s) subscription resource according to the subscriptionId. + operationId: UnsubscribeValServiceAreaChange + tags: + - Individual VAL Service Area Change Subscription (Document) + responses: + '204': + description: > + The individual VAL service area change event(s) subscription resource + matching the subscriptionId is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + summary: Read an existing individual unicast monitoring subscription resource according to the subscriptionId. + operationId: ReadValServiceAreaChange + tags: + - Individual VAL Service Area Change Subscription (Document) + responses: + '200': + description: > + The requested individual VAL service area change event(s) subscription is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServiceAreaSubsc' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ValServiceArea: + description: Represents the VAL service area. + type: object + properties: + valSvcAreaId: + description: Represents the VAL service area ID. + type: string + locations: + description: Represents the locations associated with the VAL service area. + minItems: 1 + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + required: + - valSvcAreaId + - locations + + ValServiceAreaReq: + description: Represents the VAL service area configuration/update/delete request. + type: object + properties: + valSvcAreas: + description: Represents the VAL service area(s). + minItems: 1 + items: + $ref: '#/components/schemas/ValServiceArea' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valSvcAreas + + ValServiceAreaData: + description: Represents the VAL service area retrieval information. + type: object + properties: + valSvcAreas: + description: Represents the requested VAL service area(s). + minItems: 1 + items: + $ref: '#/components/schemas/ValServiceArea' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ValServiceAreaResp: + description: Represents the VAL service area configuration/update/delete response. + type: object + properties: + valSvcAreaIds: + description: Represents the identifier(s) of the successfully handled VAL service area(s). + minItems: 1 + items: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - valSvcAreaIds + + ValServiceAreaSubsc: + description: Represents the VAL service area change event(s) subscription. + type: object + properties: + events: + description: Represents the subscribed VAL service area change event(s). + minItems: 1 + items: + $ref: '#/components/schemas/ValServiceAreaEventType' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + subscDur: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - events + - notifUri + + ValServiceAreaEventType: + description: Represents the VAL service area change event type. + type: object + properties: + event: + $ref: '#/components/schemas/ValServiceAreaEvent' + valSvcAreaIds: + description: Represents the VAL service area ID(s) associated with the event. + minItems: 1 + items: + type: string + required: + - event + - valSvcAreaIds + + ValServiceAreaNotif: + description: Represents the VAL service area change event(s) notifcation. + type: object + properties: + valSvcAreaConts: + description: Represents the VAL service area change event(s) content. + minItems: 1 + items: + $ref: '#/components/schemas/ValServiceAreaEventInfo' + required: + - valSvcAreaConts + + ValServiceAreaEventInfo: + description: Represents the VAL service area change event(s) content. + type: object + properties: + event: + $ref: '#/components/schemas/ValServiceAreaEvent' + valSvcAreas: + description: Represents the VAL service area(s) associated with the event. + minItems: 1 + items: + $ref: '#/components/schemas/ValServiceArea' + valSvcAreaIds: + description: Represents the VAL service area(s) associated with the event. + minItems: 1 + items: + type: string + required: + - event + +# Simple data types and Enumerations + ValServiceAreaEvent: + anyOf: + - type: string + enum: + - UPDATE + - DELETE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Represents the VAL service area change event. + Possible values are: + - UPDATE: Indicates that the VAL service area change event is VAL service area update. + - DELETE: Indicates that the VAL service area change event is VAL service area delete. diff --git a/TS29549_SS_VALServiceData.yaml b/TS29549_SS_VALServiceData.yaml new file mode 100644 index 0000000..e87fab9 --- /dev/null +++ b/TS29549_SS_VALServiceData.yaml @@ -0,0 +1,133 @@ +openapi: 3.0.0 + +info: + title: SS_VALServiceData + description: | + API for VAL Service Data. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: "1.0.0-alpha.1" + +externalDocs: + description: > + 3GPP TS 29.549 V18.2.0 Service Enabler Architecture Layer for Verticals (SEAL); + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.549/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ss-vsd/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.5 of 3GPP TS 29.549 + +paths: + /val-servdata: + get: + summary: Retrieve the VAL service data. + operationId: RetrieveValServiceData + tags: + - VAL Service Data Sets + parameters: + - name: val-tgt-ues + in: query + description: Identifying the list of the target VAL UE(s) or VAL user(s). + required: false + schema: + type: array + items: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + minItems: 1 + - name: val-service-ids + in: query + description: Identifying the list of the target VAL service(s). + required: false + schema: + type: array + items: + type: string + minItems: 1 + - name: supp-feats + in: query + description: To filter irrelevant responses related to unsupported features. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Represents the requested VAL service data. + content: + application/json: + schema: + $ref: '#/components/schemas/ValServDataResp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ValServDataResp: + description: Represents the container for the requested VAL service data. + type: object + properties: + valServData: + type: array + items: + $ref: '#/components/schemas/ValServiceData' + minItems: 1 + suppFeats: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ValServiceData: + description: > + Represents the VAL service data associated with VAL user ID(s)/VAL UE ID(s) + and/or VAL service ID(s). + type: object + properties: + valTgtUe: + $ref: 'TS29549_SS_UserProfileRetrieval.yaml#/components/schemas/ValTargetUe' + valServIds: + type: array + items: + type: string + minItems: 1 + description: > + List of the VAL services associated with the VAL user or a VAL UE defined + in the "valTgtUe" attribute. + valServSpecInfo: + type: string + description: Contains the VAL service specific information. + required: + - valTgtUe + - valServIds diff --git a/TS29550_Nsoraf_SOR.yaml b/TS29550_Nsoraf_SOR.yaml new file mode 100644 index 0000000..17d90f3 --- /dev/null +++ b/TS29550_Nsoraf_SOR.yaml @@ -0,0 +1,240 @@ +openapi: 3.0.0 +info: + title: 'Nsoraf_SOR' + version: 1.2.0-alpha.3 + description: | + Nsoraf Steering Of Roaming Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.550 V18.2.0; Steering Of Roaming Application Function Services. + url: http://www.3gpp.org/ftp/Specs/archive/29_series/29.550/ +servers: + - url: '{apiRoot}/nsoraf-sor/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nsoraf-sor +paths: + /{supi}/sor-information: + get: + summary: retrieve the steering of roaming information for a UE + operationId: GetSorInformation + tags: + - SoR Information Retrieval + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: plmn-id + in: query + description: serving PLMN ID or SNPN ID + required: true + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + - name: access-type + in: query + description: Access type used by the UE + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SorInformation' + headers: + Cache-Control: + description: Cache-Control (as described in RFC 9111) with value "no-cache" to indicate that the returned SoR information should not be cached + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /{supi}/sor-information/sor-ack: + put: + summary: SoR Acknowledgment Reception Notification + operationId: SorAckInfo + tags: + - Providing the reception status of the acknowledgement of Steering of Roaming information reception by the UE + parameters: + - name: supi + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SorAckInfo' + responses: + '204': + description: Successful reception of the indication + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nsoraf-sor: Access to the Nsoraf_SOR API + schemas: + +# +# COMPLEX DATA TYPES +# + + SorInformation: + description: Represents the SoR information to be conveyed to a UE. + type: object + required: + - sorAckIndication + - sorSendingTime + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + steeringContainer: + $ref: '#/components/schemas/SteeringContainer' + sorAckIndication: + type: boolean + sorCmci: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/SorCmci' + storeSorCmciInMe: + type: boolean + sorSendingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sorSnpnSi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + sorSnpnSiLs: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + SorAckInfo: + description: > + Represents an indication to the SOR-AF on the reception status of the + acknowledgment of successful reception of SoR Information by a UE. + type: object + required: + - sorAckStatus + - sorSendingTime + properties: + sorAckStatus: + $ref: '#/components/schemas/SorAckStatus' + sorSendingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + meSupportOfSorCmci: + type: boolean + meSupportOfSorSnpnSi: + type: boolean + meSupportOfSorSnpnSiLs: + type: boolean + + SteeringContainer: + description: It consists of either a list (array) of SteeringInfo objects or a Secured Packet + oneOf: + - type: array + items: + $ref: '#/components/schemas/SteeringInfo' + minItems: 1 + - $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/SecuredPacket' + + SteeringInfo: + description: > + Contains either a PLMN-ID, an SNPN-ID or a GIN and, for the case of PLMNs, zero or more + preferred access technologies for accessing such PLMN + type: object + oneOf: + - required: [ plmnId ] + - required: [ snpnId ] + - required: [ gin ] + properties: + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + snpnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + gin: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + accessTechList: + type: array + items: + $ref: 'TS29509_Nausf_SoRProtection.yaml#/components/schemas/AccessTech' + minItems: 1 + + +# +# ENUMS +# + + SorAckStatus: + description: > + Represents the reception status of the acknowledgment of successful reception of + SoR Information by a UE. + + anyOf: + - type: string + enum: + - ACK_SUCCESSFUL + - ACK_NOT_RECEIVED + - ACK_NOT_SUCCESSFUL + - type: string diff --git a/TS29551_Nnef_PFDmanagement.yaml b/TS29551_Nnef_PFDmanagement.yaml new file mode 100644 index 0000000..7f14cb2 --- /dev/null +++ b/TS29551_Nnef_PFDmanagement.yaml @@ -0,0 +1,624 @@ +openapi: 3.0.0 +info: + title: Nnef_PFDmanagement Service API + version: 1.3.0-alpha.2 + description: | + Packet Flow Description Management Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +# +externalDocs: + description: 3GPP TS 29.551 v18.3.0, 5G System; Packet Flow Description Management Service + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.551/' +# +servers: + - url: '{apiRoot}/nnef-pfdmanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnef-pfdmanagement +paths: + /applications: + get: + summary: Retrieve PFDs for all applications or for one or multiple applications with query parameter. + tags: + - PFD of applications + operationId: Nnef_PFDmanagement_AllFetch + parameters: + - name: application-ids + description: The required application identifier(s) for the returned PFDs. + in: query + required: true + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + - name: supported-features + in: query + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: > + The PFDs for one or more application identifier(s) in the request URI are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdDataForApp' + minItems: 0 + '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' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /applications/partialpull: + post: + summary: retrieve the PFD(s) by partial update + operationId: Nnef_PFDmanagement_AppFetchPartialUpdate + tags: + - PFD of applications by partial update + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ApplicationForPfdRequest' + minItems: 1 + responses: + '200': + description: OK. Changed PFD(s) is returned + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdDataForApp' + minItems: 1 + '204': + description: The PFD(s) is not changed + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /applications/{appId}: + get: + summary: Retrieve the PFD for an application. + tags: + - Individual application PFD + operationId: Nnef_PFDmanagement_IndAppFetch + parameters: + - name: appId + description: The required application identifier(s) for the returned PFDs. + in: path + required: true + schema: + type: string + - name: supported-features + in: query + description: To filter irrelevant responses related to unsupported features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: A representation of PFDs for an application in the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdDataForApp' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '414': + $ref: 'TS29571_CommonData.yaml#/components/responses/414' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions: + post: + summary: Subscribe the notification of PFD changes. + tags: + - PFD subscriptions + operationId: Nnef_PFDmanagement_CreateSubscr + requestBody: + description: a PfdSubscription resource to be created. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdSubscription' + callbacks: + PfdChangeNotification: + '{request.body#/notifyUri}': + post: + summary: Notification of PFD change. + tags: + - PfdChangeNotification data + operationId: Nnef_PFDmanagement_Notify + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdChangeNotification' + minItems: 1 + responses: + '200': + description: > + The PFD operation in the notification is performed and the + PfdChangeReport indicates failure reason. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/PfdChangeReport' + minItems: 1 + '204': + description: The PFD operation in the notification is performed successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + NotificationPush: + '{request.body#/notifyUri}/notifypush': + post: + summary: Notification Push. + tags: + - NotificationPush data + operationId: Nnef_PFDmanagement_PushNotify + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationPush' + minItems: 1 + responses: + '204': + description: Notificaiton PUSH is accepted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + responses: + '201': + description: > + The creation of a PfdSubscription resource is confirmed and a representation of + that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/PfdSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnef-pfdmanagement/v1/subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + put: + summary: Updates/replaces an existing subscription resource + tags: + - Individual PFD subscription + operationId: Nnef_PFDmanagement_ModifySubscr + parameters: + - name: subscriptionId + description: Identify the subscription. + in: path + required: true + schema: + type: string + requestBody: + description: Parameters to update/replace the existing subscription + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PfdSubscription' + responses: + '200': + description: OK (Successful update of the subscription) + content: + application/json: + schema: + $ref: '#/components/schemas/PfdSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete a subscription of PFD change notification. + tags: + - Individual PFD subscription + operationId: Nnef_PFDmanagement_Unsubscribe + parameters: + - name: subscriptionId + description: Identify the subscription. + in: path + required: true + schema: + type: string + responses: + '204': + description: > + The PfdSubscription resource matching the subscriptionId was deleted successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-pfdmanagement: Access to the Nnef_PFDmanagement API + schemas: +# +# STRUCTURED DATA TYPES +# + PfdContent: + description: Represents the content of a PFD for an application identifier. + type: object + properties: + pfdId: + type: string + description: Identifies a PDF of an application identifier. + flowDescriptions: + type: array + items: + type: string + minItems: 1 + description: > + Represents a 3-tuple with protocol, server ip and server port for UL/DL + application traffic. + urls: + type: array + items: + type: string + minItems: 1 + description: > + Indicates a URL or a regular expression which is used to match the significant parts + of the URL. + domainNames: + type: array + items: + type: string + minItems: 1 + description: Indicates an FQDN or a regular expression as a domain name matching criteria. + dnProtocol: + $ref: 'TS29122_PfdManagement.yaml#/components/schemas/DomainNameProtocol' + + PfdDataForApp: + description: Represents the PFDs for an application identifier. + type: object + properties: + applicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pfds: + type: array + items: + $ref: '#/components/schemas/PfdContent' + minItems: 1 + cachingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + cachingTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + pfdTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + partialFlag: + type: boolean + description: > + Indication of partial update of PFDs for an existing application identifier if it is + included and set to true. Otherwise set to false indicates not supporting partial + update of PFDs for an existing application identifier. The default value false + applies if the attribute is not present. + default: false + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - applicationId + + PfdSubscription: + description: Represents a PFD subscription. + type: object + properties: + applicationIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - notifyUri + - supportedFeatures + + PfdChangeNotification: + description: Represents information related to a notification of PFD change. + type: object + properties: + applicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + removalFlag: + type: boolean + description: > + Indication of removal of PFDs for an existing application identifier. + Set to true indicates the PFDs are removed. + Set to false indicates the PFDs are not removed. + Default value is false if omitted. + default: false + partialFlag: + type: boolean + description: > + Indication of partial update of PFDs for an existing application identifier + if this operation is supported according to feature negotiation. + Set to true indicates partial update PFDs for the included application identifier. + Set to false indicates not partial update PFDs for the included application identifier. + Default value is "false" if omitted. + default: false + pfds: + type: array + items: + $ref: '#/components/schemas/PfdContent' + minItems: 1 + required: + - applicationId + + NotificationPush: + description: > + Represents the information to be used by the NF service consumer to retrieve the + PFDs and/or remove the PFDs of the applicable application identifier(s). + type: object + properties: + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + allowedDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + pfdOp: + $ref: '#/components/schemas/PfdOperation' + required: + - appIds + + PfdChangeReport: + description: Represents an error report on PFD change. + type: object + properties: + pfdError: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + applicationId: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + required: + - pfdError + - applicationId + + ApplicationForPfdRequest: + description: Contains the application identifier(s) for the PFD(s) request. + type: object + properties: + applicationId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + pfdTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - applicationId + +# +# ENUMERATIONS +# + PfdOperation: + description: Indicates the operation to be applied on PFD(s). + anyOf: + - type: string + enum: + - RETRIEVE + - FULLPULL + - PARTIALPULL + - REMOVE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. diff --git a/TS29553_Npanf_ProseKey.yaml b/TS29553_Npanf_ProseKey.yaml new file mode 100644 index 0000000..05b6153 --- /dev/null +++ b/TS29553_Npanf_ProseKey.yaml @@ -0,0 +1,191 @@ +openapi: 3.0.0 + +info: + title: Npanf_ProseKey + version: 1.1.0-alpha.2 + description: | + PAnF ProseKey Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.553 V18.1.0; 5G System; 5G ProSe Anchor Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.553/ + +servers: + - url: '{apiRoot}/npanf-prosekey/' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npanf-prosekey + +paths: + /prose-keys/register: + post: + summary: Register the Prose Key + operationId: ProseKeyRegistration + tags: + - prosekey registration + security: + - {} + - oAuth2ClientCredentials: + - npanf_prosekey + - oAuth2ClientCredentials: + - npanf_prosekey + - npanf_prosekey:register:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProseContextInfo' + required: true + responses: + '204': + description: Successful Response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /prose-keys/retrieve: + post: + summary: retrieve the prose key + operationId: ProseKeyRetrieval + tags: + - Prose Key Retrieval + security: + - {} + - oAuth2ClientCredentials: + - npanf_prosekey + - oAuth2ClientCredentials: + - npanf_prosekey + - npanf_prosekey:retrieve:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ProseKeyRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ProseKeyResponse' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npanf-prosekey: Access to the Npanf_ProseKey API + npanf-prosekey:register:invoke: Access to invoke register Prose Context + npanf-prosekey:retrieve:invoke: Access to invoke retrieve CP-PRUK + + schemas: +# +# Structured Data Types +# + ProseContextInfo: + description: Prose Context Info. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + 5gPruk: + $ref: '#/components/schemas/5GPruk' + 5gPrukId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GPrukId' + relayServiceCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + required: + - supi + - 5gPruk + - 5gPrukId + - relayServiceCode + + ProseKeyRequest: + description: Prose Key Request. + type: object + properties: + 5gPrukId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GPrukId' + relayServiceCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + required: + - 5gPrukId + - relayServiceCode + + ProseKeyResponse: + description: Prose Key Response. + type: object + properties: + 5gPruk: + $ref: '#/components/schemas/5GPruk' + required: + - 5gPruk + +# +# Simple Data Types +# + 5GPruk: + description: ProSe Remote User Key over Control Plane + type: string + pattern: '^[A-Fa-f0-9]{64}$' + +# +# Enumeration Data Types +# diff --git a/TS29553_Npanf_ResolveRemoteUserId.yaml b/TS29553_Npanf_ResolveRemoteUserId.yaml new file mode 100644 index 0000000..8c606d9 --- /dev/null +++ b/TS29553_Npanf_ResolveRemoteUserId.yaml @@ -0,0 +1,110 @@ +openapi: 3.0.0 +info: + version: '1.0.0' + title: 'Npanf_ResolveRemoteUserId' + description: | + PANF Resolve Remote User Id Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.559 V17.2.0; 5G System; 5G ProSe Key Management Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.559/ + +servers: + - url: '{apiRoot}/npanf-userid/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npanf-userid + +paths: + /prose-resolution/get: + post: + summary: Request to resolve the Remote User ID + operationId: ProseResolve + tags: + - Resolve Remote User ID + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ResolveReqData' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ResolveRspData' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npanf-userid: Access to the Npanf_ResolveRemoteUserId API + + schemas: +# +# Structured Data Types +# + ResolveReqData: + description: Representation of the Resolve Request Data. + type: object + properties: + cpPrukId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/5GPrukId' + required: + - cpPrukId + + ResolveRspData: + description: Representation of the Resolve Response Data. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - supi + +# +# Simple Data Types +# + + +# +# Enumeration Data Types +# diff --git a/TS29554_Npcf_BDTPolicyControl.yaml b/TS29554_Npcf_BDTPolicyControl.yaml new file mode 100644 index 0000000..3092865 --- /dev/null +++ b/TS29554_Npcf_BDTPolicyControl.yaml @@ -0,0 +1,441 @@ +openapi: 3.0.0 + +info: + title: Npcf_BDTPolicyControl Service API + version: 1.3.0-alpha.1 + description: | + PCF BDT Policy Control Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.554 V18.0.0; 5G System; Background Data Transfer Policy Control Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.554/' + +servers: + - url: '{apiRoot}/npcf-bdtpolicycontrol/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - npcf-bdtpolicycontrol + +paths: + /bdtpolicies: + post: + summary: Create a new Individual BDT policy + operationId: CreateBDTPolicy + tags: + - BDT policies (Collection) + requestBody: + description: > + Contains information for the creation of a new Individual BDT policy resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BdtReqData' + responses: + '201': + description: Background data transfer policies offered to an ASP. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicy' + headers: + Location: + description: > + Contains the URI of the created individual BDT policy resource, + according to the structure + {apiRoot}/npcf-bdtpolicycontrol/v1/bdtpolicies/{bdtPolicyId} + required: true + schema: + type: string + '303': + description: > + See Other. The result of the POST request would be equivalent to the + existing Individual BDT policy resource. + headers: + Location: + description: Contains the URI of the existing individual BDT policy resource. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + BdtNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Notification' + responses: + '204': + description: No Content, a reception of the BDT notification was successful. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /bdtpolicies/{bdtPolicyId}: + get: + summary: Read an Individual BDT policy + operationId: GetBDTPolicy + tags: + - Individual BDT policy (Document) + parameters: + - name: bdtPolicyId + description: String identifying the individual BDT policy resource in the PCF. + in: path + required: true + schema: + type: string + responses: + '200': + description: Background data transfer policies offered to and selected by an ASP. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicy' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Update an Individual BDT policy + operationId: UpdateBDTPolicy + tags: + - Individual BDT policy (Document) + parameters: + - name: bdtPolicyId + description: String identifying the individual BDT policy resource in the PCF. + in: path + required: true + schema: + type: string + requestBody: + description: > + Contains modification instruction to be performed on the BdtPolicy data + structure to select a transfer policy and in addition, may indicate whether + the BDT warning notification is enabled or disabled. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PatchBdtPolicy' + responses: + '200': + description: > + The Individual BDT Policy resource is modified and a representation of that + resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/BdtPolicy' + '204': + description: The Individual BDT Policy resource is modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npcf-bdtpolicycontrol: Access to the Npcf_BDTPolicyControl API + + schemas: + +# Structured data types + + BdtPolicy: + description: Represents an Individual BDT policy resource. + type: object + properties: + bdtPolData: + $ref: '#/components/schemas/BdtPolicyData' + bdtReqData: + $ref: '#/components/schemas/BdtReqData' + + BdtReqData: + description: > + Contains service requirements for creation a new Individual BDT policy resource. + type: object + required: + - aspId + - desTimeInt + - numOfUes + - volPerUe + properties: + aspId: + $ref: '#/components/schemas/AspId' + desTimeInt: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + nwAreaInfo: + $ref: '#/components/schemas/NetworkAreaInfo' + numOfUes: + description: Indicates a number of UEs. + type: integer + volPerUe: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + trafficDes: + $ref: 'TS29122_ResourceManagementOfBdt.yaml#/components/schemas/TrafficDescriptor' + warnNotifReq: + description: Indicates whether the BDT warning notification is enabled or disabled. + type: boolean + default: false + + BdtPolicyData: + description: Describes the authorization data of an Individual BDT policy resource. + type: object + required: + - bdtRefId + - transfPolicies + properties: + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + transfPolicies: + description: Contains transfer policies. + type: array + items: + $ref: '#/components/schemas/TransferPolicy' + minItems: 1 + selTransPolicyId: + description: Contains an identity of the selected transfer policy. + type: integer + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + PatchBdtPolicy: + description: > + Describes the updates in authorization data of an Individual BDT Policy created + by the PCF. + type: object + properties: + bdtPolData: + $ref: '#/components/schemas/BdtPolicyDataPatch' + bdtReqData: + $ref: '#/components/schemas/BdtReqDataPatch' + + BdtPolicyDataPatch: + description: > + A JSON Merge Patch body schema containing modification instruction to be performed + on the bdtPolData attribute of the BdtPolicy data structure to select a transfer + policy. Adds selTransPolicyId to BdtPolicyData data structure. + type: object + required: + - selTransPolicyId + properties: + selTransPolicyId: + description: > + Contains an identity (i.e. transPolicyId value) of the selected transfer + policy. If the BdtNotification_5G feature is supported value 0 indicates that + no transfer policy is selected. + type: integer + + BdtReqDataPatch: + description: > + A JSON Merge Patch body schema containing modification instruction to be performed + on the bdtReqData attribute of the BdtPolicy data structure to indicate whether + the BDT warning notification is enabled or disabled. Modifies warnNotifReq from + BdtReqData data structure. + type: object + properties: + warnNotifReq: + description: Indicates whether the BDT warning notification is enabled or disabled. + type: boolean + + TransferPolicy: + description: Describes a transfer policy. + type: object + required: + - ratingGroup + - recTimeInt + - transPolicyId + properties: + maxBitRateDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxBitRateUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ratingGroup: + description: Indicates a rating group for the recommended time window. + type: integer + recTimeInt: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + transPolicyId: + description: Contains an identity of a transfer policy. + type: integer + + NetworkAreaInfo: + description: > + Describes a network area information in which the NF service consumer requests + the number of UEs. + type: object + properties: + ecgis: + description: Contains a list of E-UTRA cell identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + minItems: 1 + ncgis: + description: Contains a list of NR cell identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + minItems: 1 + gRanNodeIds: + description: Contains a list of NG RAN nodes. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + minItems: 1 + tais: + description: Contains a list of tracking area identities. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + + Notification: + description: Describes a BDT notification. + type: object + required: + - bdtRefId + properties: + bdtRefId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/BdtReferenceId' + candPolicies: + description: > + Contains a list of the candidate transfer policies from which the AF may + select a new transfer policy due to a network performance is below the criteria + set by the operator. + type: array + items: + $ref: '#/components/schemas/TransferPolicy' + minItems: 1 + nwAreaInfo: + $ref: '#/components/schemas/NetworkAreaInfo' + timeWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + +# Simple data types + + AspId: + description: Contains an identity of an application service provider. + type: string diff --git a/TS29555_N5g-ddnmf_Discovery.yaml b/TS29555_N5g-ddnmf_Discovery.yaml new file mode 100644 index 0000000..379b9ad --- /dev/null +++ b/TS29555_N5g-ddnmf_Discovery.yaml @@ -0,0 +1,1131 @@ +openapi: 3.0.0 + +info: + title: N5g-ddnmf_Discovery API + version: '1.1.0-alpha.3' + description: | + N5g-ddnmf_Discovery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.555 V18.3.0; 5G System; 5G Direct Discovery Name Management Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.555/ + +servers: + - url: '{apiRoot}/n5g-ddnmf-disc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + +paths: + /{ueId}/announce-authorize/{discEntryId}: + put: + summary: Obtain the authorization to announce for a UE + operationId: ObtainAnnounceAuth + tags: + - Obtain the authorization to announce for a UE + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:announce-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: discEntryId + in: path + description: Discovery Entry Id + required: true + schema: + $ref: '#/components/schemas/DiscoveryEntryId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AnnounceAuthData' + required: true + responses: + '201': + description: Successful creation of the resource + content: + application/json: + schema: + $ref: '#/components/schemas/AnnounceAuthData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/n5g-ddnmf-disc>//{ueId}/announce-authorize/{discEntryId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: Update the authorization for announcing for a UE + operationId: UpdateAnnounceAuth + tags: + - Update the authorization for announcing for a UE + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:announce-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: discEntryId + in: path + description: Discovery Entry Id + required: true + schema: + $ref: '#/components/schemas/DiscoveryEntryId' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AnnounceUpdateData' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/monitor-authorize/{discEntryId}: + put: + summary: Obtain the authorization to monitor for a UE + operationId: ObtainMonitorAuth + tags: + - Obtain the authorization to monitor for a UE + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:monitor-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: discEntryId + in: path + description: Discovery Entry Id + required: true + schema: + $ref: '#/components/schemas/DiscoveryEntryId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorAuthReqData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorAuthRespData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/n5g-ddnmf-disc>//{ueId}/monitor-authorize/{discEntryId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: Update the authorization for monitoring for a UE + operationId: UpdateMonitorAuth + tags: + - Update the authorization for monitoring for a UE + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:monitor-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: discEntryId + in: path + description: Discovery Entry Id + required: true + schema: + $ref: '#/components/schemas/DiscoveryEntryId' + requestBody: + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MonitorUpdateData' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Expected response to a valid request + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '422': + description: Unprocessable Request + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onMonitorUpdateResult: + '{request.body#/monitorUpdateResultCallbackRef}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorUpdateResult' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + onMatchInformation: + '{request.body#/matchInfoCallbackRef}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MatchInformation' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + /{ueId}/discovery-authorize/{discEntryId}: + put: + summary: Obtain the authorization from the 5G DDNMF for a discoverer UE in the PLMN to operate Model B restricted discovery + operationId: ObtainDiscAuth + tags: + - Obtain the authorization for a discoverer UE + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:discovery-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: discEntryId + in: path + description: Discovery Entry Id + required: true + schema: + $ref: '#/components/schemas/DiscoveryEntryId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryAuthReqData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryAuthRespData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/n5g-ddnmf-disc>//{ueId}/discovery-authorize/{discEntryId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + onMatchInformation: + '{request.body#/matchInfoCallbackRef}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MatchInformation' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + + /{ueId}/match-report: + post: + summary: Obtain the information about the indicated discovery code from the 5G DDNMF + operationId: MatchReport + tags: + - Obtain the information about the indicated discovery code + security: + - {} + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - oAuth2ClientCredentials: + - n5g-ddnmf-disc + - n5g-ddnmf-disc:match-report:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MatchReportReqData' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/MatchReportRespData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + n5g-ddnmf-disc: Access to the N5g-ddnmf_Discovery API + n5g-ddnmf-disc:announce-authorize:modify: Access to modify the authorization to announce for a UE in the PLMN + n5g-ddnmf-disc:monitor-authorize:modify: Access to modify the authorization for monitoring for an UE in the PLMN + n5g-ddnmf-disc:discovery-authorize:modify: Access to modify the authorization from the 5G DDNMF for a discoverer UE in the PLMN to operate Model B restricted discovery + n5g-ddnmf-disc:match-report:invoke: Access to invoke the information about the indicated discovery code + + schemas: + +# COMPLEX TYPES: + + AnnounceAuthData: + type: object + description: Represents Data used to request the authorization to announce for a UE + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + openDiscData: + $ref: '#/components/schemas/AnnounceDiscDataForOpen' + restrictedDiscData: + $ref: '#/components/schemas/AnnounceDiscDataForRestricted' + + AnnounceDiscDataForOpen: + type: object + description: Represents Data for open discovery used to request the authorization to announce for a UE + required: + - proseAppId + - validityTime + properties: + proseAppId: + $ref: '#/components/schemas/ProseApplicationId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + proseAppCode: + $ref: '#/components/schemas/ProseApplicationCode' + proseAppCodePrefix: + $ref: '#/components/schemas/ProseApplicationPrefix' + proseAppCodeSuffixPool: + $ref: '#/components/schemas/ProseApplicationCodeSuffixPool' + metaData: + $ref: '#/components/schemas/MetaData' + + AnnounceDiscDataForRestricted: + type: object + description: Represents Data for restricted discovery used to request the authorization to announce for a UE + required: + - rpauid + - appId + - validityTime + properties: + rpauid: + $ref: '#/components/schemas/Rpauid' + appId: + $ref: '#/components/schemas/ApplicationId' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + proseRestrictedCode: + $ref: '#/components/schemas/ProseRestrictedCode' + proseRestrictedPrefix: + $ref: '#/components/schemas/ProseRestrictedPrefix' + codeSuffixPool: + $ref: '#/components/schemas/RestrictedCodeSuffixPool' + + AnnounceUpdateData: + type: object + description: Represents Announce Authorize Data to update + required: + - discType + - validityTime + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + proseAppCode: + $ref: '#/components/schemas/ProseApplicationCode' + + MonitorAuthReqData: + type: object + description: Represents Data used to request the authorization to monitor for a UE + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + openDiscData: + $ref: '#/components/schemas/MonitorDiscDataForOpen' + restrictedDiscData: + $ref: '#/components/schemas/MonitorDiscDataForRestricted' + + MonitorAuthRespData: + type: object + description: Represents the obtained Monitor Authorize Data for a UE + properties: + authDataOpen: + $ref: '#/components/schemas/MonitorAuthDataForOpen' + authDataRestricted: + $ref: '#/components/schemas/MonitorAuthDataForRestricted' + + MonitorDiscDataForOpen: + type: object + description: Represents Data for open discovery used to request the authorization to monitor for a UE + required: + - proseAppIdNames + properties: + proseAppIdNames: + type: array + items: + $ref: '#/components/schemas/ProseApplicationIdName' + minItems: 1 + + MonitorDiscDataForRestricted: + type: object + description: Represents Data for restricted discovery used to request the authorization to monitor for a UE + required: + - rpauid + - targetPduid + - appId + - targetRpauid + properties: + rpauid: + $ref: '#/components/schemas/Rpauid' + targetPduid: + $ref: '#/components/schemas/Pduid' + appId: + $ref: '#/components/schemas/ApplicationId' + targetRpauid: + $ref: '#/components/schemas/Rpauid' + + MonitorAuthDataForOpen: + type: object + description: Represents the obtained Announce Authorize Data for open discovery for a UE + required: + - proseAppMasks + - ttl + properties: + proseAppCodes: + type: array + items: + $ref: '#/components/schemas/ProseApplicationCode' + minItems: 1 + proseAppPrefix: + $ref: '#/components/schemas/ProseApplicationPrefix' + proseAppMasks: + type: array + items: + $ref: '#/components/schemas/ProseApplicationMask' + minItems: 1 + ttl: + type: integer + + MonitorAuthDataForRestricted: + type: object + description: Represents the obtained Announce Authorize Data for restricted discovery for a UE + required: + - proseRestrictedCode + - validityTime + properties: + proseRestrictedCode: + $ref: '#/components/schemas/ProseRestrictedCode' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + MonitorUpdateData: + type: object + description: Represents Monitor Authorize Data to update. + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + openUpdateData: + $ref: '#/components/schemas/MonitorUpdateDataForOpen' + restrictedUpdateData: + $ref: '#/components/schemas/MonitorUpdateDataForRestricted' + + DiscoveryAuthReqData: + type: object + description: Represents Data used to request the authorization for a discoverer UE. + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + restrictedDiscData: + $ref: '#/components/schemas/DiscDataForRestricted' + + DiscoveryAuthRespData: + type: object + description: Represents the obtained authorization Data for a discoverer UE + properties: + authDataRestricted: + $ref: '#/components/schemas/AuthDataForRestricted' + + DiscDataForRestricted: + type: object + description: Represents Data for restricted discovery used to request the authorization for a discoverer UE + required: + - rpauid + - targetPduid + - appId + - targetRpauid + properties: + rpauid: + $ref: '#/components/schemas/Rpauid' + targetPduid: + $ref: '#/components/schemas/Pduid' + appId: + $ref: '#/components/schemas/ApplicationId' + targetRpauid: + $ref: '#/components/schemas/Rpauid' + + AuthDataForRestricted: + type: object + description: Represents obtained authorization Data for restricted discovery for a discoverer UE + required: + - proseQueryCodes + - proseRespCode + - validityTime + properties: + proseQueryCodes: + items: + $ref: '#/components/schemas/ProseQueryCode' + minItems: 1 + proseRespCode: + $ref: '#/components/schemas/ProseResponseCode' + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + MatchReportReqData: + type: object + description: Represents the Match Report information + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + proseAppCodes: + items: + $ref: '#/components/schemas/ProseApplicationCode' + minItems: 1 + moniteredPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + + MatchReportRespData: + type: object + description: Represents Match Report Acknowledgement + properties: + proseAppIdNames: + items: + $ref: '#/components/schemas/ProseApplicationIdName' + minItems: 1 + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + metaData: + $ref: '#/components/schemas/MetaData' + metaDataIndexMasks: + items: + $ref: '#/components/schemas/MetaDataIndexMask' + minItems: 1 + + MonitorUpdateResult: + type: object + description: Represents the monitoring revocation results. + required: + - discType + - proseRestrictedCode + - appId + - bannedRpauid + - bannedPduid + - revocationResult + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + proseRestrictedCode: + $ref: '#/components/schemas/ProseRestrictedCode' + appId: + $ref: '#/components/schemas/ApplicationId' + bannedRpauid: + $ref: '#/components/schemas/Rpauid' + bannedPduid: + $ref: '#/components/schemas/Pduid' + revocationResult: + $ref: '#/components/schemas/RevocationResult' + + MatchInformation: + type: object + description: > + Represents a report including a matching result, and the information that + can be used for charging purpose. + required: + - discType + properties: + discType: + $ref: '#/components/schemas/DiscoveryType' + openMatchInfoForOpen: + $ref: '#/components/schemas/MatchInfoForOpen' + restrictedMatchInfo: + $ref: '#/components/schemas/MatchInfoForRestricted' + + MatchInfoForOpen: + type: object + description: > + Represents a report including a matching result, and the information that + can be used for charging purpose for the open discovery type. + required: + - supi + - appId + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + appId: + items: + $ref: '#/components/schemas/ApplicationId' + minItems: 1 + + MatchInfoForRestricted: + type: object + description: > + Represents a report including a matching result, and the information that + can be used for charging purpose for the restricted discovery type. + required: + - supi + - rpauid + - targetRpauid + - proseRestrictedCode + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + rpauid: + $ref: '#/components/schemas/Rpauid' + targetRpauid: + $ref: '#/components/schemas/Rpauid' + proseRestrictedCode: + $ref: '#/components/schemas/ProseRestrictedCode' + + RestrictedCodeSuffixPool: + type: object + description: Contains the Restricted Code Suffix Pool. + anyOf: + - required: [ codeSuffixList ] + - required: [ codeSuffixRangeList ] + properties: + codeSuffixList: + type: array + items: + $ref: '#/components/schemas/RestrictedCodeSuffix' + minItems: 1 + codeSuffixRangeList: + type: array + items: + $ref: '#/components/schemas/RestrictedCodeSuffixRange' + minItems: 1 + + RestrictedCodeSuffixRange: + type: object + description: Contains a range of the Restricted Code Suffixes which are consecutive. + required: + - beginningSuffix + - endingSuffix + properties: + beginningSuffix: + $ref: '#/components/schemas/RestrictedCodeSuffix' + endingSuffix: + $ref: '#/components/schemas/RestrictedCodeSuffix' + + ProseApplicationCodeSuffixPool: + type: object + description: Contains the Prose Application Code Suffix Pool. + anyOf: + - required: [ codeSuffix ] + - required: [ codeSuffixRange ] + properties: + codeSuffix: + $ref: '#/components/schemas/ProseAppCodeSuffix' + codeSuffixRange: + $ref: '#/components/schemas/ProseAppCodeSuffixRange' + + ProseAppCodeSuffixRange: + type: object + description: Contains a range of the Prose Application Code Suffixes which are consecutive. + required: + - beginningSuffix + - endingSuffix + properties: + beginningSuffix: + $ref: '#/components/schemas/ProseAppCodeSuffix' + endingSuffix: + $ref: '#/components/schemas/ProseAppCodeSuffix' + + MonitorUpdateDataForOpen: + type: object + description: Represents Monitor Update Data for the Discovery Type "OPEN". + required: + - proseAppIdName + - ttl + properties: + proseAppIdName: + $ref: '#/components/schemas/ProseApplicationIdName' + ttl: + type: integer + minimum: 0 + + MonitorUpdateDataForRestricted: + type: object + description: Represents Monitor Update Data for the Discovery Type "RESTRICTED". + required: + - proseRestrictedCode + - appId + - bannedRpauid + - bannedPduid + properties: + proseRestrictedCode: + $ref: '#/components/schemas/ProseRestrictedCode' + appId: + $ref: '#/components/schemas/ApplicationId' + bannedRpauid: + $ref: '#/components/schemas/Rpauid' + bannedPduid: + $ref: '#/components/schemas/Pduid' + monitorUpdateResultCallbackRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + + +# SIMPLE TYPES: + DiscoveryEntryId: + description: Contains the Discovery Entry ID. + type: string + + ProseApplicationId: + description: Contains the ProSe Application ID. + type: string + + ProseApplicationCode: + description: Contains the ProSe Application Code. + type: string + + Rpauid: + description: Contains the RPAUID. + type: string + + ApplicationId: + description: Contains the Application ID. + type: string + + ProseRestrictedCode: + description: Contains the ProSe Restricted Code. + type: string + + ProseRestrictedPrefix: + description: Contains the ProSe Restricted Code Prefix. + type: string + + MetaData: + description: Contains the metadata. + type: string + + ProseApplicationIdName: + description: Contains the ProSe Application ID name. + type: string + + Pduid: + description: Contains the PDUID. + type: string + + ProseApplicationPrefix: + description: Contains the Prose Application Code Prefix. + type: string + + ProseApplicationMask: + description: Contains the Prose Application Mask. + type: string + + ProseQueryCode: + description: Contains the ProSe Query Code. + type: string + + ProseResponseCode: + description: Contains the ProSe Response Code. + type: string + + MetaDataIndexMask: + description: Contains the Meta Data Index Mask. + type: string + + RestrictedCodeSuffix: + description: Contains the ProSe Restricted Code Suffix. + type: string + + ProseAppCodeSuffix: + description: Contains the ProSe Application Code Suffix. + type: string + +# ENUMS: + + DiscoveryType: + anyOf: + - type: string + enum: + - OPEN + - RESTRICTED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Possible values are + - OPEN: Discovery type is "open". + - RESTRICTED: Discovery type is "restricted". + + + RevocationResult: + anyOf: + - type: string + enum: + - SUCCESSFUL + - FAILED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Possible values are + - SUCCESSFUL: The Monitoring Revocation is successful. + - FAILED: The Monitoring Revocation is failed. diff --git a/TS29556_Neasdf_BaselineDNSPattern.yaml b/TS29556_Neasdf_BaselineDNSPattern.yaml new file mode 100644 index 0000000..46976b3 --- /dev/null +++ b/TS29556_Neasdf_BaselineDNSPattern.yaml @@ -0,0 +1,348 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.2' + title: 'Neasdf_BaselineDNSPattern' + description: | + EASDF Baseline DNS Pattern Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.556 V18.1.0; 5G System; Edge Application Server Discovery Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.556/' + +servers: + - url: '{apiRoot}/neasdf-baselinednspattern/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - neasdf-baselinednspattern + +paths: + + /base-dns-patterns/{smfId}/{smfImplementationSegmentPaths}: + patch: + summary: Updates the Baseline DNS Pattern + operationId: UpdateBaseDNSPattern + tags: + - Individual Baseline DNS Pattern + parameters: + - name: smfId + in: path + description: SMF or SMF set identifier or Set Id part in SMF set identifier + required: true + schema: + $ref: '#/components/schemas/VarNfId' + style: simple + explode: true + - name: smfImplementationSegmentPaths + in: path + description: SMF Implementation Dependent Segment Paths + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-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: Partial update of the Baseline DNS Pattern + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful update of the Baseline DNS Pattern + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 7694 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: Creates or Updates the Baseline DNS Pattern (complete replacement) + operationId: CreateOrReplaceBaseDnsPattern + tags: + - Individual Baseline DNS Pattern + parameters: + - name: smfId + in: path + description: SMF or SMF set identifier or Set Id part in SMF set identifier + required: true + schema: + $ref: '#/components/schemas/VarNfId' + style: simple + explode: true + - name: smfImplementationSegmentPaths + in: path + description: SMF Implementation Dependent Segment Paths + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 7231 + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/BaseDnsPatternCreateData' + responses: + '201': + description: successful creation of a Baseline DNS pattern + content: + application/json: + schema: + $ref: '#/components/schemas/BaseDnsPatternCreatedData' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/neasdf-baselinednspattern//base-dns-patterns/{smfId}/{smfImplementationSegmentPaths}' + required: true + schema: + type: string + '204': + description: Successful update of the Baseline DNS Pattern + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 7694 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes a Baseline DNS Pattern + tags: + - Individual Baseline DNS Pattern + operationId: DeleteBaseDnsPattern + parameters: + - name: smfId + in: path + description: SMF or SMF set identifier or Set Id part in SMF set identifier + required: true + schema: + $ref: '#/components/schemas/VarNfId' + style: simple + explode: true + - name: smfImplementationSegmentPaths + in: path + description: SMF Implementation Dependent Segment Paths + required: true + schema: + type: string + responses: + '204': + description: successful deletion of a Baseline DNS Pattern + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + neasdf-baselinednspattern: Access to the neasdf-baselinednspattern API + + schemas: +# +# STRUCTURED DATA TYPES +# + BaseDnsPatternCreateData: + description: Data in Baseline DNS Pattern Create request + type: object + properties: + label: + type: string + baseDnsMdtList: + description: map of baseline DNS message detection templates where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/BaselineDnsMdt' + minProperties: 1 + baseDnsAitList: + description: map of Baseline DNS action information Template where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/BaselineDnsAit' + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + BaseDnsPatternCreatedData: + description: Data in Baseline DNS Pattern Create response + type: object + properties: + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + BaselineDnsMdt: + description: Baseline DNS message detection template + type: object + properties: + mdtId: + type: string + label: + type: string + dnsQueryMdtList: + description: map of DNS query message detection templates where a valid JSON string serves as key + type: object + additionalProperties: + $ref: 'TS29556_Neasdf_DNSContext.yaml#/components/schemas/DnsQueryMdt' + minProperties: 1 + dnsRspMdtList: + description: map of DNS response message detection templates where a valid JSON string serves as key + type: object + additionalProperties: + $ref: 'TS29556_Neasdf_DNSContext.yaml#/components/schemas/DnsRspMdt' + minProperties: 1 + required: + - mdtId + oneOf: + - required: [ dnsQueryMdtList ] + - required: [ dnsRspMdtList ] + + BaselineDnsAit: + description: Baseline DNS action information Template + type: object + properties: + aitId: + type: string + label: + type: string + ecsOption: + $ref: 'TS29556_Neasdf_DNSContext.yaml#/components/schemas/EcsOption' + dnsServerAddressList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + required: + - aitId + + VarNfId: + description: SMF or SMF Set Id or Set Id part in NF Set Id + type: object + properties: + smfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + setId: + type: string + pattern: '^([A-Za-z0-9\-]*[A-Za-z0-9])$' + smfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + +# +# SIMPLE DATA TYPES +# + + + +# +# ENUMERATIONS +# diff --git a/TS29556_Neasdf_DNSContext.yaml b/TS29556_Neasdf_DNSContext.yaml new file mode 100644 index 0000000..e7ab1ad --- /dev/null +++ b/TS29556_Neasdf_DNSContext.yaml @@ -0,0 +1,720 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.4' + title: 'Neasdf_DNSContext' + description: | + EASDF DNS Context Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.556 V18.4.0; 5G System; Edge Application Server Discovery Services; Stage3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.556/ + +servers: + - url: '{apiRoot}/neasdf-dnscontext/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - neasdf-dnscontext + +paths: + + /dns-contexts: + post: + summary: Create + tags: + - DNS contexts collection + operationId: CreateDnsContext + requestBody: + description: representation of the DNS context to be created in the EASDF + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DnsContextCreateData' + callbacks: + dnsContextNotification: + '{$request.body#/notifyUri}': + post: + requestBody: # contents of the DNS context Notify request + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DnsContextNotification' + responses: + '204': + description: successful notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + responses: + '201': + description: successful creation of a DNS context + content: + application/json: + schema: + $ref: '#/components/schemas/DnsContextCreatedData' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/neasdf-dnscontext//dns-contexts/{dnsContextId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /dns-contexts/{dnsContextId}: + delete: + summary: Delete the DNS Context + tags: + - Individual DNS context + operationId: DeleteDnsContext + parameters: + - name: dnsContextId + in: path + description: DNS context Identifier + required: true + schema: + type: string + responses: + '204': + description: successful deletion of an SM context + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Updates the DNS context + operationId: UpdateDnsContext + tags: + - Individual DNS context + parameters: + - name: dnsContextId + in: path + description: DNS context Identifier + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-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: Partial update of the DNS context + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful update of the DNS context + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 7694 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: Updates the DNS context (complete replacement) + operationId: ReplaceDnsContext + tags: + - Individual DNS context + parameters: + - name: dnsContextId + in: path + description: DNS context Identifier + required: true + schema: + type: string + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 7231 + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DnsContextCreateData' + responses: + '204': + description: Successful update of the DNS context + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 7694 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + neasdf-dnscontext: Access to the neasdf-dnscontext API + + + schemas: +# +# STRUCTURED DATA TYPES +# + DnsContextCreateData: + description: Data within Create request + type: object + properties: + ueIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + sNssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hplmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + n6RoutingInfo: + $ref: '#/components/schemas/N6RoutingInfo' + dnsRules: + description: map of DNS message handling rules where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/DnsRule' + minProperties: 1 + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - dnn + - sNssai + - dnsRules + anyOf: + - required: [ ueIpv4Addr ] + - required: [ ueIpv6Prefix ] + + DnsContextCreatedData: + description: Data within Create response + type: object + properties: + easdfIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + easdfIpv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + anyOf: + - required: [ easdfIpv4Addr ] + - required: [ easdfIpv6Addr ] + + DnsRule: + description: DNS message handling rule + type: object + properties: + dnsRuleId: + type: string + label: + type: string + precedence: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + dnsQueryMdtList: + description: map of DNS query message detection templates where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/DnsQueryMdt' + minProperties: 1 + baseDnsQueryMdtList: + type: array + items: + $ref: '#/components/schemas/BaselineDnsQueryMdtInfo' + minItems: 1 + dnsRspMdtList: + description: map of DNS response message detection templates where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/DnsRspMdt' + minProperties: 1 + baseDnsRspMdtList: + type: array + items: + $ref: '#/components/schemas/BaselineDnsRspMdtInfo' + minItems: 1 + dnsMsgId: + type: string + actionList: + description: map of actions where a valid JSON string serves as key + type: object + additionalProperties: + $ref: '#/components/schemas/Action' + minProperties: 1 + required: + - actionList + allOf: + - not: + required: [ dnsQueryMdtList, dnsRspMdtList ] + - not: + required: [ dnsQueryMdtList, baseDnsRspMdtList ] + - not: + required: [ baseDnsQueryMdtList, dnsRspMdtList ] + - not: + required: [ baseDnsQueryMdtList, baseDnsRspMdtList ] + + DnsQueryMdt: + description: DNS Query message detection template + type: object + properties: + mdtId: + type: string + label: + type: string + sourceIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + sourceIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + fqdnPatternList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + required: + - mdtId + + DnsRspMdt: + description: DNS Response message detection template + type: object + properties: + mdtId: + type: string + label: + type: string + fqdnPatternList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + easIpv4AddrRanges: + type: array + items: + $ref: '#/components/schemas/Ipv4AddressRange' + minItems: 1 + easIpv6PrefixRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6PrefixRange' + minItems: 1 + required: + - mdtId + + 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' + required: + - start + - end + + 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' + required: + - start + - end + + Action: + description: Action to apply to DNS messages matching a message detection template + type: object + properties: + applyAction: + $ref: '#/components/schemas/ApplyAction' + fwdParas: + $ref: '#/components/schemas/ForwardingParameters' + reportingOnceInd: + type: boolean + default: false + resetReportingOnceInd: + type: boolean + default: false + respParas: + $ref: '#/components/schemas/RespondParameters' + required: + - applyAction + + DnsContextNotification: + description: Data within DNS Context Notify + type: object + properties: + eventreportList: + type: array + items: + $ref: '#/components/schemas/DnsContextEventReport' + minItems: 1 + + ForwardingParameters: + description: Forwarding instructions + type: object + properties: + ecsOptionInfo: + $ref: '#/components/schemas/EcsOptionInfo' + dnsServerAddressInfo: + $ref: '#/components/schemas/DnsServerAddressInfo' + + EcsOptionInfo: + description: ECS Option Information + type: object + properties: + ecsOption: + $ref: '#/components/schemas/EcsOption' + baseDnsAitId: + $ref: '#/components/schemas/BaselineDnsAitId' + oneOf: + - required: [ ecsOption ] + - required: [ baseDnsAitId ] + + DnsServerAddressInfo: + description: DNS Server Address Information + type: object + properties: + dnsServerAddressList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + minItems: 1 + baseDnsAitId: + $ref: '#/components/schemas/BaselineDnsAitId' + oneOf: + - required: [ dnsServerAddressList ] + - required: [ baseDnsAitId ] + + BaselineDnsMdtId: + description: Baseline DNS Message Detection Template Identifier + type: object + properties: + baseDnsPatternUri: + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mdtId: + type: string + required: + - baseDnsPatternUri + - mdtId + + BaselineDnsAitId: + description: Baseline DNS Action Information Template Identifier + type: object + properties: + baseDnsPatternUri: + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + aitId: + type: string + required: + - baseDnsPatternUri + - aitId + + EcsOption: + description: ECS Option Information + type: object + properties: + sourcePrefixLength: + type: integer + minimum: 0 + maximum: 128 + scopePrefixLength: + type: integer + minimum: 0 + maximum: 128 + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + required: + - sourcePrefixLength + - ipAddr + + DnsContextEventReport: + description: DNS context event report + type: object + properties: + timestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + dnsRuleId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + dnsQueryReport: + $ref: '#/components/schemas/DnsQueryReport' + dnsRspReport: + $ref: '#/components/schemas/DnsRspReport' + dnsMsgId: + type: string + required: + - timestamp + + + DnsQueryReport: + description: DNS Query Event Report + type: object + properties: + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + DnsRspReport: + description: DNS Response Event Report + type: object + properties: + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + easIpv4Addresses: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + easIpv6Addresses: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + ecsOption: + $ref: '#/components/schemas/EcsOption' + + BaselineDnsQueryMdtInfo: + description: Baseline DNS Query MDT Information + type: object + properties: + sourceIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + sourceIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + baseDnsMdtList: + type: array + items: + $ref: '#/components/schemas/BaselineDnsMdtId' + minItems: 1 + required: + - baseDnsMdtList + + BaselineDnsRspMdtInfo: + description: Baseline DNS Response MDT Information + type: object + properties: + baseDnsMdtList: + type: array + items: + $ref: '#/components/schemas/BaselineDnsMdtId' + minItems: 1 + required: + - baseDnsMdtList + + RespondParameters: + description: Respond instructions + type: object + properties: + easIpv4Addresses: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + easIpv6Addresses: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + + N6RoutingInfo: + description: N6 traffic routing information + type: object + properties: + ipv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + +# +# SIMPLE DATA TYPES +# + + + +# +# ENUMERATIONS +# + + ApplyAction: + anyOf: + - type: string + enum: + - BUFFER + - REPORT + - FORWARD + - DISCARD + - RESPOND + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: > + Action to apply to the DNS packet + diff --git a/TS29557_Naf_ProSe.yaml b/TS29557_Naf_ProSe.yaml new file mode 100644 index 0000000..94a189d --- /dev/null +++ b/TS29557_Naf_ProSe.yaml @@ -0,0 +1,430 @@ +openapi: 3.0.0 + +info: + title: Naf_ProSe API + version: 1.1.0-alpha.2 + description: | + Naf_ProSe Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.557 V18.1.0; 5G System; Application Function ProSe Service; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.557/ + +servers: + - url: '{apiRoot}/naf-prose/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - naf-prose + +paths: + /authorize-discovery: + post: + summary: Obtain the authorization of Discovery Request from 5G DDNMF for a UE + operationId: ObtainDiscAuth + tags: + - Obtain the authorization of Discovery Request for a UE + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthDisReqData' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthDisResData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + DiscoveryAuthorizationUpdateNotify: + '{$request.body#/authUpdateCallbackUri}': + post: + requestBody: + description: > + update of authorization information to revoke discovery permissions + relating to some other users in the NF consumer for Restricted ProSe Direct Discovery + content: + application/json: + schema: + $ref: '#/components/schemas/AuthUpdateData' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /authorization-update-result: + post: + summary: > + report the result of update of authorization information to revoke discovery + permissions relating to some other users in the NF consumer for Restricted ProSe Direct + Discovery + operationId: AuthorizationUpdateResult + tags: + - Authorization Information Update Result + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthUpdateData' + required: true + responses: + '204': + description: Expected response to a successful cancellation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + naf-prose: Access to the Naf_ProSe API + + schemas: + +# COMPLEX TYPES: + + AuthDisReqData: + type: object + description: > + Represents Data used to request the authorization for a UE of a 5G ProSe Direct + Discovery request. + required: + - authRequestType + properties: + authRequestType: + $ref: '#/components/schemas/AuthRequestType' + proseAppId: + type: array + items: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/ProseApplicationId' + allowedSuffixNum: + $ref: '#/components/schemas/AllowedSuffixNum' + appLevelContainer: + $ref: '#/components/schemas/AppLevelContainer' + rpauid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Rpauid' + targetRpauid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Rpauid' + authUpdateCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + AuthDisResData: + type: object + description: > + Represents the obtained authorization Data for a UE of a 5G ProSe Direct Discovery + request. + required: + - authResponseType + properties: + authResponseType: + $ref: '#/components/schemas/AuthResponseType' + proseAppCodeSuffixPool: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/ProseApplicationCodeSuffixPool' + pduids: + type: array + items: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Pduid' + restrictedCodeSuffixPool: + type: array + items: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/RestrictedCodeSuffixPool' + proseAppMasks: + type: array + items: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/ProseApplicationMask' + proSeRestrictedMasks: + type: array + items: + $ref: '#/components/schemas/ProSeRestrictedMask' + resAppLevelContainer: + $ref: '#/components/schemas/AppLevelContainer' + targetDataSet: + type: array + items: + $ref: '#/components/schemas/TargetData' + targetPduid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Pduid' + metaData: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/MetaData' + + + TargetData: + type: object + description: Represents a set of Target PDUID - Target RPAUID - Metadata Indicator. + required: + - targetRpauid + - pduid + properties: + targetRpauid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Rpauid' + pduid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Pduid' + metadataIndic: + $ref: '#/components/schemas/MetadataIndic' + AuthUpdateData: + type: object + description: > + Represents the update data and resulting update data of authorization information + for Restricted ProSe Direct Discovery. + required: + - targetRpauid + - bannedAuthData + properties: + targetRpauid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Rpauid' + bannedAuthData: + type: array + items: + $ref: '#/components/schemas/BannedAuthData' + minItems: 1 + + BannedAuthData: + type: object + description: Represents a set of Banned PDUID - Banned RPAUID. + required: + - bannedRpauid + - bannedPduid + properties: + bannedRpauid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Rpauid' + bannedPduid: + $ref: 'TS29555_N5g-ddnmf_Discovery.yaml#/components/schemas/Pduid' + revocationResult: + $ref: '#/components/schemas/RevocationResult' + +# SIMPLE TYPES: + + AllowedSuffixNum: + description: contains the allowed number of suffixes. + type: integer + + AppLevelContainer: + description: Contains the Application Level Container. + type: string + + ProSeRestrictedMask: + description: Contains a ProSe Restricted Mask. + type: string + +# ENUMS: + + AuthRequestType: + anyOf: + - type: string + enum: + - OPEN_DISCOVERY_EXTENSION_ANNOUNCE + - RESTRICTED_DISCOVERY_ANNOUNCE + - RESTRICTED_DISCOVERY_EXTENSION_ANNOUNCE + - OPEN_DISCOVERY_EXTENSION_MONITOR + - RESTRICTED_DISCOVERY_MONITOR + - RESTRICTED_DISCOVERY_EXTENSION_MONITOR + - RESTRICTED_DISCOVERY_PERMISSION + - RESTRICTED_DISCOVERY_RESPONSE + - RESTRICTED_DISCOVERY_QUERY + - RESTRICTED_DISCOVERY_MATCH + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the authorization request type. + Possible values are: + - OPEN_DISCOVERY_EXTENSION_ANNOUNCE: Indicates that the Authorization Request Type is + open discovery with application-controlled extension/announce. + - RESTRICTED_DISCOVERY_ANNOUNCE: Indicates that the Authorization Request Type is restricted + discovery/announce. + - RESTRICTED_DISCOVERY_EXTENSION_ANNOUNCE: Indicates that the Authorization Request Type is + restricted discovery with application-controlled extension/announce. + - OPEN_DISCOVERY_EXTENSION_MONITOR: Indicates that the Authorization Request Type is open + discovery with application-controlled extension/monitor. + - RESTRICTED_DISCOVERY_MONITOR: Indicates that the Authorization Request Type is restricted + discovery/monitor. + - RESTRICTED_DISCOVERY_EXTENSION_MONITOR: Indicates that the Authorization Request Type is + restricted discovery with application-controlled extension/monitor. + - RESTRICTED_DISCOVERY_PERMISSION: Indicates that the Authorization Request Type is + restricted discovery/permission. + - RESTRICTED_DISCOVERY_RESPONSE: Indicates that the Authorization Request Type is restricted + discovery/response. + - RESTRICTED_DISCOVERY_QUERY: Indicates that the Authorization Request Type is restricted + discovery/query. + - RESTRICTED_DISCOVERY_MATCH: Indicates that the Authorization Request Type is restricted + discovery/match. + + AuthResponseType: + anyOf: + - type: string + enum: + - OPEN_DISCOVERY_EXTENSION_ANNOUNCE_ACK + - RESTRICTED_DISCOVERY_ANNOUNCE_ACK + - RESTRICTED_DISCOVERY_EXTENSION_ANNOUNCE_ACK + - OPEN_DISCOVERY_EXTENSION_MONITOR_ACK + - RESTRICTED_DISCOVERY_MONITOR_ACK + - RESTRICTED_DISCOVERY_EXTENSION_MONITOR_ACK + - RESTRICTED_DISCOVERY_PERMISSION_ACK + - RESTRICTED_DISCOVERY_RESPONSE_ACK + - RESTRICTED_DISCOVERY_QUERY_ACK + - RESTRICTED_DISCOVERY_MATCH_ACK + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the authorization response type. + Possible values are: + - OPEN_DISCOVERY_EXTENSION_ANNOUNCE_ACK: Indicates that the Authorization Response Type is + open discovery with application-controlled extension/announce ack. + - RESTRICTED_DISCOVERY_ANNOUNCE_ACK: Indicates that the Authorization Response Type is + restricted discovery/announce ack. + - RESTRICTED_DISCOVERY_EXTENSION_ANNOUNCE_ACK: Indicates that the Authorization Response + Type is restricted discovery with application-controlled extension/announce ack. + - OPEN_DISCOVERY_EXTENSION_MONITOR_ACK: Indicates that the Authorization Response Type is + open discovery with application-controlled extension/monitor ack. + - RESTRICTED_DISCOVERY_MONITOR_ACK: Indicates that the Authorization Response Type is + restricted discovery/monitor ack. + - RESTRICTED_DISCOVERY_EXTENSION_MONITOR_ACK: Indicates that the Authorization Response Type + is restricted discovery with application-controlled extension/monitor ack. + - RESTRICTED_DISCOVERY_PERMISSION_ACK: Indicates that the Authorization Response Type is + restricted discovery/permission ack. + - RESTRICTED_DISCOVERY_RESPONSE_ACK: Indicates that the Authorization Response Type is + restricted discovery/response ack. + - RESTRICTED_DISCOVERY_QUERY_ACK: Indicates that the Authorization Response Type is + restricted discovery/query ack. + - RESTRICTED_DISCOVERY_MATCH_ACK: Indicates that the Authorization Response Type is + restricted discovery/match ack. + + MetadataIndic: + anyOf: + - type: string + enum: + - NO_METADATA + - METADATA_UPDATE_DISALLOWED + - METADATA_UPDATE_ALLOWED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the Metadata Indicator. + Possible values are: + - NO_METADATA: This value may be used to indicate that there is no metadata associated with + the target RPAUID. This is the default value applicable if this IE is not supplied. + - METADATA_UPDATE_DISALLOWED: This value shall be used to indicate that there exists + metadata associated with the target RPAUID, but the metadata is not allowed to be updated. + - METADATA_UPDATE_ALLOWED: This value shall be used to indicate that there exists metadata + associated with the target RPAUID, and the metadata is allowed to be updated. + + RevocationResult: + anyOf: + - type: string + enum: + - REVOCATION_SUCCESSFUL + - REVOCATION_NOT_SUCCESSFUL + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the revocation result of a set of Banned RPAUID - Banned PDUID for Restricted + ProSe Direct Discovery. + Possible values are: + - REVOCATION_SUCCESSFUL: Indicates the successful revocation for a set of Banned RPAUID - + Banned PDUID for Restricted ProSe Direct Discovery. + - REVOCATION_NOT_SUCCESSFUL: Indicates that unsuccessful revocation for a set of Banned + RPAUID - Banned PDUID for Restricted ProSe Direct Discovery. diff --git a/TS29558_Ecas_SelectedEES.yaml b/TS29558_Ecas_SelectedEES.yaml new file mode 100644 index 0000000..ac78c90 --- /dev/null +++ b/TS29558_Ecas_SelectedEES.yaml @@ -0,0 +1,105 @@ +openapi: 3.0.0 + +info: + title: Selected EES Service + version: 1.0.0-alpha.1 + description: | + Selected EES Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.3.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/ecas-selected-ees/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /declare: + post: + summary: Declare the selected EES to the CAS. + operationId: DeclareSelectedEES + tags: + - Declare Selected EES + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SelEESDecInfo' + responses: + '204': + description: > + No Content. The Seleted EES Declaration request is received + successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + SelEESDecInfo: + description: > + Represents the information elements for the selected EES declaration. + type: object + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + seleEesId: + type: string + seleEndpoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + easId: + type: string + acId: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueId + - seleEesId + - seleEndpoint + - easId diff --git a/TS29558_Eecs_EESRegistration.yaml b/TS29558_Eecs_EESRegistration.yaml new file mode 100644 index 0000000..10a73fd --- /dev/null +++ b/TS29558_Eecs_EESRegistration.yaml @@ -0,0 +1,488 @@ +openapi: 3.0.0 + +info: + title: ECS EES Registration_API + description: | + API for EES Registration. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.5 + +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eecs-eesregistration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /registrations: + post: + summary: Create a new EES Registration + operationId: CreateEESRegistration + tags: + - EES Registrations (Collection) + description: Registers a new EES at the Edge Configuration Server. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + responses: + '201': + description: EES information is registered successfully at ECS. + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + get: + summary: Get an Individual EES Registration + operationId: GetIndEESReg + tags: + - Individual EES Registration (Document) + description: Retrieve an Individual EES registration resource. + parameters: + - name: registrationId + in: path + description: Registration Id. + required: true + schema: + type: string + responses: + '200': + description: OK (The EES registration information at the Edge Configuration Server). + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update an Individual EES Registration + operationId: UpdateIndEESReg + tags: + - Individual EES Registration (Document) + description: Fully replace an existing EES Registration resource. + parameters: + - name: registrationId + in: path + description: EES Registration Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + responses: + '200': + description: OK (The EES registration information is updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + '204': + description: > + No Content. The individual EES registration information is updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an Individual EES Registration + operationId: ModifyIndEESReg + tags: + - Individual EES Registration (Document) + description: Partially update an existing EES Registration resource. + parameters: + - name: registrationId + in: path + description: EES registration Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing EES registration resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/EESRegistrationPatch' + responses: + '200': + description: > + The Individual EES registration is successfully modified and + the updated registration information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/EESRegistration' + '204': + description: > + No Content. The individual EES registration information is updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an Individual EES Registration + operationId: DeleteIndEESReg + tags: + - Individual EES Registration (Document) + description: Delete an existing EES registration at ECS. + parameters: + - name: registrationId + in: path + description: Registration Id. + required: true + schema: + type: string + responses: + '204': + description: The individual EES registration is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + EESRegistration: + type: object + description: Represents an EES registration information. + properties: + eesProf: + $ref: '#/components/schemas/EESProfile' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eesProf + + EESProfile: + type: object + description: Represents the EES profile information. + properties: + eesId: + type: string + description: Identifier of the EES. + endPt: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + easIds: + type: array + items: + type: string + minItems: 1 + description: Application identifiers of EASs that are registered with EES. + easBdlInfos: + type: object + additionalProperties: + type: array + items: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EASBundleInfo' + minItems: 1 + minProperties: 1 + description: > + The key used in this map for each entry is the EAS ID of the concerned EAS. + easInstInfo: + type: object + additionalProperties: + $ref: '#/components/schemas/EASInstantiationInfo' + minProperties: 1 + description: > + Represents the EAS instantiation information for the EAS(s) registered at the EES. + The key of the map shall be the EAS ID to which the provided instantiation information + within the map value relates. + provId: + type: string + description: Identifier of the ECSP that provides the EES provider. + svcArea: + $ref: '#/components/schemas/ServiceArea' + appLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + description: List of DNAI(s) associated with the EES. + svcContSupp: + type: array + items: + $ref: '#/components/schemas/ACRScenario' + minItems: 1 + description: The ACR scenarios supported by the EES for service continuity. + eecRegConf: + type: boolean + description: > + Set to true if the EEC is required to register to the EES to use edge service. + Set to false if the EEC is not required to register to use edge services. Default + Value is false if omitted. + required: + - eesId + - endPt + - eecRegConf + + EESRegistrationPatch: + type: object + description: Represents partial update request of individual EES registration information. + properties: + eesProf: + $ref: '#/components/schemas/EESProfile' + expTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + + ServiceArea: + type: object + description: Represents a service area information of the EdgeApp entity. + properties: + topServAr: + $ref: '#/components/schemas/TopologicalServiceArea' + geoServAr: + $ref: '#/components/schemas/GeographicalServiceArea' + + TopologicalServiceArea: + type: object + description: Represents topological service area information. + properties: + ecgis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + minItems: 1 + description: A list of E-UTRA cell identities. + ncgis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + minItems: 1 + description: A list of NR cell identities. + tais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + description: A list of tracking area identities. + plmnIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + description: A list of serving network identities. + + GeographicalServiceArea: + type: object + description: Represents geographical service area information. + properties: + geoArs: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + description: A list of geographic area information. + civicAddrs: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + description: A list of civic address information. + + EASInstantiationInfo: + type: object + description: Represents the EAS instantiation information. + properties: + easId: + type: string + description: Identifier of the EAS. + status: + $ref: '#/components/schemas/InstantiationStatus' + instCrit: + $ref: '#/components/schemas/InstantiationCriteria' + required: + - easId + - status + + InstantiationCriteria: + type: object + description: Represents the instantiation criteria for an EAS. + properties: + instantiationTime: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + minItems: 1 + description: A list of date time periods when the EAS is instiantiable. + + ACRScenario: + anyOf: + - type: string + enum: + - EEC_INITIATED + - EEC_EXECUTED_VIA_SOURCE_EES + - EEC_EXECUTED_VIA_TARGET_EES + - SOURCE_EAS_DECIDED + - SOURCE_EES_EXECUTED + - EEL_MANAGED_ACR + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the ACR scenarios supported by EES. + Possible values are: + - EEC_INITIATED: Represents the EEC initiated ACR scenario. + - EEC_EXECUTED_VIA_SOURCE_EES: Represents the EEC ACR scenario executed via the S-EES. + - EEC_EXECUTED_VIA_TARGET_EES: Represents the EEC ACR scenario executed via the T-EES. + - SOURCE_EAS_DECIDED: Represents the EEC ACR scenario where the S-EAS decides to perform + ACR. + - SOURCE_EES_EXECUTED: Represents the EEC ACR scenario where S-EES executes the ACR. + - EEL_MANAGED_ACR: Represents the EEC ACR scenario where the ACR is managed by the + Edge Enabler Layer. + + InstantiationStatus: + anyOf: + - type: string + enum: + - INSTANTIATED + - INSTANTIABLE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the instantiation status information of an EAS. + Possible values are: + - INSTANTIATED: Indicates that the EAS status is instantiated. + - INSTANTIABLE: Indicates that the EAS status is instantiable but not yet instantiated. diff --git a/TS29558_Eecs_TargetEESDiscovery.yaml b/TS29558_Eecs_TargetEESDiscovery.yaml new file mode 100644 index 0000000..8b26c35 --- /dev/null +++ b/TS29558_Eecs_TargetEESDiscovery.yaml @@ -0,0 +1,145 @@ +openapi: 3.0.0 +info: + title: ECS Target EES Discovery API + description: | + API for Target EES Discovery. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.3 +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eecs-targeteesdiscovery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /ees-profiles: + get: + summary: Read all EES Profiles + operationId: GetEESProfiles + tags: + - EES Profiles (Collection) + description: Retrieve the T-EES information. + parameters: + - name: ees-id + in: query + description: Unique identifier of the S-EES. + required: true + schema: + type: string + - name: eas-id + in: query + description: Unique identifier of the S-EAS. + required: true + schema: + type: string + - name: target-dnai + in: query + description: The DNAI information associated with the potential T-EES(s) and/or T-EAS(s). + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + - name: ue-id + in: query + description: Identifier of the UE. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + - name: ue-location + in: query + description: The location information of the UE. + required: false + schema: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + - name: eec-srv-cont-supp + in: query + description: > + Indicates whether the EEC supports service continuity or not and the related service + continuity support information. + required: false + schema: + $ref: 'TS29558_Eees_EECContextRelocation.yaml#/components/schemas/EECSrvContinuitySupport' + - name: ac-svc-cont-supp + in: query + description: > + Indicates that the AC supports service continuity and contains the related service + continuity support information (i.e., supported ACR scenarios). + required: false + schema: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 1 + - name: bdl-id + in: query + description: > + Contains EAS bundle identifier. + required: false + schema: + type: string + - name: bdl-type + in: query + description: > + Contains EAS bundle type. + required: false + schema: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/BdlType' + - name: ens-ind + in: query + description: indicates whether edge node sharing is requested. + required: false + schema: + type: boolean + description: > + Set to true if edge node sharing is requested. + Set to false if edge node sharing is not requested. + The default value when omitted is false. + - name: app-grp-id + in: query + description: > + Contains the application group identifier. + required: false + schema: + type: string + responses: + '200': + description: The EDN configuration and the T-EES information determined by ECS. + content: + application/json: + schema: + $ref: 'TS24558_Eecs_ServiceProvisioning.yaml#/components/schemas/ECSServProvResp' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} diff --git a/TS29558_Eees_ACRManagementEvent.yaml b/TS29558_Eees_ACRManagementEvent.yaml new file mode 100644 index 0000000..b142a30 --- /dev/null +++ b/TS29558_Eees_ACRManagementEvent.yaml @@ -0,0 +1,844 @@ +openapi: 3.0.0 + +info: + title: EES ACR Management Event_API + description: | + API for EES ACR Management Event. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.5 + +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-acrmgntevent/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /subscriptions: + post: + summary: Creates a new Individual ACR Management Events Subscription + operationId: CreateACRMngEventSubscr + tags: + - ACR Management Events Subscriptions (Collection) + description: Create an Individual ACR Management Event Subscription resource. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + callbacks: + ACRManagementEventsNotification: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsNotification' + responses: + '200': + description: OK (The notification is received successfully) + content: + application/json: + schema: + $ref: '#/components/schemas/EasAckInformation' + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + UPPathChangeAvailabilityNotif: + '{request.body#/notificationDestination}/report-availability': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AvailabilityNotif' + responses: + '204': + description: No Content. The notification is successful received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '204': + description: > + Successful case. The resource has been successfully created and no + additional content is to be sent in the response message. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + get: + summary: Read all ACR Management Events Subscriptions + operationId: GetACRMngEventSubscrs + tags: + - ACR Management Events Subscriptions (Collection) + description: Retrieve all the ACR Management Events Subscriptions information. + parameters: + - name: supp-feat + in: query + description: Features supported by the EAS. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK (Successful get all of the active subscriptions) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + minItems: 1 + description: All the active ACR management events subscriptions + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Read an Individual ACR Management Events Subscription + operationId: GetIndACRMngEventSubscr + tags: + - Individual ACR Management Events Subscription (Document) + description: Retrieve an Individual ACR Management Events Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + - name: supp-feat + in: query + description: Features supported by the EAS. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK (Successful get the active subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual ACR Management Events Subscription + operationId: UpdateIndACRMngEventSubscr + tags: + - Individual ACR Management Events Subscription (Document) + description: Fully replace an existing Individual ACR Management Events Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + responses: + '200': + description: OK (Successful get the active subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual ACR Management Events Subscription + operationId: ModifyIndACRMngEventSubscr + tags: + - Individual ACR Management Events Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing Individual ACR Management Events Subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscriptionPatch' + responses: + '200': + description: > + The Individual ACR Management Events Subscription is successfully modified + and the updated subscription information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/AcrMgntEventsSubscription' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual ACR Management Events Subscription + operationId: DeleteIndACRMngEventSubscr + tags: + - Individual ACR Management Events Subscription (Document) + description: Delete an existing Individual ACR Management Events Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '204': + description: The individual subscription is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + + AcrMgntEventsSubscription: + type: object + description: Represents an Individual ACR Management Events Subscription. + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + easId: + type: string + description: Identifier of an EAS. + eventSubscs: + type: array + items: + $ref: '#/components/schemas/AcrMgntEventSubsc' + minItems: 1 + description: The subscribed ACR management events. + evtReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + eventReports: + type: array + items: + $ref: '#/components/schemas/AcrMgntEventReport' + minItems: 1 + description: The ACR management event report(s). + availabilityInfo: + $ref: '#/components/schemas/AvailabilityNotif' + failEventReports: + type: array + items: + $ref: '#/components/schemas/FailureAcrMgntEventInfo' + minItems: 1 + description: Failure event reports. + requestTestNotification: + type: boolean + description: > + Set to true by the EAS to request the EES to send a test notification. + Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easId + - eventSubscs + - notificationDestination + + AcrMgntEventSubsc: + type: object + description: Represents an ACR Management Event Subscription. + properties: + event: + $ref: '#/components/schemas/AcrMgntEvent' + eventFilter: + $ref: '#/components/schemas/AcrMgntEventFilter' + evtReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + tgtUeId: + $ref: '#/components/schemas/TargetUeIdentification' + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + easAckInd: + type: boolean + description: > + Identifies whether EAS acknowledgement of UP path change event notifications is to be + expected. Set to "true" if the EAS acknowledgement is expected. Set to "false" if + the EAS acknowledgement is not expected. Default value is "false" if ommited. + This attribute may be provided only if the "event" attribute is set to "UP_PATH_CHG". + easChars: + type: array + items: + $ref: 'TS24558_Eees_EASDiscovery.yaml#/components/schemas/EasCharacteristics' + minItems: 1 + description: A list of EAS characteristics. + trafFilterInfo: + $ref: '#/components/schemas/TrafficFilterInfo' + servContPlanInd: + type: boolean + description: > + Represents the service continuity planning indication (i.e., whether or not the EES + shall monitor whether the UE(s) enter the predicted location). + When set to true, it indicates that service continuity planning is required. + When set to false, it indicates that Service continuity planning is not required. + The default value when this attribute is omitted is false. + easAckSvcCont: + type: boolean + description: > + Indicates that the EAS will provide an acknowledgement as a response to the notification + of ACR management notification related to service continuity planning. Set to "true" if + the EAS acknowledgement is expected. Default value is "false". This attribute may be + provided only if the "event" attribute is set to "ACR_MONITORING" and/or + "ACR_FACILITATION". + required: + - event + + AcrMgntEventsSubscriptionPatch: + type: object + description: > + Represents a modification request of Individual ACR Management Events Subscription. + properties: + eventSubscs: + type: array + items: + $ref: '#/components/schemas/AcrMgntEventSubsc' + minItems: 1 + description: The subscribed ACR management events. + evtReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + AcrMgntEventsNotification: + type: object + description: Represents the ACR management events notification. + properties: + subpId: + type: string + description: > + String identifying the Individual ACR Management Events Subscription + for which the notification is delivered. + eventReports: + type: array + items: + $ref: '#/components/schemas/AcrMgntEventReport' + minItems: 1 + description: A list of ACR management event reports. + required: + - subpId + - eventReports + + AcrMgntEventReport: + type: object + description: Represents an ACR management event report. + properties: + event: + $ref: '#/components/schemas/AcrMgntEvent' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + upPathChgInfo: + $ref: '#/components/schemas/UpPathChangeInfo' + easEndPoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + actStatus: + $ref: '#/components/schemas/ActStatus' + acrParams: + $ref: '#/components/schemas/ACRParameters' + acId: + type: string + selACRScen: + type: array + items: + $ref: '#/components/schemas/SelectedACRScenarios' + minItems: 1 + servContPlanInd: + type: boolean + description: > + Represents the service continuity planning indication (i.e., whether or not the EES will + monitor whether the UE(s) enter the predicted location). + When set to true, it indicates that service continuity planning will be performed. + When set to false, it indicates that Service continuity planning will not be performed. + The default value when this attribute is omitted is false. + required: + - event + + ACRParameters: + type: object + description: Represents the ACR parameters. + properties: + predictExpTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + + FailureAcrMgntEventInfo: + type: object + description: Represents a failure ACR management event. + properties: + event: + $ref: '#/components/schemas/AcrMgntEvent' + failureCode: + $ref: '#/components/schemas/AcrMgntEventFailureCode' + required: + - event + - failureCode + + TargetUeIdentification: + description: Identifies the target UE information. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + intGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + extGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + oneOf: + - required: [gpsi] + - required: [intGrpId] + - required: [extGrpId] + - required: [ueIpAddr] + + AvailabilityNotif: + type: object + description: > + Represents the availability information of user plane path management events monitoring + via the 3GPP 5GC network. + properties: + availabilityStatus: + $ref: '#/components/schemas/AvailabilityStatus' + required: + - availabilityStatus + + UpPathChangeInfo: + description: Represents user plane path change information. + type: object + properties: + ueId: + $ref: '#/components/schemas/IndUeIdentification' + dnaiChgType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DnaiChangeType' + sourceTrafficRoute: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + targetTrafficRoute: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + sourceDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + targetDnai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + srcUeIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + srcUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + tgtUeIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + tgtUeIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + required: + - ueId + - dnaiChgType + + IndUeIdentification: + description: Represents identification information of a UE. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + oneOf: + - required: [gpsi] + - required: [externalId] + - required: [ueIpAddr] + + TrafficFilterInfo: + description: Represents the Traffic Filter Information. + type: object + properties: + ipFlows: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + description: Contains the flow description for the Uplink and/or Downlink IP flows. + uris: + type: array + items: + type: string + minItems: 1 + description: Indicates URI(s) matching criteria. + domainNames: + type: array + items: + type: string + minItems: 1 + description: Indicates Domain Name matching criteria. + dnProtocol: + $ref: 'TS29122_PfdManagement.yaml#/components/schemas/DomainNameProtocol' + anyOf: + - required: [ipFlows] + - required: [uris] + - required: [domainNames] + + SelectedACRScenarios: + type: object + description: > + Represents the selected ACR scenario(s) applicable for a given combination of AC and UE. + properties: + acrList: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 0 + acId: + type: string + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + required: + - acrList + - acId + - ueId + + EasAckInformation: + type: object + description: Represents the EAS acknowledgement information. + properties: + resCode: + $ref: '#/components/schemas/ResultCode' + required: + - resCode + +# +# ENUMERATIONS DATA TYPES +# + + AcrMgntEvent: + anyOf: + - type: string + enum: + - UP_PATH_CHG + - ACR_MONITORING + - ACR_FACILITATION + - ACT_START_STOP + - ACR_SELECTION + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the ACR Management event. + Possible values are: + - UP_PATH_CHG: Indicates that ACR Management Event is the User plane path change event. + - ACR_MONITORING: Indicates that ACR Management Event is the ACR monitoring event. + - ACR_FACILITATION: Indicates that ACR Management Event is the ACR facilitation event. + - ACT_START_STOP: Indicates that ACR Management Event is the ACT start/stop event. + - ACR_SELECTION: Indicates that ACR Management Event is the ACR selection event. + + AcrMgntEventFilter: + anyOf: + - type: string + enum: + - INTRA_EDN_MOBILITY + - INTER_EDN_MOBILITY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the filtering criteria for the ACR Management event. + Possible values are: + - INTRA_EDN_MOBILITY: Indicates that the ACR Management Event filter is intra-EDN mobility. + - INTER_EDN_MOBILITY: Indicates that the ACR Management Event filter is inter-EDN mobility. + + ActStatus: + anyOf: + - type: string + enum: + - ACT_START + - ACT_STOP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the ACT status. + Possible values are: + - ACT_START: Indicates ACT start. + - ACT_STOP: Indicates ACT stop. + + AcrMgntEventFailureCode: + anyOf: + - type: string + enum: + - 3GPP_UP_PATH_CHANGE_MON_NOT_AVAILABLE + - OTHER_REASONS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the failure reason for the ACR Management event. + Possible values are: + - 3GPP_UP_PATH_CHANGE_MON_NOT_AVAILABLE: Indicates that the ACR Management Event + Subscription failed because user plane path management event notifications from the 3GPP + network is NOT available. This value is only applicable for the "UP_PATH_CHG", + "ACR_MONITORING" and "ACR_FACILITATION" events. + - OTHER_REASONS: Indicates that the ACR Management Event Subscription failed for other + reasons. This value is applicable for all events. + + AvailabilityStatus: + anyOf: + - type: string + enum: + - AVAILABLE + - NOT_AVAILABLE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the availability status. + Possible values are: + - AVAILABLE: Indicates availability. + - NOT_AVAILABLE: Indicates unavailability. + + ResultCode: + anyOf: + - type: string + enum: + - ACCEPTED + - REJECTED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the result code of ACT acceptance by EAS. + Possible values are: + - ACCEPTED: Indicates acceptance of the ACT. + - REJECTED: Indicates rejection of the ACT. diff --git a/TS29558_Eees_ACRParameterInformation.yaml b/TS29558_Eees_ACRParameterInformation.yaml new file mode 100644 index 0000000..7088aa0 --- /dev/null +++ b/TS29558_Eees_ACRParameterInformation.yaml @@ -0,0 +1,118 @@ +openapi: 3.0.0 + +info: + title: EES ACR Parameters Information Service + version: 1.0.0-alpha.2 + description: | + EES ACR Parameters Information Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.3.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-acr-param/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /send-acrparamsinfo: + post: + summary: Request to send ACR parameters information. + operationId: Request + tags: + - Send ACR Parameter Information + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACRParamsInfo' + responses: + '200': + description: > + The ACR parameters information is successfully received and the content of these ACR + parameters information is returned in the response body + content: + application/json: + schema: + $ref: '#/components/schemas/ACRParamsInfo' + '204': + description: > + No Content. The ACR parameter information is successfully received and no content is + returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ACRParamsInfo: + description: > + Represents the ACR parameters information. + type: object + properties: + eesId: + type: string + description: Represents the EES ID. + eecId: + type: string + description: Represents the EEC ID. + acId: + type: string + description: Represents the AC ID. + sEasEndPoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + tEasEndPoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + acrParams: + $ref: 'TS29558_Eees_ACRManagementEvent.yaml#/components/schemas/ACRParameters' + required: + - eesId + - eecId + - acId + - sEasEndPoint + - tEasEndPoint + - acrParams diff --git a/TS29558_Eees_ACRStatusUpdate.yaml b/TS29558_Eees_ACRStatusUpdate.yaml new file mode 100644 index 0000000..d95266b --- /dev/null +++ b/TS29558_Eees_ACRStatusUpdate.yaml @@ -0,0 +1,197 @@ +openapi: 3.0.0 + +info: + title: EES ACR Status Update Service + version: 1.1.0-alpha.2 + description: | + EES ACR Status Update Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.1.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-acrstatus-update/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /request-acrupdate: + post: + summary: Request to update the information related to ACR (e.g. indicate the status of ACT, update the notification target address). + operationId: RequestACRUpdate + tags: + - Request ACR Update + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACRUpdateData' + responses: + '200': + description: > + The communicated ACR update information was successfully received. + The response body contains the feedback of the EES. + content: + application/json: + schema: + $ref: '#/components/schemas/ACRDataStatus' + '204': + description: > + No Content. The communicated ACR update information was successfully + received. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ACRUpdateData: + description: > + Represents the parameters to update the information related to ACR (e.g. indicate + the status of ACT, update the notification target address). + type: object + properties: + easId: + type: string + acId: + type: string + actResultInfo: + $ref: '#/components/schemas/ACTResultInfo' + e3SubscIds: + type: array + items: + type: string + minItems: 1 + e3NotificationUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + required: + - easId + anyOf: + - required: [actResultInfo] + - required: [e3SubscIds] + - required: [e3NotificationUri] + + ACRDataStatus: + description: Represents the ACR status information. + type: object + properties: + e3SubscsStatus: + $ref: '#/components/schemas/E3SubscsStatus' + e3SubscIds: + type: array + items: + type: string + minItems: 1 + required: + - e3SubscsStatus + + ACTResultInfo: + description: Represents the result of ACT and the related information. + type: object + properties: + actResult: + $ref: '#/components/schemas/ACTResult' + actFailureCause: + $ref: '#/components/schemas/ACTFailureCause' + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + easEndPoint: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + required: + - actResult + - ueId + - easEndPoint + +# ENUMS: + + ACTResult: + anyOf: + - type: string + enum: + - SUCCESSFUL + - FAILED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the result of ACT. + Possible values are: + - SUCCESSFUL: Indicates that the ACT was successful. + - FAILED: Indicates that the ACT failed. + + E3SubscsStatus: + anyOf: + - type: string + enum: + - SUCCESSFUL + - FAILED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the status of the initialization of EDGE-3 subscriptions. + Possible values are: + - SUCCESSFUL: Indicates that the initialization of EDGE-3 subscriptions was successful. + - FAILED: Indicates that the initialization of EDGE-3 subscriptions failed. + + ACTFailureCause: + anyOf: + - type: string + enum: + - ACR_CANCELLATION + - OTHER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the cause of ACT failure. + Possible values are: + - ACR_CANCELLATION: Indicates that the ACT failed due to the cancellation of the ACR. + - OTHER: Indicates that the ACT failed for other reasons. diff --git a/TS29558_Eees_AppClientInformation.yaml b/TS29558_Eees_AppClientInformation.yaml new file mode 100644 index 0000000..fdf5ead --- /dev/null +++ b/TS29558_Eees_AppClientInformation.yaml @@ -0,0 +1,442 @@ +openapi: 3.0.0 +info: + title: EES Application Client Information_API + description: | + API for EES Application Client Information. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.2 +externalDocs: + description: > + 3GPP TS 29.558 V18.1.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eees-appclientinformation/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /subscriptions: + post: + summary: Creates a new Individual Application Client Information Subscriptions resource + operationId: CreateAppClientInfoSubscription + tags: + - Application Client Information Subscriptions (Collection) + description: Create a Subscription resource for reporting of AC information to the EAS. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + responses: + '201': + description: > + Created (The individual AC information subscription resource is created successfully) + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ACInformationNotification: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Read an Individual Application Client Information Subscriptions resource + operationId: ReadIndAppClientInfoSubscription + tags: + - Individual Application Client Information Subscription (Document) + description: Retrieve an Individual AC information subscription information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '200': + description: OK (Successfully get the AC information subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual Application Client Information Subscriptions resource + operationId: UpdateIndAppClientInfoSubscription + tags: + - Individual Application Client Information Subscription (Document) + description: Fully replace an existing Individual AC information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + responses: + '200': + description: OK (The individual AC information subscription was modified successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + '204': + description: No Content. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual Application Client Information Subscriptions resource + operationId: ModifyIndAppClientInfoSubscription + tags: + - Individual Application Client Information Subscription (Document) + description: Partially update an existing Individual AC information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing Individual AC information Subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ACInfoSubscriptionPatch' + responses: + '200': + description: > + OK (The Individual AC information Subscription is successfully modified + and the updated subscription information is returned in the response). + content: + application/json: + schema: + $ref: '#/components/schemas/ACInfoSubscription' + '204': + description: > + No Content (The individual AC information subscription was modified successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual Application Client Information Subscriptions resource + operationId: DeleteIndAppClientInfoSubscription + tags: + - Individual Application Client Information Subscription (Document) + description: Delete an existing Individual AC information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '204': + description: The individual subscription is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ACInfoSubscription: + type: object + description: Represents an Individual AC Information Subscription. + properties: + easId: + type: string + description: Identifier of the EAS subscribing for AC information report. + acFltrs: + type: array + items: + $ref: '#/components/schemas/ACFilters' + minItems: 1 + description: Filters to retrieve the information about specific ACs. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by the EAS to request the EES to send a test notification. + Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easId + + ACInfoSubscriptionPatch: + type: object + description: Represents the partial update of Individual AC Information Subscription. + properties: + acFltrs: + type: array + items: + $ref: '#/components/schemas/ACFilters' + minItems: 1 + description: Filters to retrieve the information about specific ACs. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + + ACFilters: + type: object + description: Represents the filters information for AC Information Subscription. + properties: + acTypes: + items: + type: string + minItems: 1 + description: List of AC Types or categories. + ecspIds: + items: + type: string + minItems: 1 + description: The list of identifiers of ECSPs associated with the EEC. + acIds: + items: + type: string + minItems: 1 + description: List of identifiers of ACs to be matched. + svcArea: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ServiceArea' + maxAcKpi: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACServiceKPIs' + minAcKpi: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACServiceKPIs' + opSchds: + type: array + items: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + minItems: 1 + description: Operation schedule of EAS to be matched with operation schedule of the AC. + ueIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + description: List of UE identifiers hosting the AC. + locInfs: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + + ACInfoNotification: + type: object + description: AC Information notification. + properties: + subId: + type: string + description: > + Identifier of the AC information subscription for which this notification is related to. + acInfs: + type: array + items: + $ref: '#/components/schemas/ACInformation' + minItems: 1 + description: Notifications that include the ACs information matching filter criteria. + required: + - subId + - acInfs + + ACInformation: + type: object + description: AC Information matching the filter criteria. + properties: + acProfs: + type: array + items: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + minItems: 1 + description: List of profile information of ACs. + ueIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + description: List of UE identifiers hosting the AC. + ueLocInfs: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + required: + - acProfs diff --git a/TS29558_Eees_CommonEASAnnouncement.yaml b/TS29558_Eees_CommonEASAnnouncement.yaml new file mode 100644 index 0000000..f39f4d0 --- /dev/null +++ b/TS29558_Eees_CommonEASAnnouncement.yaml @@ -0,0 +1,104 @@ +openapi: 3.0.0 + +info: + title: EES Announce Common EAS Information Service + version: 1.0.0-alpha.2 + description: | + EES Announce Common EAS Information Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-common-eas/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /declare: + post: + summary: Request to declare common EAS information. + operationId: Declare + tags: + - Declare common EAS Information + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CommonEASInfo' + responses: + '204': + description: > + No Content. The common EAS information is successfully received and no content is + returned in the response body. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + CommonEASInfo: + description: > + Represents the common EAS information. + type: object + properties: + requestorId: + type: string + description: Represents the identifier of the announcing EES sending the request. + easId: + type: string + description: Represents the EAS ID of the selected common EAS + appGrpId: + type: string + description: Represents the application group identifier. + endPt: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + required: + - requestorId + - easId + - appGrpId + - endPt diff --git a/TS29558_Eees_EASRegistration.yaml b/TS29558_Eees_EASRegistration.yaml new file mode 100644 index 0000000..e2cf8fc --- /dev/null +++ b/TS29558_Eees_EASRegistration.yaml @@ -0,0 +1,624 @@ +openapi: 3.0.0 + +info: + title: EES EAS Registration_API + description: | + API for EAS Registration. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.5 + +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +servers: + - url: '{apiRoot}/eees-easregistration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /registrations: + post: + summary: Creates a new Individual EAS Registration resource + operationId: CreateEASRegistration + tags: + - EAS Registrations (Collection) + description: Registers a new EAS at an EES. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + responses: + '201': + description: EAS information is registered successfully at EES. + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + get: + summary: Read an Individual EAS Registration resource + operationId: ReadIndEASRegistration + tags: + - Individual EAS Registration (Document) + description: Retrieve an Individual EAS registration resource. + parameters: + - name: registrationId + in: path + description: Registration Id. + required: true + schema: + type: string + responses: + '200': + description: OK (The EAS registration information at the EES). + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual EAS Registration resource + operationId: UpdateIndEASRegistration + tags: + - Individual EAS Registration (Document) + description: Fully replace an existing EAS Registration resource. + parameters: + - name: registrationId + in: path + description: EAS registration Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + responses: + '200': + description: OK (The EAS registration information is updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + '204': + description: > + No Content. The individual EAS registration information is updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual EAS Registration resource + operationId: ModifyIndEASRegistration + tags: + - Individual EAS Registration (Document) + description: Partially update an existing EAS Registration resource. + parameters: + - name: registrationId + in: path + description: EAS registration Id. + required: true + schema: + type: string + requestBody: + description: Partial update of an existing EAS registration resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/EASRegistrationPatch' + responses: + '200': + description: > + The Individual EAS registration is successfully modified and the updated + registration information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/EASRegistration' + '204': + description: > + No Content. The individual EAS registration information is updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual EAS Registration resource + operationId: DeleteIndEASRegistration + tags: + - Individual EAS Registration (Document) + description: Delete an existing EAS registration at EES. + parameters: + - name: registrationId + in: path + description: EAS registration Id. + required: true + schema: + type: string + responses: + '204': + description: The individual EAS registration is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + EASRegistration: + type: object + description: Represents an EAS registration information. + properties: + easProf: + $ref: '#/components/schemas/EASProfile' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easProf + + EASProfile: + type: object + description: Represents the EAS profile information. + properties: + easId: + type: string + description: Identifier of the EAS. + endPt: + $ref: '#/components/schemas/EndPoint' + easBdlInfos: + type: array + items: + $ref: '#/components/schemas/EASBundleInfo' + minItems: 1 + acIds: + type: array + items: + type: string + minItems: 1 + description: Identities of application clients that are served by the EAS. + provId: + type: string + description: Identifier of the ASP that provides the EAS. + type: + $ref: '#/components/schemas/EASCategory' + flexEasType: + type: string + description: The EAS type with flexible value set. + scheds: + type: array + items: + $ref: 'TS29122_CpProvisioning.yaml#/components/schemas/ScheduledCommunicationTime' + minItems: 1 + description: The availability schedule of the EAS. + svcArea: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ServiceArea' + svcKpi: + $ref: '#/components/schemas/EASServiceKPI' + permLvl: + type: array + items: + $ref: '#/components/schemas/PermissionLevel' + minItems: 1 + description: level of service permissions supported by the EAS. + easFeats: + type: array + items: + type: string + minItems: 1 + description: Service specific features supported by EAS. + appLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RouteToLocation' + minItems: 1 + description: List of DNAI(s) and the N6 traffic information associated with the EAS. + svcContSupp: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 1 + description: The ACR scenarios supported by the EAS for service continuity. + transContSupp: + $ref: '#/components/schemas/TransContSuppDetails' + avlRep: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + status: + type: string + description: EAS status information. + genCtxDur: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DurationSec' + easSyncSupp: + type: boolean + default: false + description: > + Set to true to indicate that content synchronization between EASs is supported. + Set to false to indicate that content synchronization between EASs is not supported. + The default value when this attribute is omitted is false. + required: + - easId + - endPt + not: + required: [ type, flexEasType ] + + EASRegistrationPatch: + type: object + description: Represents partial update request of individual EAS registration information. + properties: + easProf: + $ref: '#/components/schemas/EASProfile' + expTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + + EASServiceKPI: + type: object + description: Represents the EAS service KPI information. + properties: + maxReqRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxRespTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avail: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avlComp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avlGraComp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avlMem: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + avlStrg: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + connBand: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + + EASBundleInfo: + type: object + description: Represents the EAS bundle information. + properties: + bdlId: + type: string + description: Indicates a bundle ID. + easIdsList: + type: array + items: + type: string + minItems: 1 + bdlType: + $ref: '#/components/schemas/BdlType' + easBdlReqs: + $ref: '#/components/schemas/EASBdlReqs' + mainEasId: + type: string + required: + - bdlType + oneOf: + - required: [bdlId] + - required: [easIdsList] + + EASBdlReqs: + type: object + description: Represents the EAS bundle requirements. + properties: + coordinatedEasDisc: + type: boolean + default: false + description: > + Set to true to indicate that coordianted EAS discovery is required. + Set to false to indicate that coordianted EAS discovery is not required. + The default value when this attribute is omitted is false. + coordinatedAcr: + $ref: '#/components/schemas/CoordinatedAcrReqs' + affinity: + $ref: '#/components/schemas/Affinity' + + CoordinatedAcrReqs: + type: object + description: Represents the coordinated ACR related requirements for an EAS bundle. + properties: + coordinatedAcrInd: + type: boolean + default: false + description: > + Set to true to indicate that coordianted ACR is required. + Set to false to indicate that coordianted ACR is not required. + The default value when this attribute is omitted is false. + failureAction: + $ref: '#/components/schemas/FailureAction' + required: + - coordinatedAcrInd + + EndPoint: + type: object + description: The end point information to reach EAS. + properties: + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + ipv4Addrs: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + minItems: 1 + description: IPv4 addresses of the edge server. + ipv6Addrs: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + minItems: 1 + description: IPv6 addresses of the edge server. + uri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + oneOf: + - required: [uri] + - required: [fqdn] + - required: [ipv4Addrs] + - required: [ipv6Addrs] + + PermissionLevel: + anyOf: + - type: string + enum: + - TRIAL + - GOLD + - SILVER + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the level of service permissions supported by the EAS. + Possible values are: + - TRIAL: Level of service permission supported is TRIAL. + - GOLD: Level of service permission supported is GOLD. + - SILVER: Level of service permission supported is SILVER. + - OTHER: Any other level of service permissions supported. + + EASCategory: + anyOf: + - type: string + enum: + - UAS + - V2X + - SEAL_SEALDD_SERVERS + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Indicates the category or type of the EAS. + Possible values are: + - UAS: Indicates that the EAS category is for UAS services. + - V2X: Category of EAS is for V2X Services. + - SEALDD: Indicates that the EAS category is SEALDD Server for SEALDD services. + - OTHER: Any other type of EAS category. + + TransContSuppDetails: + type: object + description: > + Represents the detailed information about the EAS (e.g. SEALDD Server) capability for + seamless transport layer service continuity. + properties: + transProtocs: + type: array + items: + $ref: '#/components/schemas/TransportProtocol' + minItems: 1 + description: > + Indicates the transport layer protocols supported for EAS context transfer using + the seamless transport layer service continuity capability. + required: + - transProtocs + + TransportProtocol: + anyOf: + - type: string + enum: + - QUIC + - TCP + - TCP_TLS + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Indicates the transport layer protocol. + Possible values are: + - QUIC: Indicates the QUIC protocol. + - TCP: Indicates the Transmission Control (TCP) Protocol. + - TCP_TLS: Indicates the Transmission Control Protocol (TCP) with Transport Layer Security + (TLS) protocol. + + BdlType: + anyOf: + - type: string + enum: + - DIRECT + - PROXY + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration and + is not used to encode content defined in the present version of this API. + description: | + Represents the EAS Bundle type. + Possible values are: + - DIRECT: Indicates that the EAS Bundle type is direct bundle. + - PROXY: Indicates that the EAS Bundle type is proxy bundle. + + Affinity: + anyOf: + - type: string + enum: + - STRONG + - PREFERRED + - WEAK + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration and + is not used to encode content defined in the present version of this API. + description: | + Represents the affinity requirements of an EAS bundle. + Possible values are: + - STRONG: Indicates that the affinity is strong, i.e., all the EASs of the bundle shall be + in the same EDN. + - PREFERRED: Indicates that the affinity is preferred, i.e., it is nice to have all the EASs + of the bundle in the same EDN, but it is not essential. + - WEAK: Indicates that the affinity is weak, i.e., it is not essential to have all the EASs + of the bundle in the same EDN. + + FailureAction: + anyOf: + - type: string + enum: + - CANCEL + - PROCEED + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration and + is not used to encode content defined in the present version of this API. + description: | + Represents the EAS bundle related failure action during ACR. + Possible values are: + - CANCEL: Indicates that ACR shall be cancelled for the other EAS(s) of the bundle for which + ACR is not failed. + - PROCEED: Indicates that ACR shall proceed for the other EAS(s) of the bundle for which + ACR is not failed. diff --git a/TS29558_Eees_EECContextRelocation.yaml b/TS29558_Eees_EECContextRelocation.yaml new file mode 100644 index 0000000..a2f9f18 --- /dev/null +++ b/TS29558_Eees_EECContextRelocation.yaml @@ -0,0 +1,274 @@ +openapi: 3.0.0 +info: + title: EES EEC Context Relocation API + description: | + API for EEC Context Relocation. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.3 +externalDocs: + description: > + 3GPP TS 29.558 V18.2.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eees-eeccontextreloc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /eec-contexts: + post: + summary: Push EEC Context information + operationId: PushEecContexts + tags: + - Collection of EEC contexts (Collection) + description: S-EES transfers the EEC context information to T-EES. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EECContextPush' + responses: + '200': + description: > + OK. The EEC context has been successfully transferred to the T-EES and + the EEC is implicitly registered. + content: + application/json: + schema: + $ref: '#/components/schemas/EECContextPushRes' + '204': + description: No Content. The EEC context has been successfully transferred to the T-EES. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + summary: Pull EEC Context information + operationId: PullEecContexts + tags: + - Collection of EEC contexts (Collection) + description: T-EES pulls an EEC context information from S-EES. + parameters: + - name: ees-id + in: query + description: Unique identifier of the requesting EES. + required: true + schema: + type: string + - name: eec-cntx-id + in: query + description: Unique identifier of the EEC context. + required: true + schema: + type: string + - name: sess-cntxs + in: query + description: List of service session context information being requested. + required: false + schema: + $ref: '#/components/schemas/SessionContexts' + responses: + '200': + description: > + OK (The EEC context information matching the input parameters in the request + is returned by the S-EES). + content: + application/json: + schema: + $ref: '#/components/schemas/EECContext' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + SessionContexts: + type: object + description: Represents the list of service session contexts information. + properties: + sessCntxs: + type: array + items: + $ref: '#/components/schemas/IndividualSessionContext' + minItems: 1 + description: List of service session contexts information. + required: + - sessCntxs + + IndividualSessionContext: + type: object + description: Represents a single service session context information. + properties: + easId: + type: string + description: Identifier of the EAS providing the application services. + endPt: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + acId: + type: string + description: Identifier of the AC for which the service session information is provided. + + acrList: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 1 + description: The list of selected ACR scenarios. + required: + - easId + - endPt + + EECContextPush: + type: object + description: Represents the EEC context push request data. + properties: + eesId: + type: string + description: Identifier of the S-EES pushing the EEC context information. + eecCntx: + $ref: '#/components/schemas/EECContext' + tgtEas: + $ref: 'TS29558_Eees_EASRegistration.yaml#/components/schemas/EndPoint' + acrScenariosSelReq: + type: boolean + description: > + Set to true if the EEC indicates the T-EES to select the ACR scenarisos. + Set to false if the T-EES is not required to select the ACR scenarios. + The default value when omitted is false. + required: + - eesId + - eecCntx + + EECContextPushRes: + type: object + description: Represents the EEC context push response data. + properties: + implReg: + $ref: '#/components/schemas/ImplicitRegDetails' + selAcrScenariosList: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 1 + description: The list of ACR scenarios selected by T-EES. + + ImplicitRegDetails: + type: object + description: Represents the EEC implicit registration details. + properties: + regId: + type: string + description: Identifier of the EEC registration. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - regId + + EECContext: + type: object + description: Represents the EEC context information. + properties: + eecId: + type: string + description: Unique idenitfier of the EEC. + cntxId: + type: string + description: Unique idenitfier assigned to the EEC context. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + e1Subs: + type: array + items: + type: string + minItems: 1 + description: List of subscription IDs for the capability expsoure for the EEC ID. + ueLoc: + $ref: 'TS29122_CommonData.yaml#/components/schemas/LocationArea5G' + acProfs: + type: array + items: + $ref: 'TS24558_Eees_EECRegistration.yaml#/components/schemas/ACProfile' + minItems: 1 + description: List AC profiles. + sessCntxs: + $ref: '#/components/schemas/SessionContexts' + eecSrvContSupp: + $ref: '#/components/schemas/EECSrvContinuitySupport' + ueMobSuppInd: + type: boolean + description: > + Set to true to indicate that UE Mobility support is required. + Set to false to indicate that UE mobility support is not required. + The default value when omitted is false. + required: + - eecId + - cntxId + + EECSrvContinuitySupport: + type: object + description: Represents the EEC service continuity support details. + properties: + srvContSupp: + type: boolean + description: > + Set to true if EEC supports service continuity. + Set to false if EEC does not supports service continuity. + The default value when omitted is false. + acrScenarios: + type: array + items: + $ref: 'TS29558_Eecs_EESRegistration.yaml#/components/schemas/ACRScenario' + minItems: 1 + description: The list of ACR scenarios supported by EEC. + required: + - srvContSupp diff --git a/TS29558_Eees_EELManagedACR.yaml b/TS29558_Eees_EELManagedACR.yaml new file mode 100644 index 0000000..7c84ed8 --- /dev/null +++ b/TS29558_Eees_EELManagedACR.yaml @@ -0,0 +1,319 @@ +openapi: 3.0.0 +info: + title: EES EEL Managed ACR Service + version: 1.1.0-alpha.2 + description: | + EES EEL Managed ACR Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.1.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eees-eel-acr/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /request-eelacr: + post: + summary: Request the EES (e.g. S-EES) to handle all the operations of an ACR. + operationId: RequestEELManagedACR + tags: + - Request EEL Managed ACR + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EELACRReq' + responses: + '200': + description: > + The requested EEL Managed ACR initiation was successfully received and + processed. The response body contains the feedback of the EES. + content: + application/json: + schema: + $ref: '#/components/schemas/EELACRResp' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions: + get: + summary: Retrieve all the active ACT Status Subscriptions managed by the EES. + operationId: GetACTStatusSubscriptions + tags: + - ACT Status Subscriptions (Collection) + responses: + '200': + description: > + OK. All the active ACT status subscriptions managed by the EES shall + be returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/ACTStatusSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a subscription to ACT status reporting. + operationId: CreateACTStatusSubsc + tags: + - ACT Status Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACTStatusSubsc' + responses: + '201': + description: > + Created. The subscription is successfully created and a representation of the + created Individual ACT Status Subscription resource shall be returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ACTStatusSubsc' + headers: + Location: + description: > + Contains the URI of the created Individual ACT Status Subscription resource. + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ACTStatusNotification: + '{$request.body#/notificationUri}/act-status': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ACTStatusNotif' + responses: + '204': + description: > + No Content. The ACT status notification is successfully received + and acknowledged. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Retrieve an ACT status subscription resource. + operationId: GetACTStatusSubscription + tags: + - Individual ACT Status Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: Individual ACT Status Subscription identifier. + required: true + schema: + type: string + responses: + '200': + description: > + OK. The requested real-time UAV status subscription resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/ACTStatusSubsc' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + EELACRReq: + description: > + Represents the parameters to request the EES (e.g. S-EES) to handle all the + operations of an ACR. + type: object + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + easCharacs: + type: array + items: + $ref: 'TS24558_Eees_EASDiscovery.yaml#/components/schemas/EasCharacteristics' + minItems: 1 + appCtxtStoreAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueId + - easCharacs + + EELACRResp: + description: Represents the feedback of the EES on EEL Managed ACR request. + type: object + properties: + appCtxtStoreAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + ACTStatusSubsc: + description: > + Represents the parameters to request the creation of a subscription to ACT + status reporting. + type: object + properties: + easId: + type: string + description: Contains the application identifier of the EAS, e.g. URI, FQDN. + notificationUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easId + - notificationUri + + ACTStatusNotif: + description: Represents an ACT status notification. + type: object + properties: + subscriptionId: + type: string + description: Subscription identifier. + actStatus: + $ref: 'TS29558_Eees_ACRStatusUpdate.yaml#/components/schemas/ACTResult' + required: + - subscriptionId + - actStatus + +# ENUMS: diff --git a/TS29558_Eees_SessionWithQoS.yaml b/TS29558_Eees_SessionWithQoS.yaml new file mode 100644 index 0000000..24bc140 --- /dev/null +++ b/TS29558_Eees_SessionWithQoS.yaml @@ -0,0 +1,509 @@ +openapi: 3.0.0 +info: + title: EES Session with QoS API + description: | + API for EES Session with Qos service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.2 +externalDocs: + description: > + 3GPP TS 29.558 V18.2.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eees-session-with-qos/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /sessions: + post: + summary: Create a new Individual Session with QoS resource + operationId: CreateIndSessionWithQoS + tags: + - Sessions with QoS (Collection) + description: > + Request reservation of resources for a data session between AC and EAS with a specific QoS. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + responses: + '201': + description: Created (Successful creation) + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + notificationDestination: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserPlaneEventNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + get: + summary: Read all Sessions with QoS resource + operationId: ReadAllSessionsWithQoS + tags: + - Sessions with QoS (Collection) + description: Retrieve all the Session With QoS information. + parameters: + - name: eas-id + in: query + description: Identifier of the EAS which querying the status of subscriptions. + required: true + schema: + type: string + responses: + '200': + description: OK (Successful get all of the active subscriptions) + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SessionWithQoS' + minItems: 1 + description: > + All the subscription information related to the request URI is returned + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /sessions/{sessionId}: + put: + summary: Update an Individual Session with QoS resource + operationId: UpdateIndSessionWithQoS + tags: + - Individual Session with QoS (Document) + description: > + Fully replace an existing Individual Session with QoS resource identified by a sessionId. + parameters: + - name: sessionId + in: path + description: Session Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + responses: + '200': + description: > + The individual Session with QoS is successfully modified and the updated + session with QoS context information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + '204': + description: No Content + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual Session with QoS resource + operationId: ModifyIndSessionWithQoS + tags: + - Individual Session with QoS (Document) + parameters: + - name: sessionId + in: path + description: session Id. + required: true + schema: + type: string + requestBody: + description: > + Partial update an existing Individual Session with QoS resource identified by a sessionId. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/SessionWithQoSPatch' + responses: + '200': + description: > + The individual Session with QoS is successfully modified and the updated + session with QoS context information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual Session with QoS resource + operationId: DeleteIndSessionWithQoS + tags: + - Individual Session with QoS (Document) + description: Remove an Individual Session with QoS resource identified by a sessionId. + parameters: + - name: sessionId + in: path + description: session Id. + required: true + schema: + type: string + responses: + '204': + description: > + The individual Session with QoS resource matching the sessionId is successfully deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + get: + summary: Read Individual Session with QoS resource + operationId: ReadIndSessionWithQoS + tags: + - Individual Session with QoS (Document) + description: Read a subscription resource for a sessionId. + parameters: + - name: sessionId + in: path + description: Session Id. + required: true + schema: + type: string + responses: + '200': + description: The subscription information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/SessionWithQoS' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + SessionWithQoS: + type: object + description: Represents an Individual Session with QoS Subscription. + properties: + self: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + easId: + type: string + description: Identifier of an EAS. + ueIpv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + ipDomain: + type: string + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + intGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + extGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + ipFlows: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + description: Contains the flow description for the Uplink and/or Downlink IP flows. + trafFilterInfo: + $ref: 'TS29558_Eees_ACRManagementEvent.yaml#/components/schemas/TrafficFilterInfo' + qosReference: + type: string + description: Identifies a pre-defined QoS information. + altQosReference: + type: array + items: + type: string + description: > + Identifies an ordered list of pre-defined QoS information. + The lower the index of the array for a given entry, the higher the priority. + events: + type: array + items: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/UserPlaneEvent' + description: Indicates the events subscribed by the EAS. + sponsorInformation: + $ref: 'TS29122_CommonData.yaml#/components/schemas/SponsorInformation' + qosMonInfo: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/QosMonitoringInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + maxbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + disUeNotif: + type: boolean + description: > + Indicates to disable QoS flow parameters signalling to the UE when the SMF is notified + by the NG-RAN of changes in the fulfilled QoS situation when it is included and set to + "true". The fulfilled situation is either the QoS profile or an Alternative QoS Profile. + The default value "false" shall apply, if the attribute is not present and has not been + supplied previously. + requestTestNotification: + type: boolean + description: > + Set to true by Subscriber to request the EES to send a test notification + as defined in 3GPP TS 29.122. Set to false or omitted otherwise. + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easId + - ipFlows + + SessionWithQoSPatch: + type: object + description: Represents a modification request of Individual Session with QoS Subscription. + properties: + ipFlows: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + description: Contains the flow description for the Uplink and/or Downlink IP flows. + trafFilterInfo: + $ref: 'TS29558_Eees_ACRManagementEvent.yaml#/components/schemas/TrafficFilterInfo' + qosReference: + type: string + description: Identifies a pre-defined QoS information. + altQosReference: + type: array + items: + type: string + description: > + Identifies an ordered list of pre-defined QoS information. + The lower the index of the array for a given entry, the higher the priority. + events: + type: array + items: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/UserPlaneEvent' + description: Indicates the events subscribed by the EAS. + sponsorInformation: + $ref: 'TS29122_CommonData.yaml#/components/schemas/SponsorInformation' + qosMonInfo: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/QosMonitoringInformationRm' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + maxbrUl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + maxbrDl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRateRm' + disUeNotif: + type: boolean + + UserPlaneEventNotification: + type: object + description: Represents the user plane event notification. + properties: + sessionId: + type: string + description: > + String identifying the individual data session information for which + the QoS event notification is delivered. + eventReports: + type: array + items: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/UserPlaneEventReport' + minItems: 1 + description: > + Contains the flow description for the Uplink and/or Downlink IP flows. + required: + - sessionId + - eventReports diff --git a/TS29558_Eees_UEIdentifier.yaml b/TS29558_Eees_UEIdentifier.yaml new file mode 100644 index 0000000..3170f5f --- /dev/null +++ b/TS29558_Eees_UEIdentifier.yaml @@ -0,0 +1,216 @@ +openapi: 3.0.0 + +info: + title: EES UE Identifier Service + version: 1.1.0-alpha.2 + description: | + EES UE Identifier Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.558 V18.4.0; Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/eees-ueidentifier/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 5.2.4 of 3GPP TS 29.122 + +paths: + /fetch: + post: + deprecated: true + summary: Fetch the identifier of an UE. + operationId: FetchUEId + tags: + - Fetch UE Identifier + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserInformation' + responses: + '200': + description: > + The communicated ACR update information was successfully received. + The response body contains the feedback of the EES. + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /get: + post: + summary: Get the identifier of an UE. + operationId: GetUEId + tags: + - Get UE Identifier + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UserInfo' + responses: + '200': + description: > + The operation is successful and the corresponding UE Identifier information, returned + by the Edge Enabler Server is included in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + UserInformation: + deprecated: true + description: > + Represents information about the User or the UE, that used by EES to use 3GPP CN capability + to retrieve the EAS specific UE identifier. + type: object + properties: + easId: + description: > + The application identifier of the EAS, e.g. URI, FQDN, requesting the UE Identifier + information + type: string + easProviderId: + description: Identifier of the ASP that provides the EAS. + type: string + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - easId + - ipAddr + + UserInfo: + description: > + Represents information about the User or the UE, that used by EES to retrieve the UE + Identifier information. + type: object + properties: + easIds: + type: array + items: + type: string + minItems: 1 + description: > + The additional list of EAS Identifier for which the UE IDs are requested for by EAS or + EEC given the User information (e.g. IP address). + easProviderId: + description: Identifier of the ASP that provides the EAS. + type: string + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ipAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + anyOf: + - required: [ueId] + - required: [ipAddr] + + UeIdInfo: + description: > + Represents UE Identifier Information, including list of UE Identifier related information. + type: object + properties: + ueIds: + type: array + items: + $ref: '#/components/schemas/UeId' + minItems: 1 + required: + - ueIds + + UeId: + description: > + Represents UE Identifier Information, including list of UE Identifier related information. + type: object + properties: + edgeUeId: + description: Represents EDGE UE Identifier. + type: string + afSpecUeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + easId: + description: > + The application identifier of the EAS, e.g. URI, FQDN, requesting the UE Identifier + Information. + type: string + oneOf: + - required: [edgeUeId] + - required: [afSpecUeId] diff --git a/TS29558_Eees_UELocation.yaml b/TS29558_Eees_UELocation.yaml new file mode 100644 index 0000000..db5fa99 --- /dev/null +++ b/TS29558_Eees_UELocation.yaml @@ -0,0 +1,556 @@ +openapi: 3.0.0 +info: + title: EES UE Location Information_API + description: | + API for EES UE Location Information. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.1.0-alpha.2 +externalDocs: + description: > + 3GPP TS 29.558 V18.1.0 Enabling Edge Applications; + Application Programming Interface (API) specification; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.558/ +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/eees-uelocation/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 7.5 of 3GPP TS 29.558. + +paths: + /fetch: + post: + summary: Fetch an UE location information. + operationId: FetchUELocation + tags: + - Fetch an UE location information + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationRequest' + responses: + '200': + description: OK (The requested location information) + content: + application/json: + schema: + $ref: '#/components/schemas/LocationResponse' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + /subscriptions: + post: + summary: Creates a new Individual Location Information Subscription resource + operationId: CreateLocationInfoSubscription + tags: + - Location Information Subscriptions (Collection) + description: > + Create a Subscription resource for continious reporting of UE location + information to the EAS. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + responses: + '201': + description: > + Created (The individual location information subscription resource + is created successfully) + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + LocationInformationNotification: + '{request.body#/notificationDestination}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + UserConsentRevocationNotif: + '{request.body#/revocationNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ConsentRevocNotif' + responses: + '204': + description: No Content (successful notification). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Read an Individual Location Information Subscription resource + operationId: ReadIndLocationInfoSubscription + tags: + - Individual Location Information Subscription (Document) + description: Retrieve an Individual location information subscription information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '200': + description: OK (Successfully get the location information subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + put: + summary: Update an Individual Location Information Subscription resource + operationId: UpdateIndLocationInfoSubscription + tags: + - Individual Location Information Subscription (Document) + description: Fully replace an existing Individual location information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + responses: + '200': + description: OK (The individual location information subscription was modified successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + '204': + description: No Content. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + patch: + summary: Modify an Individual Location Information Subscription resource + operationId: ModifyIndLocationInfoSubscription + tags: + - Individual Location Information Subscription (Document) + description: Partially update an existing Individual location information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing Individual AC information Subscription. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/LocationSubscriptionPatch' + responses: + '200': + description: > + OK (The Individual location information Subscription is successfully + modified and the updated subscription information is returned in the response). + content: + application/json: + schema: + $ref: '#/components/schemas/LocationSubscription' + '204': + description: > + No Content (The individual location information subscription was modified successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + delete: + summary: Delete an Individual Location Information Subscription resource + operationId: DeleteIndLocationInfoSubscription + tags: + - Individual Location Information Subscription (Document) + description: Delete an existing Individual location information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '204': + description: The individual subscription is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + LocationSubscription: + type: object + description: Represents an Individual Location Information Subscription. + properties: + easId: + type: string + description: Identifier of the EAS subscribing for location information report. + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + intGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + extGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + locGran: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/Accuracy' + locQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestTestNotification: + type: boolean + description: > + Set to true by the EAS to request the EES to send a test notification. + Set to false or omitted otherwise. + revocationNotifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + websockNotifConfig: + $ref: 'TS29122_CommonData.yaml#/components/schemas/WebsockNotifConfig' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + oneOf: + - required: [ueId] + - required: [intGrpId] + - required: [extGrpId] + required: + - easId + + LocationSubscriptionPatch: + type: object + description: Represents the partial update of Individual AC Information Subscription. + properties: + eventReq: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + notificationDestination: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + revocationNotifUri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + locGran: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/Accuracy' + locQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + + LocationNotification: + type: object + description: Represents the filters information for AC Information Subscription. + properties: + subId: + type: string + description: > + Identifier of the location information subscription for which the + location information notification is related to. + locEvs: + type: array + items: + $ref: '#/components/schemas/LocationEvent' + minItems: 1 + description: List of notifications with location information. + required: + - subId + - locEvs + + LocationEvent: + type: object + description: Location Information event notification. + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + locInf: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + locInfPred: + $ref: 'TS29522_AnalyticsExposure.yaml#/components/schemas/UeMobilityExposure' + oneOf: + - required: [locInf] + - required: [locInPred] + required: + - ueId + + LocationRequest: + type: object + description: To request location information request. + properties: + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + gran: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/Accuracy' + locQos: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LocationQoS' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueId + + LocationResponse: + type: object + description: Contains the response location information request. + properties: + ueLocation: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/LocationInfo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - ueLocation + + ConsentRevocNotif: + description: > + Represents the user consent revocation information conveyed in a user consent + revocation notification. + type: object + properties: + subscriptionId: + type: string + description: > + Contains the identifier of the subscription to which the notification is related. + consentsRevoked: + type: array + items: + $ref: '#/components/schemas/ConsentRevoked' + minItems: 1 + required: + - subscriptionId + - consentsRevoked + + ConsentRevoked: + description: Represents the information related to a revoked user consent. + type: object + properties: + ucPurpose: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/UcPurpose' + externalId: + $ref: 'TS29122_CommonData.yaml#/components/schemas/ExternalId' + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + required: + - ucPurpose + oneOf: + - required: [externalId] + - required: [ueId] diff --git a/TS29559_Npkmf_Discovery.yaml b/TS29559_Npkmf_Discovery.yaml new file mode 100644 index 0000000..b0f6534 --- /dev/null +++ b/TS29559_Npkmf_Discovery.yaml @@ -0,0 +1,374 @@ +openapi: 3.0.0 + +info: + title: Npkmf_Discovery API + version: '1.0.0' + description: | + Npkmf_Discovery Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.559 V17.5.0; 5G System; 5G ProSe Key Management Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.559/ + +servers: + - url: '{apiRoot}/npkmf-discovery/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npkmf-discovery + +paths: + /{ueId}/announce-authorize/{userInfoId}: + put: + summary: Obtain the authorization from the 5G PKMF for announcing in the PLMN + operationId: ObtainAnnounceAuth + tags: + - Obtain the authorization from the 5G PKMF for announcing in the PLMN + security: + - {} + - oAuth2ClientCredentials: + - npkmf-disc + - oAuth2ClientCredentials: + - npkmf-disc + - npkmf-disc:announce-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: userInfoId + in: path + description: User Info Id + required: true + schema: + $ref: '#/components/schemas/UserInfoId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AnnounceAuthData' + required: true + responses: + '201': + description: Successful creation of the resource + content: + application/json: + schema: + $ref: '#/components/schemas/AnnounceAuthData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/npkmf-disc>//{ueId}/announce-authorize/{userInfoId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/monitor-key/{userInfoId}: + put: + summary: Obtain the discovery key from the 5G PKMF for monitoring in the PLMN + operationId: ObtainMonitorKey + tags: + - Obtain the discovery key from the 5G PKMF for monitoring in the PLMN + security: + - {} + - oAuth2ClientCredentials: + - npkmf-disc + - oAuth2ClientCredentials: + - npkmf-disc + - npkmf-disc:monitor-key:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: userInfoId + in: path + description: User Info Id + required: true + schema: + $ref: '#/components/schemas/UserInfoId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorKeyReqData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/MonitorKeyRespData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/npkmf-disc>//{ueId}/monitor-key/{userInfoId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/discovery-key/{userInfoId}: + put: + summary: Obtain the discovery key from the 5G PKMF for a discoverer UE + operationId: ObtainDiscKey + tags: + - Obtain the discovery key for a discoverer UE + security: + - {} + - oAuth2ClientCredentials: + - npkmf-disc + - oAuth2ClientCredentials: + - npkmf-disc + - npkmf-disc:discovery-authorize:modify + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/VarUeId' + - name: userInfoId + in: path + description: User Info Id + required: true + schema: + $ref: '#/components/schemas/UserInfoId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryKeyReqData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/DiscoveryKeyRespData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/npkmf-disc>//{ueId}/discovery-key/{userInfoId} + required: true + schema: + type: string + '204': + description: Successful update of the resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npkmf-disc: Access to the Npkmf_Discovery API + npkmf-disc:announce-authorize:modify: > + Access to modify the authorization to announce for a UE in the PLMN + npkmf-disc:monitor-key:modify: > + Access to modify the authorization for monitoring for an UE in the PLMN + npkmf-disc:discovery-key:modify: > + Access to modify the authorization from the 5G DDNMF for a discoverer UE + in the PLMN to operate Model B restricted discovery + + schemas: + +# STRUCTURED TYPES: + + AnnounceAuthData: + type: object + description: Represents Data used to request the authorization to announce for a UE + required: + - relayServCode + properties: + relayServCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + + MonitorKeyReqData: + type: object + description: Data used to request the discovery key to monitor for a UE + required: + - relayServCode + - ueSecurityCapability + properties: + relayServCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + ueSecurityCapability: + $ref: '#/components/schemas/UeSecurityCapability' + + MonitorKeyRespData: + type: object + description: Represents the obtained Monitor Discovery Key Data for a UE + required: + - chosenPc5CipheringAlgorithm + - discSecMaterials + properties: + chosenPc5CipheringAlgorithm: + $ref: '#/components/schemas/ChosenPc5CipheringAlgorithm' + discSecMaterials: + $ref: '#/components/schemas/DiscSecMaterials' + DiscoveryKeyReqData: + type: object + description: Data used to request the discovery key to monitor for a discoverer UE + required: + - relayServCode + - ueSecurityCapability + properties: + relayServCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + ueSecurityCapability: + $ref: '#/components/schemas/UeSecurityCapability' + + DiscoveryKeyRespData: + type: object + description: Represents the obtained Monitor Discovery Key Data for a discoverer UE + required: + - chosenPc5CipheringAlgorithm + - discSecMaterials + properties: + chosenPc5CipheringAlgorithm: + $ref: '#/components/schemas/ChosenPc5CipheringAlgorithm' + discSecMaterials: + $ref: '#/components/schemas/DiscSecMaterials' + DiscSecMaterials: + type: object + description: Represents the discovery security materials + properties: + duik: + $ref: '#/components/schemas/Duik' + dusk: + $ref: '#/components/schemas/Dusk' + duck: + $ref: '#/components/schemas/Duck' + + + +# SIMPLE TYPES: + UserInfoId: + type: string + + UeSecurityCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + ChosenPc5CipheringAlgorithm: + description: Contains the chosen PC5 ciphering algorithm. + type: integer + + Duik: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + Dusk: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + Duck: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + +# ENUMS: + + diff --git a/TS29559_Npkmf_PKMFKeyRequest.yaml b/TS29559_Npkmf_PKMFKeyRequest.yaml new file mode 100644 index 0000000..f63be8e --- /dev/null +++ b/TS29559_Npkmf_PKMFKeyRequest.yaml @@ -0,0 +1,148 @@ +openapi: 3.0.0 + +info: + title: Npkmf_PKMFKeyRequest + version: 1.0.1 + description: | + PKMF KeyRequest Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.559 V17.2.0; 5G System; 5G ProSe Key Management Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.559/ + +servers: + - url: '{apiRoot}/npkmf-keyrequest/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npkmf-keyrequest + +paths: + /prose-keys/request: + post: + summary: Request Keying Materials for 5G ProSe + operationId: ProseKey + tags: + - ProSe Keys Collection (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ProseKeyReqData' + responses: + '200': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/ProseKeyRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npkmf-keyrequest: Access to the Npkmf_PKMFKeyRequest API + + schemas: +# +# Structured Data Types +# + ProseKeyReqData: + description: Representation of the input to request the keying material. + type: object + properties: + relayServCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RelayServiceCode' + knrpFreshness1: + $ref: '#/components/schemas/KnrpFreshnessParameter1' + resyncInfo: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ResynchronizationInfo' + prukId: + $ref: '#/components/schemas/PrukId' + suci: + $ref: 'TS29509_Nausf_UEAuthentication.yaml#/components/schemas/Suci' + required: + - relayServCode + - knrpFreshness1 + + ProseKeyRspData: + description: Representation of the successfully requested keying material. + type: object + properties: + knrp: + $ref: '#/components/schemas/Knrp' + knrpFreshness2: + $ref: '#/components/schemas/KnrpFreshnessParameter2' + gpi: + $ref: '#/components/schemas/Gpi' + required: + - knrp + - knrpFreshness2 + +# +# Simple Data Types +# + PrukId: + description: User Plane Prose Remote User Key ID + type: string + + Knrp: + description: Key for NR PC5 + type: string + + KnrpFreshnessParameter1: + description: KNRP Freshness Parameter 1 + type: string + + KnrpFreshnessParameter2: + description: KNRP Freshness Parameter 2 + type: string + + Gpi: + description: GBA Pushing Information + type: string + + +# +# Enumeration Data Types +# diff --git a/TS29559_Npkmf_UserId.yaml b/TS29559_Npkmf_UserId.yaml new file mode 100644 index 0000000..7e11eba --- /dev/null +++ b/TS29559_Npkmf_UserId.yaml @@ -0,0 +1,118 @@ +openapi: 3.0.0 + +info: + title: Npkmf_ResolveRemoteUserId + version: 1.0.0 + description: | + PKMF Resolve Remote User Id Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.559 V17.3.0; 5G System; 5G ProSe Anchor Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.559/ + +servers: + - url: '{apiRoot}/npkmf-userid/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - npkmf-userid + +paths: + /resolve-id: + post: + summary: Retrieve the SUPI of the ProSe Remote UE + operationId: RetrieveSUPI + tags: + - SUPI Retrieval + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ResolveRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ResolveResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + npkmf-userid: Access to the Npkmf_ResolveRemoteUserId API + + schemas: +# +# Structured Data Types +# + + ResolveRequest: + description: Request Data + type: object + properties: + upPrukId: + $ref: 'TS29559_Npkmf_PKMFKeyRequest.yaml#/components/schemas/PrukId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + required: + - upPrukId + + ResolveResponse: + description: Response Data + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - supi + +# +# Simple Data Types +# + + +# +# Enumeration Data Types +# diff --git a/TS29562_Nhss_gbaSDM.yaml b/TS29562_Nhss_gbaSDM.yaml new file mode 100644 index 0000000..aebfa14 --- /dev/null +++ b/TS29562_Nhss_gbaSDM.yaml @@ -0,0 +1,441 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.1' + title: 'Nhss_gbaSDM' + description: | + Nhss Subscriber Data Management Service for GBA. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.562 Home Subscriber Server (HSS) Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.562/' + +servers: + - url: '{apiRoot}/nhss-gba-sdm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-sdm + +paths: + /{ueId}/subscriber-data: + get: + summary: Retrieve the subscriber data of a user + operationId: GetSubscriberData + tags: + - Subscriber Data (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-sdm + - oAuth2ClientCredentials: + - nhss-gba-sdm + - nhss-gba-sdm:subscriber-data:read + parameters: + - name: ueId + in: path + description: UE Identity + required: true + schema: + $ref: '#/components/schemas/UeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/GbaSubscriberData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{ueId}/subscriptions: + post: + summary: Subscribe to notifications + operationId: GbaSdmSubscribe + tags: + - GBA SDM Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-sdm + - oAuth2ClientCredentials: + - nhss-gba-sdm + - nhss-gba-sdm:subscriptions:create + parameters: + - name: ueId + in: path + description: UE Identity + required: true + schema: + $ref: '#/components/schemas/UeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/GbaSdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/GbaSdmSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-gba-sdm//{ueId}/subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{ueId}/subscriptions/{subscriptionId}: + delete: + summary: Unsubscribe from notifications + operationId: GbaSdmUnsubscribe + tags: + - GBA SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-sdm + - oAuth2ClientCredentials: + - nhss-gba-sdm + - nhss-gba-sdm:subscription:modify + parameters: + - name: ueId + in: path + description: UE Identity + required: true + schema: + $ref: '#/components/schemas/UeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify the subscription + operationId: GbaSdmSubsModify + tags: + - GBA SDM Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-sdm + - oAuth2ClientCredentials: + - nhss-gba-sdm + - nhss-gba-sdm:subscription:modify + parameters: + - name: ueId + in: path + description: UE Identity + required: true + schema: + $ref: '#/components/schemas/UeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful modification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-gba-sdm: Access to the Nhss GBA Subscription Data Management API + nhss-gba-sdm:subscriber-data:read: Access to read the GBA Subscriber Data resource + nhss-gba-sdm:subscriptions:create: Access to create Subscriptions resources + nhss-gba-sdm:subscription:modify: Access to update/delete a Subscription resource + + schemas: + +# +# COMPLEX TYPES: +# + + GbaSubscriberData: + description: > + GBA subscriber data of the UE; it includes the GBA User Security Settings (GUSS) data + type: object + properties: + guss: + $ref: '#/components/schemas/Guss' + + Guss: + description: > + GBA User Security Settings of the UE; it includes information about the BSF, + and a list of User Security Settings + type: object + properties: + bsfInfo: + $ref: '#/components/schemas/BsfInfo' + ussList: + type: array + items: + $ref: 'TS29309_Nbsp_GBA.yaml#/components/schemas/UssListItem' + minItems: 1 + + BsfInfo: + description: > + Information about the BSF; it includes an indication of whether GBA or GBA_U is to be used, + the key lifetime and a user-specific list of security features + type: object + properties: + uiccType: + $ref: '#/components/schemas/UiccType' + lifeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + securityFeatures: + type: array + items: + $ref: 'TS29309_Nbsp_GBA.yaml#/components/schemas/SecFeature' + minItems: 1 + + GbaSdmSubscription: + description: > + Information about a subscription created in the HSS, so the consumer (e.g. BSF) can be + notified when there are changes on the monitored data + type: object + required: + - nfInstanceId + - callbackReference + - monitoredResourceUris + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + +# +# SIMPLE TYPES: +# + + UeId: + description: UE ID can be MSISDN, IMSI, IMPI or IMPU + anyOf: + - $ref: '#/components/schemas/Msisdn' + - $ref: '#/components/schemas/Imsi' + - $ref: 'TS29562_Nhss_imsSDM.yaml#/components/schemas/ImsUeId' + + Msisdn: + description: MS-ISDN of the UE + type: string + pattern: '^msisdn-[0-9]{5,15}$' + + Imsi: + description: IMSI of the UE + type: string + pattern: '^imsi-[0-9]{5,15}$' + +# +# ENUMS: +# + + UiccType: + description: Indicates whether GBA or GBA_U is to be used + anyOf: + - type: string + enum: + - GBA + - GBA_U + - type: string diff --git a/TS29562_Nhss_gbaUEAU.yaml b/TS29562_Nhss_gbaUEAU.yaml new file mode 100644 index 0000000..d1f8ffd --- /dev/null +++ b/TS29562_Nhss_gbaUEAU.yaml @@ -0,0 +1,196 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.1' + title: 'Nhss_gbaUEAU' + description: | + Nhss UE Authentication Service for GBA. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.562 Home Subscriber Server (HSS) Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.562/' + +servers: + - url: '{apiRoot}/nhss-gba-ueau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nhss-gba-ueau + - {} + +paths: + /{ueId}/security-information/generate-auth-data: + post: + summary: Generate GBA authentication data for the UE + operationId: GenerateAuthData + tags: + - Generate Auth Data (Custom Operation) + security: + - {} + - oAuth2ClientCredentials: + - nhss-gba-ueau + - oAuth2ClientCredentials: + - nhss-gba-ueau + - nhss-gba-ueau:generate-auth-data:invoke + parameters: + - name: ueId + in: path + description: UE identity of the user + required: true + schema: + $ref: '#/components/schemas/UeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthenticationInfoResult' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-gba-ueau: Access to the nhss-gba-ueau API + nhss-gba-ueau:generate-auth-data:invoke: > + Access to invoke the Generate Auth Data custom operation + + schemas: + +# +# COMPLEX TYPES: +# + + AuthenticationInfoRequest: + description: > + Contains input data to the authentication request message (e.g. authentication + scheme, resynchronization information) + type: object + properties: + authenticationScheme: + $ref: '#/components/schemas/AuthenticationScheme' + resynchronizationInfo: + $ref: 'TS29562_Nhss_imsUEAU.yaml#/components/schemas/ResynchronizationInfo' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AuthenticationInfoResult: + description: > + Contains authentication information returned in the authentication response message + (e.g. authentication vector, digest authentication parameters) + type: object + properties: + impi: + $ref: '#/components/schemas/Impi' + 3gAkaAv: + $ref: 'TS29562_Nhss_imsUEAU.yaml#/components/schemas/3GAkaAv' + digestAuth: + $ref: '#/components/schemas/DigestAuthentication' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + DigestAuthentication: + description: Parameters used for the Digest authentication scheme + type: object + required: + - digestRealm + - digestAlgorithm + - digestQop + - ha1 + properties: + digestRealm: + type: string + digestAlgorithm: + $ref: '#/components/schemas/DigestAlgorithm' + digestQop: + $ref: '#/components/schemas/DigestQop' + ha1: + type: string + +# +# SIMPLE TYPES: +# + + UeId: + $ref: 'TS29562_Nhss_gbaSDM.yaml#/components/schemas/UeId' + + Impi: + description: IMS Private Identity of the UE + type: string + +# +# ENUMS: +# + + AuthenticationScheme: + description: Authentication scheme to be used in the authentication request message + anyOf: + - type: string + enum: + - DIGEST_AKAV1_MD5 + - DIGEST_HTTP + - type: string + + DigestAlgorithm: + description: Algorithm used for the Digest authentication scheme + anyOf: + - type: string + enum: + - MD5 + - MD5_SESS + - type: string + + DigestQop: + description: Quality of Protection for the Digest authentication scheme + anyOf: + - type: string + enum: + - AUTH + - AUTH_INT + - type: string diff --git a/TS29562_Nhss_imsSDM.yaml b/TS29562_Nhss_imsSDM.yaml new file mode 100644 index 0000000..6dfca60 --- /dev/null +++ b/TS29562_Nhss_imsSDM.yaml @@ -0,0 +1,4156 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'Nhss_imsSDM' + description: | + Nhss Subscriber Data Management Service for IMS. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.562 HSS Services for interworking with IMS, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.562/' + +servers: + - url: '{apiRoot}/nhss-ims-sdm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + +paths: + /{imsUeId}/ims-data/registration-status: + get: + summary: Retrieve the registration status of a user + operationId: GetRegistrationStatus + tags: + - Registration Status retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:registration-status:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsRegistrationStatus' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/profile-data: + get: + summary: > + Retrieve the complete IMS profile for a given IMS public identity + (and public identities in the same IRS) + operationId: GetProfileData + tags: + - IMS Profile Data Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:profile-data:read + parameters: + - name: imsUeId + in: path + description: IMS Identity. In this case it shall be an IMS public identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: dataset-names + in: query + description: Datasets to be retrieved + schema: + $ref: '#/components/schemas/DataSetNames' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsProfileData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/profile-data/priority-levels: + get: + summary: Retrieve the service priority levels associated to the user + operationId: GetPriorityInfo + tags: + - Priority Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:priority-levels:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PriorityLevels' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/profile-data/ifcs: + get: + summary: Retrieve the Initial Filter Criteria for the associated IMS subscription + operationId: GetIfcs + tags: + - IFCs Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ifcs:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: application-server-name + in: query + description: SIP URI of the Application Server Name + schema: + $ref: '#/components/schemas/SipServerName' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Ifcs' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/profile-data/service-level-trace-information: + get: + summary: Retrieve the IMS service level trace information for the associated user + operationId: GetServiceTraceInfo + tags: + - Service Trace Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:service-level-trace-information:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceLevelTraceInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/profile-data/charging-info: + get: + summary: Retrieve the charging information for to the user + operationId: GetChargingInfo + tags: + - Charging Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:charging-info:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingInfo' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/location-data/server-name: + get: + summary: Retrieve the server name for the associated user + operationId: GetServerName + tags: + - Server Name retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:server-name:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsLocationData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/location-data/scscf-capabilities: + get: + summary: Retrieve the S-CSCF capabilities for the associated IMS subscription + operationId: GetScscfCapabilities + tags: + - Retrieval of the S-CSCF capabilities for the IMS subscription + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:scscf-capabilities:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfCapabilityList' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/ims-data/location-data/scscf-selection-assistance-info: + get: + summary: Retrieve the S-CSCF selection assistance info + operationId: GetScscfSelectionAssistanceInfo + tags: + - Retrieval of the S-CSCF selection assistance information for the IMS subscription + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:scscf-selection-assistance-info:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfSelectionAssistanceInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/ps-domain/location-data: + get: + summary: Retrieve the location data in PS domain + operationId: GetLocPsDomain + tags: + - PS location retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:location-data:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: requested-nodes + in: query + description: Indicates the serving node(s) for which the request is applicable. + style: form + explode: false + schema: + type: array + items: + $ref: '#/components/schemas/RequestedNode' + - name: serving-node + in: query + description: > + Indicates that only the stored NF id/address of the serving node(s) is required + schema: + type: boolean + - name: local-time + in: query + description: > + Indicates that only the Local Time Zone information of the location in the visited + network where the UE is attached is requested + schema: + type: boolean + - name: current-location + in: query + description: > + Indicates whether an active location retrieval has to be initiated by the requested node + schema: + type: boolean + - name: rat-type + in: query + description: Indicates whether RAT Type retrieval is requested + schema: + type: boolean + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PsLocation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/cs-domain/location-data: + get: + summary: Retrieve the location data in CS domain + operationId: GetLocCsDomain + tags: + - CS location retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:cs-domain:location-data:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: serving-node + in: query + description: > + Indicates that only the stored NF id/address of the serving node(s) is required + schema: + type: boolean + - name: local-time + in: query + description: > + Indicates that only the Local Time Zone information of the location in the visited + network where the UE is attached is requested + schema: + type: boolean + - name: current-location + in: query + description: > + Indicates whether an active location retrieval has to be initiated by the requested node + schema: + type: boolean + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CsLocation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/repository-data/{serviceIndication}: + put: + summary: Update the repository data associated to an IMPU and service indication + operationId: UpdateRepositoryDataServInd + tags: + - Update repository data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:repository-data:modify + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: serviceIndication + in: path + description: Identifier of a service related data + required: true + schema: + $ref: '#/components/schemas/ServiceIndication' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryData' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-sdm/v1/{imsUeId}/repository-data/{serviceIndication} + required: true + schema: + type: string + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryData' + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete the Repository Data for a Service Indication + operationId: DeleteRepositoryDataServInd + tags: + - Delete repository data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:repository-data:modify + parameters: + - name: imsUeId + in: path + description: Identifier of the UE + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: serviceIndication + in: path + description: Identifier of a service related data + required: true + schema: + $ref: '#/components/schemas/ServiceIndication' + responses: + '204': + description: Expected response to a valid request + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: Retrieve the repository data associated to an IMPU and service indication + operationId: GetRepositoryDataServInd + tags: + - Repository data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:repository-data:read + parameters: + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: serviceIndication + in: path + description: Identifier of a service related data + required: true + schema: + $ref: '#/components/schemas/ServiceIndication' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/identities/msisdns: + get: + summary: retrieve the Msisdns associated to requested identity + operationId: GetMsisdns + tags: + - Retrieval of the associated Msisdns + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:identities:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-id + in: query + description: Private identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/MsisdnList' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/identities/ims-associated-identities: + get: + summary: > + Retrieve the associated identities to the IMS public identity included + in the service request + operationId: GetImsAssocIds + tags: + - Retrieval of associated IMS public identities + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:identities:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsAssociatedIdentities' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/identities/private-identities: + get: + summary: > + Retrieve the associated private identities to the IMS public identity included + in the service request + operationId: GetImsPrivateIds + tags: + - Retrieval of associated IMS private identities + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:identities:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: impi + in: query + description: Private Identity of type IMPI + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PrivateIdentities' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/srvcc-data: + get: + summary: Retrieve the srvcc data + operationId: GetSrvccData + tags: + - Retrieval of UE SRVCC capability and STN-SR + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:srvcc:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity or IMS Private Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SrvccData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Patch + operationId: UpdateSrvccData + tags: + - Update SRVCC data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:srvcc:modify + parameters: + - name: imsUeId + in: path + description: IMS Public Identity or IMS Private Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{imsUeId}/service-data/psi-status: + get: + summary: Retrieve the PSI activation state data + operationId: GetPsiState + tags: + - Retrieval of PSI activation state + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:psi-status:read + parameters: + - name: imsUeId + in: path + description: IMS Private Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PsiActivationState' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Patch + operationId: UpdatePsiState + tags: + - Update PSI state data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:psi-status:modify + parameters: + - name: imsUeId + in: path + description: IMS Public Service Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{imsUeId}/service-data/dsai: + get: + summary: Retrieve the DSAI information associated to an Application Server + operationId: GetDsaiInfo + tags: + - DSAI registration information + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:dsai:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: application-server-name + in: query + description: SIP URI of the Application Server Name + required: true + schema: + $ref: '#/components/schemas/SipServerName' + - name: dsai-tag + in: query + description: The requested instance of Dynamic Service Activation Info + schema: + type: string + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/DsaiTagInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Patch + operationId: UpdateDsaiState + tags: + - Update Dsai State + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:dsai:modify + parameters: + - name: imsUeId + in: path + description: IMS Public Service Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{imsUeId}/service-data/sms-registration-info: + put: + summary: Update the SMS registration information associated to a user + operationId: UpdateSmsRegistrationInfo + tags: + - Update SMS registration info + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:sms-registration-info:modify + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/IpSmGwAddress' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/SmsRegistrationInfo' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-sdm/v1/{imsUeId}/service-data/sms-registration-info + required: true + schema: + type: string + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/SmsRegistrationInfo' + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + delete: + summary: delete the SMS registration information + operationId: DeleteSmsRegistrationInfo + tags: + - Delete SMS registration information + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:sms-registration-info:modify + parameters: + - name: imsUeId + in: path + description: Identifier of the UE + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '204': + description: Expected response to a valid request + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + get: + summary: Retrieve the SMS registration information associated to a user + operationId: GetSmsRegistrationInfo + tags: + - SMS registration information + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:sms-registration-info:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SmsRegistrationInfo' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/identities/imeisv: + get: + summary: Retrieve the IMEISV information + operationId: GetIMEISVInfo + tags: + - IMEISV Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:identities:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImeiSvInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/ps-domain/ip-address: + get: + summary: Retrieve the IP address information + operationId: GetIpAddressInfo + tags: + - IP address Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:ip-address:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/ps-domain/tads-info: + get: + summary: Retrieve the T-ADS information + operationId: GetTadsInfo + tags: + - TADS Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:tads-info:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/TadsInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/ps-domain/ue-reach-subscriptions: + post: + summary: subscribe to notifications of UE reachability + operationId: UeReachIpSubscribe + tags: + - UE IP reachability Subscription Creation + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:ue-reach-subscriptions:create + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UeReachabilitySubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedUeReachabilitySubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-sdm/v1/{imsUeId}/access-data/ps-domain/ue-reach-subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + ueReachabilityNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UeReachabilityNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{imsUeId}/access-data/ps-domain/ue-reach-subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications to UE reachability + operationId: UeReachUnsubscribe + tags: + - Reachability Subscription Deletion + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:ue-reach-subscriptions:modify + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify the subscription + operationId: UeReachSubsModify + tags: + - Reachability Subscription Modification + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:ue-reach-subscriptions:modify + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful modification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{imsUeId}/access-data/ps-domain/user-state: + get: + summary: Retrieve the user state information in PS domain + operationId: GetPsUserStateInfo + tags: + - PS User State Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:ps-domain:user-state:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: requested-nodes + in: query + description: Indicates the serving node(s) for which the request is applicable. + style: form + explode: false + schema: + type: array + items: + $ref: '#/components/schemas/RequestedNode' + minItems: 1 + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/PsUserState' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/cs-domain/user-state: + get: + summary: Retrieve the user state information in CS domain + operationId: GetCsUserStateInfo + tags: + - CS User State Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:cs-domain:user-state:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CsUserState' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/cs-domain/csrn: + get: + summary: Retrieve the routeing number in CS domain + operationId: GetCsrn + tags: + - CSRN retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:cs-domain:csrn:read + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: pre-paging + in: query + description: Indicates pre-paging support + schema: + $ref: '#/components/schemas/PrePaging' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + - name: call-reference-info + in: query + description: Indicates Call-Reference Number and AS-Number + content: + application/json: + schema: + $ref: '#/components/schemas/CallReferenceInfo' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/Csrn' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/access-data/wireline-domain/reference-location: + get: + summary: Retrieve the reference location information + operationId: GetReferenceLocationInfo + tags: + - Reference Location Info Retrieval + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:wireline-domain:reference-location:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: private-identity + in: query + description: IMS Private Identity + schema: + $ref: '#/components/schemas/PrivateId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ReferenceLocationInformation' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/subscriptions: + post: + summary: subscribe to notifications + operationId: ImsSdmSubscribe + tags: + - SDM Subscription Creation + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:subscriptions:create + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImsSdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsSdmSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-sdm/v1/{imsUeId}/subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications + operationId: ImsSdmUnsubscribe + tags: + - SDM Subscription Deletion + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:subscription:modify + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: modify the subscription + operationId: ImsSdmSubsModify + tags: + - SDM Subscription Modification + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:subscription:modify + parameters: + - name: imsUeId + in: path + description: IMS Public Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful modification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /shared-data-subscriptions: + post: + summary: subscribe to notifications for shared data + operationId: SubscribeToSharedData + tags: + - Subscription Creation for shared data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:shared-subscriptions:create + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImsSdmSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImsSdmSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-sdm/v1/shared-data-subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /shared-data-subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications for shared data + operationId: UnsubscribeForSharedData + tags: + - Subscription Deletion for shared data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:shared-subscription:modify + parameters: + - name: subscriptionId + in: path + description: Id of the Shared data Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: modify the subscription + operationId: ModifySharedDataSubs + tags: + - Subscription Modification + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:shared-subscription:modify + parameters: + - name: subscriptionId + in: path + description: Id of the SDM Subscription + required: true + schema: + type: string + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful modification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /shared-data: + get: + summary: retrieve shared data + operationId: GetSharedData + tags: + - Retrieval of shared data + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:shared-data:read + parameters: + - name: shared-data-ids + in: query + description: List of shared data ids + required: true + style: form + explode: false + schema: + type: array + items: + $ref: '#/components/schemas/SharedDataId' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/SharedData' + minItems: 1 + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/repository-data: + get: + summary: Retrieve the repository data associated to an IMPU and service indication list + operationId: GetRepositoryDataServIndList + tags: + - Repository data list + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-sdm + - oAuth2ClientCredentials: + - nhss-ims-sdm + - nhss-ims-sdm:repository-data:read + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + - name: supported-features + in: query + description: Supported Features + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: service-indications + in: query + description: Identifiers of a services related data + required: true + style: form + explode: false + schema: + type: array + items: + $ref: '#/components/schemas/ServiceIndication' + minItems: 1 + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/RepositoryDataList' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-ims-sdm: Access to the Nhss IMS Subscription Data Management API + nhss-ims-sdm:registration-status:read: Access to read the Registration Status resource + nhss-ims-sdm:profile-data:read: Access to read the Profile Data resource + nhss-ims-sdm:priority-levels:read: Access to read the Priority Levels resource + nhss-ims-sdm:ifcs:read: Access to read the Initial Filter Criteria resource + nhss-ims-sdm:service-level-trace-information:read: >- + Access to read the Service Level Trace Information resource + nhss-ims-sdm:server-name:read: Access to read the Server Name resource + nhss-ims-sdm:scscf-capabilities:read: Access to read the S-CSCF Capabilities resource + nhss-ims-sdm:ps-domain:location-data:read: >- + Access to read the PS-Domain Location Data resource + nhss-ims-sdm:ps-domain:ip-address:read: Access to read the PS-Domain IP Address resource + nhss-ims-sdm:ps-domain:tads-info:read: Access to read the PS-Domain TADS Info resource + nhss-ims-sdm:ps-domain:ue-reach-subscriptions:create: >- + Access to create PS-Domain UE Reachability Subscriptions resources + nhss-ims-sdm:ps-domain:ue-reach-subscriptions:modify: >- + Access to update/delete a PS-Domain UE Reachability Subscription resource + nhss-ims-sdm:ps-domain:user-state:read: Access to read the PS-Domain User State resource + nhss-ims-sdm:cs-domain:location-data:read: >- + Access to read the CS-Domain Location Data resource + nhss-ims-sdm:cs-domain:user-state:read: Access to read the CS-Domain User State resource + nhss-ims-sdm:cs-domain:csrn:read: Access to read the CS-Domain CSRN resource + nhss-ims-sdm:wireline-domain:reference-location:read: >- + Access to read the Wireline-Domain Reference Location resource + nhss-ims-sdm:repository-data:modify: >- + Access to create/update/delete the Repository Data resource + nhss-ims-sdm:repository-data:read: Access to read the Repository Data resource + nhss-ims-sdm:identities:read: Access to read the Identities resource + nhss-ims-sdm:srvcc:read: Access to read the SRVCC resource + nhss-ims-sdm:srvcc:modify: Acess to update the SRVCC resource + nhss-ims-sdm:psi-status:read: Access to read the PSI Status resource + nhss-ims-sdm:psi-status:modify: Acess to update the PSI Status resource + nhss-ims-sdm:dsai:read: Acess to read the DSAI resource + nhss-ims-sdm:dsai:modify: Acess to update the DSAI resource + nhss-ims-sdm:sms-registration-info:read: >- + Acess to read the SMS Registration Info resource + nhss-ims-sdm:sms-registration-info:modify: >- + Acess to create/update/delete the SMS Registration Info resource + nhss-ims-sdm:subscriptions:create: Access to create Subscriptions resources + nhss-ims-sdm:subscription:modify: Access to update/delete a Subscription resource + nhss-ims-sdm:shared-subscriptions:create: >- + Access to create a Shared-Data Subscriptions resource + nhss-ims-sdm:shared-subscription:modify: >- + Access to update/delete a Shared-Data Subscription resource + nhss-ims-sdm:shared-data:read: Access to read the Shared-Data resource + nhss-ims-sdm:charging-info:read: Access to read the ChargingInfo resource + + schemas: + +# +# COMPLEX TYPES: +# + + ScscfCapabilityList: + description: Information about mandatory and optional S-CSCF capabilities + type: object + properties: + mandatoryCapabilityList: + $ref: '#/components/schemas/Capabilities' + optionalCapabilityList: + $ref: '#/components/schemas/Capabilities' + anyOf: + - required: [mandatoryCapabilityList] + - required: [optionalCapabilityList] + + Capabilities: + description: A list of capabilities of the S-CSCF + type: array + items: + $ref: '#/components/schemas/Capability' + minItems: 1 + uniqueItems: true + + RepositoryData: + description: Repository Data for the requested Service Indication + type: object + required: + - serviceData + - sequenceNumber + properties: + sequenceNumber: + $ref: '#/components/schemas/SequenceNumber' + serviceData: + type: string + format: byte + + MsisdnList: + description: List of MSISDNs associated to the IMS public Identity + type: object + required: + - basicMsisdn + properties: + basicMsisdn: + $ref: '#/components/schemas/Msisdn' + additionalMsisdns: + type: array + minItems: 1 + items: + $ref: '#/components/schemas/Msisdn' + + PublicIdentities: + description: > + IMS Public Identities which belong to the same Implicit Registration Set (if any) + as the requested IMS Public Identity + type: object + required: + - publicIdentities + properties: + publicIdentities: + type: array + items: + $ref: '#/components/schemas/PublicIdentity' + minItems: 1 + uniqueItems: true + + PrivateIdentities: + description: A list of IMS Private Identities + type: object + required: + - privateIdentities + properties: + privateIdentities: + type: array + items: + $ref: '#/components/schemas/PrivateIdentity' + minItems: 1 + uniqueItems: true + + PublicIdentity: + description: > + IMS Public Identity and related data (Alias Group Id, IRS default indication, + Identity Type) + type: object + required: + - imsPublicId + - identityType + properties: + imsPublicId: + $ref: '#/components/schemas/ImsPublicId' + identityType: + $ref: '#/components/schemas/IdentityType' + irsIsDefault: + type: boolean + aliasGroupId: + type: string + + PrivateIdentity: + description: IMS Private Identity and its identity type (IMPI or IMSI) + type: object + required: + - privateIdentity + - privateIdentityType + properties: + privateIdentity: + $ref: '#/components/schemas/PrivateId' + privateIdentityType: + $ref: '#/components/schemas/PrivateIdentityType' + + ImsAssociatedIdentities: + description: > + A list of identities belonging to the same Implicit Registration Set (IRS), + along with the registration state of the IRS + type: object + required: + - irsState + - publicIdentities + properties: + irsState: + $ref: '#/components/schemas/ImsRegistrationState' + publicIdentities: + $ref: '#/components/schemas/PublicIdentities' + + ImsSdmSubscription: + description: A subscription to notifications of data change + type: object + required: + - nfInstanceId + - callbackReference + - monitoredResourceUris + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + ImsRegistrationStatus: + description: Registration status of the user + type: object + required: + - imsUserStatus + properties: + imsUserStatus: + $ref: '#/components/schemas/ImsRegistrationState' + + PriorityLevels: + description: Namespaces and priority levels allowed for the IMS public Identity + type: object + required: + - servicePriorityLevelList + properties: + servicePriorityLevelList: + type: array + items: + $ref: '#/components/schemas/NameSpacePriority' + minItems: 1 + uniqueItems: true + servicePriorityLevel: + type: integer + minimum: 0 + maximum: 4 + + Ifcs: + description: List of IFCs associated to the IMS public Identity + type: object + properties: + ifcList: + type: array + items: + $ref: '#/components/schemas/Ifc' + minItems: 1 + cscfFilterSetIdList: + type: array + items: + $ref: '#/components/schemas/CscfFilterSetId' + minItems: 1 + anyOf: + - required: [ ifcList ] + - required: [ cscfFilterSetIdList ] + + Ifc: + description: Data associated to an individual IFC (Initial Filter Criteria) + type: object + required: + - priority + - appServer + properties: + priority: + type: integer + minimum: 1 + trigger: + $ref: '#/components/schemas/TriggerPoint' + appServer: + $ref: '#/components/schemas/ApplicationServer' + + TriggerPoint: + description: > + Contains the conditions that should be checked in order to find out if an + Application Server should be contacted or not + type: object + required: + - conditionType + - sptList + properties: + conditionType: + $ref: '#/components/schemas/TypeOfCondition' + sptList: + type: array + items: + $ref: '#/components/schemas/Spt' + minItems: 1 + + Spt: + description: Contains the data of a Service Point Trigger + type: object + required: + - conditionNegated + - sptGroup + properties: + conditionNegated: + type: boolean + sptGroup: + type: array + items: + $ref: '#/components/schemas/SptGroupId' + minItems: 1 + regType: + items: + $ref: '#/components/schemas/RegistrationType' + minItems: 1 + maxItems: 2 + requestUri: + type: string + sipMethod: + type: string + sipHeader: + $ref: '#/components/schemas/HeaderSipRequest' + sessionCase: + $ref: '#/components/schemas/RequestDirection' + sessionDescription: + $ref: '#/components/schemas/SdpDescription' + + HeaderSipRequest: + description: Contains a header (and optionally value of the header) in the SIP request + type: object + required: + - header + properties: + header: + type: string + content: + type: string + + SdpDescription: + description: > + Contains a SDP line (and optionally the value in the line) within the body (if any) + of a SIP request + type: object + required: + - line + properties: + line: + type: string + content: + type: string + + ApplicationServer: + description: > + Application Server which shall be triggered if the conditions of a certain IFC are met, + and its associated data + type: object + required: + - asUri + properties: + asUri: + type: string + sessionContinue: + type: boolean + serviceInfoList: + type: array + items: + $ref: '#/components/schemas/ServiceInformation' + minItems: 1 + + ImsLocationData: + description: IMS Location Data (S-CSCF name) + type: object + required: + - scscfName + properties: + scscfName: + type: string + + PsLocation: + description: Location data in PS domain + type: object + oneOf: + - required: + - sgsnLocationData + - required: + - mmeLocationData + - required: + - amfLocationData + - required: + - twanLocationData + properties: + sgsnLocationData: + $ref: '#/components/schemas/SgsnLocationData' + mmeLocationData: + $ref: '#/components/schemas/MmeLocationData' + amfLocationData: + $ref: '#/components/schemas/AmfLocationData' + twanLocationData: + $ref: '#/components/schemas/TwanLocationData' + + SgsnLocationData: + description: Location information as retrieved from the SGSN serving node + type: object + required: + - sgsnNumber + - plmnId + properties: + sgsnNumber: + type: string + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + sgsnLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UtraLocation' + csgInformation: + $ref: '#/components/schemas/CsgInformation' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + + MmeLocationData: + description: Location information as retrieved from the MME serving node + type: object + required: + - mmeAddress + - plmnId + properties: + mmeAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + mmeLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/EutraLocation' + csgInformation: + $ref: '#/components/schemas/CsgInformation' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + + AmfLocationData: + description: Location information as retrieved from the AMF serving node + type: object + required: + - amfAddress + - plmnId + properties: + amfAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + amfLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NrLocation' + smsfAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + + TwanLocationData: + description: Location information of the 3GPP AAA Server for Trusted W-LAN Access + type: object + required: + - twanSsid + - plmnId + properties: + twanSsid: + type: string + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + twanBssid: + type: string + civicAddress: + type: string + format: byte + twanOperatorName: + type: string + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + logicalAccessId: + type: string + + CsLocation: + description: Location data in CS domain + type: object + required: + - mscNumber + - vlrNumber + - plmnId + properties: + mscNumber: + type: string + vlrNumber: + type: string + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + vlrLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GeraLocation' + csgInformation: + $ref: '#/components/schemas/CsgInformation' + timeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + eUtranCgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + + CsgInformation: + description: Information about a Closed Subscriber Group (CSG) + type: object + required: + - csgId + properties: + csgId: + type: string + format: byte + accessMode: + type: string + format: byte + cMi: + type: boolean + + SrvccData: + description: UE SRVCC capability (if available) and STN-SR (if subscribed) + type: object + required: + - stnSr + properties: + stnSr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/StnSr' + ueSrvccCapabilities: + type: array + items: + $ref: '#/components/schemas/SrvccCapability' + minItems: 1 + uniqueItems: true + + PsiActivationState: + description: Public Service Identity activation state + type: object + required: + - activationState + properties: + activationState: + $ref: '#/components/schemas/ActivationState' + + SharedData: + description: Represents a part of the IMS Profile data shared by several UEs + type: object + required: + - sharedDataId + properties: + sharedDataId: + $ref: '#/components/schemas/SharedDataId' + sharedImsIfcData: + $ref: '#/components/schemas/Ifcs' + minProperties: 1 + + ImsProfileData: + description: User's IMS profile data + type: object + required: + - imsServiceProfiles + properties: + imsServiceProfiles: + type: array + items: + $ref: '#/components/schemas/ImsServiceProfile' + chargingInfo: + $ref: '#/components/schemas/ChargingInfo' + serviceLevelTraceInfo: + $ref: '#/components/schemas/ServiceLevelTraceInformation' + servicePriorityLevelList: + type: array + items: + $ref: '#/components/schemas/NameSpacePriority' + minItems: 1 + uniqueItems: true + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + maxAllowedSimulReg: + type: integer + servicePriorityLevel: + type: integer + minimum: 0 + maximum: 4 + + ImsServiceProfile: + description: > + IMS Service Profile of the UE, containing the list of Public Identifiers and + optionally a list of IFCs + type: object + required: + - publicIdentifierList + properties: + publicIdentifierList: + type: array + items: + $ref: '#/components/schemas/PublicIdentifier' + ifcs: + $ref: '#/components/schemas/Ifcs' + cnServiceAuthorization: + $ref: '#/components/schemas/CoreNetworkServiceAuthorization' + + CoreNetworkServiceAuthorization: + description: > + Core Network Service Authorization + type: object + properties: + subscribedMediaProfileId: + type: integer + + PublicIdentifier: + description: > + Distinct or wildcarded public identity and its associated priority, trace and + barring information + type: object + required: + - publicIdentity + properties: + publicIdentity: + $ref: '#/components/schemas/PublicIdentity' + displayName: + type: string + imsServicePriority: + $ref: '#/components/schemas/PriorityLevels' + serviceLevelTraceInfo: + $ref: '#/components/schemas/ServiceLevelTraceInformation' + barringIndicator: + type: boolean + wildcardedImpu: + type: string + + ServiceLevelTraceInformation: + description: IMS Service Level Trace Information + type: object + properties: + serviceLevelTraceInfo: + type: string + + ImeiSvInformation: + description: IMEI(SV) information + type: object + oneOf: + - required: + - imei + - required: + - imeiSv + properties: + imei: + $ref: '#/components/schemas/Imei' + imeiSv: + $ref: '#/components/schemas/ImeiSv' + + TadsInformation: + description: T-ADS Information + type: object + required: + - voiceOverPsSessionSupport + properties: + voiceOverPsSessionSupport: + $ref: '#/components/schemas/ImsVoiceOverPsSessionSupport' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + lastUeActivityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + UeReachabilitySubscription: + description: > + Contains the request parameters received by the HSS for a subscription to + notifications of UE reachability for IP + type: object + required: + - expiry + - callbackReference + properties: + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + CreatedUeReachabilitySubscription: + description: > + Contains the response data returned by HSS after the subscription to + notifications of UE reachability for IP was created + type: object + required: + - expiry + properties: + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + UeReachabilityNotification: + description: > + Represents the contents of a notification of UE reachability for IP sent by the HSS + type: object + required: + - reachabilityIndicator + - detectingNode + - accessType + properties: + reachabilityIndicator: + type: boolean + detectingNode: + $ref: '#/components/schemas/DetectingNode' + accessType: + $ref: '#/components/schemas/AccessType' + + PsUserState: + description: User state in PS domain + type: object + oneOf: + - required: + - sgsnUserState + - required: + - mmeUserState + - required: + - amfUserState + properties: + sgsnUserState: + $ref: '#/components/schemas/UserStatePs' + mmeUserState: + $ref: '#/components/schemas/UserStatePs' + amfUserState: + $ref: '#/components/schemas/UserStatePs' + + CsUserState: + description: User state in CS domain + type: object + required: + - mscVlrUserState + properties: + mscVlrUserState: + $ref: '#/components/schemas/UserStateCs' + + Csrn: + description: CS domain routeing number + type: object + required: + - csrn + properties: + csrn: + $ref: '#/components/schemas/Msisdn' + + ReferenceLocationInformation: + description: Reference Location Information for the user in fixed access networks + type: object + properties: + accessType: + type: string + accessInfo: + type: string + accessValue: + type: string + anyOf: + - required: [accessType] + - required: [accessInfo] + - required: [accessValue] + + SmsRegistrationInfo: + description: SMS Registration Information (IP-SM-GW number and SC address) + type: object + required: + - ipSmGwNumber + properties: + ipSmGwNumber: + $ref: '#/components/schemas/Msisdn' + scAddress: + $ref: '#/components/schemas/Msisdn' + + IpSmGwAddress: + description: IP-SM-GW number and diameter URI/realm + type: object + required: + - ipSmGwNumber + properties: + ipSmGwNumber: + $ref: '#/components/schemas/Msisdn' + ipSmGwDiaUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + ipSmGwDiaRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + ipSmGwSbiSupInd: + type: boolean + default: false + + DsaiTagInformation: + description: > + DSAI tag information (list of DSAI tags activation state for an Application Server) + type: object + required: + - dsaiTagStatusList + properties: + dsaiTagStatusList: + type: array + items: + $ref: '#/components/schemas/DsaiTagStatus' + minItems: 1 + uniqueItems: true + + DsaiTagStatus: + description: DSAI tag status (DSAI tag and activation state) + type: object + required: + - dsaiTag + - dsaiState + properties: + dsaiTag: + type: string + dsaiState: + $ref: '#/components/schemas/ActivationState' + + ScscfSelectionAssistanceInformation: + description: Information used by the I-CSCF to select an S-CSCF for the UE + type: object + properties: + scscfCapabilityList: + $ref: '#/components/schemas/ScscfCapabilityList' + scscfNames: + type: array + items: + type: string + minItems: 1 + anyOf: + - required: [scscfCapabilityList] + - required: [scscfNames] + + ChargingInfo: + description: Diameter addresses of the charging function + type: object + anyOf: + - required: + - primaryEventChargingFunctionName + - required: + - primaryChargingCollectionFunctionName + properties: + primaryEventChargingFunctionName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + secondaryEventChargingFunctionName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + primaryChargingCollectionFunctionName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + secondaryChargingCollectionFunctionName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + + CallReferenceInfo: + description: > + Contains a Call Reference Number and the AS-Number; it allows a later retry of the call + setup in the context of MTRR + type: object + required: + - callRefNumber + - asNumber + properties: + callRefNumber: + type: string + format: byte + description: > + The content is according to CallReferenceNumber type described in 3GPP TS 29.002 [30]. + Base64 encoded according to IETF RFC 2045 [28] + asNumber: + type: string + format: byte + description: > + The content is according to ISDN-AddressString type described in 3GPP TS 29.002 [30]. + Base64 encoded according to IETF RFC 2045 [28] + + DataSetNames: + description: Contains the data sets to be retrieved from the IMS User Profile + type: array + items: + $ref: '#/components/schemas/DataSetName' + minItems: 1 + uniqueItems: true + + RepositoryDataList: + description: List of Repository Data for the requested Service Indications + type: object + required: + - repositoryDataMap + properties: + repositoryDataMap: + description: > + A map (list of key-value pairs where ServiceIndication serves as key) of RepositoryData + type: object + additionalProperties: + $ref: '#/components/schemas/RepositoryData' + +# +# SIMPLE TYPES: +# + + Capability: + description: S-CSCF capability + type: integer + + ImsUeId: + description: > + Represents the IMS Public Identity (i.e. IMS Public User identity or + Public Service Identity) + type: string + pattern: '^(impu-sip\:([a-zA-Z0-9_\-.!~*()&=+$,;?\/]+)\@([A-Za-z0-9]+([-A-Za-z0-9]+)\.)+[a-z]{2,}|impu-tel\:\+[0-9]{5,15}|impi-.+|.+)$' + + SequenceNumber: + description: > + Unsigned integer containing the sequence number associated to the current version + of Repository Data + type: integer + minimum: 0 + + ServiceIndication: + description: String containing the Service Indication or Service Identifier + type: string + + Msisdn: + description: String containing an additional or basic MSISDN + type: string + pattern: '[0-9]{5,15}$' + + PrivateId: + description: String containing a Private User Identity or a Private Service Identity + type: string + + ImsPublicId: + description: String containing an IMS Public Identity in SIP URI format or TEL URI format + type: string + pattern: '^(sip\:([a-zA-Z0-9_\-.!~*()&=+$,;?\/]+)\@([A-Za-z0-9]+([-A-Za-z0-9]+)\.)+[a-z]{2,}|tel\:\+[0-9]{5,15})$' + + NameSpacePriority: + description: > + String containing the namespace and priority formatted as "r-value" parameter + described in IETF RFC 4412 + type: string + pattern: '^[0-9a-zA-Z-\!%\*_\+`''~]+.[0-9a-zA-Z-\!%\*_\+`''~]+$' + + CscfFilterSetId: + description: Contains the identifier of a specific filter set in the S-CSCF + type: integer + minimum: 0 + + SptGroupId: + description: Contains the identifier of the Group of SPTs + type: integer + minimum: 0 + + SharedDataId: + description: > + Identifies globally and uniquely a piece of subscription data shared by multiple UEs; + the value shall start with the HPLMN id (MCC/MNC) followed by a hyphen followed by a + local Id as allocated by the home network operator + type: string + pattern: '^[0-9]{5,6}-.+$' + + Imei: + description: IMEI of the UE + type: string + pattern: '^[0-9]{15}$' + + ImeiSv: + description: IMEISV of the UE + type: string + pattern: '^[0-9]{16}$' + + PrePaging: + description: Inidicates the support of pre-paging + type: boolean + + SipServerName: + description: Server Name (e.g. AS name, CSCF name) in SIP URI format + type: string + pattern: '^(sip\:([a-zA-Z0-9_\-.!~*()&=+$,;?\/]+)\@([A-Za-z0-9]+([-A-Za-z0-9]+)\.)+[a-z]{2,})$' + +# +# ENUMS: +# + + IdentityType: + description: Represents the type of IMS Public Identity + anyOf: + - type: string + enum: + - DISTINCT_IMPU + - DISTINCT_PSI + - WILDCARDED_IMPU + - WILDCARDED_PSI + - type: string + + PrivateIdentityType: + description: Represents the type of IMS Private Identity (IMPI or IMSI) + anyOf: + - type: string + enum: + - IMPI + - IMSI + - type: string + + ImsRegistrationState: + description: Represents the IMS status of the user or Public Identity or the IRS + anyOf: + - type: string + enum: + - REGISTERED + - NOT_REGISTERED + - AUTHENTICATION_PENDING + - REGISTERED_UNREG_SERVICES + - type: string + + TypeOfCondition: + description: > + Represents the type of condition to be applied to the logical expression of SPT groups + and SPTs (Conjunctive Normal Form, or Disjunctive Normal Form) + anyOf: + - type: string + enum: + - CNF + - DNF + - type: string + + RegistrationType: + description: Represents the type of registration associated to the REGISTER request + anyOf: + - type: string + enum: + - INITIAL_REGISTRATION + - RE_REGISTRATION + - DE_REGISTRATION + - type: string + + RequestDirection: + description: > + Represents the direction of the request in combination with the registration status + of the user as evaluated in the S-CSCF + anyOf: + - type: string + enum: + - ORIGINATING_REGISTERED + - ORIGINATING_UNREGISTERED + - ORIGINATING_CDIV + - TERMINATING_REGISTERED + - TERMINATING_UNREGISTERED + - type: string + + ServiceInformation: + description: > + Indicates the type of additional information to be included in the body of the SIP request + towards the Application Server + anyOf: + - type: string + enum: + - INCLUDE_REGISTER_REQUEST + - INCLUDE_REGISTER_RESPONSE + - type: string + + RequestedNode: + description: Represents the type of serving node for which certain data is requested + anyOf: + - type: string + enum: + - SGSN + - MME + - AMF + - 3GPP_AAA_SERVER_TWAN + - type: string + + SrvccCapability: + description: Represents the type of SRVCC support of the UE + anyOf: + - type: string + enum: + - UE_4G_SRVCC_CAPABLE + - UE_5G_SRVCC_CAPABLE + - type: string + + ActivationState: + description: Represents the activation state of a PSI or DSAI tag + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + + ImsVoiceOverPsSessionSupport: + description: Represents the support for Voice-over-PS of the UE + anyOf: + - type: string + enum: + - IMS_VOICE_OVER_PS_NOT_SUPPORTED + - IMS_VOICE_OVER_PS_SUPPORTED + - IMS_VOICE_OVER_PS_SUPPORT_UNKNOWN + - type: string + + DetectingNode: + description: Represents the type of serving node that detected the reachability of the UE + anyOf: + - type: string + enum: + - SGSN + - MME + - AMF + - type: string + + AccessType: + description: Represents the type of access (3GPP or non-3GPP) + anyOf: + - type: string + enum: + - 3GPP_ACCESS + - NON_3GPP_ACCESS + - type: string + + UserStatePs: + description: Represents the user state in PS domain + anyOf: + - type: string + enum: + - DETACHED + - ATTACHED_NOT_REACHABLE_FOR_PAGING + - ATTACHED_REACHABLE_FOR_PAGING + - CONNECTED_NOT_REACHABLE_FOR_PAGING + - CONNECTED_REACHABLE_FOR_PAGING + - NOT_PROVIDED_FROM_SGSN_OR_MME_OR_AMF + - NETWORK_DETERMINED_NOT_REACHABLE + - type: string + + UserStateCs: + description: Represents the user state in CS domain + anyOf: + - type: string + enum: + - CAMEL_BUSY + - NETWORK_DETERMINED_NOT_REACHABLE + - ASSUMED_IDLE + - NOT_PROVIDED_FROM_VLR + - type: string + + DataSetName: + description: A set of data within the IMS User Profile + anyOf: + - type: string + enum: + - CHARGING_DATA + - IFC_DATA + - TRACE_DATA + - PRIORITY_DATA + - type: string diff --git a/TS29562_Nhss_imsUEAU.yaml b/TS29562_Nhss_imsUEAU.yaml new file mode 100644 index 0000000..b2a67f7 --- /dev/null +++ b/TS29562_Nhss_imsUEAU.yaml @@ -0,0 +1,259 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'Nhss_imsUEAU' + description: | + Nhss UE Authentication Service for IMS. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.562 Home Subscriber Server (HSS) Services, version 18.0.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.562/' + +servers: + - url: '{apiRoot}/nhss-ims-ueau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-ueau + +paths: + + /{impi}/security-information/generate-sip-auth-data: + post: + summary: Generate authentication data for the UE based on the Auth-Scheme provided + operationId: GenerateSipAuthData + tags: + - Generate SIP Auth Data (Custom Operation) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-ueau + - oAuth2ClientCredentials: + - nhss-ims-ueau + - nhss-ims-ueau:generate-sip-auth-data:invoke + parameters: + - name: impi + in: path + description: IMS Private Identity for the UE (IMPI) + required: true + schema: + $ref: '#/components/schemas/Impi' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/SipAuthenticationInfoRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/SipAuthenticationInfoResult' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-ims-ueau: Access to the Nhss IMS UE Authentication API + nhss-ims-ueau:generate-sip-auth-data:invoke: > + Access to invoke the Generate SIP Auth Data custom operation + + schemas: + +# +# COMPLEX TYPES: +# + + SipAuthenticationInfoRequest: + description: > + Contains input data to the SIP authentication request message (e.g. SIP authentication + scheme, requested number of authentication items, resynchronization information) + type: object + required: + - cscfServerName + - sipAuthenticationScheme + properties: + cscfServerName: + type: string + sipAuthenticationScheme: + $ref: '#/components/schemas/SipAuthenticationScheme' + sipNumberAuthItems: + $ref: '#/components/schemas/SipNumberAuthItems' + resynchronizationInfo: + $ref: '#/components/schemas/ResynchronizationInfo' + + ResynchronizationInfo: + description: Contains RAND and AUTS + type: object + required: + - rand + - auts + properties: + rand: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Rand' + auts: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Auts' + + SipAuthenticationInfoResult: + description: > + Contains authentication information returned in the SIP authentication response message + (e.g. authentication vectors, digest authentication parameters, line identifiers) + type: object + required: + - impi + properties: + impi: + $ref: '#/components/schemas/Impi' + 3gAkaAvs: + type: array + items: + $ref: '#/components/schemas/3GAkaAv' + minItems: 1 + digestAuth: + $ref: '#/components/schemas/DigestAuthentication' + lineIdentifierList: + type: array + items: + $ref: '#/components/schemas/LineIdentifier' + minItems: 1 + ipAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + + 3GAkaAv: + description: Contains RAND, XRES, AUTN, CK, and IK + type: object + required: + - rand + - xres + - autn + - ck + - ik + properties: + rand: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Rand' + xres: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Xres' + autn: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Autn' + ck: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ConfidentialityKey' + ik: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/IntegrityKey' + + DigestAuthentication: + description: Parameters used for the Digest authentication scheme + type: object + required: + - digestRealm + - digestAlgorithm + - digestQop + - ha1 + properties: + digestRealm: + type: string + digestAlgorithm: + $ref: '#/components/schemas/SipDigestAlgorithm' + digestQop: + $ref: '#/components/schemas/SipDigestQop' + ha1: + type: string + +# +# SIMPLE TYPES: +# + + SipNumberAuthItems: + description: Indicates the number of requested SIP authentication items + type: integer + minimum: 1 + + Impi: + description: IMS Private Identity of the UE + type: string + + LineIdentifier: + description: Line Identifier for the wireline access + type: string + +# +# ENUMS: +# + + SipAuthenticationScheme: + description: Authentication scheme to be used in the SIP authentication request message + anyOf: + - type: string + enum: + - DIGEST-AKAV1-MD5 + - DIGEST-HTTP + - NBA + - GIBA + - UNKNOWN + - type: string + + SipDigestAlgorithm: + description: Algorithm used for the SIP Digest authentication scheme + anyOf: + - type: string + enum: + - MD5 + - MD5_SESS + - type: string + + SipDigestQop: + description: Quality of Protection for the SIP Digest authentication scheme + anyOf: + - type: string + enum: + - AUTH + - AUTH_INT + - type: string diff --git a/TS29562_Nhss_imsUECM.yaml b/TS29562_Nhss_imsUECM.yaml new file mode 100644 index 0000000..f58420b --- /dev/null +++ b/TS29562_Nhss_imsUECM.yaml @@ -0,0 +1,732 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.2' + title: 'Nhss_imsUECM' + description: | + Nhss UE Context Management Service for IMS. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.562 Home Subscriber Server (HSS) Services, version 18.2.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.562/' + +servers: + - url: '{apiRoot}/nhss-ims-uecm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + +paths: + + /{impu}/authorize: + post: + summary: > + Authorize IMS Identities to register in the network or establish multimedia sessions + and return CSCF location if it is stored + operationId: Authorize + tags: + - Authorize (Custom Operation) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + - oAuth2ClientCredentials: + - nhss-ims-uecm + - nhss-ims-uecm:authorize:invoke + parameters: + - name: impu + in: path + description: Public identity of the user. + required: true + schema: + $ref: '#/components/schemas/Impu' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AuthorizationResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + deregistrationeNotification: + '{request.body#/deregCallbackUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationData' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/scscf-registration: + put: + summary: SCSCF registration information + operationId: SCSCF registration + tags: + - S-CSCF Registration (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + - oAuth2ClientCredentials: + - nhss-ims-uecm + - nhss-ims-uecm:registration:create + parameters: + - name: imsUeId + in: path + description: IMS Identity + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRegistration' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRegistration' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-uecm/v1/{imsUeId}/scscf-registration + required: true + schema: + type: string + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRegistration' + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{imsUeId}/scscf-registration/scscf-restoration-info: + put: + summary: Update the S-CSCF restoration information of the UE + operationId: UpdateScscfRestorationInfo + tags: + - S-CSCF Restoration Information (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + - oAuth2ClientCredentials: + - nhss-ims-uecm + - nhss-ims-uecm:restoration:modify + parameters: + - name: imsUeId + in: path + description: IMS Identity. + required: true + schema: + $ref: '#/components/schemas/ImsUeId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRestorationInfoRequest' + required: true + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRestorationInfoResponse' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ims-uecm/v1/{imsUeId}/scscf-registration/scscf-restoration-info + required: true + schema: + type: string + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRestorationInfoResponse' + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieve the S-CSCF restoration information of the UE + operationId: GetScscfRestorationInfo + tags: + - S-CSCF Restoration Information (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + - oAuth2ClientCredentials: + - nhss-ims-uecm + - nhss-ims-uecm:restoration:read + parameters: + - name: impu + in: path + description: Public identity of the user. + required: true + schema: + $ref: '#/components/schemas/Impu' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ScscfRestorationInfoResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete the S-CSCF restoration information of the UE + operationId: DeleteScscfRestorationInfo + tags: + - S-CSCF Restoration Information (Document) + security: + - {} + - oAuth2ClientCredentials: + - nhss-ims-uecm + - oAuth2ClientCredentials: + - nhss-ims-uecm + - nhss-ims-uecm:restoration:modify + parameters: + - name: impu + in: path + description: Public identity of the user. + required: true + schema: + $ref: '#/components/schemas/Impu' + responses: + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-ims-uecm: Access to the Nhss IMS UE Context Management API + nhss-ims-uecm:authorize:invoke: Access to invoke the Authorize custom operation + nhss-ims-uecm:registration:create: Access to create the S-CSCF Registration resource + nhss-ims-uecm:restoration:read: Access to read the S-CSCF Restoration resource + nhss-ims-uecm:restoration:modify: >- + Access to create/update/delete the S-CSCF Restoration resource + + schemas: + +# +# COMPLEX TYPES: +# + + AuthorizationRequest: + description: Ims authorization request data + type: object + required: + - authorizationType + properties: + impi: + $ref: '#/components/schemas/Impi' + authorizationType: + $ref: '#/components/schemas/AuthorizationType' + visitedNetworkIdentifier: + type: string + emergencyIndicator: + type: boolean + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + AuthorizationResponse: + description: Ims Registration authorization information result + type: object + properties: + authorizationResult: + $ref: '#/components/schemas/AuthorizationResult' + cscfServerName: + type: string + scscfSelectionAssistanceInfo: + $ref: 'TS29562_Nhss_imsSDM.yaml#/components/schemas/ScscfSelectionAssistanceInformation' + required: + - authorizationResult + oneOf: + - required: + - cscfServerName + - required: + - scscfSelectionAssistanceInfo + + ScscfRegistration: + description: Scscf Registration + type: object + required: + - imsRegistrationType + - cscfServerName + properties: + impi: + $ref: '#/components/schemas/Impi' + imsRegistrationType: + $ref: '#/components/schemas/ImsRegistrationType' + cscfServerName: + type: string + scscfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + deregCallbackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + associatedImpis: + type: array + items: + $ref: '#/components/schemas/Impi' + associatedRegisteredImpis: + type: array + items: + $ref: '#/components/schemas/Impi' + irsImpus: + type: array + items: + $ref: '#/components/schemas/Impu' + minItems: 1 + uniqueItems: true + wildcardedPui: + $ref: '#/components/schemas/Impu' + looseRouteIndicator: + $ref: '#/components/schemas/LooseRouteIndication' + wildcardedPsi: + $ref: '#/components/schemas/Impu' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + multipleRegistrationIndicator: + type: boolean + pcscfRestorationIndicator: + type: boolean + default: false + scscfReselectionIndicator: + type: boolean + default: false + + ExtendedProblemDetails: + description: > + Extension of the ProblemDetails data type, to include additional information + in an error response message + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionalInfo' + + AdditionalInfo: + description: > + Additional information to be sent on error response messages, along with the + common content in ProblemDetails + type: object + properties: + scscfServerName: + type: string + + ScscfRestorationInfo: + description: S-CSCF restoration information + type: object + properties: + userName: + $ref: '#/components/schemas/Impi' + restorationInfo: + type: array + items: + $ref: '#/components/schemas/RestorationInfo' + registrationTimeOut: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sipAuthenticationScheme: + $ref: 'TS29562_Nhss_imsUEAU.yaml#/components/schemas/SipAuthenticationScheme' + + ScscfRestorationInfoRequest: + description: S-CSCF restoration information request + type: object + properties: + scscfRestorationInfoRequest: + $ref: '#/components/schemas/ScscfRestorationInfo' + + ScscfRestorationInfoResponse: + description: S-CSCF restoration information response + type: object + properties: + scscfRestorationInfoResponse: + type: array + items: + $ref: '#/components/schemas/ScscfRestorationInfo' + + RestorationInfo: + description: > + The information relevant to a specific registration required for an S-CSCF + to handle the requests for a user + type: object + required: + - path + - contact + properties: + path: + type: string + contact: + type: string + initialCSeqSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + callIdSipHeader: + type: string + uesubscriptionInfo: + $ref: '#/components/schemas/UeSubscriptionInfo' + pcscfSubscriptionInfo: + $ref: '#/components/schemas/PcscfSubscriptionInfo' + imsSdmSubscriptions: + description: > + A map (list of key-value pairs where subscriptionId serves as key) of ImsSdmSubscription + type: object + additionalProperties: + $ref: 'TS29562_Nhss_imsSDM.yaml#/components/schemas/ImsSdmSubscription' + + UeSubscriptionInfo: + description: Subscription information of the UE for the SIP Registration State event + type: object + required: + - callIdSipHeader + - fromSipHeader + - toSipHeader + - recordRoute + - contact + properties: + callIdSipHeader: + type: string + fromSipHeader: + type: string + toSipHeader: + type: string + recordRoute: + type: string + contact: + type: string + + PcscfSubscriptionInfo: + description: Subscription information of the P-CSCF for the SIP Registration State event + type: object + required: + - callIdSipHeader + - fromSipHeader + - toSipHeader + - contact + properties: + callIdSipHeader: + type: string + fromSipHeader: + type: string + toSipHeader: + type: string + contact: + type: string + + DeregistrationData: + description: Data related to the de-registration information of a S-CSCF in HSS + type: object + required: + - deregReason + - impi + properties: + deregReason: + $ref: '#/components/schemas/DeregistrationReason' + impi: + $ref: '#/components/schemas/Impi' + associatedImpis: + type: array + items: + $ref: '#/components/schemas/Impi' + emergencyRegisteredIdentities: + type: array + items: + $ref: '#/components/schemas/EmergencyRegisteredIdentity' + minItems: 1 + + EmergencyRegisteredIdentity: + description: > + A pair of private and public user identities which have not been de-registered + due to emergency registration + type: object + required: + - impi + - impu + properties: + impi: + $ref: '#/components/schemas/Impi' + impu: + $ref: '#/components/schemas/Impu' + + DeregistrationReason: + description: > + Contains the reason for the network initiated de-registration (including a reason code, + and a human-readable reason text) + type: object + required: + - reasonCode + - reasonText + properties: + reasonCode: + $ref: '#/components/schemas/DeregistrationReasonCode' + reasonText: + type: string + +# +# SIMPLE TYPES +# + + ImsUeId: + description: IMS UE Identity (IMPU or IMPI) + type: string + pattern: '^(impu-sip\:([a-zA-Z0-9_\-.!~*()&=+$,;?\/]+)\@([A-Za-z0-9]+([-A-Za-z0-9]+)\.)+[a-z]{2,}|impu-tel\:\+[0-9]{5,15}|impi-.+|.+)$' + + Impu: + description: IMS Public Identity of the UE (sip URI or tel URI) + type: string + pattern: '^(sip\:([a-zA-Z0-9_\-.!~*()&=+$,;?\/]+)\@([A-Za-z0-9]+([-A-Za-z0-9]+)\.)+[a-z]{2,}|tel\:\+[0-9]{5,15})$' + + Impi: + description: IMS Private Identity of the UE + type: string + +# +# ENUMS: +# + + AuthorizationType: + description: Represents the type of authorization requested by the UE + anyOf: + - type: string + enum: + - REGISTRATION + - DEREGISTRATION + - type: string + + AuthorizationResult: + description: Represents the details of the granted authorization to the UE + anyOf: + - type: string + enum: + - FIRST_REGISTRATION + - SUBSEQUENT_REGISTRATION + - type: string + + ImsRegistrationType: + description: Represents the type of registration associated to the REGISTER request + anyOf: + - type: string + enum: + - INITIAL_REGISTRATION + - RE_REGISTRATION + - TIMEOUT_DEREGISTRATION + - USER_DEREGISTRATION + - ADMINISTRATIVE_DEREGISTRATION + - AUTHENTICATION_FAILURE + - AUTHENTICATION_TIMEOUT + - UNREGISTERED_USER + - type: string + + LooseRouteIndication: + description: Indicates whether the loose routing mechanism is required to serve the user + anyOf: + - type: string + enum: + - LOOSE_ROUTE_NOT_REQUIRED + - LOOSE_ROUTE_REQUIRED + - type: string + + DeregistrationReasonCode: + description: Indicates the reason for the network-initiated deregistration + anyOf: + - type: string + enum: + - PERMANENT_TERMINATION + - NEW_SERVER_ASSIGNED + - REMOVE_S-CSCF + - SERVER_CHANGE + - type: string diff --git a/TS29563_Nhss_EE.yaml b/TS29563_Nhss_EE.yaml new file mode 100644 index 0000000..6cb1023 --- /dev/null +++ b/TS29563_Nhss_EE.yaml @@ -0,0 +1,562 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.3' + title: 'Nhss_EE' + description: | + HSS Event Exposure. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.563 HSS Services for Interworking With UDM, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.563/' + +servers: + - url: '{apiRoot}/nhss-ee/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - {} + - oAuth2ClientCredentials: + - nhss-ee + +paths: + /{ueId}/ee-subscriptions: + post: + summary: Subscribe + operationId: CreateEeSubscription + tags: + - EE Subscription (Collection) + parameters: + - name: ueId + in: path + description: IMSI of the subscriber or the identity of a group of UEs + required: true + schema: + $ref: '#/components/schemas/UeIdOrGroupId' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/EeSubscription' + required: true + responses: + '201': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedEeSubscription' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nhss-ee/v1/{ueId}/ee-subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/EeSubscriptionError' + '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': + description: Not Implemented + content: + application/problem+json: + schema: + $ref: '#/components/schemas/EeSubscriptionError' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + eventOccurrenceNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MonitoringReport' + minItems: 1 + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/ee-subscriptions/{subscriptionId}: + delete: + summary: Unsubscribe + operationId: DeleteEeSubscription + tags: + - Delete EE Subscription + parameters: + - name: ueId + in: path + description: IMSI of the subscriber or the identity of a group of UEs + required: true + schema: + $ref: '#/components/schemas/UeIdOrGroupId' + - name: subscriptionId + in: path + description: Id of the EE Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + patch: + summary: Patch + operationId: UpdateEeSubscription + tags: + - Update EE Subscription + parameters: + - name: ueId + in: path + description: IMSI of the subscriber or the identity of a group of UEs + required: true + schema: + $ref: '#/components/schemas/UeIdOrGroupId' + - name: subscriptionId + in: path + description: Id of the EE Subscription + required: true + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-ee: Access to the nhss-ee API + + schemas: + +# STRUCTURED TYPES: + + EeSubscription: + description: > + It represents the request body of the subscription request sent to HSS, containing data + related to the subscription to be created, such as the SCEF, Monitoring Configurations and + reporting options + type: object + required: + - callbackReference + properties: + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + scefId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + scefDiamRealm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DiameterIdentity' + monitoringConfigurations: + description: > + A map (list of key-value pairs where ReferenceId serves as key) of + MonitoringConfigurations + type: object + additionalProperties: + $ref: '#/components/schemas/MonitoringConfiguration' + minProperties: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + reportingOptions: + $ref: '#/components/schemas/ReportingOptions' + mtcProviderInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MtcProviderInformation' + externalIdentifier: + type: string + + CreatedEeSubscription: + description: > + It represents the response body of the subscription request, containing data of the created + subscription in the HSS + type: object + required: + - eeSubscription + properties: + eeSubscription: + $ref: '#/components/schemas/EeSubscription' + eventReports: + type: array + items: + $ref: '#/components/schemas/MonitoringReport' + minItems: 1 + failedMonitoringConfigs: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + currentStatusNotAvailableList: + type: array + items: + $ref: '#/components/schemas/EventType' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + FailedMonitoringConfiguration: + description: > + Contains the event type and failed cause of the failed Monitoring Configuration + in the EE subscription + type: object + required: + - eventType + - failedCause + properties: + eventType: + $ref: '#/components/schemas/EventType' + failedCause: + $ref: '#/components/schemas/FailedCause' + + MonitoringConfiguration: + description: > + Contains data for each Monitoring Configuration (such as event type, etc.) and + the configuration data needed depending on each event type + type: object + required: + - eventType + properties: + eventType: + $ref: '#/components/schemas/EventType' + immediateFlag: + type: boolean + locationReportingConfiguration: + $ref: '#/components/schemas/LocationReportingConfiguration' + lossConnectivityConfiguration: + $ref: '#/components/schemas/LossConnectivityConfiguration' + reachabilityForDataConfiguration: + $ref: '#/components/schemas/ReachabilityForDataConfiguration' + pduSessionStatusCfg: + $ref: '#/components/schemas/PduSessionStatusCfg' + idleStatusInd: + type: boolean + default: false + + MonitoringReport: + description: Contains data for each Monitoring Event Report sent by the HSS + type: object + required: + - referenceId + - eventType + - timeStamp + properties: + referenceId: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/ReferenceId' + eventType: + $ref: '#/components/schemas/EventType' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + report: + $ref: '#/components/schemas/Report' + + ReportingOptions: + description: > + Contains the different reporting options associated to a given subscription created in HSS + type: object + properties: + maxNumOfReports: + $ref: '#/components/schemas/MaxNumOfReports' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reportPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + Report: + description: Contains data for a given Monitoring Event Report + type: object + properties: + reachabilityForSmsReport: + $ref: '#/components/schemas/ReachabilityForSmsReport' + reachabilityForDataReport: + $ref: '#/components/schemas/ReachabilityForDataReport' + lossConnectivityReport: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/LossConnectivityReport' + locationReport: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/LocationReport' + pdnConnectivityStatReport: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/PdnConnectivityStatReport' + + ReachabilityForSmsReport: + description: > + Contains data for a Monitoring Event Report, specific to the 'Reachability For SMS' + event type + type: object + required: + - reachabilitySmsStatus + properties: + reachabilitySmsStatus: + type: boolean + maxAvailabilityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + ReachabilityForDataReport: + description: > + Contains data for a Monitoring Event Report, specific to the 'Reachability For Data' + event type + type: object + required: + - reachabilityDataStatus + properties: + reachabilityDataStatus: + type: boolean + maxAvailabilityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + LossConnectivityConfiguration: + description: > + Contains data needed for a Monitoring Configuration, specific to the 'Loss of Connectivity' + event type + type: object + properties: + maxDetectionTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + + LocationReportingConfiguration: + description: > + Contains data needed for a Monitoring Configuration, specific to the 'Location Reporting' + event type + type: object + required: + - currentLocation + properties: + currentLocation: + type: boolean + accuracy: + $ref: '#/components/schemas/LocationAccuracy' + + ReachabilityForDataConfiguration: + description: > + Contains data needed for a Monitoring Configuration, specific to the 'Reachability for Data' + event type + type: object + anyOf: + - required: [ maximumLatency ] + - required: [ maximumResponseTime ] + - required: [ suggestedPacketNumDl ] + properties: + maximumLatency: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + maximumResponseTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + suggestedPacketNumDl: + type: integer + minimum: 1 + + PduSessionStatusCfg: + description: > + Contains data needed for a Monitoring Configuration, specific to the 'PDN Connectivity + Status' event type + type: object + properties: + apn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + + EeSubscriptionErrorAddInfo: + description: Additional Information for EE Subscription Error. + type: object + properties: + failedMonitoringConfigs: + description: > + A map (list of key-value pairs where referenceId converted from integer to string serves + as key; see clause 6.4.6.3.2) of FailedMonitoringConfiguration + type: object + additionalProperties: + $ref: '#/components/schemas/FailedMonitoringConfiguration' + minProperties: 1 + + EeSubscriptionError: + description: EE Subscription Error. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/EeSubscriptionErrorAddInfo' + +# SIMPLE TYPES: + + Imsi: + description: IMSI of the UE + type: string + pattern: '^(imsi-[0-9]{5,15})$' + + UeIdOrGroupId: + description: Contains the UE identifier or the Group Identifier of the UE + type: string + pattern: '^(imsi-[0-9]{5,15}|extgroupid-[^@]+@[^@]+|.+$)' + + MaxNumOfReports: + description: Maximum number of events to be reported for events in a given subscription + type: integer + minimum: 1 + +# ENUMS: + + EventType: + description: Type of Monitoring Event + anyOf: + - type: string + enum: + - LOSS_OF_CONNECTIVITY + - UE_REACHABILITY_FOR_DATA + - UE_REACHABILITY_FOR_SMS + - LOCATION_REPORTING + - COMMUNICATION_FAILURE + - AVAILABILITY_AFTER_DDN_FAILURE + - PDN_CONNECTIVITY_STATUS + - type: string + + LocationAccuracy: + description: Location accuracy used in the 'Location Reporting' event type + anyOf: + - type: string + enum: + - CELL_LEVEL + - RAN_NODE_LEVEL + - TA_LEVEL + - type: string + + FailedCause: + description: > + Indicates the Failed cause of the failed Monitoring Configuration in the EE subscription + anyOf: + - type: string + enum: + - MTC_PROVIDER_NOT_ALLOWED + - MONITORING_NOT_ALLOWED + - UNSUPPORTED_MONITORING_EVENT_TYPE + - UNSUPPORTED_MONITORING_REPORT_OPTIONS + - UNSPECIFIED + - type: string diff --git a/TS29563_Nhss_SDM.yaml b/TS29563_Nhss_SDM.yaml new file mode 100644 index 0000000..149744a --- /dev/null +++ b/TS29563_Nhss_SDM.yaml @@ -0,0 +1,361 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.2' + title: 'Nhss_SDM' + description: | + HSS Subscriber Data Management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.563 HSS Services for Interworking With UDM, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.563/' + +servers: + - url: '{apiRoot}/nhss-sdm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nhss-sdm + - {} + +paths: + /{ueId}/ue-context-in-pgw-data: + get: + summary: Retrieve the UE Context In PGW + operationId: GetUeCtxInPgwData + tags: + - UE Context In PGW Data Retrieval + parameters: + - name: ueId + in: path + description: Identifier of the UE + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15})$' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/UeContextInPgwData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/subscriptions: + post: + summary: subscribe to notifications + operationId: Subscribe + tags: + - Subscription Creation + parameters: + - name: ueId + in: path + description: IMSI of the user + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15})$' + 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}/nhss-sdm//{ueId}/subscriptions/{subscriptionId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + callbacks: + datachangeNotification: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/ModificationNotification' + responses: + '204': + description: Successful Notification response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /{ueId}/subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications + operationId: Unsubscribe + tags: + - Subscription Deletion + parameters: + - name: ueId + in: path + description: IMSI of the user + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15})$' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + schema: + type: string + responses: + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + patch: + summary: modify the subscription + operationId: Modify + tags: + - Subscription Modification + parameters: + - name: ueId + in: path + description: IMSI of the user + required: true + schema: + type: string + pattern: '^(imsi-[0-9]{5,15})$' + - name: subscriptionId + in: path + description: Id of the Subscription + required: true + 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: + '204': + description: Successful modification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-sdm: Access to the nhss-sdm API + + + schemas: + +# STRUCTURED TYPES: + + UeContextInPgwData: + description: > + Contains data about APNs and PGW-C+SMF FQDNs used in interworking with UDM, and the + PGW-C+SMF FQDN to be used for emergency session + type: object + properties: + pgwInfo: + type: array + items: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/PgwInfo' + minItems: 1 + emergencyFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + emergencyPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + emergencyIpAddr: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/IpAddress' + emergencyRegistrationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + SubscriptionData: + description: > + Contains data about a subscription request, to be created by a consumer to an URI of the + HSS_SDM API to be monitored; it also represents the response containing data about the + created subscription + type: object + required: + - nfInstanceId + - callbackReference + - monitoredResourceUris + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + monitoredResourceUris: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + immediateReport: + type: boolean + default: false + report: + $ref: '#/components/schemas/SubscriptionDataSets' + + SubscriptionDataSets: + description: > + Contains data to be reported as an immediate report in the response to a subscription + creation request + type: object + properties: + ueContextInPgwData: + $ref: '#/components/schemas/UeContextInPgwData' + +# SIMPLE TYPES: + + +# ENUMS: diff --git a/TS29563_Nhss_UEAU.yaml b/TS29563_Nhss_UEAU.yaml new file mode 100644 index 0000000..891d360 --- /dev/null +++ b/TS29563_Nhss_UEAU.yaml @@ -0,0 +1,133 @@ +openapi: 3.0.0 +info: + version: '1.2.0-alpha.2' + title: 'NhssUEAU' + description: | + HSS UE Authentication Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.563 HSS Services for Interworking With UDM, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.563/' + +servers: + - url: '{apiRoot}/nhss-ueau/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nhss-ueau + - {} + +paths: + /generate-av: + post: + summary: Generate authentication vector for the UE + operationId: GenerateAV + tags: + - Generate Auth Vector + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/AvGenerationRequest' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/AvGenerationResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-ueau: Access to the nhss-ueau API + + + schemas: + +# STRUCTURED TYPES: + + AvGenerationRequest: + description: > + It represents the request body in the Authentication Vector (AV) request sent by UDM to HSS, + containing the IMSI of the UE, authentication type, serving network, etc. + type: object + required: + - imsi + - authType + - servingNetworkName + properties: + imsi: + type: string + pattern: '^[0-9]{5,15}$' + authType: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AuthType' + servingNetworkName: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ServingNetworkName' + resynchronizationInfo: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/ResynchronizationInfo' + + AvGenerationResponse: + description: > + It represents the response body in the AV response sent by HSS to UDM, containing the 5G-AKA + or EAP-AKA-prime authentication vector + type: object + oneOf: + - required: + - avEapAkaPrime + - required: + - av5GHeAka + properties: + avEapAkaPrime: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/AvEapAkaPrime' + av5GHeAka: + $ref: 'TS29503_Nudm_UEAU.yaml#/components/schemas/Av5GHeAka' + + +# SIMPLE TYPES: + + +# ENUMS: diff --git a/TS29563_Nhss_UECM.yaml b/TS29563_Nhss_UECM.yaml new file mode 100644 index 0000000..3de9f4a --- /dev/null +++ b/TS29563_Nhss_UECM.yaml @@ -0,0 +1,268 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.2' + title: 'Nhss_UECM' + description: | + HSS UE Context Management. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.563 HSS Services for Interworking With UDM, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.563/' + +servers: + - url: '{apiRoot}/nhss-uecm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nhss-uecm + - {} + +paths: + /deregister-sn: + post: + summary: MME/SGSN Deregistration + operationId: DeregisterSN + tags: + - MME/SGSN Deregistration + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/DeregistrationRequest' + required: true + responses: + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /imei-update: + post: + summary: IMEI Update + operationId: IMEIUpdate + tags: + - IMEI Update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/ImeiUpdateInfo' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/ImeiUpdateResponse' + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + /roaming-status-update: + post: + summary: Roaming Status Update + operationId: RoamingStatusUpdate + tags: + - Roaming Status Update + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/RoamingStatusUpdateInfo' + required: true + responses: + '204': + description: No content + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nhss-uecm: Access to the nhss-uecm API + + schemas: + +# STRUCTURED TYPES: + + DeregistrationRequest: + description: > + It represents the request body of the deregistration request sent by UDM to HSS and contains + the IMSI of the UE, the deregistration reason, etc. + type: object + required: + - imsi + - deregReason + properties: + imsi: + type: string + pattern: '^[0-9]{5,15}$' + deregReason: + $ref: '#/components/schemas/DeregistrationReason' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + + ImeiUpdateInfo: + description: > + It represents the request body of the IMEI update request sent by UDM to HSS, + and contains the IMSI of the UE and the new IMEI(SV) + type: object + required: + - imsi + oneOf: + - required: [ imei ] + - required: [ imeisv ] + properties: + imsi: + type: string + pattern: '^[0-9]{5,15}$' + imei: + type: string + pattern: '^[0-9]{14,15}$' + imeisv: + type: string + pattern: '^[0-9]{16}$' + + ImeiUpdateResponse: + description: > + It represents the response body of the IMEI update request sent by UDM to HSS, + and contains the previous IMEI(SV) stored by HSS + type: object + anyOf: + - required: [ previousImei ] + - required: [ previousImeisv ] + properties: + previousImei: + type: string + pattern: '^[0-9]{14,15}$' + previousImeisv: + type: string + pattern: '^[0-9]{16}$' + + RoamingStatusUpdateInfo: + description: > + It represents the request body of the Roaming Status Update request sent by UDM to HSS, + and contains the IMSI of the UE and the new PLMN-ID + type: object + required: + - imsi + - plmnId + properties: + imsi: + type: string + pattern: '^[0-9]{5,15}$' + plmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + +# SIMPLE TYPES: + + +# ENUMS: + + DeregistrationReason: + description: The reason that triggers that the serving node needs to be deregistered by HSS + anyOf: + - type: string + enum: + - UE_INITIAL_AND_SINGLE_REGISTRATION + - UE_INITIAL_AND_DUAL_REGISTRATION + - EPS_TO_5GS_MOBILITY + - type: string diff --git a/TS29564_Nupf_EventExposure.yaml b/TS29564_Nupf_EventExposure.yaml new file mode 100644 index 0000000..82a68d4 --- /dev/null +++ b/TS29564_Nupf_EventExposure.yaml @@ -0,0 +1,671 @@ +openapi: 3.0.0 + +info: + title: 'UPF Event Exposure Service' + version: 1.1.0-alpha.4 + description: | + UPF Event Exposure Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.564 V18.3.0; 5G System; User Plane Function Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.564/ + +servers: + - url: '{apiRoot}/nupf-ee/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nupf-ee + +paths: + /ee-subscriptions: + post: + summary: Nupf_EventExposure Subscribe service Operation + operationId: CreateSubscription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateEventSubscription' + responses: + '201': + description: Successful creation of an UPF Event Subscription + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nupf-ee//ee-subscriptions/{subscriptionId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedEventSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + eeNotification: + '{eventNotificationUri}': + # The URI in {eventNotificationUri} is provided via N4 interface during provisioning of Session Reporting Rule or in the Nupf_EventExposure Subscribe request. + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationData' + responses: + '204': + description: No Content, Notification was succesfull + '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 NF service consumer' + 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 NF service consumer' + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /ee-subscriptions/{subscriptionId}: + patch: + summary: Nupf_EventExposure Subscribe Modify service Operation + operationId: ModifySubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be modified + 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: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: Successful response + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Nupf_EventExposure UnSubscribe service Operation + operationId: DeleteSubscription + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription to be deleted + schema: + type: string + responses: + '204': + description: Subsription deleted successfully + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nupf-ee: Access to the Nupf_EventExposure API + + schemas: + # API specific definitions + +# STRUCTURED DATA TYPES + + NotificationData: + description: the list of NotificationItems + type: object + required: + - notificationItems + properties: + notificationItems: + type: array + items: + $ref: '#/components/schemas/NotificationItem' + minItems: 1 + correlationId: + type: string + achievedSampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + + NotificationItem: + description: represents a report on one subscribed event + type: object + required: + - eventType + - timeStamp + anyOf: + - required: [ ueIpv4Addr ] + - required: [ ueIpv6Prefix ] + - required: [ ueMacAddr ] + properties: + eventType: + $ref: '#/components/schemas/EventType' + ueIpv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ueIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + ueMacAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qosMonitoringMeasurement: + $ref: '#/components/schemas/QosMonitoringMeasurement' + tscMngtInfo: + $ref: '#/components/schemas/TscManagementInfo' + userDataUsageMeasurements: + type: array + items: + $ref: '#/components/schemas/UserDataUsageMeasurements' + minItems: 1 + + + UpfEventSubscription: + description: UPF Event Subscription + type: object + properties: + eventList: + type: array + items: + $ref: '#/components/schemas/UpfEvent' + minItems: 1 + eventNotifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + eventReportingMode: + $ref: '#/components/schemas/UpfEventMode' + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ueIpAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + anyUe: + type: boolean + default: false + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - eventList + - eventNotifyUri + - notifyCorrelationId + - eventReportingMode + - nfId + + UpfEventMode: + description: UPF Event Mode + type: object + properties: + trigger: + $ref: '#/components/schemas/UpfEventTrigger' + maxReports: + type: integer + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + sampRatio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SamplingRatio' + partitioningCriteria: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PartitioningCriteria' + minItems: 1 + notifFlag: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NotificationFlag' + mutingExcInstructions: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingExceptionInstructions' + mutingNotSettings: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/MutingNotificationsSettings' + required: + - trigger + + UpfEvent: + description: UPF Event + type: object + properties: + type: + $ref: '#/components/schemas/EventType' + immediateFlag: + type: boolean + default: false + measurementTypes: + type: array + items: + $ref: '#/components/schemas/MeasurementType' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + trafficFilters: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowInformation' + minItems: 1 + granularityOfMeasurement: + $ref: '#/components/schemas/GranularityOfMeasurement' + reportingSuggestionInfo: + $ref: '#/components/schemas/ReportingSuggestionInformation' + required: + - type + + CreateEventSubscription: + description: Data within UPF Create Event Subscription Request + type: object + properties: + subscription: + $ref: '#/components/schemas/UpfEventSubscription' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subscription + + CreatedEventSubscription: + description: Data within UPF Create Event Subscription Response + type: object + properties: + subscription: + $ref: '#/components/schemas/UpfEventSubscription' + subscriptionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + reportList: + type: array + items: + $ref: '#/components/schemas/NotificationItem' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subscription + - subscriptionId + + ReportingSuggestionInformation: + description: Reporting Suggestion Information + type: object + properties: + reportingUrgency: + $ref: '#/components/schemas/ReportingUrgency' + reportingTimeInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + required: + - reportingUrgency + + QosMonitoringMeasurement: + description: QoS Monitoring Measurement information + type: object + properties: + flowInfos: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowInformation' + minItems: 1 + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + dlPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + ulPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + rtrPacketDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + measureFailure: + type: boolean + enum: + - true + dlAveThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulAveThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlCongestion: + type: string + ulCongestion: + type: string + defaultQosFlowInd: + type: boolean + default: false + +# Editor's note: the encoding of the dlCongestion and ulCongestion IEs is FFS + + TscManagementInfo: + description: TSC Management Information + type: object + properties: + pmics: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/PortManagementContainer' + minItems: 1 + umic: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/BridgeManagementContainer' + + UserDataUsageMeasurements: + description: > + User Data Usage Measurements either for the PDU session, or the app-id, or the data flow + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + flowInfo: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/FlowInformation' + volumeMeasurement: + $ref: '#/components/schemas/VolumeMeasurement' + throughputMeasurement: + $ref: '#/components/schemas/ThroughputMeasurement' + applicationRelatedInformation: + $ref: '#/components/schemas/ApplicationRelatedInformation' + throughputStatisticsMeasurement: + $ref: '#/components/schemas/ThroughputStatisticsMeasurement' + + VolumeMeasurement: + description: Volume Measurement information + type: object + properties: + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficVolume' + ulVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficVolume' + dlVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TrafficVolume' + totalNbOfPackets: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + ulNbOfPackets: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + dlNbOfPackets: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + + ThroughputMeasurement: + description: Throughput Measurement information + type: object + properties: + ulThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulPacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + dlPacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + + ApplicationRelatedInformation: + description: Application Related Information + type: object + properties: + urls: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + domainInfoList: + type: array + items: + $ref: '#/components/schemas/DomainInformation' + minItems: 1 + + + ThroughputStatisticsMeasurement: + description: Throughput Statistics Measurement + type: object + properties: + ulAverageThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlAverageThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulPeakThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + dlPeakThroughPut: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + ulAveragePacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + dlAveragePacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + ulPeakPacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + dlPeakPacketThroughput: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketRate' + + DomainInformation: + description: Domain Information + type: object + properties: + domainName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + domainNameProtocol: + $ref: '#/components/schemas/DnProtocol' + required: + - domainName + + +# ENUMS + + EventType: + description: Event Type + anyOf: + - type: string + enum: + - QOS_MONITORING + - USER_DATA_USAGE_MEASURES + - USER_DATA_USAGE_TRENDS + - TSC_MNGT_INFO + - type: string + + UpfEventTrigger: + description: Upf Event Trigger + anyOf: + - type: string + enum: + - ONE_TIME + - PERIODIC + - type: string + + + MeasurementType: + description: Measurement Type + anyOf: + - type: string + enum: + - VOLUME_MEASUREMENT + - THROUGHPUT_MEASUREMENT + - APPLICATION_RELATED_INFO + - type: string + + GranularityOfMeasurement: + description: Granularity Of Measurement + anyOf: + - type: string + enum: + - PER_APPLICATION + - PER_SESSION + - PER_FLOW + - type: string + + DnProtocol: + description: Domain Name Protocol + anyOf: + - type: string + enum: + - DNS_QNAME + - TLS_SNI + - TLS_SAN + - TLS_SCN + - type: string + + ReportingUrgency: + description: Reporting Urgency + anyOf: + - type: string + enum: + - DELAY_TOLERANT + - NON_DELAY_TOLERANT + - type: string + + +# SIMPLE TYPES diff --git a/TS29564_Nupf_GetPrivateUEIPaddr.yaml b/TS29564_Nupf_GetPrivateUEIPaddr.yaml new file mode 100644 index 0000000..72d8cdd --- /dev/null +++ b/TS29564_Nupf_GetPrivateUEIPaddr.yaml @@ -0,0 +1,155 @@ +openapi: 3.0.0 + +info: + version: '1.0.0-alpha.3' + title: 'UPF GET Private UE IP address Service' + description: | + Nupf_GetPrivateUEIPaddr Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.564 V18.3.0; 5G System; 5G System; User Plane Function Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.564/' + +servers: + - url: '{apiRoot}/nupf-gueip/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nupf-gueip + +paths: + /ue-ip-info: + get: + summary: Search UeIpInfo for a PDU session from the UeIpInfo + operationId: SearchUeIpInfo + tags: + - UE IP Info_Get + parameters: + - name: snssai + in: query + description: Slice of the PDU session + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: dnn + in: query + description: Dnn of the PDU session + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: ue-ipv4-address + in: query + description: IPv4 address of the UE + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + - name: ue-ipv6-prefix + in: query + description: IPv6 prefix of the UE + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + - name: port-number + in: query + description: UDP or TCP port associated with the public address + schema: + type: integer + minimum: 0 + maximum: 65535 + responses: + '200': + description: Successful response + content: + application/json: + schema: + $ref: '#/components/schemas/UeIpInfo' + '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 UPF + 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 UPF + 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' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nupf-gueip: Access to the Nupf_GetPrivateUEIPaddr API + + schemas: + UeIpInfo: + description: a UE IP Address Info for a PDU session + type: object + properties: + privateIpv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipDomain: + type: string + privateIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + publicIpv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + publicIpv6Prefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint16' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hplmnSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + diff --git a/TS29565_Ntsctsf_ASTI.yaml b/TS29565_Ntsctsf_ASTI.yaml new file mode 100644 index 0000000..10c7c60 --- /dev/null +++ b/TS29565_Ntsctsf_ASTI.yaml @@ -0,0 +1,458 @@ +openapi: 3.0.0 + +info: + title: Ntsctsf_ASTI Service API + version: 1.1.0-alpha.3 + description: | + TSCTSF Access Stratum time distribution configuration Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.565 V18.4.0; 5G System; Time Sensitive Communication and + Time Synchronization Function Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.565/' + +servers: + - url: '{apiRoot}/ntsctsf-asti/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - ntsctsf-asti + +paths: + /configurations: + post: + summary: Creates a new Individual ASTI Configuration resource. + operationId: ASTIConfiguration + tags: + - ASTI Configurations (Collection) + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + responses: + '201': + description: Successful creation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + headers: + Location: + description: > + Contains the URI of the created individual ASTI Configuration resource, + according to the structure + {apiRoot}/ntsctsf-asti/{apiVersion}/configurations/{configId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + astiNotification: + '{$request.body#/astiNotifUri}': + post: + requestBody: + description: Notification of an ASTI configuration change event. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AstiConfigNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /configurations/retrieve: + post: + summary: Request the status of the 5G access stratum time distribution for a list of UEs. + operationId: RequestStatusof5GAccessStratumTimeDistribution + tags: + - ASTI Configurations + requestBody: + description: > + Contains the information for the status of the 5G access stratum time distribution. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusRequestData' + responses: + '200': + description: > + Successful retrieval of the status of the 5G access stratum time distribution. + content: + application/json: + schema: + $ref: '#/components/schemas/StatusResponseData' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /configurations/{configId}: + put: + summary: Modifies an existing Individual ASTI Configuration resource. + operationId: ModifyIndividualASTIConfiguration + tags: + - Individual ASTI Configuration (Document) + parameters: + - name: configId + description: String identifying an Individual ASTI Configuration. + in: path + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/AccessTimeDistributionData' + '204': + description: No Content. Resource was succesfully modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualASTIConfiguration + summary: Delete an Individual ASTI Configuration + tags: + - Individual ASTI Configuration (Document) + parameters: + - name: configId + in: path + description: String identifying an Individual ASTI Configuration. + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ntsctsf-asti: Access to the Ntsctsf_ASTI API + + schemas: + AccessTimeDistributionData: + description: > + Contains the parameters for the creation of 5G access stratum time distribution + configuration. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + interGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + exterGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + asTimeDisParam: + $ref: '#/components/schemas/AsTimeDistributionParam' + covReq: + type: array + description: > + Identifies a list of Tracking Areas per serving network where 5GS + Access Stratum Time Distribution parameters are allowed. + items: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + astiNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + astiNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - asTimeDisParam + oneOf: + - required: [supis] + - required: [interGrpId] + - required: [gpsis] + - required: [exterGrpId] + + AsTimeDistributionParam: + description: Contains the 5G access stratum time distribution parameters. + type: object + properties: + asTimeDisEnabled: + type: boolean + description: > + When this attribute is included and set to true, it indicates that the access stratum + time distribution via Uu reference point is activated. + timeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + tempValidity: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + clkQltDetLvl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityDetailLevel' + clkQltAcptCri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityAcceptanceCriterion' + + StatusRequestData: + description: > + Contains the parameters for retrieval of the status of the access stratum time distribution + for a list of UEs. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + oneOf: + - required: [supis] + - required: [gpsis] + + StatusResponseData: + description: > + Contains the parameters for the status of the access stratum time distribution for a list of + UEs. + type: object + properties: + inactiveUes: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + inactiveGpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + activeUes: + type: array + items: + $ref: '#/components/schemas/ActiveUe' + minItems: 1 + + ActiveUe: + description: > + Contains the UE identifier whose status of the access stratum time distribution is active + and the optional requested time synchronization error budget. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + timeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + oneOf: + - required: [supi] + - required: [gpsi] + + AstiConfigNotification: + description: > + Contains the report of a change in the 5G Access Stratum Time Distribution + parameters applied to the UE(s). + type: object + properties: + astiNotifId: + type: string + stateOfAstiConfigs: + type: array + items: + $ref: '#/components/schemas/AstiConfigStateNotification' + minItems: 1 + description: > + It is FFS the parameters of the AstiConfigEventNotification data type. + required: + - astiNotifId + - stateOfAstiConfigs + + AstiConfigStateNotification: + description: > + Contains the report of a change in the 5G Access Stratum Time Distribution + parameters applied to a UE. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + event: + $ref: '#/components/schemas/AstiEvent' + required: + - event + oneOf: + - required: [supi] + - required: [gpsi] +# +# ENUMERATIONS DATA TYPES +# + AstiEvent: + anyOf: + - type: string + enum: + - ASTI_ENABLED + - ASTI_DISABLED + - CLOCK_QUAL_ACCEPTABLE + - CLOCK_QUAL_NON_ACCEPTABLE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents an ASTI event to notify to the AF/NEF. + Possible values are: + - ASTI_ENABLED: Access stratum time distribution via Uu reference point is activated. + - ASTI_DISABLED: Access stratum time distribution via Uu reference point is deactivated. + - CLOCK_QUAL_ACCEPTABLE: The UE meets the clock quality acceptance criteria. + - CLOCK_QUAL_NON_ACCEPTABLE: The UE does not meet the clock quality acceptance criteria. diff --git a/TS29565_Ntsctsf_QoSandTSCAssistance.yaml b/TS29565_Ntsctsf_QoSandTSCAssistance.yaml new file mode 100644 index 0000000..9932b9f --- /dev/null +++ b/TS29565_Ntsctsf_QoSandTSCAssistance.yaml @@ -0,0 +1,874 @@ +openapi: 3.0.0 + +info: + title: Ntsctsf_QoSandTSCAssistance Service API + version: 1.1.0-alpha.4 + description: | + TSCTSF QoS and TSC Assistance Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.565 V18.3.0; 5G System; Time Sensitive Communication and Time Synchronization function + Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.565/' + +servers: + - url: '{apiRoot}/ntsctsf-qos-tscai/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - ntsctsf-qos-tscai + +paths: + /tsc-app-sessions: + post: + summary: Creates a new Individual TSC Application Session Context resource + operationId: PostTSCAppSessions + tags: + - TSC Application Sessions (Collection) + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TscAppSessionContextData' + responses: + '201': + description: Successful creation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/TscAppSessionContextData' + headers: + Location: + description: > + Contains the URI of the created individual TSC application session context resource, + according to the structure + {apiRoot}/ntsctsf-qos-tscai//tsc-app-sessions/{appSessionId} or the + URI of the created events subscription sub-resource, according to the structure + {apiRoot}/ntsctsf-qos-tscai//tsc-app-sessions/{appSessionId}/ + events-subscription} + required: true + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsTsctsfQosTscac' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + type: string + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + terminationRequest: + '{$request.body#/notifUri}/terminate': + post: + requestBody: + description: > + Request of the termination of the Individual TSC Application Session Context + required: true + content: + application/json: + schema: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TerminationInfo' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + eventNotification: + '{$request.body#/evSubsc/notifUri}/notify': + post: + requestBody: + description: Notification of an event occurrence in the TSCTSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /tsc-app-sessions/{appSessionId}: + get: + summary: Reads an existing Individual TSC Application Session Context + operationId: GetTSCAppSession + tags: + - Individual TSC Application Session Context (Document) + parameters: + - name: appSessionId + description: String identifying the resource. + in: path + required: true + schema: + type: string + responses: + '200': + description: A representation of the resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TscAppSessionContextData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Modifies an existing Individual TSC Application Session Context + operationId: ModAppSession + tags: + - Individual TSC Application Session Context (Document) + parameters: + - name: appSessionId + description: String identifying the resource. + in: path + required: true + schema: + type: string + requestBody: + description: Modification of the resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/TscAppSessionContextUpdateData' + responses: + '200': + description: > + successful modification of the resource and a representation of that resource is + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TscAppSessionContextData' + '204': + description: The successful modification. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsTsctsfQosTscac' + headers: + Retry-After: + description: > + Indicates the time the AF has to wait before making a new request. It can be a + non-negative integer (decimal number) indicating the number of seconds the AF + has to wait before making a new request or an HTTP-date after which the AF can + retry a new request. + schema: + type: string + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + eventNotification: + '{$request.body#/evSubsc/notifUri}/notify': + post: + requestBody: + description: Notification of an event occurrence in the TSCTSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /tsc-app-sessions/{appSessionId}/delete: + post: + summary: Deletes an existing Individual TSC Application Session Context + operationId: DeleteTSCAppSession + tags: + - Individual TSC Application Session Context (Document) + parameters: + - name: appSessionId + description: String identifying the Individual TSC Application Session Context resource. + in: path + required: true + schema: + type: string + requestBody: + description: > + Deletion of the Individual TSC Application Session Context resource, request notification. + required: false + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + responses: + '200': + description: The deletion of the resource is confirmed and a resource is returned + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + '204': + description: The deletion is confirmed without returning additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /tsc-app-sessions/{appSessionId}/events-subscription: + put: + summary: Creates or modifies an Events Subscription subresource + operationId: putEventsSubsc + tags: + - Events Subscription (Document) + parameters: + - name: appSessionId + description: String identifying the Events Subscription resource + in: path + required: true + schema: + type: string + requestBody: + description: Creation or modification of an Events Subscription resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + responses: + '201': + description: > + The creation of the Events Subscription resource is confirmed and its representation is + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + headers: + Location: + description: > + Contains the URI of the created Events Subscription resource, + according to the structure + {apiRoot}/ntsctsf-qos-tscai//tsc-app-sessions/{appSessionId}/ + events-subscription} + required: true + schema: + type: string + '200': + description: > + The modification of the Events Subscription resource is confirmed and its representation + is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/EventsSubscReqData' + '204': + description: > + The modification of the Events Subscription subresource is confirmed without returning + additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + eventNotification: + '{$request.body#/notifUri}/notify': + post: + requestBody: + description: > + Contains the information for the notification of an event occurrence in the TSCTSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EventsNotification' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes the Events Subscription subresource. + operationId: DeleteEventsSubsc + tags: + - Events Subscription (Document) + parameters: + - name: appSessionId + description: String identifying the Individual TSC Application Session Context resource + in: path + required: true + schema: + type: string + responses: + '204': + description: > + The deletion of the of the Events Subscription sub-resource is confirmed without returning + additional data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ntsctsf-qos-tscai: Access to the Ntsctsf_QoSandTSCAssistance API + + schemas: + TscAppSessionContextData: + description: Represents an Individual TSC Application Session Context resource. + type: object + required: + - notifUri + - afId + - qosReference + allOf: + - oneOf: + - required: [ueIpAddr] + - required: [ueMac] + - required: [ueId] + - required: [externalGroupId] + - not: + required: [ethFlowInfo, enEthFlowInfo] + - not: + required: [altQosReqs, altQosReferences] + - not: + required: [qosReference, altQosReqs] + properties: + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ipDomain: + type: string + description: The IPv4 address domain identifier. + ueMac: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + ueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + externalGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + appId: + type: string + description: Identifies the Application Identifier. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + enEthFlowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/EthFlowInfo' + minItems: 1 + description: > + Identifies the Ethernet flows which require QoS. Each Ethernet flow consists of a flow + identifer and the corresponding UL and/or DL flows. + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + afId: + type: string + description: Identifies the AF identifier. + tscQosReq: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/TscQosRequirement' + qosReference: + type: string + description: Identifies a pre-defined QoS information. + altQosReferences: + type: array + items: + type: string + minItems: 1 + description: Identifies an ordered list of pre-defined QoS information. + altQosReqs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Identifies an ordered list of alternative service requirements that include individual + QoS parameter sets. The lower the index of the array for a given entry, the higher the + priority. + aspId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId' + sponId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/SponId' + sponStatus: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/SponsoringStatus' + evSubsc: + $ref: '#/components/schemas/EventsSubscReqData' + tempInValidity: + $ref: '#/components/schemas/TemporalInValidity' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + TscAppSessionContextUpdateData: + description: > + Describes the authorization data of an Individual TSC Application Session Context created by + the PCF. + type: object + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + appId: + type: string + description: Identifies the Application Identifier. + ethFlowInfo: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/EthFlowDescription' + minItems: 1 + enEthFlowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/EthFlowInfo' + minItems: 1 + description: > + Identifies the Ethernet flows which require QoS. Each Ethernet flow consists of a flow + identifer and the corresponding UL and/or DL flows. + flowInfo: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + minItems: 1 + tscQosReq: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/TscQosRequirementRm' + qosReference: + type: string + description: Identifies a pre-defined QoS information. + altQosReferences: + type: array + items: + type: string + minItems: 1 + description: Identifies an ordered list of pre-defined QoS information. + altQosReqs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AlternativeServiceRequirementsData' + minItems: 1 + description: > + Identifies an ordered list of alternative service requirements that include individual + QoS parameter sets. The lower the index of the array for a given entry, the higher the + priority. + aspId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AspId' + sponId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/SponId' + sponStatus: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/SponsoringStatus' + evSubsc: + $ref: '#/components/schemas/EventsSubscReqDataRm' + tempInValidity: + $ref: '#/components/schemas/TemporalInValidity' + allOf: + - not: + required: [ethFlowInfo, enEthFlowInfo] + - not: + required: [altQosReqs, altQosReferences] + - not: + required: [qosReference, altQosReqs] + + EventsSubscReqData: + description: Identifies the events the application subscribes to. + type: object + required: + - events + - notifUri + - notifCorreId + properties: + events: + type: array + items: + $ref: '#/components/schemas/TscEvent' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + qosMon: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/QosMonitoringInformation' + usgThres: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThreshold' + notifCorreId: + type: string + + EventsSubscReqDataRm: + description: > + This data type is defined in the same way as the EventsSubscReqData data type, but with the + OpenAPI nullable property set to true. + type: object + required: + - events + properties: + events: + type: array + items: + $ref: '#/components/schemas/TscEvent' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + qosMon: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/QosMonitoringInformationRm' + usgThres: + $ref: 'TS29122_CommonData.yaml#/components/schemas/UsageThresholdRm' + notifCorreId: + type: string + nullable: true + + EventsNotification: + description: Describes the notification of matched events. + type: object + required: + - notifCorreId + - events + properties: + notifCorreId: + type: string + events: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + + EventNotification: + description: Describes a notification of an matched event. + type: object + required: + - event + properties: + event: + $ref: '#/components/schemas/TscEvent' + flowIds: + type: array + items: + type: integer + minItems: 1 + description: Identifies the IP flows that were sent during event subscription. + qosMonReports: + type: array + items: + $ref: 'TS29122_AsSessionWithQoS.yaml#/components/schemas/QosMonitoringReport' + minItems: 1 + usgRep: + $ref: 'TS29122_CommonData.yaml#/components/schemas/AccumulatedUsage' + appliedQosRef: + type: string + description: > + The currently applied alternative QoS requirement referring to an alternative QoS + reference or a requested alternative QoS parameter set. Applicable for + event QOS_NOT_GUARANTEED or SUCCESSFUL_RESOURCES_ALLOCATION. + altQosNotSuppInd: + type: boolean + description: > + When present and set to true it indicates that the Alternative QoS profiles are not + supported by NG-RAN. Applicable for + event QOS_NOT_GUARANTEED or SUCCESSFUL_RESOURCES_ALLOCATION. + + AdditionInfoTsctsfQosTscac: + description: Describes additional error information specific for this API. + type: object + properties: + acceptableServInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AcceptableServiceInfo' + batOffsetInfo: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/BatOffsetInfo' + + TemporalInValidity: + description: Indicates the time interval(s) during which the AF request is not to be applied. + type: object + properties: + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - startTime + - stopTime + +# +# ENUMERATIONS DATA TYPES +# + TscEvent: + description: Represents an event to notify to the AF. + anyOf: + - type: string + enum: + - FAILED_RESOURCES_ALLOCATION + - QOS_MONITORING + - QOS_GUARANTEED + - QOS_NOT_GUARANTEED + - SUCCESSFUL_RESOURCES_ALLOCATION + - USAGE_REPORT + - BAT_OFFSET_INFO + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. +# +# ALTERNATIVE DATA TYPES OR COMBINATIONS OF DATA TYPES +# + ProblemDetailsTsctsfQosTscac: + description: Extends ProblemDetails to also include the acceptable service info. + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoTsctsfQosTscac' diff --git a/TS29565_Ntsctsf_TimeSynchronization.yaml b/TS29565_Ntsctsf_TimeSynchronization.yaml new file mode 100644 index 0000000..c7730b0 --- /dev/null +++ b/TS29565_Ntsctsf_TimeSynchronization.yaml @@ -0,0 +1,834 @@ +openapi: 3.0.0 + +info: + title: Ntsctsf_TimeSynchronization Service API + version: 1.1.0-alpha.5 + description: | + TSCTSF Time Synchronization Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.565 V18.4.0; 5G System; Time Sensitive Communication and Time Synchronization Function + Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.565/' +servers: + - url: '{apiRoot}/ntsctsf-time-sync/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - ntsctsf-time-sync + +paths: + /subscriptions: + post: + summary: Creates a new subscription to notification of capability of time synchronization service resource + operationId: TimeSynchronizationExposureSubscriptions + tags: + - Time Synchronization Exposure Subscriptions (Collection) + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + responses: + '201': + description: Successful creation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + headers: + Location: + description: > + Contains the URI of the created individual time synchronization exposure + subscription resource, according to the structure + {apiRoot}/ntsctsf-time-sync/{apiVersion}/subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + subsEventNotification: + '{$request.body#/subsNotifUri': + post: + requestBody: + description: Notification of an event occurrence in the TSCTSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsNotif' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: "Reads an existing Individual Time Synchronization Exposure Subscription" + operationId: GetIndividualTimeSynchronizationExposureSubscription + tags: + - Individual Time Synchronization Exposure Subscription (Document) + parameters: + - name: subscriptionId + description: String identifying an Individual Time Synchronization Exposure Subscription + in: path + required: true + schema: + type: string + responses: + '200': + description: A representation of the resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + operationId: ReplaceIndividualTimeSynchronizationExposureSubscription + summary: Replace an individual Time Synchronization Exposure Subscription + tags: + - IndividualTimeSynchronizationExposureSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/TimeSyncExposureSubsc' + parameters: + - name: subscriptionId + description: String identifying an Individual Time Synchronization Exposure Subscription. + in: path + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was successfully modified and representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureSubsc' + '204': + description: No Content. Resource was successfully modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualTimeSynchronizationExposureSubscription + summary: Delete an Individual TimeSynchronization Exposure Subscription + tags: + - Individual Time Synchronization Exposure Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying an Individual Time Synchronization Exposure Subscription. + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}/configurations: + post: + summary: "Craete a new Individual Time Synchronization Exposure Configuration" + operationId: CreateIndividualTimeSynchronizationExposureConfiguration + tags: + - Individual Time Synchronization Exposure Configuration (Document) + parameters: + - name: subscriptionId + description: String identifying an Individual Time Synchronization Exposure Subscription. + in: path + required: true + schema: + type: string + requestBody: + description: Contains the information for the creation the resource. + required: true + content: + application/json: + schema: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/TimeSyncExposureConfig' + responses: + '201': + description: Successful creation of the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + headers: + Location: + description: > + Contains the URI of the created individual time synchronization exposure + configuration resource, according to the structure + {apiRoot}/ntsctsf-time-sync/{apiVersion}/subscriptions/{subscriptionId} + /configurations/{configurationId} + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + configEventNotification: + '{$request.body#/configNotifUri': + post: + requestBody: + description: Notification of an event occurrence in the TSCTSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfigNotif' + responses: + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}/configurations/{configurationId}: + get: + summary: "Reads an existing Individual Time Synchronization Exposure Configuration" + operationId: GetIndividualTimeSynchronizationExposureConfiguration + tags: + - Individual Time Synchronization Exposure Configuration (Document) + parameters: + - name: subscriptionId + description: String identifying an Individual Time Synchronization Exposure Subscription. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying an Individual Time Synchronization Exposure Configuration. + in: path + required: true + schema: + type: string + responses: + '200': + description: A representation of the resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + operationId: ReplaceIndividualTimeSynchronizationExposureConfiguration + summary: Replace an individual Time Synchronization Exposure Configuration + tags: + - IndividualTimeSynchronizationExposureConfiguration (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/TimeSyncExposureConfig' + parameters: + - name: subscriptionId + description: String identifying an Individual Time Synchronization Exposure Subscription. + in: path + required: true + schema: + type: string + - name: configurationId + description: String identifying an Individual Time Synchronization Exposure Configuration. + in: path + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was successfully modified and representation is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/TimeSyncExposureConfig' + '204': + description: No Content. Resource was successfully modified. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + operationId: DeleteIndividualTimeSynchronizationExposureConfiguration + summary: Delete an Individual TimeSynchronization Exposure Configuration + tags: + - Individual Time Synchronization Exposure Configuration (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying an Individual Time Synchronization Exposure Subscription. + required: true + schema: + type: string + - name: configurationId + description: String identifying an Individual Time Synchronization Exposure Configuration. + in: path + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was successfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ntsctsf-timesynchronization: Access to the Ntsctsf_TimeSynchronization API + + schemas: + TimeSyncExposureSubsc: + description: > + Contains the parameters for the subscription to notification of capability of time + synchronization service. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + gpsis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + minItems: 1 + interGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + exterGrpId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + anyUeInd: + type: boolean + description: > + Identifies whether the request applies to any UE. This attribute shall set to "true" if + applicable for any UE, otherwise, set to "false". + notifMethod: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NotificationMethod' + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + subscribedEvents: + type: array + items: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/SubscribedEvent' + minItems: 1 + eventFilters: + type: array + items: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/EventFilter' + minItems: 1 + subsNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + subsNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + maxReportNbr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + repPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - subsNotifUri + - subsNotifId + - dnn + - snssai + - subscribedEvents + oneOf: + - required: [supis] + - required: [interGrpId] + - required: [gpsis] + - required: [exterGrpId] + - required: [anyUeInd] + + TimeSyncExposureSubsNotif: + description: Contains the notification of time synchronization service. + type: object + properties: + subsNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + eventNotifs: + type: array + items: + $ref: '#/components/schemas/SubsEventNotification' + minItems: 1 + + SubsEventNotification: + description: > + Contains the notification of capability of time synchronization for a list of UEs. + type: object + properties: + event: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/SubscribedEvent' + timeSyncCapas: + type: array + items: + $ref: '#/components/schemas/TimeSyncCapability' + minItems: 1 + required: + - event + + TimeSyncCapability: + description: Contains the capability of time synchronization service. + type: object + properties: + upNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + gmCapables: + type: array + items: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/GmCapable' + minItems: 1 + asTimeRes: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/AsTimeResource' + ptpCapForUes: + type: object + additionalProperties: + $ref: '#/components/schemas/PtpCapabilitiesPerUe' + minProperties: 1 + description: > + Contains the PTP capabilities supported by each of the SUPI(s). The key of the map is the + SUPI. + ptpCapForGpsis: + type: object + additionalProperties: + $ref: '#/components/schemas/PtpCapabilitiesPerUe' + minProperties: 1 + description: > + Contains the PTP capabilities supported by each of the GPSI(s). The key of the map is + the GPSI. + required: + - upNodeId + anyOf: + - required: [gmCapables] + - required: [asTimeRes] + + PtpCapabilitiesPerUe: + description: Contains the supported PTP capabilities per UE. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ptpCaps: + type: array + items: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/EventFilter' + minItems: 1 + required: + - ptpCaps + oneOf: + - required: [supi] + - required: [gpsi] + + TimeSyncExposureConfigNotif: + description: Contains the notification of time synchronization service state. + type: object + properties: + configNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + stateOfConfig: + $ref: '#/components/schemas/StateOfConfiguration' + required: + - configNotifId + - stateOfConfig + + StateOfConfiguration: + description: > + Contains the state of the time synchronization configuration and the clock quality + acceptance criteria result. + type: object + properties: + stateNwtt: + type: boolean + description: > + When any of the PTP port state(s)in NW-TT is Leader, Follower or Passive, it is + included and set to trueto indicate the current state of the time synchronization + configuration for the NW-TT port(s) of the PTP instance is active; when + PTP port state isin any other case, it is included and set to false to indicate + the state ofconfiguration for the NW-TT port(s) of the PTP instance + is inactive. Default value is false. + stateOfDstts: + description: > + Contains the PTP port states and the clock quality acceptance criteria result of the + DS-TT(s). + type: array + items: + $ref: '#/components/schemas/StateOfDstt' + minItems: 1 + + StateOfDstt: + description: Contains the PTP port state of a DS-TT. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + state: + type: boolean + description: > + When the PTP port state is Leader, Follower or Passive, it is included and set to true + to indicate the state of configuration for DS-TT port is active; when PTP port state is + in any other case, it is included and set to false to indicate the state of + configuration for DS-TT port is inactive. Default value is false. + clkQltIndOfDstts: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/AcceptanceCriteriaResultIndication' + required: + - state + oneOf: + - required: [supi] + - required: [gpsi] + + TimeSyncExposureConfig: + description: Contains the Time Synchronization Configuration parameters. + type: object + properties: + upNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + reqPtpIns: + $ref: '#/components/schemas/PtpInstance' + gmEnable: + type: boolean + description: > + Indicates that the AF requests 5GS to act as a grandmaster for PTP or gPTP if it is + included and set to true. + gmPrio: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeDom: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + timeSyncErrBdgt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + configNotifId: + type: string + description: Notification Correlation ID assigned by the NF service consumer. + configNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tempValidity: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/TemporalValidity' + covReq: + type: array + description: > + Identifies a list of Tracking Areas per serving network where time + synchronization service configuration is allowed. + items: + $ref: 'TS29534_Npcf_AMPolicyAuthorization.yaml#/components/schemas/ServiceAreaCoverageInfo' + minItems: 1 + clkQltDetLvl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityDetailLevel' + clkQltAcptCri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ClockQualityAcceptanceCriterion' + required: + - upNodeId + - reqPtpIns + - timeDom + - configNotifId + - configNotifUri + + PtpInstance: + description: Contains PTP instance configuration and activation requested by the AF. + type: object + properties: + instanceType: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/InstanceType' + protocol: + $ref: 'TS29522_TimeSyncExposure.yaml#/components/schemas/Protocol' + ptpProfile: + type: string + portConfigs: + type: array + items: + $ref: '#/components/schemas/ConfigForPort' + minItems: 1 + required: + - instanceType + - protocol + - ptpProfile + + ConfigForPort: + description: Contains configuration for each port. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + n6Ind: + type: boolean + ptpEnable: + type: boolean + logSyncInter: + type: integer + logSyncInterInd: + type: boolean + logAnnouInter: + type: integer + logAnnouInterInd: + type: boolean + oneOf: + - required: [supi] + - required: [gpsi] + - required: [n6Ind] diff --git a/TS29571_CommonData.yaml b/TS29571_CommonData.yaml new file mode 100644 index 0000000..12e67e6 --- /dev/null +++ b/TS29571_CommonData.yaml @@ -0,0 +1,6274 @@ +openapi: 3.0.0 + +info: + version: '1.5.0-alpha.5' + + + title: 'Common Data Types' + description: | + Common Data Types for Service Based Interfaces. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.571 Common Data Types for Service Based Interfaces, version 18.4.0 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.571/' + +paths: {} +components: + schemas: + +# +# Common Data Types for Generic usage definitions as defined in clause 5.2 +# + +# +# COMMON SIMPLE DATA TYPES +# + Binary: + format: binary + type: string + description: string with format 'binary' as defined in OpenAPI. + + BinaryRm: + format: binary + type: string + nullable: true + description: "string with format 'binary' as defined in OpenAPI OpenAPI with 'nullable: true' property." + + Bytes: + format: byte + type: string + description: string with format 'bytes' as defined in OpenAPI + + BytesRm: + format: byte + type: string + nullable: true + description: > + string with format 'bytes' as defined in OpenAPI OpenAPI with 'nullable: true' property. + + Date: + format: date + type: string + description: string with format 'date' as defined in OpenAPI. + + DateRm: + format: date + type: string + nullable: true + description: > + string with format 'date' as defined in OpenAPI OpenAPI with 'nullable: true' property. + + DateTime: + format: date-time + type: string + description: string with format 'date-time' as defined in OpenAPI. + + DateTimeRm: + format: date-time + type: string + nullable: true + description: > + string with format 'date-time' as defined in OpenAPI with 'nullable:true' property. + + DiameterIdentity: + $ref: '#/components/schemas/Fqdn' + + DiameterIdentityRm: + $ref: '#/components/schemas/FqdnRm' + + Double: + format: double + type: number + description: string with format 'double' as defined in OpenAPI + + DoubleRm: + format: double + type: number + nullable: true + description: > + string with format 'double' as defined in OpenAPI with 'nullable: true' property. + + DurationSec: + type: integer + description: indicating a time in seconds. + + DurationSecRm: + type: integer + nullable: true + description: "indicating a time in seconds with OpenAPI defined 'nullable: true' property." + + Float: + format: float + type: number + description: string with format 'float' as defined in OpenAPI. + + FloatRm: + format: float + type: number + nullable: true + description: > + string with format 'float' as defined in OpenAPI with the OpenAPI defined + 'nullable: true' property. + + Int32: + format: int32 + type: integer + description: string with format 'int32' as defined in OpenAPI. + + Int32Rm: + format: int32 + type: integer + nullable: true + description: > + string with format 'int32' as defined in OpenAPI with the OpenAPI defined + 'nullable: true' property. + + Int64: + type: integer + format: int64 + description: string with format 'int64' as defined in OpenAPI. + + Int64Rm: + format: int64 + type: integer + nullable: true + description: > + string with format 'int64' as defined in OpenAPI with the OpenAPI defined + 'nullable: true' property. + + Ipv4Addr: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$' + example: '198.51.100.1' + description: > + String identifying a IPv4 address formatted in the 'dotted decimal' notation + as defined in RFC 1166. + + Ipv4AddrRm: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$' + example: '198.51.100.1' + nullable: true + description: > + String identifying a IPv4 address formatted in the 'dotted decimal' notation + as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property. + + Ipv4AddrMask: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$' + example: '198.51.0.0/16' + description: > + "String identifying a IPv4 address mask formatted in the 'dotted decimal' notation + as defined in RFC 1166." + + Ipv4AddrMaskRm: + type: string + pattern: '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])(\/([0-9]|[1-2][0-9]|3[0-2]))$' + example: '198.51.0.0/16' + nullable: true + description: > + String identifying a IPv4 address mask formatted in the 'dotted decimal' notation + as defined in RFC 1166 with the OpenAPI defined 'nullable: true' property. + + Ipv6Addr: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$' + example: '2001:db8:85a3::8a2e:370:7334' + description: > + String identifying an IPv6 address formatted according to clause 4 of RFC5952. + The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used. + + Ipv6AddrRm: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))$' + example: '2001:db8:85a3::8a2e:370:7334' + nullable: true + description: > + String identifying an IPv6 address formatted according to clause 4 of RFC5952 with the + OpenAPI 'nullable: true' property. + The mixed IPv4 IPv6 notation according to clause 5 of RFC5952 shall not be used. + + Ipv6Prefix: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$' + example: '2001:db8:abcd:12::0/64' + description: > + String identifying an IPv6 address prefix formatted according to clause 4 of RFC 5952. + IPv6Prefix data type may contain an individual /128 IPv6 address. + + Ipv6PrefixRm: + type: string + allOf: + - pattern: '^((:|(0?|([1-9a-f][0-9a-f]{0,3}))):)((0?|([1-9a-f][0-9a-f]{0,3})):){0,6}(:|(0?|([1-9a-f][0-9a-f]{0,3})))(\/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))$' + - pattern: '^((([^:]+:){7}([^:]+))|((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?))(\/.+)$' + nullable: true + description: > + String identifying an IPv6 address prefix formatted according to clause 4 of RFC 5952 with + the OpenAPI 'nullable: true' property. IPv6Prefix data type may contain an individual + /128 IPv6 address. + + MacAddr48: + type: string + pattern: '^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$' + description: > + String identifying a MAC address formatted in the hexadecimal notation + according to clause 1.1 and clause 2.1 of RFC 7042. + + MacAddr48Rm: + type: string + pattern: '^([0-9a-fA-F]{2})((-[0-9a-fA-F]{2}){5})$' + nullable: true + description: > + "String identifying a MAC address formatted in the hexadecimal notation according to + clause 1.1 and clause 2.1 of RFC 7042 with the OpenAPI 'nullable: true' property." + + SupportedFeatures: + type: string + pattern: '^[A-Fa-f0-9]*$' + description: > + A string used to indicate the features supported by an API that is used as defined in clause + 6.6 in 3GPP TS 29.500. The string shall contain a bitmask indicating supported features in + hexadecimal representation Each character in the string shall take a value of "0" to "9", + "a" to "f" or "A" to "F" and shall represent the support of 4 features as described in + table 5.2.2-3. The most significant character representing the highest-numbered features + shall appear first in the string, and the character representing features 1 to 4 + shall appear last in the string. The list of features and their numbering (starting with 1) + are defined separately for each API. If the string contains a lower number of characters + than there are defined features for an API, all features that would be represented by + characters that are not present in the string are not supported. + + Uinteger: + type: integer + minimum: 0 + description: Unsigned Integer, i.e. only value 0 and integers above 0 are permissible. + + UintegerRm: + type: integer + minimum: 0 + description: > + Unsigned Integer, i.e. only value 0 and integers above 0 are permissible with + the OpenAPI 'nullable: true' property. + nullable: true + + Uint16: + type: integer + minimum: 0 + maximum: 65535 + description: > + Integer where the allowed values correspond to the value range of an + unsigned 16-bit integer. + + Uint16Rm: + type: integer + minimum: 0 + maximum: 65535 + nullable: true + description: > + Integer where the allowed values correspond to the value range of an unsigned + 16-bit integer with the OpenAPI 'nullable: true' property. + + Uint32: + type: integer + minimum: 0 + maximum: 4294967295 #(2^32)-1 + description: > + Integer where the allowed values correspond to the value range of an unsigned + 32-bit integer. + + Uint32Rm: + format: int32 + type: integer + minimum: 0 + maximum: 4294967295 #(2^32)-1 + nullable: true + description: > + Integer where the allowed values correspond to the value range of an unsigned + 32-bit integer with the OpenAPI 'nullable: true' property. + + Uint64: + type: integer + minimum: 0 + maximum: 18446744073709551615 #(2^64)-1 + description: > + Integer where the allowed values correspond to the value range of an + unsigned 64-bit integer. + + Uint64Rm: + type: integer + minimum: 0 + maximum: 18446744073709551615 #(2^64)-1 + nullable: true + description: > + Integer where the allowed values correspond to the value range of an unsigned + 16-bit integer with the OpenAPI 'nullable: true' property. + + Uri: + type: string + description: String providing an URI formatted according to RFC 3986. + + UriRm: + type: string + nullable: true + description: > + String providing an URI formatted according to RFC 3986 with the OpenAPI + 'nullable: true' property. + + VarUeId: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|gci-.+|gli-.+|.+)$' + description: String represents the SUPI or GPSI + + VarUeIdRm: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|gci-.+|gli-.+|.+)$' + nullable: true + description: "String represents the SUPI or GPSI with the OpenAPI 'nullable: true' property." + + TimeZone: + type: string + example: '-08:00+1' + description: | + String with format "time-numoffset" optionally appended by "daylightSavingTime", where + - "time-numoffset" shall represent the time zone adjusted for daylight saving time and be + encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339; + - "daylightSavingTime" shall represent the adjustment that has been made and shall be + encoded as "+1" or "+2" for a +1 or +2 hours adjustment. + + The example is for 8 hours behind UTC, +1 hour adjustment for Daylight Saving Time. + + TimeZoneRm: + type: string + nullable: true + description: | + "String with format 'time-numoffset' optionally appended by '', where + - 'time-numoffset' shall represent the time zone adjusted for daylight saving time and be + encoded as time-numoffset as defined in clause 5.6 of IETF RFC 3339; + - 'daylightSavingTime' shall represent the adjustment that has been made and shall be + encoded as '+1' or '+2' for a +1 or +2 hours adjustment. + + But with the OpenAPI 'nullable: true' property." + + StnSr: + type: string + description: String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003. + + StnSrRm: + type: string + nullable: true + description: > + String representing the STN-SR as defined in clause 18.6 of 3GPP TS 23.003 + with the OpenAPI 'nullable: true' property. + + CMsisdn: + type: string + pattern: '^[0-9]{5,15}$' + description: String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003. + + CMsisdnRm: + type: string + pattern: '^[0-9]{5,15}$' + nullable: true + description: > + String representing the C-MSISDN as defined in clause 18.7 of 3GPP TS 23.003 with + the OpenAPI 'nullable: true' property. + + DayOfWeek: + type: integer + minimum: 1 + maximum: 7 + description: > + integer between and including 1 and 7 denoting a weekday. 1 shall indicate Monday, + and the subsequent weekdays shall be indicated with the next higher numbers. + 7 shall indicate Sunday. + + TimeOfDay: + type: string + description: > + String with format partial-time or full-time as defined in clause 5.6 of IETF RFC 3339. + Examples, 20:15:00, 20:15:00-08:00 (for 8 hours behind UTC). + + EmptyObject: + description: Empty JSON object { }, it is defined with the keyword additionalProperties false + type: object + additionalProperties: false + + Fqdn: + description: Fully Qualified Domain Name + type: string + pattern: '^([0-9A-Za-z]([-0-9A-Za-z]{0,61}[0-9A-Za-z])?\.)+[A-Za-z]{2,63}\.?$' + minLength: 4 + maxLength: 253 + + FqdnRm: + description: Fully Qualified Domain Name, but it also allows the null value + anyOf: + - $ref: '#/components/schemas/Fqdn' + - $ref: '#/components/schemas/NullValue' + +# +# COMMON ENUMERATED DATA TYPES +# + + PatchOperation: + anyOf: + - type: string + enum: + - add + - copy + - move + - remove + - replace + - test + - type: string + description: Operations as defined in IETF RFC 6902. + + UriScheme: + anyOf: + - type: string + enum: + - http + - https + - type: string + description: HTTP and HTTPS URI scheme. + + ChangeType: + anyOf: + - type: string + enum: + - ADD + - MOVE + - REMOVE + - REPLACE + - type: string + description: Indicates the type of change to be performed. + + HttpMethod: + anyOf: + - type: string + enum: + - GET + - POST + - PUT + - DELETE + - PATCH + - OPTIONS + - HEAD + - CONNECT + - TRACE + - type: string + description: HTTP methodes. + + NullValue: + enum: + - null + description: JSON's null value. + + + MatchingOperator: + anyOf: + - type: string + enum: + - FULL_MATCH + - MATCH_ALL + - STARTS_WITH + - NOT_START_WITH + - ENDS_WITH + - NOT_END_WITH + - CONTAINS + - NOT_CONTAIN + - type: string + description: the matching operation. + +# +# COMMON STRUCTURED DATA TYPES +# + + ProblemDetails: + description: Provides additional information in an error response. + type: object + properties: + type: + $ref: '#/components/schemas/Uri' + title: + type: string + status: + type: integer + detail: + type: string + description: A human-readable explanation specific to this occurrence of the problem. + instance: + $ref: '#/components/schemas/Uri' + cause: + type: string + description: > + A machine-readable application error cause specific to this occurrence of the problem. + This IE should be present and provide application-related error information, if + available. + invalidParams: + type: array + items: + $ref: '#/components/schemas/InvalidParam' + minItems: 1 + supportedFeatures: + $ref: '#/components/schemas/SupportedFeatures' + accessTokenError: + $ref: 'TS29510_Nnrf_AccessToken.yaml#/components/schemas/AccessTokenErr' + accessTokenRequest: + $ref: 'TS29510_Nnrf_AccessToken.yaml#/components/schemas/AccessTokenReq' + nrfId: + $ref: '#/components/schemas/Fqdn' + supportedApiVersions: + type: array + items: + type: string + minItems: 1 + + Link: + type: object + properties: + href: + $ref: '#/components/schemas/Uri' + description: It contains the URI of the linked resource. + + LinkRm: + type: object + properties: + href: + $ref: '#/components/schemas/Uri' + nullable: true + description: > + It contains the URI of the linked resource with the OpenAPI 'nullable: true' property. + + PatchItem: + type: object + properties: + op: + $ref: '#/components/schemas/PatchOperation' + path: + type: string + description: > + contains a JSON pointer value (as defined in IETF RFC 6901) that references + a location of a resource on which the patch operation shall be performed. + from: + type: string + description: > + indicates the path of the source JSON element (according to JSON Pointer syntax) + being moved or copied to the location indicated by the "path" attribute. + value: {} + required: + - op + - path + description: it contains information on data to be changed. + + LinksValueSchema: + oneOf: + - type: array + items: + $ref: '#/components/schemas/Link' + minItems: 1 + - $ref: '#/components/schemas/Link' + description: A list of mutually exclusive alternatives of 1 or more links. + + SelfLink: + type: object + properties: + self: + $ref: '#/components/schemas/Link' + required: + - self + description: It contains the URI of the linked resource. + + InvalidParam: + type: object + properties: + param: + type: string + description: > + If the invalid parameter is an attribute in a JSON body, this IE shall contain the + attribute's name and shall be encoded as a JSON Pointer. If the invalid parameter is + an HTTP header, this IE shall be formatted as the concatenation of the string "header " + plus the name of such header. If the invalid parameter is a query parameter, this IE + shall be formatted as the concatenation of the string "query " plus the name of such + query parameter. If the invalid parameter is a variable part in the path of a resource + URI, this IE shall contain the name of the variable, including the symbols "{" and "}" + used in OpenAPI specification as the notation to represent variable path segments. + reason: + type: string + description: > + A human-readable reason, e.g. "must be a positive integer". In cases involving failed + operations in a PATCH request, the reason string should identify the operation that + failed using the operation's array index to assist in correlation of the invalid + parameter with the failed operation, e.g." Replacement value invalid for attribute + (failed operation index= 4)" + required: + - param + description: It contains an invalid parameter and a related description. + + ChangeItem: + type: object + properties: + op: + $ref: '#/components/schemas/ChangeType' + path: + type: string + description: > + contains a JSON pointer value (as defined in IETF RFC 6901) that references a target + location within the resource on which the change has been applied. + from: + type: string + description: > + indicates the path of the source JSON element (according to JSON Pointer syntax) + being moved or copied to the location indicated by the "path" attribute. It shall + be present if the "op" attribute is of value "MOVE". + origValue: {} + newValue: {} + required: + - op + - path + description: It contains data which need to be changed. + + NotifyItem: + type: object + required: + - resourceId + - changes + properties: + resourceId: + $ref: '#/components/schemas/Uri' + changes: + type: array + items: + $ref: '#/components/schemas/ChangeItem' + minItems: 1 + description: Indicates changes on a resource. + + ComplexQuery: + oneOf: + - $ref: '#/components/schemas/Cnf' + - $ref: '#/components/schemas/Dnf' + description: > + The ComplexQuery data type is either a conjunctive normal form or a disjunctive normal form. + The attribute names "cnfUnits" and "dnfUnits" (see clause 5.2.4.11 and clause 5.2.4.12) + serve as discriminator. + + Cnf: + type: object + required: + - cnfUnits + properties: + cnfUnits: + type: array + items: + $ref: '#/components/schemas/CnfUnit' + minItems: 1 + description: A conjunctive normal form + + Dnf: + type: object + required: + - dnfUnits + properties: + dnfUnits: + type: array + items: + $ref: '#/components/schemas/DnfUnit' + minItems: 1 + description: A disjunctive normal form. + + CnfUnit: + type: object + required: + - cnfUnit + properties: + cnfUnit: + type: array + items: + $ref: '#/components/schemas/Atom' + minItems: 1 + description: > + During the processing of cnfUnits attribute, all the members in the array shall be + interpreted as logically concatenated with logical "AND". + + DnfUnit: + type: object + required: + - dnfUnit + properties: + dnfUnit: + type: array + items: + $ref: '#/components/schemas/Atom' + minItems: 1 + description: > + During the processing of dnfUnits attribute, all the members in the array shall be + interpreted as logically concatenated with logical "OR". + + Atom: + description: contains a search parameter and its positive or negative content. + type: object + required: + - attr + - value + properties: + attr: + type: string + description: contains the name of a defined query parameter. + value: {} + negative: + type: boolean + description: indicates whether the negative condition applies for the query condition. + + PatchResult: + description: The execution report result on failed modification. + type: object + required: + - report + properties: + report: + type: array + items: + $ref: '#/components/schemas/ReportItem' + minItems: 1 + description: > + The execution report contains an array of report items. Each report item indicates one + failed modification. + + ReportItem: + type: object + required: + - path + properties: + path: + type: string + description: > + Contains a JSON pointer value (as defined in IETF RFC 6901) that references a + location of a resource to which the modification is subject. + reason: + type: string + description: > + A human-readable reason providing details on the reported modification failure. + The reason string should identify the operation that failed using the operation's + array index to assist in correlation of the invalid parameter with the failed + operation, e.g. "Replacement value invalid for attribute (failed operation index= 4)". + description: indicates performed modivications. + + HalTemplate: + description: > + Hypertext Application Language (HAL) template contains the extended 3GPP hypermedia format. + type: object + required: + - method + properties: + title: + type: string + description: A human-readable string that can be used to identify this template + method: + $ref: '#/components/schemas/HttpMethod' + contentType: + type: string + description: > + The media type that should be used for the corresponding request. If the attribute + is missing, or contains an unrecognized value, the client should act as if the + contentType is set to "application/json". + properties: + type: array + items: + $ref: '#/components/schemas/Property' + minItems: 1 + description: > + The properties that should be included in the body of the corresponding request. + If the contentType attribute is set to "application/json", then this attribute + describes the attributes of the JSON object of the body. + + Property: + description: > + If the contentType attribute is set to "application/json", then this attribute describes + the attributes of the JSON object of the body. + type: object + required: + - name + properties: + name: + type: string + description: The name of the property + required: + type: boolean + description: > + Indicates whether the property is required – true= required – + false(default)= not required. + regex: + type: string + description: A regular expression string to be applied to the value of the property. + value: + type: string + description: The property value. When present, it shall be a valid JSON string. + + RedirectResponse: + description: > + The response shall include a Location header field containing a different URI + (pointing to a different URI of an other service instance), or the same URI if a request + is redirected to the same target resource via a different SCP. + type: object + properties: + cause: + type: string + targetScp: + $ref: '#/components/schemas/Uri' + targetSepp: + $ref: '#/components/schemas/Uri' + + TunnelAddress: + description: Tunnel address + type: object + properties: + ipv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + portNumber: + $ref: '#/components/schemas/Uinteger' + required: + - portNumber + anyOf: + - required: [ ipv4Addr ] + - required: [ ipv6Addr ] + + + FqdnPatternMatchingRule: + description: a matching rule for a FQDN pattern + type: object + oneOf: + - required: [ regex ] + - required: [ stringMatchingRule ] + properties: + regex: + type: string + stringMatchingRule: + $ref: '#/components/schemas/StringMatchingRule' + + + StringMatchingRule: + description: A list of conditions for string matching + type: object + properties: + stringMatchingConditions: + type: array + items: + $ref: '#/components/schemas/StringMatchingCondition' + minItems: 1 + + StringMatchingCondition: + description: A String with Matching Operator + type: object + properties: + matchingString: + type: string + matchingOperator: + $ref: '#/components/schemas/MatchingOperator' + required: + - matchingOperator + + Ipv4AddressRange: + description: Range of IPv4 addresses + type: object + properties: + start: + $ref: '#/components/schemas/Ipv4Addr' + end: + $ref: '#/components/schemas/Ipv4Addr' + required: + - start + - end + + + Ipv6AddressRange: + description: Range of IPv6 addresses + type: object + properties: + start: + $ref: '#/components/schemas/Ipv6Addr' + end: + $ref: '#/components/schemas/Ipv6Addr' + required: + - start + - end + + Ipv6PrefixRange: + description: Range of IPv6 prefixes + type: object + properties: + start: + $ref: '#/components/schemas/Ipv6Prefix' + end: + $ref: '#/components/schemas/Ipv6Prefix' + required: + - start + - end + +# +# Data Types related to Subscription, Identification and Numbering as defined in clause 5.3 +# + +# +# SIMPLE DATA TYPES +# + Dnn: + type: string + description: > + String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; + it shall contain either a DNN Network Identifier, or a full DNN with both the Network + Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1 and 9.1.2. + It shall be coded as string in which the labels are separated by dots + (e.g. "Label1.Label2.Label3"). + DnnRm: + type: string + nullable: true + description: > + String representing a Data Network as defined in clause 9A of 3GPP TS 23.003; + it shall contain either a DNN Network Identifier, or a full DNN with both the + Network Identifier and Operator Identifier, as specified in 3GPP TS 23.003 clause 9.1.1 + and 9.1.2. It shall be coded as string in which the labels are separated by dots + (e.g. 'Label1.Label2.Label3') with the OpenAPI 'nullable: true' property. + + WildcardDnn: + type: string + pattern: '^[*]$' + description: String representing the Wildcard DNN. It shall contain the string "*". + + WildcardDnnRm: + type: string + pattern: '^[*]$' + nullable: true + description: > + String representing the Wildcard DNN. It shall contain the string '*' but with the + OpenAPI 'nullable: true' property. + + Gpsi: + type: string + pattern: '^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$' + description: > + String identifying a Gpsi shall contain either an External Id or an MSISDN. + It shall be formatted as follows -External Identifier= "extid-'extid', where 'extid' + shall be formatted according to clause 19.7.2 of 3GPP TS 23.003 that describes an + External Identifier. + + GpsiRm: + type: string + pattern: '^(msisdn-[0-9]{5,15}|extid-[^@]+@[^@]+|.+)$' + nullable: true + description: > + String identifying a Gpsi shall contain either an External Id or an MSISDN. It shall be + formatted as follows -External Identifier= 'extid-'extid', where 'extid' shall be formatted + according to clause 19.7.2 of 3GPP TS 23.003 that describes an External Identifier with the + OpenAPI 'nullable: true' property. + + GroupId: + type: string + pattern: '^[A-Fa-f0-9]{8}-[0-9]{3}-[0-9]{2,3}-([A-Fa-f0-9][A-Fa-f0-9]){1,10}$' + description: > + String identifying a group of devices network internal globally unique ID which identifies + a set of IMSIs, as specified in clause 19.9 of 3GPP TS 23.003. + + GroupIdRm: + type: string + pattern: '^[A-Fa-f0-9]{8}-[0-9]{3}-[0-9]{2,3}-([A-Fa-f0-9][A-Fa-f0-9]){1,10}$' + nullable: true + description: > + String identifying a group of devices network internal globally unique ID which + identifies a set of IMSIs, as specified in clause 19.9 of 3GPP TS 23.003 with the + OpenAPI 'nullable: true' property. + + ExternalGroupId: + type: string + pattern: '^extgroupid-[^@]+@[^@]+$' + description: > + String identifying External Group Identifier that identifies a group made up of one or + more subscriptions associated to a group of IMSIs, as specified in clause 19.7.3 of 3GPP + TS 23.003. + + ExternalGroupIdRm: + type: string + pattern: '^extgroupid-[^@]+@[^@]+$' + nullable: true + description: > + String identifying External Group Identifier that identifies a group made up of one or + more subscriptions associated to a group of IMSIs, as specified in clause 19.7.3 of + 3GPP TS 23.003 with the OpenAPI 'nullable: true' property. + + Pei: + type: string + pattern: '^(imei-[0-9]{15}|imeisv-[0-9]{16}|mac((-[0-9a-fA-F]{2}){6})(-untrusted)?|eui((-[0-9a-fA-F]{2}){8})|.+)$' + description: > + String representing a Permanent Equipment Identifier that may contain - an IMEI or IMEISV, + as specified in clause 6.2 of 3GPP TS 23.003; a MAC address for a 5G-RG or FN-RG via + wireline access, with an indication that this address cannot be trusted for regulatory + purpose if this address cannot be used as an Equipment Identifier of the FN-RG, as + specified in clause 4.7.7 of 3GPP TS23.316. Examples are imei-012345678901234 or + imeisv-0123456789012345. + + PeiRm: + type: string + pattern: '^(imei-[0-9]{15}|imeisv-[0-9]{16}|mac((-[0-9a-fA-F]{2}){6})(-untrusted)?|eui((-[0-9a-fA-F]{2}){8})|.+)$' + nullable: true + description: > + This data type is defined in the same way as the 'Pei' data type but with + the OpenAPI 'nullable: true' property. + + Supi: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gci-.+|gli-.+|.+)$' + description: | + String identifying a Supi that shall contain either an IMSI, a network specific identifier, + a Global Cable Identifier (GCI) or a Global Line Identifier (GLI) as specified in clause + 2.2A of 3GPP TS 23.003. It shall be formatted as follows + - for an IMSI "imsi-", where shall be formatted according to clause 2.2 + of 3GPP TS 23.003 that describes an IMSI. + - for a network specific identifier "nai-, where shall be formatted + according to clause 28.7.2 of 3GPP TS 23.003 that describes an NAI. + - for a GCI "gci-", where shall be formatted according to clause 28.15.2 + of 3GPP TS 23.003. + - for a GLI "gli-", where shall be formatted according to clause 28.16.2 of + 3GPP TS 23.003.To enable that the value is used as part of an URI, the string shall + only contain characters allowed according to the "lower-with-hyphen" naming convention + defined in 3GPP TS 29.501. + + SupiRm: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gci-.+|gli-.+|.+)$' + nullable: true + description: > + This data type is defined in the same way as the 'Supi' data type, but with the + OpenAPI 'nullable: true' property. + + NfInstanceId: + type: string + format: uuid + description: > + String uniquely identifying a NF instance. The format of the NF Instance ID shall be a + Universally Unique Identifier (UUID) version 4, as described in IETF RFC 4122. + + AmfId: + type: string + pattern: '^[A-Fa-f0-9]{6}$' + description: > + String identifying the AMF ID composed of AMF Region ID (8 bits), AMF Set ID (10 bits) + and AMF Pointer (6 bits) as specified in clause 2.10.1 of 3GPP TS 23.003. It is encoded + as a string of 6 hexadecimal characters (i.e., 24 bits). + + AmfRegionId: + type: string + pattern: '^[A-Fa-f0-9]{2}$' + description: > + String identifying the AMF Set ID (10 bits) as specified in clause 2.10.1 of 3GPP TS 23.003. + It is encoded as a string of 3 hexadecimal characters where the first character is limited + to values 0 to 3 (i.e. 10 bits) + + AmfSetId: + type: string + pattern: '^[0-3][A-Fa-f0-9]{2}$' + description: > + String identifying the AMF Set ID (10 bits) as specified in clause 2.10.1 of 3GPP TS 23.003. + It is encoded as a string of 3 hexadecimal characters where the first character is limited + to values 0 to 3 (i.e. 10 bits). + + RfspIndex: + type: integer + minimum: 1 + maximum: 256 + description: > + Unsigned integer representing the "Subscriber Profile ID for RAT/Frequency Priority" + as specified in 3GPP TS 36.413. + + RfspIndexRm: + type: integer + minimum: 1 + maximum: 256 + nullable: true + description: > + Unsigned integer representing the 'Subscriber Profile ID for RAT/Frequency Priority' + as specified in 3GPP TS 36.413 with the OpenAPI 'nullable: true' property. + + NfGroupId: + type: string + description: Identifier of a group of NFs. + + MtcProviderInformation: + type: string + description: String uniquely identifying MTC provider information. + + CagId: + type: string + pattern: '^[A-Fa-f0-9]{8}$' + description: String containing a Closed Access Group Identifier. + + SupiOrSuci: + type: string + pattern: '^(imsi-[0-9]{5,15}|nai-.+|gli-.+|gci-.+|suci-(0-[0-9]{3}-[0-9]{2,3}|[1-7]-.+)-[0-9]{1,4}-(0-0-.*|[a-fA-F1-9]-([1-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])-[a-fA-F0-9]+)|.+)$' + description: String identifying a SUPI or a SUCI. + + Imsi: + description: String identifying an IMSI + type: string + pattern: '^[0-9]{5,15}$' + + ApplicationlayerId: + type: string + description: > + String identifying an UE with application layer ID. The format of the application + layer ID parameter is same as the Application layer ID defined in clause 11.3.4 of + 3GPP TS 24.554. + + NsacSai: + type: string + description: > + String identifying the Network Slice Admission Control Service Area Identifier. + + +# +# ENUMERATED DATA TYPES +# + + GroupServiceId: + anyOf: + - type: integer + enum: + - 1 + - 2 + - 3 + - type: integer + description: > + This integer provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - 1: Group specific NAS level congestion control + - 2: Group specific Monitoring of Number of UEs present in a geographical area + - 3: Group specific Group specific for 5G LAN Type service + +# +# STRUCTURED DATA TYPES +# + Guami: + type: object + properties: + plmnId: + $ref: '#/components/schemas/PlmnIdNid' + amfId: + $ref: '#/components/schemas/AmfId' + required: + - plmnId + - amfId + description: Globally Unique AMF Identifier constructed out of PLMN, Network and AMF identity. + + GuamiRm: + anyOf: + - $ref: '#/components/schemas/Guami' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Guami' data type, but with the OpenAPI + 'nullable: true' property. + + NetworkId: + type: object + properties: + mnc: + $ref: '#/components/schemas/Mnc' + mcc: + $ref: '#/components/schemas/Mcc' + description: contains PLMN and Network identity. + + +# +# Data Types related to 5G Network as defined in clause 5.4 +# + +# +# SIMPLE DATA TYPES +# + ApplicationId: + type: string + description: String providing an application identifier. + ApplicationIdRm: + type: string + nullable: true + description: > + String providing an application identifier with the OpenAPI 'nullable: true' property. + + PduSessionId: + type: integer + minimum: 0 + maximum: 255 + description: > + Unsigned integer identifying a PDU session, within the range 0 to 255, as specified in + clause 11.2.3.1b, bits 1 to 8, of 3GPP TS 24.007. If the PDU Session ID is allocated by the + Core Network for UEs not supporting N1 mode, reserved range 64 to 95 is used. PDU Session ID + within the reserved range is only visible in the Core Network. + + Mcc: + type: string + pattern: '^\d{3}$' + description: > + Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 + of 3GPP TS 38.413. + + MccRm: + type: string + pattern: '^\d{3}$' + nullable: true + description: > + Mobile Country Code part of the PLMN, comprising 3 digits, as defined in clause 9.3.3.5 of + 3GPP TS 38.413 with the OpenAPI 'nullable: true' property. + + Mnc: + type: string + pattern: '^\d{2,3}$' + description: Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause 9.3.3.5 of 3GPP TS 38.413. + + MncRm: + type: string + pattern: '^\d{2,3}$' + nullable: true + description: > + Mobile Network Code part of the PLMN, comprising 2 or 3 digits, as defined in clause + 9.3.3.5 of 3GPP TS 38.413 with the OpenAPI 'nullable: true' property. + + Tac: + type: string + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + description: > + 2 or 3-octet string identifying a tracking area code as specified in clause 9.3.3.10 + of 3GPP TS 38.413, in hexadecimal representation. Each character in the string shall + take a value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The + most significant character representing the 4 most significant bits of the TAC shall + appear first in the string, and the character representing the 4 least significant bit + of the TAC shall appear last in the string. + + TacRm: + type: string + pattern: '(^[A-Fa-f0-9]{4}$)|(^[A-Fa-f0-9]{6}$)' + nullable: true + description: > + This data type is defined in the same way as the 'Tac' data type, but with the + OpenAPI 'nullable: true' property. + + EutraCellId: + type: string + pattern: '^[A-Fa-f0-9]{7}$' + description: > + 28-bit string identifying an E-UTRA Cell Id as specified in clause 9.3.1.9 of + 3GPP TS 38.413, in hexadecimal representation. Each character in the string shall take a + value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most + significant character representing the 4 most significant bits of the Cell Id shall appear + first in the string, and the character representing the 4 least significant bit of the + Cell Id shall appear last in the string. + + EutraCellIdRm: + type: string + pattern: '^[A-Fa-f0-9]{7}$' + nullable: true + description: > + This data type is defined in the same way as the 'EutraCellId' data type, but with + the OpenAPI 'nullable: true' property. + + NrCellId: + type: string + pattern: '^[A-Fa-f0-9]{9}$' + description: > + 36-bit string identifying an NR Cell Id as specified in clause 9.3.1.7 of 3GPP TS 38.413, + in hexadecimal representation. Each character in the string shall take a value of "0" to + "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant character + representing the 4 most significant bits of the Cell Id shall appear first in the string, + and the character representing the 4 least significant bit of the Cell Id shall appear last + in the string. + + NrCellIdRm: + type: string + pattern: '^[A-Fa-f0-9]{9}$' + nullable: true + description: > + This data type is defined in the same way as the 'NrCellId' data type, but with the + OpenAPI 'nullable: true' property. + Dnai: + type: string + description: DNAI (Data network access identifier), see clause 5.6.7 of 3GPP TS 23.501. + + DnaiRm: + type: string + nullable: true + description: > + This data type is defined in the same way as the 'Dnai' data type, but with the + OpenAPI 'nullable: true' property. + + 5GMmCause: + $ref: '#/components/schemas/Uinteger' + + AmfName: + $ref: '#/components/schemas/Fqdn' + + AreaCode: + type: string + description: Values are operator specific. + + AreaCodeRm: + type: string + nullable: true + description: > + This data type is defined in the same way as the 'AreaCode' data type, but with the + OpenAPI 'nullable: true' property. + + N3IwfId: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + This represents the identifier of the N3IWF ID as specified in clause 9.3.1.57 of + 3GPP TS 38.413 in hexadecimal representation. Each character in the string shall take a value + of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant + character representing the 4 most significant bits of the N3IWF ID shall appear first in the + string, and the character representing the 4 least significant bit of the N3IWF ID shall + appear last in the string. + + WAgfId: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + This represents the identifier of the W-AGF ID as specified in clause 9.3.1.162 of + 3GPP TS 38.413 in hexadecimal representation. Each character in the string shall take a + value of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most + significant character representing the 4 most significant bits of the W-AGF ID shall + appear first in the string, and the character representing the 4 least significant bit + of the W-AGF ID shall appear last in the string. + + TngfId: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + This represents the identifier of the TNGF ID as specified in clause 9.3.1.161 of + 3GPP TS 38.413 in hexadecimal representation. Each character in the string shall take a value + of "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant + character representing the 4 most significant bits of the TNGF ID shall appear first in + the string, and the character representing the 4 least significant bit of the TNGF ID + shall appear last in the string. + + NgeNbId: + type: string + pattern: '^(MacroNGeNB-[A-Fa-f0-9]{5}|LMacroNGeNB-[A-Fa-f0-9]{6}|SMacroNGeNB-[A-Fa-f0-9]{5})$' + description: > + This represents the identifier of the ng-eNB ID as specified in clause 9.3.1.8 of + 3GPP TS 38.413. The value of the ng-eNB ID shall be encoded in hexadecimal representation. + Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" and + shall represent 4 bits. The padding 0 shall be added to make multiple nibbles, so the most + significant character representing the padding 0 if required together with the 4 most + significant bits of the ng-eNB ID shall appear first in the string, and the character + representing the 4 least significant bit of the ng-eNB ID (to form a nibble) shall appear + last in the string. + + example: SMacroNGeNB-34B89 + Nid: + type: string + pattern: '^[A-Fa-f0-9]{11}$' + description: > + This represents the Network Identifier, which together with a PLMN ID is used to identify + an SNPN (see 3GPP TS 23.003 and 3GPP TS 23.501 clause 5.30.2.1). + + NidRm: + type: string + pattern: '^[A-Fa-f0-9]{11}$' + nullable: true + description: > + This data type is defined in the same way as the 'Nid' data type, but with the OpenAPI + 'nullable: true' property." + + NfSetId: + type: string + description: > + NF Set Identifier (see clause 28.12 of 3GPP TS 23.003), formatted as the following string + "set.set.5gc.mnc.mcc", or + "set.set.5gc.nid.mnc.mcc" with + encoded as defined in clause 5.4.2 ("Mcc" data type definition) + encoding the Mobile Network Code part of the PLMN, comprising 3 digits. + If there are only 2 significant digits in the MNC, one "0" digit shall be inserted + at the left side to fill the 3 digits coding of MNC. Pattern: '^[0-9]{3}$' + encoded as a value defined in Table 6.1.6.3.3-1 of 3GPP TS 29.510 but + with lower case characters encoded as a string of characters consisting of + alphabetic characters (A-Z and a-z), digits (0-9) and/or the hyphen (-) and that + shall end with either an alphabetic character or a digit. + + NfServiceSetId: + type: string + description: > + NF Service Set Identifier (see clause 28.12 of 3GPP TS 23.003) formatted as the following + string "set.sn.nfi.5gc.mnc.mcc", or + "set.sn.nfi.5gc.nid.mnc.mcc" with + encoded as defined in clause 5.4.2 ("Mcc" data type definition) + encoding the Mobile Network Code part of the PLMN, comprising 3 digits. + If there are only 2 significant digits in the MNC, one "0" digit shall be inserted + at the left side to fill the 3 digits coding of MNC. Pattern: '^[0-9]{3}$' + encoded as defined in clause 5.4.2 ("Nid" data type definition) + encoded as defined in clause 5.3.2 + encoded as defined in 3GPP TS 29.510 + encoded as a string of characters consisting of alphabetic + characters (A-Z and a-z), digits (0-9) and/or the hyphen (-) and that shall end + with either an alphabetic character or a digit. + + PlmnAssiUeRadioCapId: + $ref: '#/components/schemas/Bytes' + + ManAssiUeRadioCapId: + $ref: '#/components/schemas/Bytes' + + TypeAllocationCode: + type: string + pattern: '^[0-9]{8}$' + description: > + Type Allocation Code (TAC) of the UE, comprising the initial eight-digit portion of the + 15-digit IMEI and 16-digit IMEISV codes. See clause 6.2 of 3GPP TS 23.003. + + HfcNId: + type: string + maxLength: 6 + description: > + This IE represents the identifier of the HFC node Id as specified in CableLabs + WR-TR-5WWC-ARCH. It is provisioned by the wireline operator as part of wireline + operations and may contain up to six characters. + + HfcNIdRm: + type: string + maxLength: 6 + nullable: true + description: > + This data type is defined in the same way as the 'HfcNId' data type, but with the + OpenAPI 'nullable: true' property. + + ENbId: + type: string + pattern: '^(MacroeNB-[A-Fa-f0-9]{5}|LMacroeNB-[A-Fa-f0-9]{6}|SMacroeNB-[A-Fa-f0-9]{5}|HomeeNB-[A-Fa-f0-9]{7})$' + description: > + This represents the identifier of the eNB ID as specified in clause 9.2.1.37 of + 3GPP TS 36.413. The string shall be formatted with the following pattern + '^('MacroeNB-[A-Fa-f0-9]{5}|LMacroeNB-[A-Fa-f0-9]{6}|SMacroeNB-[A-Fa-f0-9]{5} + |HomeeNB-[A-Fa-f0-9]{7})$'. The value of the eNB ID shall be encoded in hexadecimal + representation. Each character in the string shall take a value of "0" to "9", "a" to "f" + or "A" to "F" and shall represent 4 bits. The padding 0 shall be added to make multiple + nibbles, so the most significant character representing the padding 0 if required together + with the 4 most significant bits of the eNB ID shall appear first in the string, and the + character representing the 4 least significant bit of the eNB ID (to form a nibble) shall + appear last in the string. + + Gli: + $ref: '#/components/schemas/Bytes' + Gci: + type: string + description: > + Global Cable Identifier uniquely identifying the connection between the 5G-CRG or FN-CRG + to the 5GS. See clause 28.15.4 of 3GPP TS 23.003. This shall be encoded as a string per + clause 28.15.4 of 3GPP TS 23.003, and compliant with the syntax specified in clause 2.2 + of IETF RFC 7542 for the username part of a NAI. The GCI value is specified in + CableLabs WR-TR-5WWC-ARCH. + + NsSrg: + type: string + description: > + String providing a Network Slice Simultaneous Registration Group. See clause 5.15.12 of + 3GPP TS 23.501 + + NsSrgRm: + type: string + nullable: true + description: > + String providing a Network Slice Simultaneous Registration Group with the OpenAPI + "nullable: true" property. See clause 5.15.12 of 3GPP TS 23.501 + + + RelayServiceCode: + type: integer + minimum: 0 + maximum: 16777215 + description: > + Relay Service Code to identify a connectivity service provided by the UE-to-Network relay or + the UE-to-UE relay. + + 5GPrukId: + type: string + description: > + A string carrying the CP-PRUK ID of the 5G ProSe Remote UE or the 5G ProSe End UE. + The CP-PRUK ID is a string in NAI format as specified in clause 28.7.11 of 3GPP TS 23.003. + pattern: '^rid[0-9]{1,4}\.pid[0-9a-fA-F]+\@prose-cp\.5gc\.mnc[0-9]{2,3}\.mcc[0-9]{3}\.3gppnetwork\.org$' + + NsagId: + type: integer + description: > + The Network Slice AS Group ID, see 3GPP TS 38.413 + + NsagIdRm: + type: integer + nullable: true + description: > + This data type is defined in the same way as the "NsagId" data type, but with the OpenAPI + "nullable: true" property + + GeoSatelliteId: + type: string + description: > + A string carrying the GEO Satellite ID. + + OffloadIdentifier: + type: string + description: > + Offload identifier uniquely identifying a VPLMN offloading policy information instance + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{8}(-v[0-9]{1,2}){0,1}$' + +# +# ENUMERATED DATA TYPES +# + + AccessType: + type: string + enum: + - 3GPP_ACCESS + - NON_3GPP_ACCESS + description: Indicates whether the access is via 3GPP or via non-3GPP. + + AccessTypeRm: + anyOf: + - $ref: '#/components/schemas/AccessType' + - $ref: '#/components/schemas/NullValue' + description: > + Indicates wether the access is via 3GPP or via non-3GPP but with the OpenAPI + 'nullable: true' property." + + RatType: + anyOf: + - type: string + enum: + - NR + - EUTRA + - WLAN + - VIRTUAL + - NBIOT + - WIRELINE + - WIRELINE_CABLE + - WIRELINE_BBF + - LTE-M + - NR_U + - EUTRA_U + - TRUSTED_N3GA + - TRUSTED_WLAN + - UTRA + - GERA + - NR_LEO + - NR_MEO + - NR_GEO + - NR_OTHER_SAT + - NR_REDCAP + - WB_E_UTRAN_LEO + - WB_E_UTRAN_MEO + - WB_E_UTRAN_GEO + - WB_E_UTRAN_OTHERSAT + - NB_IOT_LEO + - NB_IOT_MEO + - NB_IOT_GEO + - NB_IOT_OTHERSAT + - LTE_M_LEO + - LTE_M_MEO + - LTE_M_GEO + - LTE_M_OTHERSAT + - type: string + description: Indicates the radio access used. + + RatTypeRm: + anyOf: + - $ref: '#/components/schemas/RatType' + - $ref: '#/components/schemas/NullValue' + description: > + Provides information about the radio access but with the OpenAPI 'nullable: true' property. + + PduSessionType: + anyOf: + - type: string + enum: + - IPV4 + - IPV6 + - IPV4V6 + - UNSTRUCTURED + - ETHERNET + - type: string + description: > + PduSessionType indicates the type of a PDU session. It shall comply with the provisions + defined in table 5.4.3.3-1. + + PduSessionTypeRm: + anyOf: + - $ref: '#/components/schemas/PduSessionType' + - $ref: '#/components/schemas/NullValue' + description: > + PduSessionType indicates the type of a PDU session. It shall comply with the provisions + defined in table 5.4.3.3-1 but with the OpenAPI "nullable: true" property. + + UpIntegrity: + anyOf: + - type: string + enum: + - REQUIRED + - PREFERRED + - NOT_NEEDED + - type: string + description: > + indicates whether UP integrity protection is required, preferred or not needed for all + the traffic on the PDU Session. It shall comply with the provisions defined in + table 5.4.3.4-1. + + UpIntegrityRm: + anyOf: + - $ref: '#/components/schemas/UpIntegrity' + - $ref: '#/components/schemas/NullValue' + description: > + indicates whether UP integrity protection is required, preferred or not needed for all + the traffic on the PDU Session. It shall comply with the provisions defined in + table 5.4.3.4-1. + + UpConfidentiality: + anyOf: + - type: string + enum: + - REQUIRED + - PREFERRED + - NOT_NEEDED + - type: string + description: > + indicates whether UP confidentiality protection is required, preferred or not needed for + all the traffic on the PDU Session. It shall comply with the provisions defined in + table 5.4.3.5-1. + + UpConfidentialityRm: + anyOf: + - $ref: '#/components/schemas/UpConfidentiality' + - $ref: '#/components/schemas/NullValue' + description: > + indicates whether UP integrity protection is required, preferred or not needed for all the + traffic on the PDU Session. It shall comply with the provisions defined in table 5.4.3.4-1, + but with the OpenAPI 'nullable: true' property. + + SscMode: + anyOf: + - type: string + enum: + - SSC_MODE_1 + - SSC_MODE_2 + - SSC_MODE_3 + - type: string + description: > + represents the service and session continuity mode It shall comply with the provisions defined in table 5.4.3.6-1. + + SscModeRm: + anyOf: + - $ref: '#/components/schemas/SscMode' + - $ref: '#/components/schemas/NullValue' + description: > + represents the service and session continuity mode It shall comply with the provisions + defined in table 5.4.3.6-1 but with the OpenAPI 'nullable: true' property. + + DnaiChangeType: + anyOf: + - type: string + enum: + - EARLY + - EARLY_LATE + - LATE + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + + description: | + Possible values are: + - EARLY: Early notification of UP path reconfiguration. + - EARLY_LATE: Early and late notification of UP path reconfiguration. This value shall + only be present in the subscription to the DNAI change event. + - LATE: Late notification of UP path reconfiguration. + + DnaiChangeTypeRm: + anyOf: + - $ref: '#/components/schemas/DnaiChangeType' + - $ref: '#/components/schemas/NullValue' + description: > + It can take the values as specified for DnaiChangeType but with the OpenAPI + 'nullable: true' property. + + RestrictionType: + anyOf: + - type: string + enum: + - ALLOWED_AREAS + - NOT_ALLOWED_AREAS + - type: string + description: It contains the restriction type ALLOWED_AREAS or NOT_ALLOWED_AREAS. + + RestrictionTypeRm: + anyOf: + - $ref: '#/components/schemas/RestrictionType' + - $ref: '#/components/schemas/NullValue' + description: > + It contains the restriction type ALLOWED_AREAS or NOT_ALLOWED_AREAS but with the + OpenAPI 'nullable: true' property. + + CoreNetworkType: + anyOf: + - type: string + enum: + - 5GC + - EPC + - type: string + description: It contains the Core Network type 5GC or EPC. + + CoreNetworkTypeRm: + anyOf: + - $ref: '#/components/schemas/CoreNetworkType' + - $ref: '#/components/schemas/NullValue' + description: > + It contains the Core Network type 5GC or EPC but with the OpenAPI + 'nullable: true' property. + + PresenceState: + anyOf: + - type: string + enum: + - IN_AREA + - OUT_OF_AREA + - UNKNOWN + - INACTIVE + - type: string + description: | + Possible values are: + -IN_AREA: Indicates that the UE is inside or enters the presence reporting area. + -OUT_OF_AREA: Indicates that the UE is outside or leaves the presence reporting area + -UNKNOW: Indicates it is unknown whether the UE is in the presence reporting area or not + -INACTIVE: Indicates that the presence reporting area is inactive in the serving node. + + StationaryIndication: + anyOf: + - type: string + enum: + - STATIONARY + - MOBILE + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - STATIONARY: Identifies the UE is stationary + - MOBILE: Identifies the UE is mobile + + StationaryIndicationRm: + anyOf: + - $ref: '#/components/schemas/StationaryIndication' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'StationaryIndication' enumeration, + but with the OpenAPI 'nullable: true' property." + + ScheduledCommunicationType: + anyOf: + - type: string + enum: + - DOWNLINK_ONLY + - UPLINK_ONLY + - BIDIRECTIONAL + - type: string + description: | + Possible values are: + -DOWNLINK_ONLY: Downlink only + -UPLINK_ONLY: Uplink only + -BIDIRECTIONA: Bi-directional + + ScheduledCommunicationTypeRm: + anyOf: + - $ref: '#/components/schemas/ScheduledCommunicationType' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'ScheduledCommunicationTypen' + enumeration, but with the OpenAPI 'nullable: true' property." + + TrafficProfile: + anyOf: + - type: string + enum: + - SINGLE_TRANS_UL + - SINGLE_TRANS_DL + - DUAL_TRANS_UL_FIRST + - DUAL_TRANS_DL_FIRST + - MULTI_TRANS + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + description: | + Possible values are: + - SINGLE_TRANS_UL: Uplink single packet transmission. + - SINGLE_TRANS_DL: Downlink single packet transmission. + - DUAL_TRANS_UL_FIRST: Dual packet transmission, firstly uplink packet transmission + with subsequent downlink packet transmission. + - DUAL_TRANS_DL_FIRST: Dual packet transmission, firstly downlink packet transmission + with subsequent uplink packet transmission. + + TrafficProfileRm: + anyOf: + - $ref: '#/components/schemas/TrafficProfile' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'TrafficProfile' enumeration, but + with the OpenAPI 'nullable: true' property. + + LcsServiceAuth: + anyOf: + - type: string + enum: + - "LOCATION_ALLOWED_WITH_NOTIFICATION" + - "LOCATION_ALLOWED_WITHOUT_NOTIFICATION" + - "LOCATION_ALLOWED_WITHOUT_RESPONSE" + - "LOCATION_RESTRICTED_WITHOUT_RESPONSE" + - "NOTIFICATION_ONLY" + - "NOTIFICATION_AND_VERIFICATION_ONLY" + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - "LOCATION_ALLOWED_WITH_NOTIFICATION": Location allowed with notification + - "LOCATION_ALLOWED_WITHOUT_NOTIFICATION": Location allowed without notification + - "LOCATION_ALLOWED_WITHOUT_RESPONSE": Location with notification and privacy + verification; location allowed if no response + - "LOCATION_RESTRICTED_WITHOUT_RESPONSE": Location with notification and privacy + verification; location restricted if no response + - "NOTIFICATION_ONLY": Notification only + - "NOTIFICATION_AND_VERIFICATION_ONLY": Notification and privacy verification only + UeAuth: + anyOf: + - type: string + enum: + - AUTHORIZED + - NOT_AUTHORIZED + - type: string + description: | + Possible values are: + - AUTHORIZED: Indicates that the UE is authorized. + - NOT_AUTHORIZED: Indicates that the UE is not authorized. + + DlDataDeliveryStatus: + anyOf: + - type: string + enum: + - BUFFERED + - TRANSMITTED + - DISCARDED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - BUFFERED: The first downlink data is buffered with extended buffering matching the + source of the downlink traffic. + - TRANSMITTED: The first downlink data matching the source of the downlink traffic is + transmitted after previous buffering or discarding of corresponding packet(s) because + the UE of the PDU Session becomes ACTIVE, and buffered data can be delivered to UE. + - DISCARDED: The first downlink data matching the source of the downlink traffic is + discarded because the Extended Buffering time, as determined by the SMF, expires or + the amount of downlink data to be buffered is exceeded. + + DlDataDeliveryStatusRm: + anyOf: + - $ref: '#/components/schemas/DlDataDeliveryStatus' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the ' DlDataDeliveryStatus ' data type, + but with the OpenAPI 'nullable: true' property. + + AuthStatus: + anyOf: + - type: string + enum: + - EAP_SUCCESS + - EAP_FAILURE + - PENDING + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + description: | + Possible values are: + - "EAP_SUCCESS": The NSSAA status is EAP-Success. + - "EAP_FAILURE": The NSSAA status is EAP-Failure. + - "PENDING": The NSSAA status is Pending. + + LineType: + anyOf: + - type: string + enum: + - DSL + - PON + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + description: | + Possible values are: + - DSL: Identifies a DSL line + - PON: Identifies a PON line + + LineTypeRm: + anyOf: + - $ref: '#/components/schemas/LineType' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'LineType' data type, but with the + OpenAPI 'nullable: true' property. + + + NotificationFlag: + anyOf: + - type: string + enum: + - ACTIVATE + - DEACTIVATE + - RETRIEVAL + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + description: | + Possible values are: + - ACTIVATE: The event notification is activated. + - DEACTIVATE: The event notification is deactivated and shall be muted. The available + event(s) shall be stored. + - RETRIEVAL: The event notification shall be sent to the NF service consumer(s), + after that, is muted again. + + + TransportProtocol: + anyOf: + - type: string + enum: + - UDP + - TCP + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + description: | + Possible values are: + - UDP: User Datagram Protocol. + - TCP: Transmission Control Protocol. + + + SatelliteBackhaulCategory: + anyOf: + - type: string + enum: + - GEO + - MEO + - LEO + - OTHER_SAT + - DYNAMIC_GEO + - DYNAMIC_MEO + - DYNAMIC_LEO + - DYNAMIC_OTHER_SAT + - NON_SATELLITE + - type: string + description: Indicates the satellite backhaul used. + + SatelliteBackhaulCategoryRm: + anyOf: + - $ref: '#/components/schemas/SatelliteBackhaulCategory' + - $ref: '#/components/schemas/NullValue' + description: > + Provides information about the satellite backhaul but with the OpenAPI + 'nullable: true' property. + + BufferedNotificationsAction: + anyOf: + - type: string + enum: + - SEND_ALL + - DISCARD_ALL + - DROP_OLD + - type: string + description: > + Indicates the required action by the event producer NF on the buffered Notifications. + + SubscriptionAction: + anyOf: + - type: string + enum: + - CLOSE + - CONTINUE_WITH_MUTING + - CONTINUE_WITHOUT_MUTING + - type: string + description: > + Indicates the required action by the event producer NF on the event subscription if an + exception occurs while the event is muted. + + SnssaiStatus: + anyOf: + - type: string + enum: + - AVAILABLE + - UNAVAILABLE + - type: string + description: Indicates the S-NSSAI availability. + + TerminationIndication: + description: Indicates the termination of Network Slice Replacement. + anyOf: + - type: string + enum: + - NEW_UES_TERMINATION + - ALL_UES_TERMINATION + - type: string + + +# +# STRUCTURED DATA TYPES +# + SubscribedDefaultQos: + type: object + required: + - 5qi + - arp + properties: + 5qi: + $ref: '#/components/schemas/5Qi' + arp: + $ref: '#/components/schemas/Arp' + priorityLevel: + $ref: '#/components/schemas/5QiPriorityLevel' + description: Provides the subsribed 5QI and the ARP, it may contain the priority level. + + Snssai: + type: object + properties: + sst: + type: integer + minimum: 0 + maximum: 255 + description: > + Unsigned integer, within the range 0 to 255, representing the Slice/Service Type. + It indicates the expected Network Slice behaviour in terms of features and services. + Values 0 to 127 correspond to the standardized SST range. Values 128 to 255 correspond + to the Operator-specific range. See clause 28.4.2 of 3GPP TS 23.003. + Standardized values are defined in clause 5.15.2.2 of 3GPP TS 23.501. + + sd: + type: string + pattern: '^[A-Fa-f0-9]{6}$' + description: > + 3-octet string, representing the Slice Differentiator, in hexadecimal representation. + Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" + and shall represent 4 bits. The most significant character representing the 4 most + significant bits of the SD shall appear first in the string, and the character + representing the 4 least significant bit of the SD shall appear last in the string. + This is an optional parameter that complements the Slice/Service type(s) to allow to + differentiate amongst multiple Network Slices of the same Slice/Service type. This IE + shall be absent if no SD value is associated with the SST. + description: > + When Snssai needs to be converted to string (e.g. when used in maps as key), the string shall + be composed of one to three digits "sst" optionally followed by "-" and 6 hexadecimal digits + "sd". + + required: + - sst + + PlmnId: + type: object + properties: + mcc: + $ref: '#/components/schemas/Mcc' + mnc: + $ref: '#/components/schemas/Mnc' + description: > + When PlmnId needs to be converted to string (e.g. when used in maps as key), the string + shall be composed of three digits "mcc" followed by "-" and two or three digits "mnc". + + required: + - mcc + - mnc + PlmnIdRm: + anyOf: + - $ref: '#/components/schemas/PlmnId' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'PlmnId' data type, but with the + OpenAPI 'nullable: true' property. + + Tai: + description: Contains the tracking area identity as described in 3GPP 23.003 + type: object + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + tac: + $ref: '#/components/schemas/Tac' + nid: + $ref: '#/components/schemas/Nid' + required: + - plmnId + - tac + + TaiRm: + anyOf: + - $ref: '#/components/schemas/Tai' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Tai' data type, but with the OpenAPI + 'nullable: true' property. + + Ecgi: + description: Contains the ECGI (E-UTRAN Cell Global Identity), as described in 3GPP 23.003 + type: object + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + eutraCellId: + $ref: '#/components/schemas/EutraCellId' + nid: + $ref: '#/components/schemas/Nid' + required: + - plmnId + - eutraCellId + + EcgiRm: + anyOf: + - $ref: '#/components/schemas/Ecgi' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Ecgi' data type, but with the + OpenAPI 'nullable: true' property. + + Ncgi: + description: Contains the NCGI (NR Cell Global Identity), as described in 3GPP 23.003 + type: object + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + nrCellId: + $ref: '#/components/schemas/NrCellId' + nid: + $ref: '#/components/schemas/Nid' + required: + - plmnId + - nrCellId + + NcgiRm: + anyOf: + - $ref: '#/components/schemas/Ncgi' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Ncgi' data type, but with the + OpenAPI 'nullable: true' property. + + UserLocation: + type: object + properties: + eutraLocation: + $ref: '#/components/schemas/EutraLocation' + nrLocation: + $ref: '#/components/schemas/NrLocation' + n3gaLocation: + $ref: '#/components/schemas/N3gaLocation' + utraLocation: + $ref: '#/components/schemas/UtraLocation' + geraLocation: + $ref: '#/components/schemas/GeraLocation' + description: > + At least one of eutraLocation, nrLocation and n3gaLocation shall be present. Several + of them may be present. + + EutraLocation: + description: Contains the E-UTRA user location. + type: object + properties: + tai: + $ref: '#/components/schemas/Tai' + ignoreTai: + type: boolean + default: false + ecgi: + $ref: '#/components/schemas/Ecgi' + ignoreEcgi: + type: boolean + default: false + description: > + This flag when present shall indicate that the Ecgi shall be ignored + When present, it shall be set as follows: + - true: ecgi shall be ignored. + - false (default): ecgi shall not be ignored. + ageOfLocationInformation: + type: integer + minimum: 0 + maximum: 32767 + description: > + The value represents the elapsed time in minutes since the last network contact of the + mobile station. Value "0" indicates that the location information was obtained after a + successful paging procedure for Active Location Retrieval when the UE is in idle mode + or after a successful NG-RAN location reporting procedure with the eNB when the UE is + in connected mode. Any other value than "0" indicates that the location information is + the last known one. See 3GPP TS 29.002 clause 17.7.8. + ueLocationTimestamp: + $ref: '#/components/schemas/DateTime' + geographicalInformation: + type: string + pattern: '^[0-9A-F]{16}$' + description: > + Refer to geographical Information. See 3GPP TS 23.032 clause 7.3.2. Only the + description of an ellipsoid point with uncertainty circle is allowed to be used. + geodeticInformation: + type: string + pattern: '^[0-9A-F]{20}$' + description: > + Refers to Calling Geodetic Location. See ITU-T Recommendation Q.763 (1999) [24] + clause 3.88.2. Only the description of an ellipsoid point with uncertainty circle + is allowed to be used. + globalNgenbId: + $ref: '#/components/schemas/GlobalRanNodeId' + + globalENbId: + $ref: '#/components/schemas/GlobalRanNodeId' + required: + - tai + - ecgi + + EutraLocationRm: + anyOf: + - $ref: '#/components/schemas/EutraLocation' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'EutraLocation' data type, but with + the OpenAPI 'nullable: true' property. + + NrLocation: + description: Contains the NR user location. + type: object + properties: + tai: + $ref: '#/components/schemas/Tai' + ncgi: + $ref: '#/components/schemas/Ncgi' + ignoreNcgi: + type: boolean + default: false + ageOfLocationInformation: + type: integer + minimum: 0 + maximum: 32767 + description: > + The value represents the elapsed time in minutes since the last network contact of the mobile + station. Value "0" indicates that the location information was obtained after a + successful paging procedure for Active Location Retrieval when the UE is in idle mode + or after a successful NG-RAN location reporting procedure with the eNB when the UE is + in connected mode. Any other value than "0" indicates that the location information is + the last known one. See 3GPP TS 29.002 clause 17.7.8. + ueLocationTimestamp: + $ref: '#/components/schemas/DateTime' + geographicalInformation: + type: string + pattern: '^[0-9A-F]{16}$' + description: > + Refer to geographical Information. See 3GPP TS 23.032 clause 7.3.2. Only the description + of an ellipsoid point with uncertainty circle is allowed to be used. + geodeticInformation: + type: string + pattern: '^[0-9A-F]{20}$' + description: > + Refers to Calling Geodetic Location. See ITU-T Recommendation Q.763 (1999) [24] clause + 3.88.2. Only the description of an ellipsoid point with uncertainty circle is allowed + to be used. + globalGnbId: + $ref: '#/components/schemas/GlobalRanNodeId' + ntnTaiInfo: + $ref: '#/components/schemas/NtnTaiInfo' + required: + - tai + - ncgi + + NrLocationRm: + anyOf: + - $ref: '#/components/schemas/NrLocation' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'NrLocation' data type, but with the + OpenAPI 'nullable: true' property." + + N3gaLocation: + description: Contains the Non-3GPP access user location. + type: object + properties: + n3gppTai: + $ref: '#/components/schemas/Tai' + n3IwfId: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + This IE shall contain the N3IWF identifier received over NGAP and shall be encoded as a + string of hexadecimal characters. Each character in the string shall take a value of "0" + to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The most significant + character representing the 4 most significant bits of the N3IWF ID shall appear first in + the string, and the character representing the 4 least significant bit of the N3IWF ID + shall appear last in the string. + + ueIpv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + ueIpv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + portNumber: + $ref: '#/components/schemas/Uinteger' + protocol: + $ref: '#/components/schemas/TransportProtocol' + tnapId: + $ref: '#/components/schemas/TnapId' + twapId: + $ref: '#/components/schemas/TwapId' + hfcNodeId: + $ref: '#/components/schemas/HfcNodeId' + gli: + $ref: '#/components/schemas/Gli' + w5gbanLineType: + $ref: '#/components/schemas/LineType' + gci: + $ref: '#/components/schemas/Gci' + + UpSecurity: + description: Contains Userplain security information. + type: object + properties: + upIntegr: + $ref: '#/components/schemas/UpIntegrity' + upConfid: + $ref: '#/components/schemas/UpConfidentiality' + required: + - upIntegr + - upConfid + + UpSecurityRm: + anyOf: + - $ref: '#/components/schemas/UpSecurity' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'UpSecurity' data type, but with the + OpenAPI 'nullable: true' property. + + NgApCause: + description: Represents the NGAP cause. + type: object + properties: + group: + $ref: '#/components/schemas/Uinteger' + value: + $ref: '#/components/schemas/Uinteger' + required: + - group + - value + + BackupAmfInfo: + description: Provides details of the Backup AMF. + type: object + properties: + backupAmf: + $ref: '#/components/schemas/AmfName' + guamiList: + type: array + items: + $ref: '#/components/schemas/Guami' + minItems: 1 + description: > + If present, this IE shall contain the list of GUAMI(s) (supported by the AMF) for + which the backupAmf IE applies. + required: + - backupAmf + + RefToBinaryData: + description: This parameter provides information about the referenced binary body data. + type: object + properties: + contentId: + type: string + description: > + This IE shall contain the value of the Content-ID header of the referenced binary + body part. + required: + - contentId + + RefToBinaryDataRm: + anyOf: + - $ref: '#/components/schemas/RefToBinaryData' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the ' RefToBinaryData ' data type, + but with the OpenAPI 'nullable: true' property. + + RouteToLocation: + type: object + properties: + dnai: + $ref: '#/components/schemas/Dnai' + routeInfo: + $ref: '#/components/schemas/RouteInformation' + routeProfId: + type: string + nullable: true + description: Identifies the routing profile Id. + required: + - dnai + anyOf: + - required: [ routeInfo ] + - required: [ routeProfId ] + nullable: true + description: > + At least one of the "routeInfo" attribute and the "routeProfId" attribute shall be included + in the "RouteToLocation" data type. + + RouteInformation: + type: object + properties: + ipv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + portNumber: + $ref: '#/components/schemas/Uinteger' + required: + - portNumber + nullable: true + description: > + At least one of the "ipv4Addr" attribute and the "ipv6Addr" attribute shall be included in + the "RouteInformation" data type. + + Area: + description: Provides area information. + type: object + oneOf: + - required: + - tacs + - required: + - areaCode + properties: + tacs: + type: array + items: + $ref: '#/components/schemas/Tac' + minItems: 1 + areaCode: + $ref: '#/components/schemas/AreaCode' + + ServiceAreaRestriction: + description: Provides information about allowed or not allowed areas. + type: object + properties: + restrictionType: + $ref: '#/components/schemas/RestrictionType' + areas: + type: array + items: + $ref: '#/components/schemas/Area' + maxNumOfTAs: + $ref: '#/components/schemas/Uinteger' + maxNumOfTAsForNotAllowedAreas: + $ref: '#/components/schemas/Uinteger' + allOf: + # + # 1st condition: restrictionType and areas attributes shall be either both absent + # or both present + # + - oneOf: + - not: + required: [ restrictionType ] + - required: [ areas ] + # + # 2nd condition: if restrictionType takes value NOT_ALLOWED_AREAS, + # then maxNumOfTAs shall be absent + # + - anyOf: + - not: + required: [ restrictionType ] + properties: + restrictionType: + type: string + enum: [ NOT_ALLOWED_AREAS ] + - not: + required: [ maxNumOfTAs ] + # + # 3rd condition: if restrictionType takes value ALLOWED_AREAS, + # then maxNumOfTAsForNotAllowedAreas shall be absent + # + - anyOf: + - not: + required: [ restrictionType ] + properties: + restrictionType: + type: string + enum: [ ALLOWED_AREAS ] + - not: + required: [ maxNumOfTAsForNotAllowedAreas ] + + PresenceInfo: + type: object + properties: + praId: + type: string + description: > + Represents an identifier of the Presence Reporting Area (see clause 28.10 of 3GPP + TS 23.003. This IE shall be present if the Area of Interest subscribed or reported is + a Presence Reporting Area or a Set of Core Network predefined Presence Reporting Areas. + When present, it shall be encoded as a string representing an integer in the following + ranges: + 0 to 8 388 607 for UE-dedicated PRA + 8 388 608 to 16 777 215 for Core Network predefined PRA + Examples: + PRA ID 123 is encoded as "123" + PRA ID 11 238 660 is encoded as "11238660" + + additionalPraId: + type: string + description: > + This IE may be present if the praId IE is present and if it contains a PRA identifier + referring to a set of Core Network predefined Presence Reporting Areas. When present, + this IE shall contain a PRA Identifier of an individual PRA within the Set of Core + Network predefined Presence Reporting Areas indicated by the praId IE. + + presenceState: + $ref: '#/components/schemas/PresenceState' + trackingAreaList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 1 + description: > + Represents the list of tracking areas that constitutes the area. This IE shall be + present if the subscription or the event report is for tracking UE presence in the + tracking areas. For non 3GPP access the TAI shall be the N3GPP TAI. + + ecgiList: + type: array + items: + $ref: '#/components/schemas/Ecgi' + minItems: 1 + description: > + Represents the list of EUTRAN cell Ids that constitutes the area. This IE shall + be present if the Area of Interest subscribed is a list of EUTRAN cell Ids. + + ncgiList: + type: array + items: + $ref: '#/components/schemas/Ncgi' + minItems: 1 + description: > + Represents the list of NR cell Ids that constitutes the area. This IE shall be + present if the Area of Interest subscribed is a list of NR cell Ids. + + globalRanNodeIdList: + type: array + items: + $ref: '#/components/schemas/GlobalRanNodeId' + minItems: 1 + description: > + Represents the list of NG RAN node identifiers that constitutes the area. This IE shall + be present if the Area of Interest subscribed is a list of NG RAN node identifiers. + + globaleNbIdList: + type: array + items: + $ref: '#/components/schemas/GlobalRanNodeId' + minItems: 1 + description: > + Represents the list of eNodeB identifiers that constitutes the area. This IE shall be + present if the Area of Interest subscribed is a list of eNodeB identifiers. + description: > + If the additionalPraId IE is present, this IE shall state the presence information of the + UE for the individual PRA identified by the additionalPraId IE; If the additionalPraId IE + is not present, this IE shall state the presence information of the UE for the PRA + identified by the praId IE. + PresenceInfoRm: + type: object + properties: + praId: + type: string + description: | + Represents an identifier of the Presence Reporting Area (see clause 28.10 of + 3GPP TS 23.003. This IE shall be present if the Area of Interest subscribed or + reported is a Presence Reporting Area or a Set of Core Network predefined Presence + Reporting Areas. When present, it shall be encoded as a string representing an integer + in the following ranges: + - 0 to 8 388 607 for UE-dedicated PRA + - 8 388 608 to 16 777 215 for Core Network predefined PRA + Examples: + PRA ID 123 is encoded as "123" + PRA ID 11 238 660 is encoded as "11238660" + additionalPraId: + type: string + description: > + This IE may be present if the praId IE is present and if it contains a PRA identifier + referring to a set of Core Network predefined Presence Reporting Areas. + When present, this IE shall contain a PRA Identifier of an individual PRA within the Set + of Core Network predefined Presence Reporting Areas indicated by the praId IE. + + presenceState: + $ref: '#/components/schemas/PresenceState' + trackingAreaList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 0 + description: > + Represents the list of tracking areas that constitutes the area. This IE shall be + present if the subscription or the event report is for tracking UE presence in the + tracking areas. For non 3GPP access the TAI shall be the N3GPP TAI. + + ecgiList: + type: array + items: + $ref: '#/components/schemas/Ecgi' + minItems: 0 + description: > + Represents the list of EUTRAN cell Ids that constitutes the area. This IE shall be + present if the Area of Interest subscribed is a list of EUTRAN cell Ids. + ncgiList: + type: array + items: + $ref: '#/components/schemas/Ncgi' + minItems: 0 + description: > + Represents the list of NR cell Ids that constitutes the area. This IE shall be present + if the Area of Interest subscribed is a list of NR cell Ids. + globalRanNodeIdList: + type: array + items: + $ref: '#/components/schemas/GlobalRanNodeId' + description: > + Represents the list of NG RAN node identifiers that constitutes the area. This IE shall be + present if the Area of Interest subscribed is a list of NG RAN node identifiers. + globaleNbIdList: + type: array + items: + $ref: '#/components/schemas/GlobalRanNodeId' + minItems: 1 + description: > + Represents the list of eNodeB identifiers that constitutes the area. This IE shall be present + if the Area of Interest subscribed is a list of eNodeB identifiers. + nullable: true + description: > + This data type is defined in the same way as the 'PresenceInfo' data type, but with the + OpenAPI 'nullable: true' property. If the additionalPraId IE is present, this IE shall state + the presence information of the UE for the individual PRA identified by the additionalPraId + IE; If the additionalPraId IE is not present, this IE shall state the presence information + of the UE for the PRA identified by the praId IE. + + GlobalRanNodeId: + type: object + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + n3IwfId: + $ref: '#/components/schemas/N3IwfId' + gNbId: + $ref: '#/components/schemas/GNbId' + ngeNbId: + $ref: '#/components/schemas/NgeNbId' + wagfId: + $ref: '#/components/schemas/WAgfId' + tngfId: + $ref: '#/components/schemas/TngfId' + nid: + $ref: '#/components/schemas/Nid' + eNbId: + $ref: '#/components/schemas/ENbId' + oneOf: + - required: [ n3IwfId ] + - required: [ gNbId ] + - required: [ ngeNbId ] + - required: [ wagfId ] + - required: [ tngfId ] + - required: [ eNbId ] + description: > + One of the six attributes n3IwfId, gNbIdm, ngeNbId, wagfId, tngfId, eNbId shall be present. + required: + - plmnId + GNbId: + description: Provides the G-NB identifier. + type: object + properties: + bitLength: + type: integer + minimum: 22 + maximum: 32 + description: > + Unsigned integer representing the bit length of the gNB ID as defined in clause + 9.3.1.6 of 3GPP TS 38.413 [11], within the range 22 to 32. + gNBValue: + type: string + pattern: '^[A-Fa-f0-9]{6,8}$' + description: > + This represents the identifier of the gNB. The value of the gNB ID shall be encoded + in hexadecimal representation. Each character in the string shall take a value of + "0" to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. The padding 0 shall + be added to make multiple nibbles, the most significant character representing the + padding 0 if required together with the 4 most significant bits of the gNB ID shall + appear first in the string, and the character representing the 4 least significant bit + of the gNB ID shall appear last in the string. + required: + - bitLength + - gNBValue + + AtsssCapability: + description: > + Containes Capability to support procedures related to Access Traffic Steering, Switching, + Splitting. + type: object + properties: + atsssLL: + type: boolean + default: false + description: > + Indicates the ATSSS-LL capability to support procedures related to Access Traffic + Steering, Switching, Splitting (see clauses 4.2.10, 5.32 of 3GPP TS 23.501). + true: Supported + false (default): Not Supported + mptcp: + type: boolean + default: false + description: > + Indicates the MPTCP capability to support procedures related to Access Traffic Steering, + Switching, Splitting (see clauses 4.2.10, 5.32 of 3GPP TS 23.501 + true: Supported + false (default): Not Supported + rttWithoutPmf: + type: boolean + default: false + description: > + This IE is only used by the UPF to indicate whether the UPF supports RTT measurement + without PMF (see clauses 5.32.2, 6.3.3.3 of 3GPP TS 23.501 + true: Supported + false (default): Not Supported + PlmnIdNid: + description: > + Contains the serving core network operator PLMN ID and, for an SNPN, the NID that together + with the PLMN ID identifies the SNPN. + type: object + required: + - mcc + - mnc + properties: + mcc: + $ref: '#/components/schemas/Mcc' + mnc: + $ref: '#/components/schemas/Mnc' + nid: + $ref: '#/components/schemas/Nid' + + PlmnIdNidRm: + anyOf: + - $ref: '#/components/schemas/PlmnIdNid' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'PlmnIdNid' data type, but with the + OpenAPI 'nullable: true' property. + + SmallDataRateStatus: + description: It indicates theSmall Data Rate Control Status + type: object + properties: + remainPacketsUl: + type: integer + minimum: 0 + description: > + When present, it shall contain the number of packets the UE is allowed to send uplink + in the given time unit for the given PDU session (see clause 5.31.14.3 of 3GPP TS 23.501. + remainPacketsDl: + type: integer + minimum: 0 + description: > + When present it shall contain the number of packets the AF is allowed to send downlink + in the given time unit for the given PDU session (see clause 5.31.14.3 of 3GPP TS 23.501. + validityTime: + $ref: '#/components/schemas/DateTime' + remainExReportsUl: + type: integer + minimum: 0 + description: > + When present, it shall indicate number of additional exception reports the UE is allowed + to send uplink in the given time unit for the given PDU session (see clause 5.31.14.3 + of 3GPP TS 23.501. + remainExReportsDl: + type: integer + minimum: 0 + description: > + When present, it shall indicate number of additional exception reports the AF is allowed + to send downlink in the given time unit for the given PDU session (see clause 5.31.14.3 + in 3GPP TS 23.501 + + HfcNodeId: + description: REpresents the HFC Node Identifer received over NGAP. + type: object + required: + - hfcNId + properties: + hfcNId: + $ref: '#/components/schemas/HfcNId' + + HfcNodeIdRm: + anyOf: + - $ref: '#/components/schemas/HfcNodeId' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'HfcNodeId' data type, but with the + OpenAPI 'nullable: true' property. + + WirelineArea: + type: object + properties: + globalLineIds: + type: array + items: + $ref: '#/components/schemas/Gli' + minItems: 1 + hfcNIds: + type: array + items: + $ref: '#/components/schemas/HfcNId' + minItems: 1 + areaCodeB: + $ref: '#/components/schemas/AreaCode' + areaCodeC: + $ref: '#/components/schemas/AreaCode' + combGciAndHfcNIds: + type: array + items: + $ref: '#/components/schemas/CombGciAndHfcNIds' + minItems: 1 + description: > + One and only one of the "globLineIds", "hfcNIds", "areaCodeB",d "areaCodeC" and + combGciAndHfcNIds attributes shall be included in a WirelineArea data structure + + WirelineServiceAreaRestriction: + type: object + properties: + restrictionType: + $ref: '#/components/schemas/RestrictionType' + areas: + type: array + items: + $ref: '#/components/schemas/WirelineArea' + description: > + The "restrictionType" attribute and the "areas" attribute shall be either both present + or absent. The empty array of areas is used when service is allowed/restricted nowhere. + + ApnRateStatus: + description: Contains the APN rate control status e.g. of the AMF. + type: object + properties: + remainPacketsUl: + type: integer + minimum: 0 + description: > + When present, it shall contain the number of packets the UE is allowed to send uplink + in the given time unit for the given APN (all PDN connections of the UE to this APN + see clause 4.7.7.3 in 3GPP TS 23.401. + remainPacketsDl: + type: integer + minimum: 0 + description: > + When present, it shall contain the number of packets the UE is allowed to send uplink + in the given time unit for the given APN (all PDN connections of the UE to this APN + see clause 4.7.7.3 in 3GPP TS 23.401. + validityTime: + $ref: '#/components/schemas/DateTime' + remainExReportsUl: + type: integer + minimum: 0 + description: > + When present, it shall indicate the number of additional exception reports the UE is + allowed to send uplink in the given time unit for the given APN (all PDN connections of the UE to this APN, + see clause 4.7.7.3 in 3GPP TS 23.401. + remainExReportsDl: + type: integer + minimum: 0 + description: > + When present, it shall indicate the number of additional exception reports the AF is + allowed to send downlink in the given time unit for the given APN (all PDN connections + of the UE to this APN, see clause 4.7.7.3 in 3GPP TS 23.401. + + ScheduledCommunicationTime: + description: Identifies time and day of the week when the UE is available for communication. + type: object + properties: + daysOfWeek: + type: array + items: + $ref: '#/components/schemas/DayOfWeek' + minItems: 1 + maxItems: 6 + description: > + Identifies the day(s) of the week. If absent, it indicates every day of the week. + timeOfDayStart: + $ref: '#/components/schemas/TimeOfDay' + timeOfDayEnd: + $ref: '#/components/schemas/TimeOfDay' + + ScheduledCommunicationTimeRm: + anyOf: + - $ref: '#/components/schemas/ScheduledCommunicationTime' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'ScheduledCommunicationTime' data type, + but with the OpenAPI 'nullable: true' property. + + BatteryIndication: + type: object + properties: + batteryInd: + type: boolean + description: > + This IE shall indicate whether the UE is battery powered or not. + true: the UE is battery powered; + false or absent: the UE is not battery powered + replaceableInd: + type: boolean + description: > + This IE shall indicate whether the battery of the UE is replaceable or not. + true: the battery of the UE is replaceable; + false or absent: the battery of the UE is not replaceable. + rechargeableInd: + type: boolean + description: > + This IE shall indicate whether the battery of the UE is rechargeable or not. + true: the battery of UE is rechargeable; + false or absent: the battery of the UE is not rechargeable. + description: > + Parameters "replaceableInd" and "rechargeableInd" are only included if the value of + Parameter "batteryInd" is true. + + BatteryIndicationRm: + anyOf: + - $ref: '#/components/schemas/BatteryIndication' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'BatteryIndication' data type, but + with the OpenAPI 'nullable: true' property. + + AcsInfo: + description: The ACS information for the 5G-RG is defined in BBF TR-069 [42] or in BBF TR-369 + type: object + properties: + acsUrl: + $ref: '#/components/schemas/Uri' + acsIpv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + acsIpv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + + AcsInfoRm: + anyOf: + - $ref: '#/components/schemas/AcsInfo' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'AcsInfo' data type, but with the + OpenAPI 'nullable: true' property. + + NrV2xAuth: + description: Contains NR V2X services authorized information. + type: object + properties: + vehicleUeAuth: + $ref: '#/components/schemas/UeAuth' + pedestrianUeAuth: + $ref: '#/components/schemas/UeAuth' + + LteV2xAuth: + description: Contains LTE V2X services authorized information. + type: object + properties: + vehicleUeAuth: + $ref: '#/components/schemas/UeAuth' + pedestrianUeAuth: + $ref: '#/components/schemas/UeAuth' + + Pc5QoSPara: + description: Contains policy data on the PC5 QoS parameters. + type: object + required: + - pc5QosFlowList + properties: + pc5QosFlowList: + type: array + items: + $ref: '#/components/schemas/Pc5QosFlowItem' + pc5LinkAmbr: + $ref: '#/components/schemas/BitRate' + + Pc5QosFlowItem: + description: Contains a PC5 QOS flow. + type: object + required: + - pqi + properties: + pqi: + $ref: '#/components/schemas/5Qi' + + pc5FlowBitRates: + $ref: '#/components/schemas/Pc5FlowBitRates' + range: + $ref: '#/components/schemas/Uinteger' + + Pc5FlowBitRates: + description: it shall represent the PC5 Flow Bit Rates + type: object + properties: + guaFbr: + $ref: '#/components/schemas/BitRate' + maxFbr: + $ref: '#/components/schemas/BitRate' + + UtraLocation: + type: object + oneOf: + - required: + - cgi + - required: + - sai + - required: + - rai + description: Exactly one of cgi, sai or lai shall be present. + properties: + cgi: + $ref: '#/components/schemas/CellGlobalId' + sai: + $ref: '#/components/schemas/ServiceAreaId' + lai: + $ref: '#/components/schemas/LocationAreaId' + rai: + $ref: '#/components/schemas/RoutingAreaId' + ageOfLocationInformation: + type: integer + minimum: 0 + maximum: 32767 + description: > + The value represents the elapsed time in minutes since the last network contact of the + mobile station. Value "0" indicates that the location information was obtained after a + successful paging procedure for Active Location Retrieval when the UE is in idle mode + or after a successful location reporting procedure the UE is in connected mode. Any + other value than "0" indicates that the location information is the last known one. + See 3GPP TS 29.002 clause 17.7.8. + ueLocationTimestamp: + $ref: '#/components/schemas/DateTime' + geographicalInformation: + type: string + pattern: '^[0-9A-F]{16}$' + description: > + Refer to geographical Information.See 3GPP TS 23.032 clause 7.3.2. Only the + description of an ellipsoid point with uncertainty circle is allowed to be used. + geodeticInformation: + type: string + pattern: '^[0-9A-F]{20}$' + description: > + Refers to Calling Geodetic Location. See ITU-T Recommendation Q.763 (1999) clause + 3.88.2. Only the description of an ellipsoid point with uncertainty circle is allowed + to be used. + + GeraLocation: + type: object + oneOf: + - required: + - cgi + - required: + - sai + - required: + - lai + - required: + - rai + description: Exactly one of cgi, sai or lai shall be present. + properties: + locationNumber: + type: string + description: Location number within the PLMN. See 3GPP TS 23.003, clause 4.5. + cgi: + $ref: '#/components/schemas/CellGlobalId' + rai: + $ref: '#/components/schemas/RoutingAreaId' + sai: + $ref: '#/components/schemas/ServiceAreaId' + lai: + $ref: '#/components/schemas/LocationAreaId' + vlrNumber: + type: string + description: VLR number. See 3GPP TS 23.003 clause 5.1. + mscNumber: + type: string + description: MSC number. See 3GPP TS 23.003 clause 5.1. + ageOfLocationInformation: + type: integer + minimum: 0 + maximum: 32767 + description: > + The value represents the elapsed time in minutes since the last network contact of the + mobile station. Value "0" indicates that the location information was obtained after a + successful paging procedure for Active Location Retrieval when the UE is in idle mode + or after a successful location reporting procedure the UE is in connected mode. Any + other value than "0" indicates that the location information is the last known one. + See 3GPP TS 29.002 clause 17.7.8. + ueLocationTimestamp: + $ref: '#/components/schemas/DateTime' + geographicalInformation: + type: string + pattern: '^[0-9A-F]{16}$' + description: > + Refer to geographical Information.See 3GPP TS 23.032 clause 7.3.2. Only the + description of an ellipsoid point with uncertainty circle is allowed to be used. + geodeticInformation: + type: string + pattern: '^[0-9A-F]{20}$' + description: > + Refers to Calling Geodetic Location.See ITU-T Recommendation Q.763 (1999) clause 3.88.2. + Only the description of an ellipsoid point with uncertainty circle is allowed to be + used. + + CellGlobalId: + description: Contains a Cell Global Identification as defined in 3GPP TS 23.003, clause 4.3.1. + type: object + required: + - plmnId + - lac + - cellId + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + lac: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + cellId: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + + ServiceAreaId: + description: Contains a Service Area Identifier as defined in 3GPP TS 23.003, clause 12.5. + type: object + required: + - plmnId + - lac + - sac + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + lac: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + description: Location Area Code. + sac: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + description: Service Area Code. + + LocationAreaId: + description: Contains a Location area identification as defined in 3GPP TS 23.003, clause 4.1. + type: object + required: + - plmnId + - lac + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + + lac: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + description: Location Area Code. + + RoutingAreaId: + description: Contains a Routing Area Identification as defined in 3GPP TS 23.003, clause 4.2. + type: object + required: + - plmnId + - lac + - rac + properties: + plmnId: + $ref: '#/components/schemas/PlmnId' + lac: + type: string + pattern: '^[A-Fa-f0-9]{4}$' + description: Location Area Code + rac: + type: string + pattern: '^[A-Fa-f0-9]{2}$' + description: Routing Area Code + + DddTrafficDescriptor: + description: Contains a Traffic Descriptor. + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + macAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MacAddr48' + + MoExpDataCounter: + description: Contain the MO Exception Data Counter. + type: object + required: + - counter + properties: + counter: + type: integer + description: > + Unsigned integer identifying the MO Exception Data Counter, as specified in clause + 5.31.14.3 of 3GPP TS 23.501. + timeStamp: + $ref: '#/components/schemas/DateTime' + + NssaaStatus: + description: contains the Subscribed S-NSSAI subject to NSSAA procedure and the status. + type: object + required: + - snssai + - status + properties: + snssai: + $ref: '#/components/schemas/Snssai' + status: + $ref: '#/components/schemas/AuthStatus' + + NssaaStatusRm: + anyOf: + - $ref: '#/components/schemas/NssaaStatus' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'NssaaStatus' data type, but with + the OpenAPI 'nullable: true' property. + + TnapId: + description: Contain the TNAP Identifier see clause5.6.2 of 3GPP TS 23.501. + type: object + properties: + ssId: + type: string + description: > + This IE shall be present if the UE is accessing the 5GC via a trusted WLAN access + network.When present, it shall contain the SSID of the access point to which the UE + is attached, that is received over NGAP, see IEEE Std 802.11-2012. + + bssId: + type: string + description: > + When present, it shall contain the BSSID of the access point to which the UE is + attached, that is received over NGAP, see IEEE Std 802.11-2012. + + civicAddress: + $ref: '#/components/schemas/Bytes' + + TnapIdRm: + anyOf: + - $ref: '#/components/schemas/TnapId' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'TnapId' data type, but with the + OpenAPI 'nullable: true' property. + + TwapId: + description: > + Contain the TWAP Identifier as defined in clause 4.2.8.5.3 of 3GPP TS 23.501 + or the WLAN location information as defined in clause 4.5.7.2.8 of 3GPP TS 23.402. + type: object + required: + - ssId + properties: + ssId: + type: string + description: > + This IE shall contain the SSID of the access point to which the UE is attached, that is + received over NGAP, see IEEE Std 802.11-2012. + + bssId: + type: string + description: > + When present, it shall contain the BSSID of the access point to which the UE is + attached, for trusted WLAN access, see IEEE Std 802.11-2012. + + civicAddress: + $ref: '#/components/schemas/Bytes' + + TwapIdRm: + anyOf: + - $ref: '#/components/schemas/TwapId' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'TwapId' data type, but with the + OpenAPI 'nullable: true' property. + + SnssaiExtension: + description: > + Extensions to the Snssai data type, sdRanges and wildcardSd shall not be present + simultaneously + type: object + not: + required: + - sdRanges + - wildcardSd + properties: + sdRanges: + description: > + When present, it shall contain the range(s) of Slice Differentiator values supported for + the Slice/Service Type value indicated in the sst attribute of the Snssai data type + type: array + items: + $ref: '#/components/schemas/SdRange' + minItems: 1 + wildcardSd: + description: > + When present, it shall be set to true, to indicate that all SD values are supported for + the Slice/Service Type value indicated in the sst attribute of the Snssai data type. + type: boolean + enum: + - true + + SdRange: + description: A range of SDs (Slice Differentiators) + type: object + properties: + start: + type: string + pattern: '^[A-Fa-f0-9]{6}$' + description: > + First value identifying the start of an SD range. This string shall be formatted as + specified for the sd attribute of the Snssai data type in clause 5.4.4.2. + end: + type: string + pattern: '^[A-Fa-f0-9]{6}$' + description: > + Last value identifying the end of an SD range. This string shall be formatted as + specified for the sd attribute of the Snssai data type in clause 5.4.4.2. + + ProseServiceAuth: + description: > + Indicates whether the UE is authorized to use related services. + type: object + properties: + proseDirectDiscoveryAuth: + $ref: '#/components/schemas/UeAuth' + proseDirectCommunicationAuth: + $ref: '#/components/schemas/UeAuth' + proseL2RelayAuth: + $ref: '#/components/schemas/UeAuth' + proseL3RelayAuth: + $ref: '#/components/schemas/UeAuth' + proseL2RemoteAuth: + $ref: '#/components/schemas/UeAuth' + proseL3RemoteAuth: + $ref: '#/components/schemas/UeAuth' + proseMultipathComL2RemoteAuth: + $ref: '#/components/schemas/UeAuth' + proseL2UeRelayAuth: + $ref: '#/components/schemas/UeAuth' + proseL3UeRelayAuth: + $ref: '#/components/schemas/UeAuth' + proseL2EndAuth: + $ref: '#/components/schemas/UeAuth' + proseL3EndAuth: + $ref: '#/components/schemas/UeAuth' + + EcsServerAddr: + description: > + Contains the Edge Configuration Server Address Configuration Information as defined in + clause 5.2.3.6.1 of 3GPP TS 23.502. + type: object + properties: + ecsFqdnList: + type: array + items: + $ref: '#/components/schemas/Fqdn' + minItems: 1 + ecsIpAddressList: + type: array + items: + $ref: '#/components/schemas/IpAddr' + minItems: 1 + ecsUriList: + type: array + items: + $ref: '#/components/schemas/Uri' + minItems: 1 + ecsProviderId: + type: string + + EcsServerAddrRm: + anyOf: + - $ref: '#/components/schemas/EcsServerAddr' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the ' EcsServerAddr ' data type, but with + the OpenAPI 'nullable: true' property. + + IpAddr: + description: Contains an IP adresse. + type: object + oneOf: + - required: + - ipv4Addr + - required: + - ipv6Addr + - required: + - ipv6Prefix + properties: + ipv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + ipv6Prefix: + $ref: '#/components/schemas/Ipv6Prefix' + + SACInfo: + description: > + Represents threshold(s) to control the triggering of network slice reporting notifications + or the information contained in the network slice reporting notification. + type: object + properties: + numericValNumUes: + type: integer + numericValNumPduSess: + type: integer + percValueNumUes: + type: integer + minimum: 0 + maximum: 100 + percValueNumPduSess: + type: integer + minimum: 0 + maximum: 100 + uesWithPduSessionInd: + type: boolean + default: false + + SACEventStatus: + description: > + Contains the network slice status information in terms of the current number of UEs + registered with a network slice, the current number of PDU Sessions established on a + network slice or both. + type: object + properties: + reachedNumUes: + $ref: '#/components/schemas/SACInfo' + reachedNumPduSess: + $ref: '#/components/schemas/SACInfo' + + SpatialValidityCond: + description: Contains the Spatial Validity Condition. + type: object + properties: + trackingAreaList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 1 + countries: + type: array + items: + $ref: '#/components/schemas/Mcc' + minItems: 1 + geographicalServiceArea: + $ref: '#/components/schemas/GeoServiceArea' + + SpatialValidityCondRm: + description: Contains the Spatial Validity Condition or the null value. + anyOf: + - $ref: '#/components/schemas/SpatialValidityCond' + - $ref: '#/components/schemas/NullValue' + + ServerAddressingInfo: + description: Contains addressing information (IP addresses and/or FQDNs) of a server. + type: object + anyOf: + - required: + - ipv4Addresses + - required: + - ipv6Addresses + - required: + - fqdnList + properties: + ipv4Addresses: + type: array + items: + $ref: '#/components/schemas/Ipv4Addr' + minItems: 1 + ipv6Addresses: + type: array + items: + $ref: '#/components/schemas/Ipv6Addr' + minItems: 1 + fqdnList: + type: array + items: + $ref: '#/components/schemas/Fqdn' + minItems: 1 + + PcfUeCallbackInfo: + description: > + Contains the PCF for the UE information necessary for the PCF for the PDU session to send + SM Policy Association Establishment and Termination events. + type: object + properties: + callbackUri: + $ref: '#/components/schemas/Uri' + bindingInfo: + type: string + nullable: true + required: + - callbackUri + + PduSessionInfo: + description: indicates the DNN and S-NSSAI combination of a PDU session. + type: object + properties: + snssai: + $ref: '#/components/schemas/Snssai' + dnn: + $ref: '#/components/schemas/Dnn' + required: + - dnn + - snssai + + EasIpReplacementInfo: + description: Contains EAS IP replacement information for a Source and a Target EAS. + type: object + properties: + source: + $ref: '#/components/schemas/EasServerAddress' + target: + $ref: '#/components/schemas/EasServerAddress' + required: + - source + - target + + EasServerAddress: + description: Represents the IP address and port of an EAS server. + type: object + properties: + ip: + $ref: '#/components/schemas/IpAddr' + port: + $ref: '#/components/schemas/Uinteger' + required: + - ip + - port + + RoamingRestrictions: + description: > + Indicates if access is allowed to a given serving network, e.g. a PLMN (MCC, MNC) or an + SNPN (MCC, MNC, NID). + type: object + properties: + accessAllowed: + type: boolean + + GeoServiceArea: + description: List of geographic area or list of civic address info + type: object + properties: + geographicAreaList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + civicAddressList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + + MutingExceptionInstructions: + description: > + Indicates to an Event producer NF instructions for the subscription and stored events when + an exception (e.g. full buffer) occurs at the Event producer NF while the event is muted. + type: object + properties: + bufferedNotifs: + $ref: '#/components/schemas/BufferedNotificationsAction' + subscription: + $ref: '#/components/schemas/SubscriptionAction' + + MutingNotificationsSettings: + description: > + Indicates the Event producer NF settings to the Event consumer NF + type: object + properties: + maxNoOfNotif: + type: integer + durationBufferedNotif: + $ref: '#/components/schemas/DurationSec' + + CombGciAndHfcNIds: + type: object + properties: + globalCableId: + $ref: '#/components/schemas/Gci' + hfcNId: + $ref: '#/components/schemas/HfcNId' + + + VplmnOffloadingInfo: + description: VPLMN Specific Offloading Information + type: object + properties: + offloadIdentifier: + $ref: '#/components/schemas/OffloadIdentifier' + vplmnId: + $ref: '#/components/schemas/PlmnId' + allowedTraffic: + type: boolean + default: true + ipv4AddressRanges: + type: array + items: + $ref: '#/components/schemas/Ipv4AddressRange' + minItems: 1 + ipv4AddrMasks: + type: array + items: + $ref: '#/components/schemas/Ipv4AddrMask' + minItems: 1 + ipv6AddressRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6AddressRange' + minItems: 1 + ipv6PrefixRanges: + type: array + items: + $ref: '#/components/schemas/Ipv6PrefixRange' + minItems: 1 + fqdnList: + type: array + items: + $ref: '#/components/schemas/Fqdn' + minItems: 1 + fqdnPatterns: + type: array + items: + $ref: '#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + sessionDIAmbr: + $ref: '#/components/schemas/BitRate' + + PartiallyAllowedSnssai: + description: > + Indicates a S-NSSAI that is partially allowed in the Registration Area. + type: object + properties: + snssai: + $ref: '#/components/schemas/Snssai' + allowedTaiList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 1 + required: + - snssai + - allowedTaiList + + VarRepPeriod: + description: > + Indicates the Variable reporting periodicity for event reporting + type: object + properties: + repPeriod: + $ref: '#/components/schemas/DurationSec' + percValueNfLoad: + allOf: + - $ref: '#/components/schemas/Uinteger' + minimum: 0 + maximum: 100 + required: + - repPeriod + + + RangingSlPosAuth: + description: > + Indicates whether the UE is authorized to use related services. + type: object + properties: + rgSlPosTargetAuth: + $ref: '#/components/schemas/UeAuth' + rgSlPosSlRefAuth: + $ref: '#/components/schemas/UeAuth' + rgSlPosLocAuth: + $ref: '#/components/schemas/UeAuth' + rgSlPosClientAuth: + $ref: '#/components/schemas/UeAuth' + rgSlPosServerAuth: + $ref: '#/components/schemas/UeAuth' + + + NrA2xAuth: + description: Contains NR A2X services authorized information. + type: object + properties: + uavUeAuth: + $ref: '#/components/schemas/UeAuth' + + LteA2xAuth: + description: Contains LTE A2X services authorized information. + type: object + properties: + uavUeAuth: + $ref: '#/components/schemas/UeAuth' + + SliceUsageControlInfo: + description: The network slice usage control related information + type: object + required: + - sNssai + properties: + sNssai: + $ref: '#/components/schemas/Snssai' + deregInactTimer: + $ref: '#/components/schemas/DurationSec' + sessInactTimer: + $ref: '#/components/schemas/DurationSec' + anyOf: + - required: [ deregInactTimer ] + - required: [ sessInactTimer ] + + SnssaiDnnItem: + description: Combination of S-NSSAIs and DNNs + type: object + properties: + snssaiList: + type: array + items: + $ref: '#/components/schemas/ExtSnssai' + minItems: 1 + dnnList: + type: array + items: + $ref: '#/components/schemas/Dnn' + minItems: 1 + anyOf: + - required: [ snssaiList ] + - required: [ dnnList ] + + + NtnTaiInfo: + type: object + required: + - plmnId + - tacList + properties: + plmnId: + $ref: '#/components/schemas/PlmnIdNid' + tacList: + type: array + items: + $ref: '#/components/schemas/Tac' + minItems: 1 + derivedTac: + $ref: '#/components/schemas/Tac' + + +# +# Data types describing alternative data types or combinations of data types +# + ExtSnssai: + allOf: + - $ref: '#/components/schemas/Snssai' + - $ref: '#/components/schemas/SnssaiExtension' + description: > + The sdRanges and wildcardSd attributes shall be exclusive from each other. If one of these + attributes is present, the sd attribute shall also be present and it shall contain one Slice + Differentiator value within the range of SD (if the sdRanges attribute is present) or with + any value (if the wildcardSd attribute is present). + + SnssaiReplaceInfo: + description: Indicates the status of an S-NSSAI and an alternative S-NSSAI optionally. + type: object + properties: + snssai: + $ref: '#/components/schemas/Snssai' + status: + $ref: '#/components/schemas/SnssaiStatus' + altSnssai: + $ref: '#/components/schemas/Snssai' + nsReplTerminInd: + $ref: '#/components/schemas/TerminationIndication' + plmnId: + $ref: '#/components/schemas/PlmnId' + required: + - snssai + + +# +# Data Types related to 5G QoS as defined in clause 5.5 +# + +# +# SIMPLE DATA TYPES +# +# + Qfi: + type: integer + minimum: 0 + maximum: 63 + description: Unsigned integer identifying a QoS flow, within the range 0 to 63. + + QfiRm: + type: integer + minimum: 0 + maximum: 63 + nullable: true + description: > + This data type is defined in the same way as the 'Qfi' data type, but with the + OpenAPI 'nullable: true' property. + + 5Qi: + type: integer + minimum: 0 + maximum: 255 + description: > + Unsigned integer representing a 5G QoS Identifier (see clause 5.7.2.1 of 3GPP TS 23.501, + within the range 0 to 255. + + 5QiRm: + type: integer + minimum: 0 + maximum: 255 + nullable: true + description: > + This data type is defined in the same way as the '5QiPriorityLevel' data type, but with + the OpenAPI 'nullable: true' property. " + + BitRate: + type: string + pattern: '^\d+(\.\d+)? (bps|Kbps|Mbps|Gbps|Tbps)$' + description: > + String representing a bit rate; the prefixes follow the standard symbols from The International + System of Units, and represent x1000 multipliers, with the exception that prefix "K" is + used to represent the standard symbol "k". + + BitRateRm: + type: string + pattern: '^\d+(\.\d+)? (bps|Kbps|Mbps|Gbps|Tbps)$' + nullable: true + description: > + This data type is defined in the same way as the 'BitRate' data type, but with the OpenAPI 'nullable: true' property. + + PacketRate: + type: string + pattern: '^\d+(\.\d+)? (pps|kpps|Mpps|Gpps|Tpps)$' + description: > + String representing a packet rate, i.e., packet per second; the prefixes follow the symbols + from The International System of Units, and represent x1000 multipliers. + + PacketRateRm: + type: string + pattern: '^\d+(\.\d+)? (pps|kpps|Mpps|Gpps|Tpps)$' + nullable: true + description: > + This data type is defined in the same way as the 'PacketRate' data type, but with the + OpenAPI 'nullable: true' property. + + TrafficVolume: + type: string + pattern: '^\d+(\.\d+)? (B|kB|MB|GB|TB)$' + description: > + String representing a Traffic Volume measured in bytes; the prefixes follow the symbols + from The International System of Units, and represent x1000 multipliers. + + TrafficVolumeRm: + type: string + pattern: '^\d+(\.\d+)? (B|kB|MB|GB|TB)$' + nullable: true + description: > + This data type is defined in the same way as the 'TrafficVolume' data type, but with the + OpenAPI 'nullable: true' property. + + ArpPriorityLevelRm: + type: integer + minimum: 1 + maximum: 15 + nullable: true + description: > + This data type is defined in the same way as the 'ArpPriorityLevel' data type, but with + the OpenAPI 'nullable: true' property. + + ArpPriorityLevel: + type: integer + minimum: 1 + maximum: 15 + nullable: true + description: > + nullable true shall not be used for this attribute. Unsigned integer indicating the ARP + Priority Level (see clause 5.7.2.2 of 3GPP TS 23.501, within the range 1 to 15.Values are + ordered in decreasing order of priority, i.e. with 1 as the highest priority and 15 as + the lowest priority. + + 5QiPriorityLevel: + type: integer + minimum: 1 + maximum: 127 + description: > + Unsigned integer indicating the 5QI Priority Level (see clauses 5.7.3.3 and 5.7.4 of 3GPP + TS 23.501, within the range 1 to 127.Values are ordered in decreasing order of priority, + i.e. with 1 as the highest priority and 127 as the lowest priority. + + 5QiPriorityLevelRm: + type: integer + minimum: 1 + maximum: 127 + nullable: true + description: > + This data type is defined in the same way as the '5QiPriorityLevel' data type, but with + the OpenAPI 'nullable: true' property. + + PacketDelBudget: + type: integer + minimum: 1 + description: > + Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP + TS 23.501), expressed in milliseconds. + + PacketDelBudgetRm: + type: integer + minimum: 1 + nullable: true + description: > + This data type is defined in the same way as the 'PacketDelBudget' data type, but with + the OpenAPI 'nullable: true' property. + + PacketErrRate: + type: string + pattern: '^([0-9]E-[0-9])$' + description: > + String representing Packet Error Rate (see clause 5.7.3.5 and 5.7.4 of 3GPP TS 23.501, + expressed as a "scalar x 10-k" where the scalar and the exponent k are each encoded as + one decimal digit. + + PacketErrRateRm: + type: string + pattern: '^([0-9]E-[0-9])$' + nullable: true + description: > + This data type is defined in the same way as the 'PacketErrRate' data type, but with + the OpenAPI 'nullable: true' property. + + PacketLossRate: + type: integer + minimum: 0 + maximum: 1000 + description: > + Unsigned integer indicating Packet Loss Rate (see clauses 5.7.2.8 and 5.7.4 of 3GPP + TS 23.501), expressed in tenth of percent. + + PacketLossRateRm: + type: integer + minimum: 0 + maximum: 1000 + nullable: true + description: > + This data type is defined in the same way as the 'PacketLossRate' data type, but with + the OpenAPI 'nullable: true' property. + + AverWindow: + type: integer + minimum: 1 + maximum: 4095 + default: 2000 + description: Unsigned integer indicating Averaging Window (see clause 5.7.3.6 and 5.7.4 of 3GPP TS 23.501), expressed in milliseconds. + + AverWindowRm: + type: integer + maximum: 4095 + default: 2000 + minimum: 1 + nullable: true + description: > + This data type is defined in the same way as the 'AverWindow' data type, but with + the OpenAPI 'nullable: true' property. + + MaxDataBurstVol: + type: integer + minimum: 1 + maximum: 4095 + description: > + Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of + 3GPP TS 23.501), expressed in Bytes. + + MaxDataBurstVolRm: + type: integer + minimum: 1 + maximum: 4095 + nullable: true + description: > + This data type is defined in the same way as the 'MaxDataBurstVol' data type, but with + the OpenAPI 'nullable: true' property. + + SamplingRatio: + type: integer + minimum: 1 + maximum: 100 + description: > + Unsigned integer indicating Sampling Ratio (see clauses 4.15.1 of 3GPP TS 23.502), + expressed in percent. + + SamplingRatioRm: + type: integer + minimum: 1 + maximum: 100 + nullable: true + description: > + This data type is defined in the same way as the 'SamplingRatio' data type, but with the + OpenAPI 'nullable: true' property. +# + RgWirelineCharacteristics: + $ref: '#/components/schemas/Bytes' + + RgWirelineCharacteristicsRm: + anyOf: + - $ref: '#/components/schemas/RgWirelineCharacteristics' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'RgWirelineCharacteristics' data type, + but with the OpenAPI 'nullable: true' property. + + ExtMaxDataBurstVol: + type: integer + minimum: 4096 + maximum: 2000000 + description: > + Unsigned integer indicating Maximum Data Burst Volume (see clauses 5.7.3.7 and 5.7.4 of + 3GPP TS 23.501), expressed in Bytes. + + ExtMaxDataBurstVolRm: + type: integer + minimum: 4096 + maximum: 2000000 + nullable: true + description: > + This data type is defined in the same way as the 'ExtMaxDataBurstVol' data type, but + with the OpenAPI 'nullable: true' property. + + ExtPacketDelBudget: + type: integer + minimum: 1 + description: > + Unsigned integer indicating Packet Delay Budget (see clauses 5.7.3.4 and 5.7.4 of 3GPP + TS 23.501 [8])), expressed in 0.01 milliseconds. + + ExtPacketDelBudgetRm: + type: integer + minimum: 1 + nullable: true + description: > + This data type is defined in the same way as the 'ExtPacketDelBudget' data type, but + with the OpenAPI 'nullable: true' property. " + + Metadata: + format: byte + type: string + nullable: true + description: > + A String which is transparently passed to the UPF to be applied for traffic to SFC. + + PduSetDelayBudget: + type: integer + minimum: 1 + description: > + Unsigned integer indicating PDU Set Delay Budget (PSDB) (see clause 5.7.7.2 of 3GPP + TS 23.501), expressed in 0.01 milliseconds. + + PduSetDelayBudgetRm: + type: integer + minimum: 1 + nullable: true + description: > + This data type is defined in the same way as the 'PduSetDelayBudget' data type, but with + the OpenAPI 'nullable: true' property. + + PduSetErrRate: + type: string + pattern: '^([0-9]E-[0-9])$' + description: > + String representing PDU Set Error Rate (PSER) (see clause 5.7.7.3 3GPP TS 23.501 [8]) where + the scalar and the exponent k are each encoded as one decimal digit. + + PduSetErrRateRm: + type: string + pattern: '^([0-9]E-[0-9])$' + nullable: true + description: > + This data type is defined in the same way as the 'PduSetErrRate' data type, but with the + OpenAPI 'nullable: true' property. + +# +# ENUMERATED DATA TYPES +# + + PreemptionCapability: + anyOf: + - type: string + enum: + - NOT_PREEMPT + - MAY_PREEMPT + - type: string + description: > + The enumeration PreemptionCapability indicates the pre-emption capability of a request on + other QoS flows. See clause 5.7.2.2 of 3GPP TS 23.501. It shall comply with the provisions + defined in table 5.5.3.1-1. + PreemptionCapabilityRm: + anyOf: + - $ref: '#/components/schemas/PreemptionCapability' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'PreemptionCapability' enumeration, + but with the OpenAPI 'nullable: true' property. + + PreemptionVulnerability: + anyOf: + - type: string + enum: + - NOT_PREEMPTABLE + - PREEMPTABLE + - type: string + description: > + The enumeration PreemptionVulnerability indicates the pre-emption vulnerability of the QoS + flow to pre-emption from other QoS flows. See clause 5.7.2.2 of 3GPP TS 23.501. It shall + comply with the provisions defined in table 5.5.3.2-1 + + PreemptionVulnerabilityRm: + anyOf: + - $ref: '#/components/schemas/PreemptionVulnerability' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'PreemptionVulnerability' enumeration, + but with the OpenAPI 'nullable: true' property." + + ReflectiveQoSAttribute: + anyOf: + - type: string + enum: + - RQOS + - NO_RQOS + - type: string + description: > + The enumeration ReflectiveQosAttribute indicates whether certain traffic of the QoS flow may + be subject to Reflective QoS (see clause 5.7.2.3 of 3GPP TS 23.501). It shall comply with + the provisions defined in table 5.5.3.3-1. + + ReflectiveQoSAttributeRm: + anyOf: + - $ref: '#/components/schemas/ReflectiveQoSAttribute' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'ReflectiveQosAttribute' enumeration, + but with the OpenAPI 'nullable: true' property. " + + NotificationControl: + anyOf: + - type: string + enum: + - REQUESTED + - NOT_REQUESTED + - type: string + description: > + The enumeration NotificationControl indicates whether notifications are requested from the + RAN when the GFBR can no longer (or again) be fulfilled for a QoS Flow during the lifetime + of the QoS Flow (see clause 5.7.2.4 of 3GPP TS 23.501). + It shall comply with the provisions defined in table 5.5.3.5-1. + + NotificationControlRm: + anyOf: + - $ref: '#/components/schemas/NotificationControl' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'NotificationControl' enumeration, but + with the OpenAPI 'nullable: true' property. + + QosResourceType: + anyOf: + - type: string + enum: + - NON_GBR + - NON_CRITICAL_GBR + - CRITICAL_GBR + - type: string + description: > + The enumeration QosResourceType indicates whether a QoS Flow is non-GBR, delay critical GBR, + or non-delay critical GBR (see clauses 5.7.3.4 and 5.7.3.5 of 3GPP TS 23.501). It shall + comply with the provisions defined in table 5.5.3.6-1. + + QosResourceTypeRm: + anyOf: + - $ref: '#/components/schemas/QosResourceType' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'QosResourceType' enumeration, but + with the OpenAPI 'nullable: true' property. " + + AdditionalQosFlowInfo: + anyOf: + - anyOf: + - type: string + enum: + - MORE_LIKELY + - type: string + - $ref: '#/components/schemas/NullValue' + description: > + The enumeration AdditionalQosFlowInfo provides additional QoS flow information (see clause + 9.3.1.12 3GPP TS 38.413 [11]). It shall comply with the provisions defined in table + 5.5.3.12-1. + + PartitioningCriteria: + anyOf: + - type: string + enum: + - TAC + - SUBPLMN + - GEOAREA + - SNSSAI + - DNN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - "TAC": Type Allocation Code + - "SUBPLMN": Subscriber PLMN ID + - "GEOAREA": Geographical area, i.e. list(s) of TAI(s) + - "SNSSAI": S-NSSAI + - "DNN": DNN + + PartitioningCriteriaRm: + anyOf: + - $ref: '#/components/schemas/PartitioningCriteria' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the ' PartitioningCriteria ' data type, but + with the OpenAPI 'nullable: true' property. + + PduSetHandlingInfo: + anyOf: + - type: string + enum: + - ALL_PDUS_NEEDED + - ALL_PDUS_NOT_NEEDED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Possible values are: + - "ALL_PDUS_NEEDED": All PDUs of the PDU Set are needed + - "ALL_PDUS_NOT_NEEDED": All PDUs of the PDU Set are not needed + + MediaTransportProto: + anyOf: + - type: string + enum: + - RTP + - SRTP + - type: string + description: > + The enumeration MediaTransportProto indicates the transport protocol used for a media flow. + + RtpHeaderExtType: + anyOf: + - type: string + enum: + - PDU_SET_MARKING + - type: string + description: > + The enumeration indicates the type of Rtp Header Extension type + + + RtpPayloadFormat: + anyOf: + - type: string + enum: + - H264 + - H265 + - type: string + description: > + The enumeration RtpPayloadFormat indicates the RTP Payload format + +# +# +# STRUCTURED DATA TYPES +# + + Arp: + description: Contains Allocation and Retention Priority information. + type: object + properties: + priorityLevel: + $ref: '#/components/schemas/ArpPriorityLevel' + preemptCap: + $ref: '#/components/schemas/PreemptionCapability' + preemptVuln: + $ref: '#/components/schemas/PreemptionVulnerability' + required: + - priorityLevel + - preemptCap + - preemptVuln + + Ambr: + description: Contains the maximum aggregated uplink and downlink bit rates. + type: object + properties: + uplink: + $ref: '#/components/schemas/BitRate' + downlink: + $ref: '#/components/schemas/BitRate' + required: + - uplink + - downlink + + Dynamic5Qi: + description: > + It indicates the QoS Characteristics for a Non-standardised or not pre-configured 5QI + for downlink and uplink. + type: object + properties: + resourceType: + $ref: '#/components/schemas/QosResourceType' + priorityLevel: + $ref: '#/components/schemas/5QiPriorityLevel' + packetDelayBudget: + $ref: '#/components/schemas/PacketDelBudget' + packetErrRate: + $ref: '#/components/schemas/PacketErrRate' + averWindow: + $ref: '#/components/schemas/AverWindow' + maxDataBurstVol: + $ref: '#/components/schemas/MaxDataBurstVol' + extMaxDataBurstVol: + $ref: '#/components/schemas/ExtMaxDataBurstVol' + extPacketDelBudget: + $ref: '#/components/schemas/ExtPacketDelBudget' + cnPacketDelayBudgetDl: + $ref: '#/components/schemas/ExtPacketDelBudget' + cnPacketDelayBudgetUl: + $ref: '#/components/schemas/ExtPacketDelBudget' + required: + - resourceType + - priorityLevel + - packetDelayBudget + - packetErrRate + + NonDynamic5Qi: + description: > + It indicates the QoS Characteristics for a standardized or pre-configured 5QI for downlink + and uplink. + type: object + properties: + priorityLevel: + $ref: '#/components/schemas/5QiPriorityLevel' + averWindow: + $ref: '#/components/schemas/AverWindow' + maxDataBurstVol: + $ref: '#/components/schemas/MaxDataBurstVol' + extMaxDataBurstVol: + $ref: '#/components/schemas/ExtMaxDataBurstVol' + cnPacketDelayBudgetDl: + $ref: '#/components/schemas/ExtPacketDelBudget' + cnPacketDelayBudgetUl: + $ref: '#/components/schemas/ExtPacketDelBudget' + minProperties: 0 + + ArpRm: + anyOf: + - $ref: '#/components/schemas/Arp' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Arp' data type, but with the + OpenAPI 'nullable: true' property. + + AmbrRm: + anyOf: + - $ref: '#/components/schemas/Ambr' + - $ref: '#/components/schemas/NullValue' + description: > + This data type is defined in the same way as the 'Ambr' data type, but with the + OpenAPI 'nullable: true' property." + + SliceMbr: + description: MBR related to slice + type: object + properties: + uplink: + $ref: '#/components/schemas/BitRate' + downlink: + $ref: '#/components/schemas/BitRate' + required: + - uplink + - downlink + + SliceMbrRm: + description: "SliceMbr with nullable: true" + + anyOf: + - $ref: '#/components/schemas/SliceMbr' + - $ref: '#/components/schemas/NullValue' + + PduSetQosPara: + description: Represents the PDU Set level QoS parameters. + type: object + properties: + pduSetDelayBudget: + $ref: '#/components/schemas/PduSetDelayBudget' + pduSetErrRate: + $ref: '#/components/schemas/PduSetErrRate' + pduSetHandlingInfo: + $ref: '#/components/schemas/PduSetHandlingInfo' +# + + PduSetQosParaRm: + description: "PduSetQosPara with nullable: true" + anyOf: + - $ref: '#/components/schemas/PduSetQosPara' + - $ref: '#/components/schemas/NullValue' + + + ProtocolDescription: + description: ProtocolDescription contains information to derive PDU set information. + type: object + properties: + transportProto: + $ref: '#/components/schemas/MediaTransportProto' + rtpHeaderExtInfo: + $ref: '#/components/schemas/RtpHeaderExtInfo' + rtpPayloadInfoList: + type: array + items: + $ref: '#/components/schemas/RtpPayloadInfo' + minItems: 1 + + RtpHeaderExtInfo: + description: RTP Header Extension information + type: object + properties: + rtpHeaderExtType: + $ref: '#/components/schemas/RtpHeaderExtType' + rtpHeaderExtId: + type: integer + minimum: 1 + maximum: 255 + + RtpPayloadInfo: + description: RtpPayloadInfo contains Rtp payload type and format. + type: object + properties: + rtpPayloadTypeList: + type: array + items: + type: integer + minimum: 1 + maximum: 127 + minItems: 1 + rtpPayloadFormat: + $ref: '#/components/schemas/RtpPayloadFormat' + +# +# Data Types related to 5G Trace as defined in clause 5.6 +# + +# +# SIMPLE DATA TYPES +# + + PhysCellId: + type: integer + minimum: 0 + maximum: 1007 + description: > + Integer value identifying the physical cell identity (PCI), as definition of "PhysCellId" IE + in clause 6.3.2 of 3GPP TS 38.331. + + ArfcnValueNR: + type: integer + minimum: 0 + maximum: 3279165 + description: > + Integer value indicating the ARFCN applicable for a downlink, uplink or bi-directional (TDD) + NR global frequency raster, + as definition of "ARFCN-ValueNR" IE in clause 6.3.2 of 3GPP TS 38.331. + + QoeReference: + description: > + String containing MCC (3 digits), MNC (2 or 3 digits) + and QMC ID (3 octets, encoded as 6 hexadecimal digits). + type: string + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{6}$' + + MdtAlignmentInfo: + description: | + String containing: + - Trace Reference: MCC (3 digits), MNC (2 or 3 digits), + Trace ID (3 octets, encoded as 6 hexadecimal digits) + - Trace Recording Session Reference (2 octets, encoded as 4 hexadecimal digits) + format: string + pattern: '^[0-9]{3}-[0-9]{2,3}-[A-Fa-f0-9]{6}-[A-Fa-f0-9]{4}$' + +# +# +# Enumerations +# + + TraceDepth: + anyOf: + - type: string + enum: + - MINIMUM + - MEDIUM + - MAXIMUM + - MINIMUM_WO_VENDOR_EXTENSION + - MEDIUM_WO_VENDOR_EXTENSION + - MAXIMUM_WO_VENDOR_EXTENSION + - type: string + description: > + The enumeration TraceDepth defines how detailed information should be recorded + in the trace. See 3GPP TS 32.422 for further description of the values. + It shall comply with the provisions defined in table 5.6.3.1-1 + + TraceDepthRm: + anyOf: + - $ref: '#/components/schemas/TraceDepth' + - $ref: '#/components/schemas/NullValue' + description: > + This enumeration is defined in the same way as the 'TraceDepth' enumeration, but with + the OpenAPI 'nullable: true' property. + + JobType: + anyOf: + - type: string + enum: + - IMMEDIATE_MDT_ONLY + - LOGGED_MDT_ONLY + - TRACE_ONLY + - IMMEDIATE_MDT_AND_TRACE + - RLF_REPORTS_ONLY + - RCEF_REPORTS_ONLY + - LOGGED_MBSFN_MDT + - type: string + description: > + The enumeration JobType defines Job Type in the trace. See 3GPP TS 32.422 for further + description of the values. It shall comply with the provisions defined in table 5.6.3.3-1. + + ReportTypeMdt: + anyOf: + - type: string + enum: + - PERIODICAL + - EVENT_TRIGGED + - type: string + description: > + The enumeration ReportTypeMdt defines Report Type for logged MDT in the trace. See 3GPP TS + 32.422 for further description of the values. It shall comply with the provisions defined + in table 5.6.3.4-1. + + MeasurementLteForMdt: + anyOf: + - type: string + enum: + - M1 + - M2 + - M3 + - M4_DL + - M4_UL + - M5_DL + - M5_UL + - M6_DL + - M6_UL + - M7_DL + - M7_UL + - M8 + - M9 + - type: string + description: > + The enumeration MeasurementLteForMdt defines Measurements used for MDT in LTE in the trace. + See 3GPP TS 32.422 for further description of the values. It shall comply with the + provisions defined in table 5.6.3.5-1. + + MeasurementNrForMdt: + anyOf: + - type: string + enum: + - M1 + - M2 + - M3 + - M4_DL + - M4_UL + - M5_DL + - M5_UL + - M6_DL + - M6_UL + - M7_DL + - M7_UL + - M8 + - M9 + - type: string + description: > + The enumeration MeasurementNrForMdt defines Measurements used for MDT in NR in the trace. + See 3GPP TS 32.422 for further description of the values. It shall comply with the + provisions defined in table 5.6.3.6-1. + + SensorMeasurement: + anyOf: + - type: string + enum: + - BAROMETRIC_PRESSURE + - UE_SPEED + - UE_ORIENTATION + - type: string + description: > + The enumeration SensorMeasurement defines sensor measurement type for MDT in the trace. + See 3GPP TS 32.422 for further description of the values. It shall comply with the + provisions defined in table 5.6.3.7-1. + + ReportingTrigger: + anyOf: + - type: string + enum: + - PERIODICAL + - EVENT_A2 + - EVENT_A2_PERIODIC + - ALL_RRM_EVENT_TRIGGERS + - type: string + description: > + The enumeration ReportingTrigger defines Reporting Triggers for MDT in the trace. See 3GPP + TS 32.42] for further description of the values. It shall comply with the provisions + defined in table 5.6.3.8-1. + + ReportIntervalMdt: + anyOf: + - type: string + enum: + - 120 + - 240 + - 480 + - 640 + - 1024 + - 2048 + - 5120 + - 10240 + - 60000 + - 360000 + - 720000 + - 1800000 + - 3600000 + - type: string + description: > + The enumeration ReportIntervalMdt defines Report Interval for MDT in the trace. See 3GPP + TS 32.422 for further description of the values. It shall comply with + the provisions defined in table 5.6.3.9-1. + + ReportAmountMdt: + anyOf: + - type: string + enum: + - 1 + - 2 + - 4 + - 8 + - 16 + - 32 + - 64 + - infinity + - type: string + description: > + The enumeration ReportAmountMdt defines Report Amount for MDT in the trace. See 3GPP + TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.10-1. + + EventForMdt: + anyOf: + - type: string + enum: + - OUT_OF_COVERAG + - A2_EVENT + - type: string + description: > + The enumeration EventForMdt defines events triggered measurement for logged MDT in the + trace. See 3GPP TS 32.422 for further description of the values. It shall comply with + the provisions defined in table 5.6.3.11-1 + + LoggingIntervalMdt: + anyOf: + - type: string + enum: + - 128 + - 256 + - 512 + - 1024 + - 2048 + - 3072 + - 4096 + - 6144 + - type: string + description: > + The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP + TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.12-1. + + LoggingDurationMdt: + anyOf: + - type: string + enum: + - 600 + - 1200 + - 2400 + - 3600 + - 5400 + - 7200 + - type: string + description: > + The enumeration LoggingIntervalMdt defines Logging Interval for MDT in the trace. See 3GPP + TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.12-1. + + PositioningMethodMdt: + anyOf: + - type: string + enum: + - GNSS + - E_CELL_ID + - type: string + description: > + The enumeration LoggingDurationMdt defines Logging Duration for MDT in the trace. See 3GPP + TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.13-1. + + CollectionPeriodRmmLteMdt: + anyOf: + - type: string + enum: + - 1024 + - 1280 + - 2048 + - 2560 + - 5120 + - 10240 + - 60000 + - type: string + description: > + The enumeration CollectionPeriodRmmLteMdt defines Collection period for RRM measurements + LTE for MDT in the trace. See 3GPP TS 32.422 for further description of the values. + It shall comply with the provisions defined in table 5.6.3.15-1. + + MeasurementPeriodLteMdt: + anyOf: + - type: string + enum: + - 1024 + - 1280 + - 2048 + - 2560 + - 5120 + - 10240 + - 60000 + - type: string + description: > + The enumeration MeasurementPeriodLteMdt defines Measurement period LTE for MDT in the + trace. See 3GPP TS 32.422 for further description of the values. It shall comply + with the provisions defined in table 5.6.3.16-1. + + ReportIntervalNrMdt: + anyOf: + - type: string + enum: + - 120 + - 240 + - 480 + - 640 + - 1024 + - 2048 + - 5120 + - 10240 + - 20480 + - 40960 + - 60000 + - 360000 + - 720000 + - 1800000 + - 3600000 + - type: string + description: > + The enumeration ReportIntervalNrMdt defines Report Interval in NR for MDT in the trace. See + 3GPP TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.17-1. + + LoggingIntervalNrMdt: + anyOf: + - type: string + enum: + - 128 + - 256 + - 512 + - 1024 + - 2048 + - 3072 + - 4096 + - 6144 + - 320 + - 640 + - infinity + - type: string + description: > + The enumeration LoggingIntervalNrMdt defines Logging Interval in NR for MDT in the trace. + See 3GPP TS 32.422 for further description of the values. It shall comply with the + provisions defined in table 5.6.3.18-1. + + CollectionPeriodRmmNrMdt: + anyOf: + - type: string + enum: + - 1024 + - 2048 + - 5120 + - 10240 + - 60000 + - type: string + description: > + The enumeration CollectionPeriodRmmNrMdt defines Collection period for RRM measurements NR + for MDT in the trace. See 3GPP TS 32.422 for further description of the values. It shall comply with the provisions defined in table 5.6.3.19-1 + + LoggingDurationNrMdt: + anyOf: + - type: string + enum: + - 600 + - 1200 + - 2400 + - 3600 + - 5400 + - 7200 + - type: string + description: > + The enumeration LoggingDurationMdt defines Logging Duration in NR for MDT in the trace. See + 3GPP TS 32.422 for further description of the values. It shall comply with the provisions + defined in table 5.6.3.20-1. + + QoeServiceType: + description: > + The enumeration QoeServiceType indicates the kind of service that shall be recorded for + QMC. It shall comply with the provisions defined in TS 29.571, table 5.6.3.21-1. + anyOf: + - type: string + enum: + - DASH + - MTSI + - VR + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + + AvailableRanVisibleQoeMetric: + description: > + The enumeration AvailableRanVisibleQoeMetric indicates different available + RAN-visible QoE metrics to the gNB. It shall comply with the provisions defined + in TS 29.571, table 5.6.3.22-1. + anyOf: + - type: string + enum: + - APPLICATION_LAYER_BUFFER_LEVEL_LIST + - PLAYOUT_DELAY_FOR_MEDIA_STARTUP + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + but is not used to encode content defined in the present version of this API. + + +# +# STRUCTURED DATA TYPES +# + + TraceData: + description: contains Trace control and configuration parameters. + type: object + nullable: true + properties: + traceRef: + type: string + pattern: '^[0-9]{3}[0-9]{2,3}-[A-Fa-f0-9]{6}$' + description: > + Trace Reference (see 3GPP TS 32.422).It shall be encoded as the concatenation of MCC, + MNC and Trace ID as follows: 'MCC' + List of NE Types (see 3GPP TS 32.422).It shall be encoded as an octet string in + hexadecimal representation. + Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" + and shall represent 4 bits. + The most significant character representing the 4 most significant bits shall appear + first in the string, and the character representing the + 4 least significant bit shall appear last in the string.Octets shall be coded + according to 3GPP TS 32.422. + eventList: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + Triggering events (see 3GPP TS 32.422).It shall be encoded as an octet string in + hexadecimal representation. Each character in the string shall take a value of "0" + to "9", "a" to "f" or "A" to "F" and shall represent 4 bits. + The most significant character representing the 4 most significant bits shall appear + first in the string, and the character representing the 4 least significant bit shall + appear last in the string. Octets shall be coded according to 3GPP TS 32.422. + collectionEntityIpv4Addr: + $ref: '#/components/schemas/Ipv4Addr' + collectionEntityIpv6Addr: + $ref: '#/components/schemas/Ipv6Addr' + interfaceList: + type: string + pattern: '^[A-Fa-f0-9]+$' + description: > + List of Interfaces (see 3GPP TS 32.422).It shall be encoded as an octet string in + hexadecimal representation. + Each character in the string shall take a value of "0" to "9", "a" to "f" or "A" to "F" + and shall represent 4 bits. The most significant character representing the 4 most + significant bits shall appear first in the string, and the character representing the + 4 least significant bit shall appear last in the string. Octets shall be coded + according to 3GPP TS 32.422. If this attribute is not present, all the interfaces + applicable to the list of NE types indicated in the neTypeList attribute should + be traced. + required: + - traceRef + - traceDepth + - neTypeList + - eventList + + MdtConfiguration: + description: contains contain MDT configuration data. + type: object + required: + - jobType + properties: + jobType: + $ref: '#/components/schemas/JobType' + reportType: + $ref: '#/components/schemas/ReportTypeMdt' + areaScope: + $ref: '#/components/schemas/AreaScope' + measurementLteList: + type: array + items: + $ref: '#/components/schemas/MeasurementLteForMdt' + measurementNrList: + type: array + items: + $ref: '#/components/schemas/MeasurementNrForMdt' + minItems: 1 + sensorMeasurementList: + type: array + items: + $ref: '#/components/schemas/SensorMeasurement' + minItems: 1 + reportingTriggerList: + type: array + items: + $ref: '#/components/schemas/ReportingTrigger' + minItems: 1 + reportInterval: + $ref: '#/components/schemas/ReportIntervalMdt' + reportIntervalNr: + $ref: '#/components/schemas/ReportIntervalNrMdt' + reportAmount: + $ref: '#/components/schemas/ReportAmountMdt' + eventThresholdRsrp: + type: integer + minimum: 0 + maximum: 97 + description: > + This IE shall be present if the report trigger parameter is configured for A2 event + reporting or A2 event triggered periodic reporting and the job type parameter is + configured for Immediate MDT or combined Immediate MDT and Trace in LTE. + When present, this IE shall indicate the Event Threshold for RSRP, and the value shall + be between 0-97. + + eventThresholdRsrpNr: + type: integer + minimum: 0 + maximum: 127 + description: > + This IE shall be present if the report trigger parameter is configured for A2 event + reporting or A2 event triggered periodic reporting and the job type parameter is + configured for Immediate MDT or combined Immediate MDT + and Trace in NR. When present, + this IE shall indicate the Event Threshold for RSRP, and the value shall be + between 0-127. + eventThresholdRsrq: + type: integer + minimum: 0 + maximum: 34 + description: > + This IE shall be present if the report trigger parameter is configured for A2 event + reporting or A2 event triggered periodic reporting and the job type parameter is + configured for Immediate MDT or combined Immediate MDT and Trace in LTE.When present, + this IE shall indicate the Event Threshold for RSRQ, and the value shall be + between 0-34. + eventThresholdRsrqNr: + type: integer + minimum: 0 + maximum: 127 + description: > + This IE shall be present if the report trigger parameter is configured for A2 event + reporting or A2 event triggered periodic reporting and the job type parameter is + configured for Immediate MDT or combined Immediate MDT and Trace in NR.When present, + this IE shall indicate the Event Threshold for RSRQ, and the value shall be + between 0-127. + eventList: + type: array + items: + $ref: '#/components/schemas/EventForMdt' + minItems: 1 + loggingInterval: + $ref: '#/components/schemas/LoggingIntervalMdt' + loggingIntervalNr: + $ref: '#/components/schemas/LoggingIntervalNrMdt' + loggingDuration: + $ref: '#/components/schemas/LoggingDurationMdt' + loggingDurationNr: + $ref: '#/components/schemas/LoggingDurationNrMdt' + positioningMethod: + $ref: '#/components/schemas/PositioningMethodMdt' + addPositioningMethodList: + type: array + items: + $ref: '#/components/schemas/PositioningMethodMdt' + minItems: 1 + collectionPeriodRmmLte: + $ref: '#/components/schemas/CollectionPeriodRmmLteMdt' + collectionPeriodRmmNr: + $ref: '#/components/schemas/CollectionPeriodRmmNrMdt' + measurementPeriodLte: + $ref: '#/components/schemas/MeasurementPeriodLteMdt' + mdtAllowedPlmnIdList: + type: array + items: + $ref: '#/components/schemas/PlmnId' + minItems: 1 + maxItems: 16 + mbsfnAreaList: + type: array + items: + $ref: '#/components/schemas/MbsfnArea' + minItems: 1 + maxItems: 8 + interFreqTargetList: + type: array + items: + $ref: '#/components/schemas/InterFreqTargetInfo' + minItems: 1 + maxItems: 8 + + AreaScope: + description: Contain the area based on Cells or Tracking Areas. + type: object + properties: + eutraCellIdList: + type: array + items: + $ref: '#/components/schemas/EutraCellId' + minItems: 1 + nrCellIdList: + type: array + items: + $ref: '#/components/schemas/NrCellId' + minItems: 1 + tacList: + type: array + items: + $ref: '#/components/schemas/Tac' + minItems: 1 + tacInfoPerPlmn: + type: object + additionalProperties: + $ref: '#/components/schemas/TacInfo' + minProperties: 1 + description: > + A map (list of key-value pairs) where PlmnId converted to a string serves as key + + TacInfo: + description: contains tracking area information (tracking area codes). + type: object + required: + - tacList + properties: + tacList: + type: array + items: + $ref: '#/components/schemas/Tac' + minItems: 1 + + MbsfnArea: + description: Contains an MBSFN area information. + type: object + properties: + mbsfnAreaId: + type: integer + minimum: 0 + maximum: 255 + description: This IE shall contain the MBSFN Area ID. + carrierFrequency: + type: integer + minimum: 0 + maximum: 262143 + description: When present, this IE shall contain the Carrier Frequency (EARFCN). + + InterFreqTargetInfo: + description: Indicates the Inter Frequency Target information. + required: + - dlCarrierFreq + type: object + properties: + dlCarrierFreq: + $ref: '#/components/schemas/ArfcnValueNR' + cellIdList: + type: array + items: + $ref: '#/components/schemas/PhysCellId' + minItems: 1 + maxItems: 32 + description: > + When present, this IE shall contain a list of the physical cell identities where the + UE is requested to perform measurement logging for the indicated frequency. + + + QmcConfigInfo: + description: > + It contains the configuration information for signaling-based activation of the + Quality of Experience (QoE) Measurements Collection (QMC) functionality. + type: object + required: + - qoeReference + properties: + qoeReference: + $ref: '#/components/schemas/QoeReference' + serviceType: + $ref: '#/components/schemas/QoeServiceType' + sliceScope: + type: array + items: + $ref: '#/components/schemas/Snssai' + minItems: 1 + areaScope: + $ref: '#/components/schemas/QmcAreaScope' + qoeCollectionEntityAddress: + $ref: '#/components/schemas/IpAddr' + qoeTarget: + $ref: '#/components/schemas/QoeTarget' + mdtAlignmentInfo: + $ref: '#/components/schemas/MdtAlignmentInfo' + availableRanVisibleQoeMetrics: + type: array + items: + $ref: '#/components/schemas/AvailableRanVisibleQoeMetric' + minItems: 1 + containerForAppLayerMeasConfig: + $ref: '#/components/schemas/Bytes' + mbsCommunicationServiceType: + $ref: '#/components/schemas/MbsServiceType' + + QmcAreaScope: + description: > + This IE contains the area in Cells or Tracking Areas where the QMC data collection + shall take place. + type: object + properties: + nrCellIdList: + type: array + items: + $ref: '#/components/schemas/NrCellId' + minItems: 1 + tacList: + type: array + items: + $ref: '#/components/schemas/Tac' + minItems: 1 + taiList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 1 + plmnList: + type: array + items: + $ref: '#/components/schemas/PlmnId' + minItems: 1 + + QoeTarget: + description: > + This parameter specifies the target object (individual UE) for the QMC in case of + signalling based QMC. It shall be able to carry an IMSI or a SUPI. + type: object + properties: + supi: + $ref: '#/components/schemas/Supi' + imsi: + $ref: '#/components/schemas/Imsi' + + + +# Data Types related to 5G ODB as defined in clause 5.7 + +# +# SIMPLE DATA TYPES +# +# +# +# Enumerations +# + RoamingOdb: + anyOf: + - type: string + enum: + - OUTSIDE_HOME_PLMN + - OUTSIDE_HOME_PLMN_COUNTRY + - type: string + description: > + The enumeration RoamingOdb defines the Barring of Roaming as. See 3GPP TS 23.015 for further + description. It shall comply with the provisions defined in table 5.7.3.1-1. + + OdbPacketServices: + anyOf: + - anyOf: + - type: string + enum: + - ALL_PACKET_SERVICES + - ROAMER_ACCESS_HPLMN_AP + - ROAMER_ACCESS_VPLMN_AP + - type: string + - $ref: '#/components/schemas/NullValue' + description: > + The enumeration OdbPacketServices defines the Barring of Packet Oriented Services. + See 3GPP TS 23.015 for further description. It shall comply with the provisions defined + in table 5.7.3.2-1 + +# +# STRUCTURED DATA TYPES +# + + OdbData: + description: Contains information regarding operater determined barring. + type: object + properties: + roamingOdb: + $ref: '#/components/schemas/RoamingOdb' + +# +# Data Types related to Charging as defined in clause 5.8 +# + +# +# SIMPLE DATA TYPES +# +# + ChargingId: + deprecated: true + type: integer + minimum: 0 + maximum: 4294967295 #(2^32)-1 + description: > + Integer where the allowed values correspond to the value range of an unsigned 32-bit + integer. + + SmfChargingId: + description: String based Charging ID + type: string + pattern: '^(0|([1-9]{1}[0-9]{0,9}))\.smf-([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$' + + ApplicationChargingId: + type: string + description: > + Application provided charging identifier allowing correlation of charging information. + + RatingGroup: + $ref: '#/components/schemas/Uint32' + + ServiceId: + $ref: '#/components/schemas/Uint32' + + +# +# Enumerations +# + +# +# STRUCTURED DATA TYPES +# + SecondaryRatUsageReport: + description: Secondary RAT Usage Report to report usage data for a secondary RAT for QoS flows. + type: object + properties: + secondaryRatType: + $ref: '#/components/schemas/RatType' + qosFlowsUsageData: + type: array + items: + $ref: '#/components/schemas/QosFlowUsageReport' + minItems: 1 + required: + - secondaryRatType + - qosFlowsUsageData + + QosFlowUsageReport: + description: Contains QoS flows usage data information. + type: object + properties: + qfi: + $ref: '#/components/schemas/Qfi' + startTimeStamp: + $ref: '#/components/schemas/DateTime' + endTimeStamp: + $ref: '#/components/schemas/DateTime' + downlinkVolume: + $ref: '#/components/schemas/Int64' + uplinkVolume: + $ref: '#/components/schemas/Int64' + required: + - qfi + - startTimeStamp + - endTimeStamp + - downlinkVolume + - uplinkVolume + + SecondaryRatUsageInfo: + description: > + Secondary RAT Usage Information to report usage data for a secondary RAT for QoS flows + and/or the whole PDU session. + type: object + properties: + secondaryRatType: + $ref: '#/components/schemas/RatType' + qosFlowsUsageData: + type: array + items: + $ref: '#/components/schemas/QosFlowUsageReport' + minItems: 1 + pduSessionUsageData: + type: array + items: + $ref: '#/components/schemas/VolumeTimedReport' + minItems: 1 + required: + - secondaryRatType + + VolumeTimedReport: + description: Contains Usage data information. + type: object + properties: + startTimeStamp: + $ref: '#/components/schemas/DateTime' + endTimeStamp: + $ref: '#/components/schemas/DateTime' + downlinkVolume: + $ref: '#/components/schemas/Int64' + uplinkVolume: + $ref: '#/components/schemas/Int64' + required: + - startTimeStamp + - endTimeStamp + - downlinkVolume + - uplinkVolume + + +# Data Types related to MBS as defined in clause 5.9 +# + +# +# SIMPLE DATA TYPES +# +# + + AreaSessionId: + $ref: '#/components/schemas/Uint16' + + AreaSessionPolicyId: + $ref: '#/components/schemas/Uint16' + + MbsFsaId: + description: MBS Frequency Selection Area Identifier + type: string + pattern: '^[A-Fa-f0-9]{6}$' + + + +# +# Enumerations +# +# + MbsServiceType: + description: Indicates the MBS service type of an MBS session + anyOf: + - type: string + enum: + - MULTICAST + - BROADCAST + - type: string + + MbsSessionActivityStatus: + description: Indicates the MBS session's activity status + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + + MbsSessionEventType: + description: MBS Session Event Type + anyOf: + - type: string + enum: + - MBS_REL_TMGI_EXPIRY + - BROADCAST_DELIVERY_STATUS + - INGRESS_TUNNEL_ADD_CHANGE + - type: string + + BroadcastDeliveryStatus: + description: Broadcast MBS Session's Delivery Status + anyOf: + - type: string + enum: + - STARTED + - TERMINATED + - type: string + +# +# STRUCTURED DATA TYPES +# + MbsSessionId: + description: MBS Session Identifier + type: object + properties: + tmgi: + $ref: '#/components/schemas/Tmgi' + ssm: + $ref: '#/components/schemas/Ssm' + nid: + $ref: '#/components/schemas/Nid' + anyOf: + - required: [ tmgi ] + - required: [ ssm ] + + Tmgi: + description: Temporary Mobile Group Identity + type: object + properties: + mbsServiceId: + type: string + pattern: '^[A-Fa-f0-9]{6}$' + description: MBS Service ID + plmnId: + $ref: '#/components/schemas/PlmnId' + required: + - mbsServiceId + - plmnId + + Ssm: + description: Source specific IP multicast address + type: object + properties: + sourceIpAddr: + $ref: '#/components/schemas/IpAddr' + destIpAddr: + $ref: '#/components/schemas/IpAddr' + required: + - sourceIpAddr + - destIpAddr + + MbsServiceArea: + description: MBS Service Area + type: object + properties: + ncgiList: + type: array + items: + $ref: '#/components/schemas/NcgiTai' + minItems: 1 + description: List of NR cell Ids + taiList: + type: array + items: + $ref: '#/components/schemas/Tai' + minItems: 1 + description: List of tracking area Ids + anyOf: + - required: [ ncgiList ] + - required: [ taiList ] + + NcgiTai: + description: List of NR cell ids, with their pertaining TAIs + type: object + properties: + tai: + $ref: '#/components/schemas/Tai' + cellList: + type: array + items: + $ref: '#/components/schemas/Ncgi' + minItems: 1 + description: List of List of NR cell ids + required: + - tai + - cellList + + MbsSession: + description: Individual MBS session + type: object + properties: + mbsSessionId: + $ref: '#/components/schemas/MbsSessionId' + tmgiAllocReq: + type: boolean + default: false + writeOnly: true + tmgi: + allOf: + - $ref: '#/components/schemas/Tmgi' + readOnly: true + expirationTime: + allOf: + - $ref: '#/components/schemas/DateTime' + readOnly: true + serviceType: + allOf: + - $ref: '#/components/schemas/MbsServiceType' + writeOnly: true + locationDependent: + type: boolean + default: false + areaSessionId: + allOf: + - $ref: '#/components/schemas/AreaSessionId' + readOnly: true + ingressTunAddrReq: + type: boolean + default: false + writeOnly: true + ingressTunAddr: + type: array + items: + $ref: '#/components/schemas/TunnelAddress' + minItems: 1 + readOnly: true + ssm: + allOf: + - $ref: '#/components/schemas/Ssm' + writeOnly: true + mbsServiceArea: + allOf: + - $ref: '#/components/schemas/MbsServiceArea' + writeOnly: true + extMbsServiceArea: + allOf: + - $ref: '#/components/schemas/ExternalMbsServiceArea' + writeOnly: true + redMbsServArea: + $ref: '#/components/schemas/MbsServiceArea' + readOnly: true + extRedMbsServArea: + $ref: '#/components/schemas/ExternalMbsServiceArea' + readOnly: true + dnn: + allOf: + - $ref: '#/components/schemas/Dnn' + writeOnly: true + snssai: + allOf: + - $ref: '#/components/schemas/Snssai' + writeOnly: true + activationTime: + deprecated: true + format: date-time + type: string + startTime: + $ref: '#/components/schemas/DateTime' + terminationTime: + $ref: '#/components/schemas/DateTime' + mbsServInfo: + $ref: '#/components/schemas/MbsServiceInfo' + mbsSessionSubsc: + $ref: '#/components/schemas/MbsSessionSubscription' + activityStatus: + $ref: '#/components/schemas/MbsSessionActivityStatus' + anyUeInd: + type: boolean + default: false + writeOnly: true + mbsFsaIdList: + type: array + items: + $ref: '#/components/schemas/MbsFsaId' + minItems: 1 + associatedSessionId: + $ref: '#/components/schemas/AssociatedSessionId' + required: + - serviceType + anyOf: + - required: [ mbsSessionId ] + - required: [ tmgiAllocReq ] + not: + required: [redMbsServArea, extRedMbsServArea] + + + MbsSessionSubscription: + description: MBS session subscription + type: object + properties: + mbsSessionId: + $ref: '#/components/schemas/MbsSessionId' + areaSessionId: + $ref: '#/components/schemas/AreaSessionId' + eventList: + type: array + items: + $ref: '#/components/schemas/MbsSessionEvent' + minItems: 1 + notifyUri: + $ref: '#/components/schemas/Uri' + notifyCorrelationId: + type: string + expiryTime: + $ref: '#/components/schemas/DateTime' + nfcInstanceId: + $ref: '#/components/schemas/NfInstanceId' + mbsSessionSubscUri: + allOf: + - $ref: '#/components/schemas/Uri' + readOnly: true + required: + - eventList + - notifyUri + + MbsSessionEventReportList: + description: MBS session event report list + type: object + properties: + eventReportList: + type: array + items: + $ref: '#/components/schemas/MbsSessionEventReport' + minItems: 1 + notifyCorrelationId: + type: string + required: + - eventReportList + + MbsSessionEvent: + description: MBS session event + type: object + properties: + eventType: + $ref: '#/components/schemas/MbsSessionEventType' + required: + - eventType + + MbsSessionEventReport: + description: MBS session event report + type: object + properties: + eventType: + $ref: '#/components/schemas/MbsSessionEventType' + timeStamp: + $ref: '#/components/schemas/DateTime' + ingressTunAddrInfo: + $ref: '#/components/schemas/IngressTunAddrInfo' + broadcastDelStatus: + $ref: '#/components/schemas/BroadcastDeliveryStatus' + required: + - eventType + + ExternalMbsServiceArea: + description: List of geographic area or list of civic address info for MBS Service Area + type: object + properties: + geographicAreaList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + minItems: 1 + civicAddressList: + type: array + items: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/CivicAddress' + minItems: 1 + oneOf: + - required: [ geographicAreaList ] + - required: [ civicAddressList ] + + + MbsSecurityContext: + description: MBS security context consisting of MSK/MTK(s) and associated IDs + type: object + properties: + keyList: + description: > + A map (list of key-value pairs) where a (unique) valid JSON string serves + as key of MbsSecurityContext + type: object + additionalProperties: + $ref: '#/components/schemas/MbsKeyInfo' + minProperties: 1 + required: + - keyList + + MbsKeyInfo: + description: MBS Security Key Data Structure + type: object + properties: + keyDomainId: + $ref: '#/components/schemas/Bytes' + mskId: + $ref: '#/components/schemas/Bytes' + msk: + $ref: '#/components/schemas/Bytes' + mskLifetime: + $ref: '#/components/schemas/DateTime' + mtkId: + $ref: '#/components/schemas/Bytes' + mtk: + $ref: '#/components/schemas/Bytes' + required: + - keyDomainId + - mskId + + IngressTunAddrInfo: + description: Ingress Tunnel Address Information + type: object + properties: + ingressTunAddr: + type: array + items: + $ref: '#/components/schemas/TunnelAddress' + minItems: 1 + required: + - ingressTunAddr + + + MbsServiceAreaInfo: + description: MBS Service Area Information for location dependent MBS session + type: object + properties: + areaSessionId: + $ref: '#/components/schemas/AreaSessionId' + mbsServiceArea: + $ref: '#/components/schemas/MbsServiceArea' + required: + - areaSessionId + - mbsServiceArea + + MbsServiceInfo: + description: Represent MBS Service Information. + type: object + properties: + mbsMediaComps: + type: object + additionalProperties: + $ref: '#/components/schemas/MbsMediaCompRm' + minProperties: 1 + mbsSdfResPrio: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ReservPriority' + afAppId: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/AfAppId' + mbsSessionAmbr: + $ref: '#/components/schemas/BitRate' + required: + - mbsMediaComps + + MbsMediaComp: + description: Represents an MBS Media Component. + type: object + properties: + mbsMedCompNum: + type: integer + mbsFlowDescs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/FlowDescription' + minItems: 1 + mbsSdfResPrio: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/ReservPriority' + mbsMediaInfo: + $ref: '#/components/schemas/MbsMediaInfo' + qosRef: + type: string + mbsQoSReq: + $ref: '#/components/schemas/MbsQoSReq' + required: + - mbsMedCompNum + + MbsMediaCompRm: + description: > + This data type is defined in the same way as the MbsMediaComp data type, but with the + OpenAPI nullable property set to true. + anyOf: + - $ref: '#/components/schemas/MbsMediaComp' + - $ref: '#/components/schemas/NullValue' + + MbsQoSReq: + description: Represent MBS QoS requirements. + type: object + properties: + 5qi: + $ref: '#/components/schemas/5Qi' + guarBitRate: + $ref: '#/components/schemas/BitRate' + maxBitRate: + $ref: '#/components/schemas/BitRate' + averWindow: + $ref: '#/components/schemas/AverWindow' + reqMbsArp: + $ref: '#/components/schemas/Arp' + required: + - 5qi + + MbsMediaInfo: + description: Represent MBS Media Information. + type: object + properties: + mbsMedType: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/MediaType' + maxReqMbsBwDl: + $ref: '#/components/schemas/BitRate' + minReqMbsBwDl: + $ref: '#/components/schemas/BitRate' + codecs: + type: array + items: + $ref: 'TS29514_Npcf_PolicyAuthorization.yaml#/components/schemas/CodecData' + minItems: 1 + maxItems: 2 + + AssociatedSessionId: + description: an associated Session Id used in MOCN + anyOf: + - $ref: '#/components/schemas/Ssm' + - type: string + + + +# Data Types related to Time Synchronization as defined in clause 5.10 +# + +# +# SIMPLE DATA TYPES +# +# + + +# +# Enumerations +# +# + + SynchronizationState: + description: Indicates the Synchronization State. + anyOf: + - type: string + enum: + - LOCKED + - HOLDOVER + - FREERUN + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + TimeSource: + description: Indicates the Time Source. + anyOf: + - type: string + enum: + - SYNC_E + - PTP + - GNSS + - ATOMIC_CLOCK + - TERRESTRIAL_RADIO + - SERIAL_TIME_CODE + - NTP + - HAND_SET + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + + ClockQualityDetailLevel: + description: Indicates the Clock Quality Detail Level. + anyOf: + - type: string + enum: + - CLOCK_QUALITY_METRICS + - ACCEPT_INDICATION + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + +# +# STRUCTURED DATA TYPES +# + + ClockQualityAcceptanceCriterion: + description: Contains a Clock Quality Acceptance Criterion. + type: object + properties: + synchronizationState: + $ref: '#/components/schemas/SynchronizationState' + clockQuality: + $ref: '#/components/schemas/ClockQuality' + parentTimeSource: + $ref: '#/components/schemas/TimeSource' + + ClockQuality: + description: Contains Clock Quality. + type: object + properties: + traceabilityToGnss: + type: boolean + traceabilityToUtc: + type: boolean + frequencyStability: + $ref: '#/components/schemas/Uint16' + clockAccuracy: + type: string + pattern: '^[A-Fa-f0-9]{2}$' + + + +# Data Types related to IMS SBA as defined in clause 5.11 +# + +# +# SIMPLE DATA TYPES +# +# + + SessionId: + description: IMS Session Identifier + type: string + + MediaId: + description: IMS Media Flow Identifier + type: string + + MaxMessageSize: + description: Maximum SCTP user message size + type: integer + maximum: 64 + default: 64 + + +# +# Enumerations +# +# + MediaResourceType: + description: Indicates the Media Resource type + anyOf: + - type: string + enum: + - DC + - AR + - AUDIO + - VIDEO + - type: string + + MediaProxy: + description: Media Proxy Configuration applicable to the media flow + anyOf: + - type: string + enum: + - HTTP + - UDP + - type: string + + SecuritySetup: + description: security setup of the DTLS connection + anyOf: + - type: string + enum: + - ACTIVE + - PASSIVE + - ACTPASS + - type: string + +# STRUCTURED DATA TYPES +# + DcEndpoint: + description: Endpoint for Data Channel + type: object + properties: + sctpPort: + type: integer + maximum: 65535 + minimum: 0 + description: Local or remote port for Data Channel + fingerprint: + type: string + pattern: '^(SHA-1|SHA-224|SHA-256|SHA-384|SHA-512|MD5|MD2|TOKEN)\s[0-9A-F]{2}(:[0-9A-F]{2})+' + description: local or remote certificate fingerprint for the DTLS association + tlsId: + type: string + pattern: '^[A-Fa-f0-9+/_-]{20,255}$' + description: local or remote TLS ID for the media stream + + DcStream: + description: Data Channel mapping and configuration information + type: object + properties: + streamId: + type: integer + maximum: 65535 + default: 0 + description: Stream identifier for Data Channel + subprotocol: + type: string + pattern: '^[A-Fa-f0-9]{20}$' + description: Subprotocol of the SCTP stream + order: + type: boolean + maxRetry: + type: integer + default: 0 + description: maximal number of the times a message will be retransmitted + maxTime: + type: integer + default: 0 + description: maximal lifetime in milliseconds after which a message will no longer be transmitted or retransmitted + priority: + type: integer + default: 256 + description: priority of data channel relative to other data channels + appBindingInfo: + type: string + description: application binding information of the Data Channel. + + + ReplaceHttpUrl: + description: replacement HTTP URL per stream + type: object + properties: + replaceHttpUrl: + $ref: '#/components/schemas/Uri' + streamId: + type: integer + maximum: 65535 + default: 0 + description: Stream identifier for Data Channel + + Endpoint: + description: Represents the IP endpoint. + type: object + required: + - ip + - transport + - portNumber + properties: + ip: + $ref: '#/components/schemas/IpAddr' + transport: + $ref: '#/components/schemas/TransportProtocol' + portNumber: + $ref: '#/components/schemas/Uinteger' + + + +# +# HTTP responses +# + + responses: + '307': + description: Temporary Redirect + content: + application/json: + schema: + $ref: '#/components/schemas/RedirectResponse' + headers: + Location: + description: 'The URI pointing to the resource located on the redirect target' + required: true + schema: + type: string + 3gpp-Sbi-Target-Nf-Id: + description: 'Identifier of target NF (service) instance towards which the request is redirected' + schema: + type: string + '308': + description: Permanent Redirect + content: + application/json: + schema: + $ref: '#/components/schemas/RedirectResponse' + headers: + Location: + description: 'The URI pointing to the resource located on the redirect target' + required: true + schema: + type: string + 3gpp-Sbi-Target-Nf-Id: + description: > + 'Identifier of target NF (service) instance towards which the request is redirected' + schema: + type: string + '400': + description: Bad request + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '401': + description: Unauthorized + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '405': + description: Method Not Allowed + '408': + description: Request Timeout + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '406': + description: 406 Not Acceptable + '409': + description: Conflict + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '410': + description: Gone + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '411': + description: Length Required + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '412': + description: Precondition Failed + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '413': + description: content Too Large + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '414': + description: URI Too Long + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '415': + description: Unsupported Media Type + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '429': + description: Too Many Requests + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '500': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '501': + description: Not Implemented + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '502': + description: Bad Gateway + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '503': + description: Service Unavailable + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + '504': + description: Gateway Timeout + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetails' + default: + description: Generic Error diff --git a/TS29572_Nlmf_Broadcast.yaml b/TS29572_Nlmf_Broadcast.yaml new file mode 100644 index 0000000..e8b78d2 --- /dev/null +++ b/TS29572_Nlmf_Broadcast.yaml @@ -0,0 +1,249 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'LMF Broadcast' + description: | + LMF Broadcast Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.572 V18.0.0; 5G System; Location Management Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/' + +servers: + - url: '{apiRoot}/nlmf-broadcast/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +paths: + /cipher-key-data: + post: + summary: Request ciphering key data + operationId: CipheringKeyData + tags: + - Request Ciphering Key Data + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CipherRequestData' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CipherResponseData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + CipheringKeyData: + '{$request.body#/amfCallBackURI}': + post: + requestBody: + description: Ciphering Key Data Notification + content: + application/json: + schema: + $ref: '#/components/schemas/CipheringKeyInfo' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/CipheringKeyResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: +# +# COMPLEX TYPES +# + CipheringKeyInfo: + description: Information within Ciphering Key Data Notification request. + type: object + required: + - cipheringData + properties: + cipheringData: + type: array + items: + $ref: '#/components/schemas/CipheringDataSet' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + CipheringKeyResponse: + description: Information within Ciphering Key Data Notification Response. + type: object + properties: + cipheringDataReport: + type: array + items: + $ref: '#/components/schemas/CipheringSetReport' + minItems: 1 + + CipheringDataSet: + description: Represents a Ciphering Data Set. + type: object + required: + - cipheringSetID + - cipheringKey + - c0 + - validityStartTime + - validityDuration + properties: + cipheringSetID: + $ref: '#/components/schemas/CipheringSetID' + cipheringKey: + $ref: '#/components/schemas/CipheringKey' + c0: + $ref: '#/components/schemas/C0' + ltePosSibTypes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + nrPosSibTypes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + validityStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + validityDuration: + $ref: '#/components/schemas/ValidityDuration' + taiList: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + + CipheringSetReport: + description: Represents a report of Ciphering Data Set storage. + type: object + required: + - cipheringSetID + - storageOutcome + properties: + cipheringSetID: + $ref: '#/components/schemas/CipheringSetID' + storageOutcome: + $ref: '#/components/schemas/StorageOutcome' + + CipherRequestData: + description: Information within Ciphering Key Data request. + type: object + required: + - amfCallBackURI + properties: + amfCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + CipherResponseData: + description: Information within Ciphering Key Data Response. + type: object + required: + - dataAvailability + properties: + dataAvailability: + $ref: '#/components/schemas/DataAvailability' +# +# +# SIMPLE TYPES +# + CipheringSetID: + description: Ciphering Data Set Identifier. + type: integer + minimum: 0 + maximum: 65535 + + CipheringKey: + description: Ciphering Key. + format: byte + type: string + + C0: + description: First component of the initial ciphering counter. + format: byte + type: string + + ValidityDuration: + description: Validity Duration of the Ciphering Data Set. + type: integer + minimum: 1 + maximum: 65535 +# +# ENUMS +# + StorageOutcome: + description: Indicates the result of Ciphering Data Set storage. + anyOf: + - type: string + enum: + - STORAGE_SUCCESSFUL + - STORAGE_FAILED + + DataAvailability: + description: Indicates availability of ciphering key data at an LMF. + anyOf: + - type: string + enum: + - CIPHERING_KEY_DATA_AVAILABLE + - CIPHERING_KEY_DATA_NOT_AVAILABLE diff --git a/TS29572_Nlmf_Location.yaml b/TS29572_Nlmf_Location.yaml new file mode 100644 index 0000000..091e2b9 --- /dev/null +++ b/TS29572_Nlmf_Location.yaml @@ -0,0 +1,2210 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.5' + title: 'LMF Location' + description: | + LMF Location Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.572 V18.4.0; 5G System; Location Management Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.572/' + +servers: + - url: '{apiRoot}/nlmf-loc/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + +paths: + /determine-location: + post: + summary: Determine Location of an UE + operationId: DetermineLocation + tags: + - Determine Location + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:determine-location:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/InputData' + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/InputData' + binaryDataLppMessage: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataLppMessage: + contentType: application/vnd.3gpp.lpp + headers: + Content-Id: + schema: + type: string + binaryDataLppMessageExt1: + contentType: application/vnd.3gpp.lpp + headers: + Content-Id: + schema: + type: string + binaryDataLppMessageExt2: + contentType: application/vnd.3gpp.lpp + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocationDataExt' + '204': + description: Expected response for MO-LR requesting location assistance data. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + EventNotify: + '{$request.body#/hgmlcCallBackURI}': + post: + requestBody: + description: UE Event Notification + content: + application/json: + schema: + $ref: '#/components/schemas/EventNotifyDataExt' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /up-subscription: + post: + summary: subscribe about status of a secure LCS-UP connection for a target UE + operationId: UpSubscription + tags: + - UP Subscribe + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:up-subscription:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpSubscription' + required: true + responses: + '204': + description: Expected response to successful UP Subscription + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + UPNotify: + '{$request.body#/upNotifyCallBackURI}': + post: + requestBody: + description: UP Connection Status Notification + content: + application/json: + schema: + $ref: '#/components/schemas/UpNotifyData' + responses: + '204': + description: Expected response to a valid notification + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /cancel-location: + post: + summary: request cancellation of periodic or triggered location + operationId: CancelLocation + tags: + - Cancel Location + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:cancel-location:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CancelLocData' + required: true + responses: + '204': + description: Expected response to a successful cancellation + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /location-context-transfer: + post: + summary: transfer context information for periodic or triggered location + operationId: LocationContextTransfer + tags: + - Location Context Transfer + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:location-context-transfer:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocContextData' + required: true + responses: + '204': + description: Expected response to successful location context transfer + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /location-measure: + post: + summary: PRU location measurement + operationId: LocationMeasure + tags: + - Location Measure + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:location-measure:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/LocMeasurementReq' + required: true + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/LocMeasurementResp' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /up-configure: + post: + summary: set up, modify or terminate a secure LCS-UP connection for a target UE + operationId: UpConfig + tags: + - UP Configure + security: + - {} + - oAuth2ClientCredentials: + - nlmf-loc + - oAuth2ClientCredentials: + - nlmf-loc + - nlmf-loc:up-configure:invoke + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/UpConfig' + required: true + responses: + '204': + description: Expected response to successful set up, modify or terminate LCS-UP connection. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nlmf-loc: Access to the Nlmf_Location API + nlmf-loc:determine-location:invoke: Access to invoke Determine Location + nlmf-loc:cancel-location:invoke: Access to invoke Cancel Location + nlmf-loc:location-context-transfer:invoke: Access to invoke Location Context + nlmf-loc:location-measure:invoke: Access to invoke Location Measurement + nlmf-loc:up-subscription:invoke: Access to invoke UP Subscription + nlmf-loc:up-configure:invoke: Access to invoke UP Config + + schemas: +# +# COMPLEX TYPES +# + InputData: + description: Information within Determine Location Request. + type: object + not: + required: [ ecgi, ncgi ] + properties: + externalClientType: + $ref: '#/components/schemas/ExternalClientType' + correlationID: + $ref: '#/components/schemas/CorrelationID' + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + locationQoS: + $ref: '#/components/schemas/LocationQoS' + supportedGADShapes: + type: array + items: + $ref: '#/components/schemas/SupportedGADShapes' + minItems: 1 + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + pei: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + requestedRangingSlResult: + type: array + items: + $ref: '#/components/schemas/RangingSlResult' + minItems: 1 + relatedUEs: + type: array + items: + $ref: '#/components/schemas/RelatedUE' + minItems: 1 + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ecgiOnSecondNode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ncgiOnSecondNode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + priority: + $ref: '#/components/schemas/LcsPriority' + velocityRequested: + $ref: '#/components/schemas/VelocityRequested' + ueLcsCap: + $ref: '#/components/schemas/UeLcsCapability' + lcsServiceType: + $ref: '#/components/schemas/LcsServiceType' + ldrType: + $ref: '#/components/schemas/LdrType' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + lirGmlcCallBackUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + vgmlcAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: '#/components/schemas/LdrReference' + lirReference: + $ref: '#/components/schemas/LirReference' + periodicEventInfo: + $ref: '#/components/schemas/PeriodicEventInfo' + areaEventInfo: + $ref: '#/components/schemas/AreaEventInfo' + motionEventInfo: + $ref: '#/components/schemas/MotionEventInfo' + reportingAccessTypes: + type: array + items: + $ref: '#/components/schemas/ReportingAccessType' + minItems: 1 + ueConnectivityStates: + $ref: '#/components/schemas/UeConnectivityState' + ueLocationServiceInd: + $ref: '#/components/schemas/UeLocationServiceInd' + moAssistanceDataTypes: + $ref: 'TS29503_Nudm_SDM.yaml#/components/schemas/LcsBroadcastAssistanceTypesData' + lppMessage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + lppMessageExt: + description: Indicates the lpp message extension. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + uePositioningCap: + $ref: '#/components/schemas/UePositioningCapabilities' + tnapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TnapId' + twapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TwapId' + ueCountryDetInd: + type: boolean + scheduledLocTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + reliableLocReq: + type: boolean + default: false + evtRptAllowedAreas: + type: array + items: + $ref: '#/components/schemas/ReportingArea' + minItems: 1 + maxItems: 250 + ueUnawareInd: + type: boolean + enum: + - true + intermediateLocationInd: + type: boolean + default: false + maxRespTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + lpHapType: + $ref: 'TS29518_Namf_Location.yaml#/components/schemas/LpHapType' + ueUpPosCaps: + type: array + items: + $ref: '#/components/schemas/UeUpPositioningCapabilities' + minItems: 1 + reportingInd: + allOf: + - $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/ReportingInd' + default: INSIDE_REPORTING + mbsrInfo: + $ref: '#/components/schemas/MbsrInfo' + integrityRequirements: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/IntegrityRequirements' + upLocRepAddrAf: + $ref: 'TS29122_MonitoringEvent.yaml#/components/schemas/UpLocRepAddrAfRm' + upCumEvtRptCriteria: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/UpCumEvtRptCriteria' + mappedQoSEps: + $ref: '#/components/schemas/MappedLocationQoSEps' + additionalUeInfo: + $ref: '#/components/schemas/AdditionalUeInfo' + + LocationDataExt: + description: Extended Location Data for UEs + allOf: + - $ref: '#/components/schemas/LocationData' + - $ref: '#/components/schemas/AddLocationDatas' + + LocationData: + description: Information within Determine Location Response. + type: object + required: + - locationEstimate + properties: + locationEstimate: + $ref: '#/components/schemas/GeographicArea' + accuracyFulfilmentIndicator: + $ref: '#/components/schemas/AccuracyFulfilmentIndicator' + ageOfLocationEstimate: + $ref: '#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + velocityEstimate: + $ref: '#/components/schemas/VelocityEstimate' + civicAddress: + $ref: '#/components/schemas/CivicAddress' + localLocationEstimate: + $ref: '#/components/schemas/LocalArea' + positioningDataList: + type: array + items: + $ref: '#/components/schemas/PositioningMethodAndUsage' + minItems: 1 + gnssPositioningDataList: + type: array + items: + $ref: '#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 1 + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + altitude: + $ref: '#/components/schemas/Altitude' + barometricPressure: + $ref: '#/components/schemas/BarometricPressure' + servingLMFIdentification: + $ref: '#/components/schemas/LMFIdentification' + uePositioningCap: + $ref: '#/components/schemas/UePositioningCapabilities' + ueAreaInd: + $ref: '#/components/schemas/UeAreaIndication' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + achievedQos: + $ref: '#/components/schemas/MinorLocationQoS' + directReportInd: + type: boolean + default: false + indoorOutdoorInd: + $ref: '#/components/schemas/IndoorOutdoorInd' + acceptedPeriodicEventInfo: + $ref: '#/components/schemas/PeriodicEventInfo' + haGnssMetrics: + $ref: '#/components/schemas/HighAccuracyGnssMetrics' + losNlosMeasureInd: + $ref: '#/components/schemas/LosNlosMeasureInd' + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: '#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: '#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: '#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: '#/components/schemas/VelocityEstimate' + + + GeographicArea: + description: Geographic area specified by different shape. + anyOf: + - $ref: '#/components/schemas/Point' + - $ref: '#/components/schemas/PointUncertaintyCircle' + - $ref: '#/components/schemas/PointUncertaintyEllipse' + - $ref: '#/components/schemas/Polygon' + - $ref: '#/components/schemas/PointAltitude' + - $ref: '#/components/schemas/PointAltitudeUncertainty' + - $ref: '#/components/schemas/EllipsoidArc' + + GADShape: + description: Common base type for GAD shapes. + type: object + required: + - shape + properties: + shape: + $ref: '#/components/schemas/SupportedGADShapes' + discriminator: + propertyName: shape + mapping: + POINT: '#/components/schemas/Point' + POINT_UNCERTAINTY_CIRCLE: '#/components/schemas/PointUncertaintyCircle' + POINT_UNCERTAINTY_ELLIPSE: '#/components/schemas/PointUncertaintyEllipse' + POLYGON: '#/components/schemas/Polygon' + POINT_ALTITUDE: '#/components/schemas/PointAltitude' + POINT_ALTITUDE_UNCERTAINTY: '#/components/schemas/PointAltitudeUncertainty' + ELLIPSOID_ARC: '#/components/schemas/EllipsoidArc' + LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE: '#/components/schemas/Local2dPointUncertaintyEllipse' + LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID: '#/components/schemas/Local3dPointUncertaintyEllipsoid' + + Point: + description: Ellipsoid Point. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + + PointUncertaintyCircle: + description: Ellipsoid point with uncertainty circle. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + - uncertainty + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + uncertainty: + $ref: '#/components/schemas/Uncertainty' + + PointUncertaintyEllipse: + description: Ellipsoid point with uncertainty ellipse. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + - uncertaintyEllipse + - confidence + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + uncertaintyEllipse: + $ref: '#/components/schemas/UncertaintyEllipse' + confidence: + $ref: '#/components/schemas/Confidence' + + Polygon: + description: Polygon. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - pointList + properties: + pointList: + $ref: '#/components/schemas/PointList' + + PointAltitude: + description: Ellipsoid point with altitude. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + - altitude + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + altitude: + $ref: '#/components/schemas/Altitude' + + PointAltitudeUncertainty: + description: Ellipsoid point with altitude and uncertainty ellipsoid. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + - altitude + - uncertaintyEllipse + - uncertaintyAltitude + - confidence + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + altitude: + $ref: '#/components/schemas/Altitude' + uncertaintyEllipse: + $ref: '#/components/schemas/UncertaintyEllipse' + uncertaintyAltitude: + $ref: '#/components/schemas/Uncertainty' + confidence: + $ref: '#/components/schemas/Confidence' + + EllipsoidArc: + description: Ellipsoid Arc. + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - point + - innerRadius + - uncertaintyRadius + - offsetAngle + - includedAngle + - confidence + properties: + point: + $ref: '#/components/schemas/GeographicalCoordinates' + innerRadius: + $ref: '#/components/schemas/InnerRadius' + uncertaintyRadius: + $ref: '#/components/schemas/Uncertainty' + offsetAngle: + $ref: '#/components/schemas/Angle' + includedAngle: + $ref: '#/components/schemas/Angle' + confidence: + $ref: '#/components/schemas/Confidence' + + LocalOrigin: + description: Indicates a Local origin in a reference system + type: object + properties: + coordinateId: + type: string + point: + $ref: '#/components/schemas/GeographicalCoordinates' + + RelativeCartesianLocation: + description: Relative Cartesian Location + type: object + required: + - x + - y + properties: + x: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + y: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + z: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + + + LocalArea: + description: Local area specified by different shape + oneOf: + - $ref: '#/components/schemas/Local2dPointUncertaintyEllipse' + - $ref: '#/components/schemas/Local3dPointUncertaintyEllipsoid' + + UeAreaIndication: + description: Indicates area (country, area in a country or international area) where UE is located + type: object + oneOf: + - required: + - country + - required: + - internationalAreaInd + properties: + country: + description: Indicates country or area in a country where UE is located + type: string + internationalAreaInd: + description: Indicates international area indication if UE is located in international area + type: boolean + default: false + + Local2dPointUncertaintyEllipse: + description: Local 2D point with uncertainty ellipse + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - localOrigin + - point + - uncertaintyEllipse + - confidence + properties: + localOrigin: + $ref: '#/components/schemas/LocalOrigin' + point: + $ref: '#/components/schemas/RelativeCartesianLocation' + uncertaintyEllipse: + $ref: '#/components/schemas/UncertaintyEllipse' + confidence: + $ref: '#/components/schemas/Confidence' + + Local3dPointUncertaintyEllipsoid: + description: Local 3D point with uncertainty ellipsoid + allOf: + - $ref: '#/components/schemas/GADShape' + - type: object + required: + - localOrigin + - point + - uncertaintyEllipsoid + - confidence + properties: + localOrigin: + $ref: '#/components/schemas/LocalOrigin' + point: + $ref: '#/components/schemas/RelativeCartesianLocation' + uncertaintyEllipsoid: + $ref: '#/components/schemas/UncertaintyEllipsoid' + confidence: + $ref: '#/components/schemas/Confidence' + + GeographicalCoordinates: + description: Geographical coordinates. + type: object + required: + - lon + - lat + properties: + lon: + type: number + format: double + minimum: -180 + maximum: 180 + lat: + type: number + format: double + minimum: -90 + maximum: 90 + + UncertaintyEllipse: + description: Ellipse with uncertainty. + type: object + required: + - semiMajor + - semiMinor + - orientationMajor + properties: + semiMajor: + $ref: '#/components/schemas/Uncertainty' + semiMinor: + $ref: '#/components/schemas/Uncertainty' + orientationMajor: + $ref: '#/components/schemas/Orientation' + + UncertaintyEllipsoid: + description: Ellipsoid with uncertainty + type: object + required: + - semiMajor + - semiMinor + - vertical + - orientationMajor + properties: + semiMajor: + $ref: '#/components/schemas/Uncertainty' + semiMinor: + $ref: '#/components/schemas/Uncertainty' + vertical: + $ref: '#/components/schemas/Uncertainty' + orientationMajor: + $ref: '#/components/schemas/Orientation' + + PointList: + description: List of points. + type: array + items: + $ref: '#/components/schemas/GeographicalCoordinates' + minItems: 3 + maxItems: 15 + + LocationQoS: + description: QoS of Location request. + type: object + properties: + hAccuracy: + $ref: '#/components/schemas/Accuracy' + vAccuracy: + $ref: '#/components/schemas/Accuracy' + verticalRequested: + type: boolean + responseTime: + $ref: '#/components/schemas/ResponseTime' + minorLocQoses: + type: array + items: + $ref: '#/components/schemas/MinorLocationQoS' + minItems: 1 + maxItems: 2 + lcsQosClass: + $ref: '#/components/schemas/LcsQosClass' + + PositioningMethodAndUsage: + description: Indicates the usage of a positioning method. + type: object + required: + - method + - mode + - usage + properties: + method: + $ref: '#/components/schemas/PositioningMethod' + mode: + $ref: '#/components/schemas/PositioningMode' + usage: + $ref: '#/components/schemas/Usage' + methodCode: + type: integer + minimum: 16 + maximum: 31 + + GnssPositioningMethodAndUsage: + description: Indicates the usage of a Global Navigation Satellite System (GNSS) positioning method. + type: object + required: + - mode + - gnss + - usage + properties: + mode: + $ref: '#/components/schemas/PositioningMode' + gnss: + $ref: '#/components/schemas/GnssId' + usage: + $ref: '#/components/schemas/Usage' + + CivicAddress: + description: Indicates a Civic address. + type: object + properties: + country: + type: string + A1: + type: string + A2: + type: string + A3: + type: string + A4: + type: string + A5: + type: string + A6: + type: string + PRD: + type: string + POD: + type: string + STS: + type: string + HNO: + type: string + HNS: + type: string + LMK: + type: string + LOC: + type: string + NAM: + type: string + PC: + type: string + BLD: + type: string + UNIT: + type: string + FLR: + type: string + ROOM: + type: string + PLC: + type: string + PCN: + type: string + POBOX: + type: string + ADDCODE: + type: string + SEAT: + type: string + RD: + type: string + RDSEC: + type: string + RDBR: + type: string + RDSUBBR: + type: string + PRM: + type: string + POM: + type: string + usageRules: + type: string + method: + type: string + providedBy: + type: string + + VelocityEstimate: + description: Velocity estimate. + oneOf: + - $ref: '#/components/schemas/HorizontalVelocity' + - $ref: '#/components/schemas/HorizontalWithVerticalVelocity' + - $ref: '#/components/schemas/HorizontalVelocityWithUncertainty' + - $ref: '#/components/schemas/HorizontalWithVerticalVelocityAndUncertainty' + + HorizontalVelocity: + description: Horizontal velocity. + type: object + required: + - hSpeed + - bearing + properties: + hSpeed: + $ref: '#/components/schemas/HorizontalSpeed' + bearing: + $ref: '#/components/schemas/Angle' + + HorizontalWithVerticalVelocity: + description: Horizontal and vertical velocity. + type: object + required: + - hSpeed + - bearing + - vSpeed + - vDirection + properties: + hSpeed: + $ref: '#/components/schemas/HorizontalSpeed' + bearing: + $ref: '#/components/schemas/Angle' + vSpeed: + $ref: '#/components/schemas/VerticalSpeed' + vDirection: + $ref: '#/components/schemas/VerticalDirection' + + HorizontalVelocityWithUncertainty: + description: Horizontal velocity with speed uncertainty. + type: object + required: + - hSpeed + - bearing + - hUncertainty + properties: + hSpeed: + $ref: '#/components/schemas/HorizontalSpeed' + bearing: + $ref: '#/components/schemas/Angle' + hUncertainty: + $ref: '#/components/schemas/SpeedUncertainty' + + HorizontalWithVerticalVelocityAndUncertainty: + description: Horizontal and vertical velocity with speed uncertainty. + type: object + required: + - hSpeed + - bearing + - vSpeed + - vDirection + - hUncertainty + - vUncertainty + properties: + hSpeed: + $ref: '#/components/schemas/HorizontalSpeed' + bearing: + $ref: '#/components/schemas/Angle' + vSpeed: + $ref: '#/components/schemas/VerticalSpeed' + vDirection: + $ref: '#/components/schemas/VerticalDirection' + hUncertainty: + $ref: '#/components/schemas/SpeedUncertainty' + vUncertainty: + $ref: '#/components/schemas/SpeedUncertainty' + + UeLcsCapability: + description: Indicates the LCS capability supported by the UE.. + type: object + properties: + lppSupport: + type: boolean + default: true + ciotOptimisation: + type: boolean + default: false + + PeriodicEventInfo: + description: Indicates the information of periodic event reporting. + type: object + required: + - reportingAmount + - reportingInterval + properties: + reportingAmount: + $ref: '#/components/schemas/ReportingAmount' + reportingInterval: + $ref: '#/components/schemas/ReportingInterval' + reportingInfiniteInd: + type: boolean + enum: + - true + reportingIntervalMs: + $ref: '#/components/schemas/ReportingIntervalMs' + + AreaEventInfo: + description: Indicates the information of area based event reporting. + type: object + required: + - areaDefinition + properties: + areaDefinition: + type: array + items: + $ref: '#/components/schemas/ReportingArea' + minItems: 1 + maxItems: 250 + occurrenceInfo: + $ref: '#/components/schemas/OccurrenceInfo' + minimumInterval: + $ref: '#/components/schemas/MinimumInterval' + maximumInterval: + $ref: '#/components/schemas/MaximumInterval' + samplingInterval: + $ref: '#/components/schemas/SamplingInterval' + reportingDuration: + $ref: '#/components/schemas/ReportingDuration' + reportingLocationReq: + type: boolean + default: true + + ReportingArea: + description: Indicates an area for event reporting. + type: object + required: + - areaType + properties: + areaType: + $ref: '#/components/schemas/ReportingAreaType' + tai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + + MotionEventInfo: + description: Indicates the information of motion based event reporting. + type: object + required: + - linearDistance + properties: + linearDistance: + $ref: '#/components/schemas/LinearDistance' + occurrenceInfo: + $ref: '#/components/schemas/OccurrenceInfo' + minimumInterval: + $ref: '#/components/schemas/MinimumInterval' + maximumInterval: + $ref: '#/components/schemas/MaximumInterval' + samplingInterval: + $ref: '#/components/schemas/SamplingInterval' + reportingDuration: + $ref: '#/components/schemas/ReportingDuration' + reportingLocationReq: + type: boolean + default: true + + CancelLocData: + description: Information within Cancel Location Request. + type: object + required: + - hgmlcCallBackURI + - ldrReference + properties: + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: '#/components/schemas/LdrReference' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + LocContextData: + description: Information within Transfer Location Context Request. + type: object + required: + - amfId + - ldrType + - hgmlcCallBackURI + - ldrReference + - eventReportMessage + properties: + amfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + locationQoS: + $ref: '#/components/schemas/LocationQoS' + supportedGADShapes: + type: array + items: + $ref: '#/components/schemas/SupportedGADShapes' + minItems: 1 + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + ldrType: + $ref: '#/components/schemas/LdrType' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: '#/components/schemas/LdrReference' + periodicEventInfo: + $ref: '#/components/schemas/PeriodicEventInfo' + areaEventInfo: + $ref: '#/components/schemas/AreaEventInfo' + motionEventInfo: + $ref: '#/components/schemas/MotionEventInfo' + eventReportMessage: + $ref: '#/components/schemas/EventReportMessage' + eventReportingStatus: + $ref: '#/components/schemas/EventReportingStatus' + ueLocationInfo: + $ref: '#/components/schemas/UELocationInfo' + cIoT5GSOptimisation: + type: boolean + default: false + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + guami: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Guami' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + uePositioningCap: + $ref: '#/components/schemas/UePositioningCapabilities' + scheduledLocTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + indoorOutdoorInd: + $ref: '#/components/schemas/IndoorOutdoorInd' + losNlosMeasureInd: + $ref: '#/components/schemas/LosNlosMeasureInd' + upCumEvtRptCriteria: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/UpCumEvtRptCriteria' + + EventReportMessage: + description: Indicates an event report message. + type: object + required: + - eventClass + - eventContent + properties: + eventClass: + $ref: '#/components/schemas/EventClass' + eventContent: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + + EventReportingStatus: + description: Indicates the status of event reporting. + type: object + properties: + eventReportCounter: + $ref: '#/components/schemas/EventReportCounter' + eventReportDuration: + $ref: '#/components/schemas/EventReportDuration' + + UELocationInfo: + description: Indicates location information of a UE. + type: object + properties: + locationEstimate: + $ref: '#/components/schemas/GeographicArea' + ageOfLocationEstimate: + $ref: '#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + velocityEstimate: + $ref: '#/components/schemas/VelocityEstimate' + ageOfVelocityEstimate: + $ref: '#/components/schemas/AgeOfLocationEstimate' + timestampOfVelocityEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + EventNotifyDataExt: + description: Extended Event Notify Data for UEs + allOf: + - $ref: '#/components/schemas/EventNotifyData' + - $ref: '#/components/schemas/AddEventNotifyDatas' + + EventNotifyData: + description: Information within Event Notify Request. + type: object + required: + - reportedEventType + - ldrReference + properties: + reportedEventType: + $ref: '#/components/schemas/ReportedEventType' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + hgmlcCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + ldrReference: + $ref: '#/components/schemas/LdrReference' + lirReference: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/LirReference' + locationEstimate: + $ref: '#/components/schemas/GeographicArea' + ageOfLocationEstimate: + $ref: '#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + civicAddress: + $ref: '#/components/schemas/CivicAddress' + localLocationEstimate: + $ref: '#/components/schemas/LocalArea' + positioningDataList: + type: array + items: + $ref: '#/components/schemas/PositioningMethodAndUsage' + minItems: 1 + gnssPositioningDataList: + type: array + items: + $ref: '#/components/schemas/GnssPositioningMethodAndUsage' + minItems: 1 + servingLMFidentification: + $ref: '#/components/schemas/LMFIdentification' + terminationCause: + $ref: '#/components/schemas/TerminationCause' + velocityEstimate: + $ref: '#/components/schemas/VelocityEstimate' + altitude: + $ref: '#/components/schemas/Altitude' + achievedQos: + $ref: '#/components/schemas/MinorLocationQoS' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + indoorOutdoorInd: + $ref: '#/components/schemas/IndoorOutdoorInd' + haGnssMetrics: + $ref: '#/components/schemas/HighAccuracyGnssMetrics' + losNlosMeasureInd: + $ref: '#/components/schemas/LosNlosMeasureInd' + upLocRepStatAf: + type: integer + relatedApplicationlayerId: + type: string + rangeDirection: + $ref: '#/components/schemas/RangeDirection' + 2dRelativeLocation: + $ref: '#/components/schemas/2DRelativeLocation' + 3dRelativeLocation: + $ref: '#/components/schemas/3DRelativeLocation' + relativeVelocity: + $ref: '#/components/schemas/VelocityEstimate' + + + UeConnectivityState: + description: Indicates the connectivity state of a UE. + type: object + required: + - accessType + properties: + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + connectivitystate: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/CmState' + + MinorLocationQoS: + description: Contain Minor Location QoS. + type: object + properties: + hAccuracy: + $ref: '#/components/schemas/Accuracy' + vAccuracy: + $ref: '#/components/schemas/Accuracy' + + MbsrInfo: + description: MBSR Information + type: object + properties: + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + + + LocMeasurementReq: + description: Location Measurement Request. + type: object + properties: + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + preCalcuLocEstimate: + $ref: '#/components/schemas/GeographicArea' + timestampOfPreCalcuLocEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + LocMeasurementResp: + description: Location Measurement Response. + type: object + required: + - locMeasurements + - locationEstimate + properties: + locMeasurements: + $ref: '#/components/schemas/LocMeasurements' + locationEstimate: + $ref: '#/components/schemas/GeographicArea' + ageOfLocationEstimate: + $ref: '#/components/schemas/AgeOfLocationEstimate' + timestampOfLocationEstimate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + velocityEstimate: + $ref: '#/components/schemas/VelocityEstimate' + localLocationEstimate: + $ref: '#/components/schemas/LocalArea' + + LocMeasurements: + description: PRU Location Measurements. + type: object + properties: + rstd: + type: integer + + HighAccuracyGnssMetrics: + description: High Accuracy GNSS Positioning Metrics. + type: object + properties: + nrOfUsedSatellites: + type: integer + minimum: 0 + maximum: 64 + hdopi: + type: integer + minimum: 1 + maximum: 256 + pdopi: + type: integer + minimum: 1 + maximum: 256 + age: + type: integer + minimum: 0 + maximum: 99 + fixType: + $ref: '#/components/schemas/FixType' + + UpNotifyData: + description: UP Subscription + type: object + required: + - ldrReference + - upConnectionStatus + properties: + ldrReference: + $ref: '#/components/schemas/LdrReference' + upConnectionStatus: + $ref: '#/components/schemas/UpConnectionStatus' + targetLMFIdentification: + $ref: '#/components/schemas/LMFIdentification' + + UpSubscription: + description: UP Subscription + type: object + required: + - upNotifyCallBackURI + - supi + properties: + upNotifyCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + + RelatedUE: + description: Related UE Information + type: object + required: + - applicationlayerId + - relatedUEType + properties: + applicationlayerId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationlayerId' + relatedUEType: + $ref: '#/components/schemas/RelatedUEType' + + UpConfig: + description: UP Config + type: object + required: + - upNotifyCallBackURI + properties: + upNotifyCallBackURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + amfReallocationInd: + type: boolean + default: false + lcsUpConnectionInd: + $ref: '#/components/schemas/LcsUpConnectionInd' + targetLMFIdentification: + $ref: '#/components/schemas/LMFIdentification' + + RangeDirection: + description: Represents a range and direction from a point A to a point B. + type: object + properties: + range: + type: number + azimuthDirection: + $ref: '#/components/schemas/Angle' + elevationDirection: + $ref: '#/components/schemas/Angle' + + 2DRelativeLocation: + description: Represents a relative 2D location with uncertainty ellipse. + type: object + properties: + semiMinor: + $ref: '#/components/schemas/Uncertainty' + semiMajor: + $ref: '#/components/schemas/Uncertainty' + orientationAngle: + $ref: '#/components/schemas/Angle' + + 3DRelativeLocation: + description: Represents a relative 3D location with uncertainty ellipsoid. + type: object + properties: + semiMinor: + $ref: '#/components/schemas/Uncertainty' + semiMajor: + $ref: '#/components/schemas/Uncertainty' + verticalUncertainty: + $ref: '#/components/schemas/Uncertainty' + orientationAngle: + $ref: '#/components/schemas/Angle' + + AddLocationDatas: + type: object + properties: + addLocationDatas: + type: array + items: + $ref: '#/components/schemas/LocationData' + minItems: 1 + + AddEventNotifyDatas: + type: object + properties: + addEventNotifyDatas: + type: array + items: + $ref: '#/components/schemas/EventNotifyData' + minItems: 1 + + MappedLocationQoSEps: + description: Mapped Location QoS for EPS. + type: object + required: + - hAccuracy + properties: + hAccuracy: + $ref: '#/components/schemas/Accuracy' + vAccuracy: + $ref: '#/components/schemas/Accuracy' + + AdditionalUeInfo: + description: MBSR UE Information + type: object + properties: + ncgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + + +# +# +# SIMPLE TYPES +# + Altitude: + description: Indicates value of altitude. + type: number + format: double + minimum: -32767 + maximum: 32767 + + Angle: + description: Indicates value of angle. + type: integer + minimum: 0 + maximum: 360 + + Uncertainty: + description: Indicates value of uncertainty. + type: number + format: float + minimum: 0 + + Orientation: + description: Indicates value of orientation angle. + type: integer + minimum: 0 + maximum: 180 + + Confidence: + description: Indicates value of confidence. + type: integer + minimum: 0 + maximum: 100 + + Accuracy: + description: Indicates value of accuracy. + type: number + format: float + minimum: 0 + + InnerRadius: + description: Indicates value of the inner radius. + type: integer + format: int32 + minimum: 0 + maximum: 327675 + + CorrelationID: + description: LCS Correlation ID. + type: string + minLength: 1 + maxLength: 255 + + AgeOfLocationEstimate: + description: Indicates value of the age of the location estimate. + type: integer + minimum: 0 + maximum: 32767 + + HorizontalSpeed: + description: Indicates value of horizontal speed. + type: number + format: float + minimum: 0 + maximum: 2047 + + VerticalSpeed: + description: Indicates value of vertical speed. + type: number + format: float + minimum: 0 + maximum: 255 + + SpeedUncertainty: + description: Indicates value of speed uncertainty. + type: number + format: float + minimum: 0 + maximum: 255 + + BarometricPressure: + description: Specifies the measured uncompensated atmospheric pressure. + type: integer + minimum: 30000 + maximum: 115000 + + LcsServiceType: + description: LCS service type. + type: integer + minimum: 0 + maximum: 127 + + LdrReference: + description: LDR Reference. + type: string + minLength: 2 + maxLength: 510 + + LirReference: + description: LIR Reference. + type: string + minLength: 2 + maxLength: 510 + + ReportingAmount: + description: Number of required periodic event reports. + type: integer + minimum: 1 + maximum: 8639999 + + ReportingInterval: + description: Event reporting periodic interval in seconds. + type: integer + minimum: 1 + maximum: 8639999 + + ReportingIntervalMs: + description: Event reporting periodic interval in milliseconds. + type: integer + minimum: 1 + maximum: 999 + + MinimumInterval: + description: Minimum interval between event reports. + type: integer + minimum: 1 + maximum: 32767 + + MaximumInterval: + description: Maximum interval between event reports. + type: integer + minimum: 1 + maximum: 86400 + + SamplingInterval: + description: Maximum time interval between consecutive evaluations by a UE of a trigger event. + type: integer + minimum: 1 + maximum: 3600 + + ReportingDuration: + description: Maximum duration of event reporting. + type: integer + minimum: 1 + maximum: 8640000 + + LinearDistance: + description: Minimum straight line distance moved by a UE to trigger a motion event report. + type: integer + minimum: 1 + maximum: 10000 + + LMFIdentification: + description: LMF identification. + type: string + + EventReportCounter: + description: Number of event reports received from the target UE. + type: integer + minimum: 1 + maximum: 8640000 + + EventReportDuration: + description: Duration of event reporting. + type: integer + minimum: 1 + maximum: 8640000 + + UePositioningCapabilities: + description: Positioning capabilities supported by the UE. A string encoding the "ProvideCapabilities-r9-IEs" IE as specified in clause 6.3 of 3GPP TS 37.355 (start from octet 1). + type: string + format: byte + +# +# ENUMS +# + ExternalClientType: + description: Indicates types of External Clients. + anyOf: + - type: string + enum: + - EMERGENCY_SERVICES + - VALUE_ADDED_SERVICES + - PLMN_OPERATOR_SERVICES + - LAWFUL_INTERCEPT_SERVICES + - PLMN_OPERATOR_BROADCAST_SERVICES + - PLMN_OPERATOR_OM + - PLMN_OPERATOR_ANONYMOUS_STATISTICS + - PLMN_OPERATOR_TARGET_MS_SERVICE_SUPPORT + - type: string + + SupportedGADShapes: + description: Indicates supported GAD shapes. + anyOf: + - type: string + enum: + - POINT + - POINT_UNCERTAINTY_CIRCLE + - POINT_UNCERTAINTY_ELLIPSE + - POLYGON + - POINT_ALTITUDE + - POINT_ALTITUDE_UNCERTAINTY + - ELLIPSOID_ARC + - LOCAL_2D_POINT_UNCERTAINTY_ELLIPSE + - LOCAL_3D_POINT_UNCERTAINTY_ELLIPSOID + - RANGE_DIRECTION + - RELATIVE_2D_LOCATION_UNCERTAINTY_ELLIPSE + - RELATIVE_3D_LOCATION_UNCERTAINTY_ELLIPSOID + - type: string + + ResponseTime: + description: Indicates acceptable delay of location request. + anyOf: + - type: string + enum: + - LOW_DELAY + - DELAY_TOLERANT + - NO_DELAY + - type: string + + PositioningMethod: + description: Indicates supported positioning methods. + anyOf: + - type: string + enum: + - CELLID + - ECID + - OTDOA + - BAROMETRIC_PRESSURE + - WLAN + - BLUETOOTH + - MBS + - MOTION_SENSOR + - DL_TDOA + - DL_AOD + - MULTI-RTT + - NR_ECID + - UL_TDOA + - UL_AOA + - NETWORK_SPECIFIC + - type: string + + PositioningMode: + description: Indicates supported modes used for positioning method. + anyOf: + - type: string + enum: + - UE_BASED + - UE_ASSISTED + - CONVENTIONAL + - type: string + + GnssId: + description: Global Navigation Satellite System (GNSS) ID. + anyOf: + - type: string + enum: + - GPS + - GALILEO + - SBAS + - MODERNIZED_GPS + - QZSS + - GLONASS + - BDS + - NAVIC + - type: string + + Usage: + description: Indicates usage made of the location measurement. + anyOf: + - type: string + enum: + - UNSUCCESS + - SUCCESS_RESULTS_NOT_USED + - SUCCESS_RESULTS_USED_TO_VERIFY_LOCATION + - SUCCESS_RESULTS_USED_TO_GENERATE_LOCATION + - SUCCESS_METHOD_NOT_DETERMINED + - type: string + + LcsPriority: + description: Indicates priority of the LCS client. + anyOf: + - type: string + enum: + - HIGHEST_PRIORITY + - NORMAL_PRIORITY + - type: string + + VelocityRequested: + description: Indicates velocity requirement. + anyOf: + - type: string + enum: + - VELOCITY_IS_NOT_REQUESTED + - VELOCITY_IS_REQUESTED + - type: string + + AccuracyFulfilmentIndicator: + description: Indicates fulfilment of requested accuracy. + anyOf: + - type: string + enum: + - REQUESTED_ACCURACY_FULFILLED + - REQUESTED_ACCURACY_NOT_FULFILLED + - type: string + + VerticalDirection: + description: Indicates direction of vertical speed. + type: string + enum: + - UPWARD + - DOWNWARD + + LdrType: + description: Indicates LDR types. + anyOf: + - type: string + enum: + - UE_AVAILABLE + - PERIODIC + - ENTERING_INTO_AREA + - LEAVING_FROM_AREA + - BEING_INSIDE_AREA + - MOTION + - type: string + + ReportingAreaType: + description: Indicates type of event reporting area. + anyOf: + - type: string + enum: + - EPS_TRACKING_AREA_IDENTITY + - E-UTRAN_CELL_GLOBAL_IDENTIFICATION + - 5GS_TRACKING_AREA_IDENTITY + - NR_CELL_GLOBAL_IDENTITY + - type: string + + OccurrenceInfo: + description: Specifies occurrence of event reporting. + anyOf: + - type: string + enum: + - ONE_TIME_EVENT + - MULTIPLE_TIME_EVENT + - type: string + + ReportingAccessType: + description: Specifies access types of event reporting. + anyOf: + - type: string + enum: + - NR + - EUTRA_CONNECTED_TO_5GC + - NON_3GPP_CONNECTED_TO_5GC + - NR_LEO + - NR_MEO + - NR_GEO + - NR_OTHER_SAT + - EUTRA_CONNECTED_TO_EPC + - type: string + + EventClass: + description: Specifies event classes. + anyOf: + - type: string + enum: + - SUPPLEMENTARY_SERVICES + - type: string + + ReportedEventType: + description: Specifies type of event reporting. + anyOf: + - type: string + enum: + - PERIODIC_EVENT + - ENTERING_AREA_EVENT + - LEAVING_AREA_EVENT + - BEING_INSIDE_AREA_EVENT + - MOTION_EVENT + - MAXIMUM_INTERVAL_EXPIRATION_EVENT + - LOCATION_CANCELLATION_EVENT + - INTERMEDIATE_EVENT + - DIRECT_REPORT_EVENT + - CUMULATIVE_EVENT_REPORT + - type: string + + TerminationCause: + description: Specifies causes of event reporting termination. + anyOf: + - type: string + enum: + - TERMINATION_BY_UE + - TERMINATION_BY_NETWORK + - NORMAL_TERMINATION + - type: string + + LcsQosClass: + description: Specifies LCS QoS class. + anyOf: + - type: string + enum: + - BEST_EFFORT + - ASSURED + - MULTIPLE_QOS + - type: string + + UeLocationServiceInd: + description: Specifies location service types requested by UE. + anyOf: + - type: string + enum: + - LOCATION_ESTIMATE + - LOCATION_ASSISTANCE_DATA + - type: string + + IndoorOutdoorInd: + description: Specifies UE location indoor or outdoor. + anyOf: + - type: string + enum: + - INDOOR + - OUTDOOR + - type: string + + FixType: + description: Specifies the positioning fix type. + anyOf: + - type: string + enum: + - CARRIER_PHASE_FLOAT + - CARRIER_PHASE_FIX + - type: string + + LosNlosMeasureInd: + description: Specifies LOS measurement or NLOS measurement. + anyOf: + - type: string + enum: + - LOS + - NLOS + - type: string + + UpConnectionStatus: + description: UP Connection Status. + anyOf: + - type: string + enum: + - ESTABLISHED + - RELEASED + - MOVE + - type: string + + RangingSlResult: + description: Specifies the type of result requested for ranging and sidelink positioning. + anyOf: + - type: string + enum: + - ABSOLUTE_LOCATION + - RELATIVE_LOCATION + - RANGING_DIRECTION + - RANGING + - DIRECTION + - VELOCITY + - RELATIVE_VELOCITY + - type: string + + RelatedUEType: + description: Specifies the different roles of UE for ranging and sidelink positioning service. + anyOf: + - type: string + enum: + - LOCATED_UE + - REFERENCE_UE + - type: string + + LcsUpConnectionInd: + description: LCS UP Connection Indication. + anyOf: + - type: string + enum: + - TERMINATION + - SETUP + - type: string + + UeUpPositioningCapabilities: + description: User plane positioning capabilities supported by the UE. + anyOf: + - type: string + enum: + - LCS-UPP + - SUPL + - type: string diff --git a/TS29573_JOSEProtectedMessageForwarding.yaml b/TS29573_JOSEProtectedMessageForwarding.yaml new file mode 100644 index 0000000..5951c22 --- /dev/null +++ b/TS29573_JOSEProtectedMessageForwarding.yaml @@ -0,0 +1,337 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.2' + title: 'JOSE Protected Message Forwarding API' + description: | + N32-f Message Forwarding Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +servers: + - url: '{apiRoot}/n32f-forward/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +externalDocs: + description: 3GPP TS 29.573 V18.5.0; 5G System; Public Land Mobile Network (PLMN) Interconnection; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.573/ + +paths: + /n32f-process: + post: + summary: N32-f Message Forwarding + tags: + - N32-f Forward + operationId: PostN32fProcess + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: Accept-Encoding + in: header + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + - name: 3gpp-Sbi-Message-Priority + in: header + description: 3gpp-Sbi-Message-Priority, defined in 3GPP TS 29.500 + schema: + type: string + requestBody: + description: Custom operation N32-f Message Forwarding + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/N32fReformattedReqMsg' + responses: + '200': + description: OK (Successful forwarding of reformatted message over N32-f) + content: + application/json: + schema: + $ref: '#/components/schemas/N32fReformattedRspMsg' + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + Content-Encoding: + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + 3gpp-Sbi-Message-Priority: + description: 3gpp-Sbi-Message-Priority, defined in 3GPP TS 29.500 + schema: + type: string + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ProblemDetailsMsgForwarding' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + options: + summary: Discover communication options supported by next hop (IPX or SEPP) + operationId: N32fProcessOptions + tags: + - N32-f Forward + responses: + '204': + description: No Content + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + FlatJweJson: + description: Contains the integrity protected reformatted block + type: object + required: + - ciphertext + properties: + protected: + type: string + unprotected: + type: object + header: + type: object + encrypted_key: + type: string +# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason. + aad: + type: string + iv: + type: string + ciphertext: + type: string + tag: + type: string + + FlatJwsJson: + description: Contains the modification from IPXes on path + type: object + required: + - payload + - signature + properties: + payload: + type: string + protected: + type: string + header: + type: object + signature: + type: string + + N32fReformattedReqMsg: + description: Contains the reformatted HTTP/2 request message + type: object + required: + - reformattedData + properties: + reformattedData: + $ref: '#/components/schemas/FlatJweJson' + modificationsBlock: + type: array + items: + $ref: '#/components/schemas/FlatJwsJson' + minItems: 1 + + N32fReformattedRspMsg: + description: Contains the reformatted HTTP/2 response message + type: object + required: + - reformattedData + properties: + reformattedData: + $ref: '#/components/schemas/FlatJweJson' + modificationsBlock: + type: array + items: + $ref: '#/components/schemas/FlatJwsJson' + minItems: 1 + + DataToIntegrityProtectAndCipherBlock: + description: HTTP header to be encrypted or the value of a JSON attribute to be encrypted + type: object + required: + - dataToEncrypt + properties: + dataToEncrypt: + type: array + items: {} + minItems: 1 + DataToIntegrityProtectBlock: + description: Data to be integrity protected + type: object + properties: + metaData: + $ref: '#/components/schemas/MetaData' + requestLine: + $ref: '#/components/schemas/RequestLine' + statusLine: + type: string + headers: + type: array + items: + $ref: '#/components/schemas/HttpHeader' + minItems: 1 + payload: + type: array + items: + $ref: '#/components/schemas/HttpPayload' + minItems: 1 + RequestLine: + description: Contains the request line of the HTTP API request being reformatted and forwarded over N32-f + type: object + required: + - method + - scheme + - authority + - path + - protocolVersion + properties: + method: + $ref: 'TS29573_N32_Handshake.yaml#/components/schemas/HttpMethod' + scheme: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UriScheme' + authority: + type: string + path: + type: string + protocolVersion: + type: string + queryFragment: + type: string + HttpHeader: + description: Contains the encoding of HTTP headers in the API request / response + type: object + required: + - header + - value + properties: + header: + type: string + value: + $ref: '#/components/schemas/EncodedHttpHeaderValue' + HttpPayload: + description: Contains the encoding of JSON content in the API request / response + type: object + required: + - iePath + - ieValueLocation + - value + properties: + iePath: + type: string + ieValueLocation: + $ref: 'TS29573_N32_Handshake.yaml#/components/schemas/IeLocation' + value: + type: object + MetaData: + description: Contains the meta data information needed for replay protection + type: object + required: + - n32fContextId + - messageId + - authorizedIpxId + properties: + n32fContextId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + messageId: + type: string + authorizedIpxId: + type: string + Modifications: + description: Information on inserting of the modifications entry + type: object + required: + - identity + properties: + identity: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + operations: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + tag: + type: string + IndexToEncryptedValue: + description: Index to the encrypted value + type: object + required: + - encBlockIndex + properties: + encBlockIndex: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + EncodedHttpHeaderValue: + description: HTTP header value or index to the HTTP header value + oneOf: + - type: string + - $ref: '#/components/schemas/IndexToEncryptedValue' + + ProblemDetailsMsgForwarding: + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/AdditionInfoMsgForwarding' + + AdditionInfoMsgForwarding: + description: Problem Details extensions for N32-f message forwarding + properties: + suggestedStatusCode: + type: integer + suggestedProblemDetails: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' diff --git a/TS29573_N32_Handshake.yaml b/TS29573_N32_Handshake.yaml new file mode 100644 index 0000000..396f232 --- /dev/null +++ b/TS29573_N32_Handshake.yaml @@ -0,0 +1,596 @@ +openapi: 3.0.0 + +info: + version: '1.3.0-alpha.5' + title: 'N32 Handshake API' + description: | + N32-c Handshake Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +servers: + - url: '{apiRoot}/n32c-handshake/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +externalDocs: + description: 3GPP TS 29.573 V18.5.0; 5G System; Public Land Mobile Network (PLMN) Interconnection; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.573/ + +paths: + /exchange-capability: + post: + summary: Security Capability Negotiation + tags: + - Security Capability Negotiation + operationId: PostExchangeCapability + requestBody: + description: Custom operation for security capability negotiation + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SecNegotiateReqData' + responses: + '200': + description: OK (Successful negitiation of security capabilities) + content: + application/json: + schema: + $ref: '#/components/schemas/SecNegotiateRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /exchange-params: + post: + summary: Parameter Exchange + tags: + - Parameter Exchange + operationId: PostExchangeParams + requestBody: + description: Custom operation for parameter exchange + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SecParamExchReqData' + responses: + '200': + description: OK (Successful exchange of parameters) + content: + application/json: + schema: + $ref: '#/components/schemas/SecParamExchRspData' + '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' + '409': + $ref: 'TS29571_CommonData.yaml#/components/responses/409' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /n32f-terminate: + post: + summary: N32-f Context Terminate + tags: + - N32-f Context Terminate + operationId: PostN32fTerminate + requestBody: + description: Custom operation for n32-f context termination + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/N32fContextInfo' + responses: + '200': + description: OK (Successful exchange of parameters) + content: + application/json: + schema: + $ref: '#/components/schemas/N32fContextInfo' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + /n32f-error: + post: + summary: N32-f Error Reporting Procedure + tags: + - N32-f Error Report + operationId: PostN32fError + requestBody: + description: Custom operation for n32-f error reporting procedure + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/N32fErrorInfo' + responses: + '204': + description: successful error reporting + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error +components: + schemas: + SecurityCapability: + description: Enumeration of security capabilities + anyOf: + - type: string + enum: + - TLS + - PRINS + - NONE + - type: string + ApiSignature: + description: API URI of the service operation + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + - $ref: '#/components/schemas/CallbackName' + HttpMethod: + description: Enumeration of HTTP methods + anyOf: + - type: string + enum: + - GET + - PUT + - POST + - DELETE + - PATCH + - HEAD + - OPTIONS + - CONNECT + - TRACE + - type: string + + IeType: + description: Enumeration of types of IEs (i.e kind of IE) to specify the protection policy + anyOf: + - type: string + enum: + - UEID + - LOCATION + - KEY_MATERIAL + - AUTHENTICATION_MATERIAL + - AUTHORIZATION_TOKEN + - OTHER + - NONSENSITIVE + - type: string + + IeLocation: + description: Location of the IE in a HTTP message + anyOf: + - type: string + enum: + - URI_PARAM + - HEADER + - BODY + - MULTIPART_BINARY + - type: string + + IeInfo: + description: Protection and modification policy for the IE + type: object + required: + - ieLoc + - ieType + properties: + ieLoc: + $ref: '#/components/schemas/IeLocation' + ieType: + $ref: '#/components/schemas/IeType' + reqIe: + type: string + rspIe: + type: string + isModifiable: + type: boolean + isModifiableByIpx: + type: object + additionalProperties: + type: boolean + minProperties: 1 + + ApiIeMapping: + description: API URI to IE mapping on which the protection policy needs to be applied + type: object + required: + - apiSignature + - apiMethod + - IeList + properties: + apiSignature: + $ref: '#/components/schemas/ApiSignature' + apiMethod: + $ref: '#/components/schemas/HttpMethod' + IeList: + type: array + items: + $ref: '#/components/schemas/IeInfo' + minItems: 1 +# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason. + + ProtectionPolicy: + description: The protection policy to be negotiated between the SEPPs + type: object + required: + - apiIeMappingList + properties: + apiIeMappingList: + type: array + items: + $ref: '#/components/schemas/ApiIeMapping' + minItems: 1 + dataTypeEncPolicy: + type: array + items: + $ref: '#/components/schemas/IeType' + minItems: 1 + + SecNegotiateReqData: + description: Defines the security capabilities of a SEPP sent to a receiving SEPP + type: object + required: + - sender + - supportedSecCapabilityList + properties: + sender: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + supportedSecCapabilityList: + type: array + items: + $ref: '#/components/schemas/SecurityCapability' + minItems: 1 + 3GppSbiTargetApiRootSupported: + type: boolean + default: false +# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason. + plmnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + snpnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + targetPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + targetSnpnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + intendedUsagePurpose: + type: array + items: + $ref: '#/components/schemas/IntendedN32Purpose' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + senderN32fFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + senderN32fPort: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + SecNegotiateRspData: + description: Defines the selected security capabilities by a SEPP + type: object + required: + - sender + - selectedSecCapability + properties: + sender: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + selectedSecCapability: + $ref: '#/components/schemas/SecurityCapability' + 3GppSbiTargetApiRootSupported: + type: boolean + default: false +# The attribute name does not follow the naming conventions specified in 3GPP TS 29.501. The attribute name is kept though as defined in the current specification for backward compatibility reason. + plmnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + minItems: 1 + snpnIdList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + minItems: 1 + allowedUsagePurpose: + type: array + items: + $ref: '#/components/schemas/IntendedN32Purpose' + minItems: 1 + rejectedUsagePurpose: + type: array + items: + $ref: '#/components/schemas/IntendedN32Purpose' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + senderN32fFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + senderN32fPortList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + + SecParamExchReqData: + description: Request data structure for parameter exchange + type: object + required: + - n32fContextId + properties: + n32fContextId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + jweCipherSuiteList: + type: array + items: + type: string + minItems: 1 + jwsCipherSuiteList: + type: array + items: + type: string + minItems: 1 + protectionPolicyInfo: + $ref: '#/components/schemas/ProtectionPolicy' + ipxProviderSecInfoList: + type: array + items: + $ref: '#/components/schemas/IpxProviderSecInfo' + minItems: 1 + sender: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + SecParamExchRspData: + description: Response data structure for parameter exchange + type: object + required: + - n32fContextId + properties: + n32fContextId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + selectedJweCipherSuite: + type: string + selectedJwsCipherSuite: + type: string + selProtectionPolicyInfo: + $ref: '#/components/schemas/ProtectionPolicy' + ipxProviderSecInfoList: + type: array + items: + $ref: '#/components/schemas/IpxProviderSecInfo' + minItems: 1 + sender: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + + N32fContextInfo: + description: N32-f context information + type: object + required: + - n32fContextId + properties: + n32fContextId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + CallbackName: + description: Callback Name + type: object + required: + - callbackType + properties: + callbackType: + type: string + N32fErrorInfo: + description: N32-f error information + type: object + required: + - n32fMessageId + - n32fErrorType + properties: + n32fMessageId: + type: string + n32fErrorType: + $ref: '#/components/schemas/N32fErrorType' + n32fContextId: + type: string + pattern: '^[A-Fa-f0-9]{16}$' + failedModificationList: + type: array + items: + $ref: '#/components/schemas/FailedModificationInfo' + minItems: 1 + errorDetailsList: + type: array + items: + $ref: '#/components/schemas/N32fErrorDetail' + minItems: 1 + policyMismatchList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/InvalidParam' + minItems: 1 + FailedModificationInfo: + description: Information on N32-f modifications block that failed to process + type: object + required: + - ipxId + - n32fErrorType + properties: + ipxId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + n32fErrorType: + $ref: '#/components/schemas/N32fErrorType' + N32fErrorDetail: + description: Details about the N32f error + type: object + required: + - attribute + - msgReconstructFailReason + properties: + attribute: + type: string + msgReconstructFailReason: + $ref: '#/components/schemas/FailureReason' + IpxProviderSecInfo: + description: Defines the security information list of an IPX + type: object + required: + - ipxProviderId + properties: + ipxProviderId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + rawPublicKeyList: + type: array + items: + type: string + minItems: 1 + certificateList: + type: array + items: + type: string + minItems: 1 + + IntendedN32Purpose: + description: Indicates the intended N32 establishment purpose + type: object + required: + - usagePurpose + properties: + usagePurpose: + $ref: '#/components/schemas/N32Purpose' + additionalInfo: + type: string + cause: + type: string + + N32fErrorType: + description: Type of error while processing N32-f message + anyOf: + - type: string + enum: + - INTEGRITY_CHECK_FAILED + - INTEGRITY_CHECK_ON_MODIFICATIONS_FAILED + - MODIFICATIONS_INSTRUCTIONS_FAILED + - DECIPHERING_FAILED + - MESSAGE_RECONSTRUCTION_FAILED + - CONTEXT_NOT_FOUND + - INTEGRITY_KEY_EXPIRED + - ENCRYPTION_KEY_EXPIRED + - POLICY_MISMATCH + - type: string + FailureReason: + description: Reason for failure to reconstruct a HTTP/2 message from N32-f message + anyOf: + - type: string + enum: + - INVALID_JSON_POINTER + - INVALID_INDEX_TO_ENCRYPTED_BLOCK + - INVALID_HTTP_HEADER + - type: string + + N32Purpose: + description: Usage purpose of establishing N32 connectivity + anyOf: + - type: string + enum: + - ROAMING + - INTER_PLMN_MOBILITY + - SMS_INTERCONNECT + - ROAMING_TEST + - INTER_PLMN_MOBILITY_TEST + - SMS_INTERCONNECT_TEST + - SNPN_INTERCONNECT + - SNPN_INTERCONNECT_TEST + - DISASTER_ROAMING + - DISASTER_ROAMING_TEST + - type: string diff --git a/TS29573_SeppTelescopicFqdnMapping.yaml b/TS29573_SeppTelescopicFqdnMapping.yaml new file mode 100644 index 0000000..dcc4a96 --- /dev/null +++ b/TS29573_SeppTelescopicFqdnMapping.yaml @@ -0,0 +1,77 @@ +openapi: 3.0.0 + +info: + version: '1.2.0-alpha.1' + title: 'SEPP Telescopic FQDN Mapping API' + description: | + SEPP Telescopic FQDN Mapping Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +servers: + - url: '{apiRoot}/nsepp-telescopic/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +externalDocs: + description: 3GPP TS 29.573 V18.1.0; 5G System; Public Land Mobile Network (PLMN) Interconnection; Stage 3 + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.573/ + +paths: + /mapping: + get: + summary: Maps an FQDN to/from a telescopic FQDN + operationId: GetTelescopicMapping + tags: + - Telescopic Mapping (Document) + parameters: + - name: foreign-fqdn + in: query + description: FQDN of the NF in the foreign PLMN + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + - name: telescopic-label + in: query + description: Telescopic Label + schema: + type: string + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/TelescopicMapping' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + schemas: + TelescopicMapping: + description: Contains the Telescopic mapping data + type: object + properties: + telescopicLabel: + type: string + seppDomain: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + foreignFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' diff --git a/TS29574_Ndccf_ContextManagement.yaml b/TS29574_Ndccf_ContextManagement.yaml new file mode 100644 index 0000000..d5bd64a --- /dev/null +++ b/TS29574_Ndccf_ContextManagement.yaml @@ -0,0 +1,217 @@ +openapi: 3.0.0 +info: + version: 1.1.0-alpha.2 + title: Ndccf_ContextManagement + description: | + DCCF Context Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.574 V18.1.0; 5G System; Data Collection Coordination Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.574/' +# +servers: + - url: '{apiRoot}/ndccf-contextmanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +# +security: + - oAuth2ClientCredentials: + - ndccf-contextmanagement + - {} +# +paths: + /data-collection-profiles: + post: + summary: Creates a new Individual DCCF Data Collection Profile resource. + operationId: CreateDCCFDataCollectionProfile + tags: + - DCCF Data Collection Profiles (Collection) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataCollectionProfile' + required: true + responses: + '201': + description: A new Individual DCCF Data Collection Profile resource created. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/ndccf-contextmanagement//data-collection-profiles/{profileId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataCollectionProfile' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /data-collection-profiles/{profileId}: + delete: + summary: Deletes an existing Individual DCCF Data Subscription resource. + operationId: DeleteDCCFDataCollectionProfile + tags: + - Individual DCCF Data Collection Profile (Document) + parameters: + - name: profileId + in: path + description: > + String identifying a data collection profile at the Ndccf_ContextManagement Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual DCCF Data Collection Profile resource matching the profileId + was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Updates an existing Individual DCCF Data Collection Profile resource. + operationId: UpdateDCCFDataCollectionProfile + tags: + - Individual DCCF Data Collection Profile (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataCollectionProfile' + parameters: + - name: profileId + in: path + description: > + String identifying a data collection profile at the Ndccf_ContextManagement Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual DCCF Data Collection Profile resource was modified successfully and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataCollectionProfile' + '204': + description: > + The Individual DCCF Data Collection Profile resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ndccf-contextmanagement: Access to the ndccf-contextmanagement API +# + schemas: + + NdccfDataCollectionProfile: + description: Represents an Individual DCCF Data Collection Profile. + type: object + allOf: + - oneOf: + - required: [anaSub] + - required: [dataSub] + - oneOf: + - required: [nwdafId] + - required: [adrfId] + - required: [nwdafSetId] + - required: [adrfSetId] + properties: + anaSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + dataSub: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataNotification' + nwdafId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nwdafSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + adrfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' +# diff --git a/TS29574_Ndccf_DataManagement.yaml b/TS29574_Ndccf_DataManagement.yaml new file mode 100644 index 0000000..409174f --- /dev/null +++ b/TS29574_Ndccf_DataManagement.yaml @@ -0,0 +1,1081 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.5 + title: Ndccf_DataManagement + description: | + DCCF Data Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.574 V18.4.0; 5G System; Data Collection Coordination Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.574/' +# +servers: + - url: '{apiRoot}/ndccf-datamanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +# +security: + - oAuth2ClientCredentials: + - ndccf-datamanagement + - {} +# +paths: + /analytics-subscriptions: + post: + summary: Creates a new Individual DCCF Analytics Subscription resource. + operationId: CreateDCCFAnalyticsSubscription + tags: + - DCCF Analytics Subscriptions (Collection) + requestBody: + description: Contains the information for the creation the resource. + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscription' + required: true + responses: + '201': + description: Create a new Individual DCCF Analytics Subscription resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/ndccf-datamanagement//analytics-subscriptions/{subscriptionId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscription' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + dccfAnalyticsNotification: + '{$request.body#/anaNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscriptionNotification' + responses: + '200': + description: The notification is acknowledged and a planned action is provided. + content: + application/json: + schema: + $ref: '#/components/schemas/NotifResponse' + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + Fetch: + '{request.body#/fetchInstruct/fetchUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + type: string + minItems: 1 + description: Fetch correlation identifiers. + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscriptionNotification' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /analytics-subscriptions/{subscriptionId}: + delete: + summary: Deletes an existing Individual DCCF Data Subscription. + operationId: DeleteDCCFAnalyticsSubscription + tags: + - Individual DCCF Analytics Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: > + String identifying an analytics subscription to the Ndccf_DataManagement Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual DCCF Analytics Subscription resource matching the + subscriptionId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Updates an existing Individual DCCF Analytics Subscription resource. + operationId: UpdateDCCFAnalyticsSubscription + tags: + - Individual DCCF Analytics Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscription' + parameters: + - name: subscriptionId + in: path + description: > + String identifying an analytics subscription to the Ndccf_DataManagement Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual DCCF Analytics Subscription resource was modified successfully and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscription' + '204': + description: > + The Individual DCCF Analytics Subscription resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /data-subscriptions: + post: + summary: Creates a new Individual DCCF Data Subscription resource. + operationId: CreateDCCFDataSubscription + tags: + - DCCF Data Subscriptions (Collection) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscription' + required: true + responses: + '201': + description: Creates a new Individual DCCF Data Subscription resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/ndccf-datamanagement//data-subscriptions/{subscriptionId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscription' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + dccfDataNotification: + '{$request.body#/dataNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscriptionNotification' + responses: + '200': + description: The notification is acknowledged and a planned action is provided. + content: + application/json: + schema: + $ref: '#/components/schemas/NotifResponse' + '204': + description: The receipt of the notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + Fetch: + '{request.body#/fetchInstruct/fetchUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + type: string + minItems: 1 + description: Fetch correlation identifiers. + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfAnalyticsSubscriptionNotification' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /data-subscriptions/{subscriptionId}: + delete: + summary: Deletes an existing Individual DCCF Data Subscription resource. + operationId: DeleteDCCFDataSubscription + tags: + - Individual DCCF Data Subscription (Document) + parameters: + - name: subscriptionId + in: path + description: String identifying a data subscription to the Ndccf_DataManagement Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual DCCF Data Subscription resource matching the subscriptionId + was deleted. + '200': + description: > + The Individual DCCF Data Subscription resource matching the subscriptionId was deleted + and including the stored unsent data events in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscriptionNotification' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Updates an existing Individual DCCF Data Subscription resource. + operationId: UpdateDCCFDataSubscription + tags: + - Individual DCCF Data Subscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscription' + parameters: + - name: subscriptionId + in: path + description: > + String identifying a data subscription to the Ndccf_DataManagement Service. + required: true + schema: + type: string + responses: + '200': + description: > + The Individual DCCF Data Subscription resource was modified successfully and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NdccfDataSubscription' + '204': + description: > + The Individual DCCF Data Subscription resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + ndccf-datamanagement: Access to the ndccf-datamanagement API +# + schemas: +# + NdccfAnalyticsSubscription: + description: Represents an Individual DCCF Analytics Subscription. + type: object + required: + - anaSub + - anaNotifUri + - anaNotifCorrId + properties: + anaSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + anaNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + anaNotifCorrId: + type: string + description: Notification correlation identifier. + notifEndpoints: + type: array + items: + $ref: '#/components/schemas/NotifyEndpoint' + minItems: 1 + description: The information of notification endpoints. + formatInstruct: + $ref: '#/components/schemas/FormattingInstruction' + procInstructs: + type: array + items: + $ref: '#/components/schemas/ProcessingInstruction' + minItems: 1 + description: Processing instructions to be used for sending event notifications. + targetNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ardfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + storeInd: + type: boolean + description: > + The indication for analytics storage. This attribute shall be provided and set to "true" + if the consumer requests to store the analytics in an ADRF but both the "adrfId" and + "adrfSetId" attributes are not provided. The default value is "false". + storeHandl: + $ref: '#/components/schemas/StorageHandlingInformation' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataCollectPurposes: + type: array + items: + $ref: '#/components/schemas/DataCollectionPurpose' + minItems: 1 + description: > + The purposes of data collection. This attribute may only be provided if user consent is + required depending on local policy and regulations and the consumer has not + checked user consent. + checkedConsentInd: + type: boolean + description: Indication that the NF service consumer has already checked the user consent. + immReport: + $ref: '#/components/schemas/NdccfAnalyticsSubscriptionNotification' + +# + NdccfDataSubscription: + description: Represents an Individual DCCF Data Subscription. + type: object + required: + - dataNotifUri + - dataNotifCorrId + - dataSub + properties: + dataSub: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataSubscription' + dataNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + dataNotifCorrId: + type: string + description: Notification correlation identifier. + notifEndpoints: + type: array + items: + $ref: '#/components/schemas/NotifyEndpoint' + minItems: 1 + description: The information of notification endpoints. + formatInstruct: + $ref: '#/components/schemas/FormattingInstruction' + procInstructs: + type: array + items: + $ref: '#/components/schemas/ProcessingInstruction' + minItems: 1 + description: Processing instructions to be used for sending event notifications. + targetNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ardfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + storeInd: + type: boolean + description: > + The indication for analytics storage. This attribute shall be provided and set to "true" + if the consumer requests to store the analytics in an ADRF but both the "adrfId" and + "adrfSetId" attributes are not provided. The default value is "false". + storeHandl: + $ref: '#/components/schemas/StorageHandlingInformation' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + dataCollectPurposes: + type: array + items: + $ref: '#/components/schemas/DataCollectionPurpose' + minItems: 1 + description: > + The purposes of data collection. This attribute may only be provided if user consent + is required depending on local policy and regulations and the consumer has not + checked user consent. + checkedConsentInd: + type: boolean + description: Indication that the NF service consumer has already checked the user consent. + immReport: + $ref: '#/components/schemas/NdccfDataSubscriptionNotification' + +# + NdccfAnalyticsSubscriptionNotification: + description: Represents a notification for a DCCF analytics subscription. + type: object + required: + - anaNotifCorrId + - timeStamp + oneOf: + - required: [anaNotifications] + - required: [anaReports] + - required: [fetchInstruct] + properties: + anaNotifCorrId: + type: string + description: Notification correlation identifier. + anaNotifications: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscriptionNotification' + minItems: 1 + description: List of analytics subscription notifications. + anaReports: + type: array + items: + $ref: '#/components/schemas/NotifSummaryReport' + minItems: 1 + description: > + List of reports with summarized data from multiple analytics notifications that the DCCF + has received from NWDAF. + fetchInstruct: + $ref: 'TS29576_Nmfaf_3caDataManagement.yaml#/components/schemas/FetchInstruction' + terminationReq: + type: boolean + description: > + If provided and set to true, it indicates the termination of the data management + subscription that requested by the DCCF, i.e. no further notifications related to this + subscription will be provided, apart from sending final report (if available). + The default value is false. + delAlert: + $ref: '#/components/schemas/DeletionAlert' + termCause: + $ref: '#/components/schemas/TermCause' + pendDataNotifCause: + $ref: 'TS29520_Nnwdaf_DataManagement.yaml#/components/schemas/PendingNotificationCause' + reUserConsentPurs: + type: array + items: + $ref: '#/components/schemas/DataCollectionPurpose' + minItems: 1 + description: The purposes of data collection for which the user consent is revoked. + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' +# + NdccfDataSubscriptionNotification: + description: Represents a notification for a DCCF data subscription. + type: object + required: + - dataNotifCorrId + - timeStamp + oneOf: + - required: [dataNotif] + - required: [dataReports] + - required: [fetchInstruct] + properties: + dataNotifCorrId: + type: string + description: Notification correlation identifier. + dataNotif: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataNotification' + dataReports: + type: array + items: + $ref: '#/components/schemas/NotifSummaryReport' + minItems: 1 + description: > + List of reports with summarized data from multiple notifications received from data + producer. + delAlert: + $ref: '#/components/schemas/DeletionAlert' + fetchInstruct: + $ref: 'TS29576_Nmfaf_3caDataManagement.yaml#/components/schemas/FetchInstruction' + terminationReq: + type: boolean + description: > + If provided and set to true, it indicates the termination of the data management + subscription that requested by the DCCF, i.e. no further notifications related to this + subscription will be provided, apart from sending final report (if available). + The default value is false. + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' +# + FormattingInstruction: + description: Contains data or analytics formatting instructions. + type: object + properties: + consTrigNotif: + type: boolean + description: > + Indicates that notifications shall be buffered until the NF service consumer requests + their delivery. + reportingOptions: + $ref: '#/components/schemas/ReportingOptions' +# + ReportingOptions: + description: Represents reporting options for processed notifications. + type: object + oneOf: + - required: [notifyWindow] + - required: [notifyPeriod] + - required: [notifyPeriodInc] + - required: [depEventSubId] + properties: + notifyWindow: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + notifyPeriod: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + notifyPeriodInc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + depEventSubId: + type: string + description: > + Notifications for the present subscription are sent only upon occurrence of events of the + subscription with identifier that matches this attribute. + minClubbedNotif: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + maxClubbedNotif: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' +# + ProcessingInstruction: + description: Contains instructions related to the processing of notifications. + type: object + required: + - eventId + - procInterval + properties: + eventId: + $ref: '#/components/schemas/DccfEvent' + procInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + paramProcInstructs: + type: array + items: + $ref: '#/components/schemas/ParameterProcessingInstruction' + minItems: 1 + description: > + List of event parameter names, and for each event parameter name, respective event + parameter values and sets of the attributes to be used in the summarized reports. + NotifyEndpoint: + description: The information of notification endpoint. + type: object + required: + - notifUri + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + +# + DccfEvent: + description: > + Identifies the (event exposure or analytics) event that the processing instructions + shall apply to. Contains all event IDs related to DCCF. + type: object + oneOf: + - required: [nwdafEvent] + - required: [smfEvent] + - required: [amfEvent] + - required: [nefEvent] + - required: [afEvent] + - required: [sacEvent] + - required: [nrfEvent] + - required: [udmEvent] + - required: [gmlcEvent] + - required: [upfEvent] + properties: + nwdafEvent: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NwdafEvent' + smfEvent: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/SmfEvent' + amfEvent: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/AmfEventType' + nefEvent: + $ref: 'TS29591_Nnef_EventExposure.yaml#/components/schemas/NefEvent' + udmEvent: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EventType' + afEvent: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEvent' + sacEvent: + $ref: 'TS29536_Nnsacf_SliceEventExposure.yaml#/components/schemas/SACEvent' + nrfEvent: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NotificationEventType' + gmlcEvent: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/EventNotifyDataType' + upfEvent: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/EventType' +# + ParameterProcessingInstruction: + description: > + Contains an event parameter name and the respective event parameter values and sets of + attributes to be used in summarized reports. + type: object + required: + - name + - values + - sumAttrs + properties: + name: + type: string + description: > + A JSON pointer value that references an attribute within the notification object to which + the processing instruction is applied. + values: + type: array + items: {} + minItems: 1 + description: A list of values for the attribute identified by the name attribute. + sumAttrs: + type: array + items: + $ref: '#/components/schemas/SummarizationAttribute' + minItems: 1 + description: Attributes requested to be used in the summarized reports. + aggrLevel: + $ref: '#/components/schemas/AggregationLevel' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + description: Indicates the UEs for which processed reports are requested. + temporalAggrLevel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + areas: + type: array + items: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + minItems: 1 + description: Indicates the Areas of Interest for which processed reports are requested. +# + NotifSummaryReport: + description: Represents summarized notifications based on processing instructions. + type: object + required: + - eventId + - procInterval + - eventReports + properties: + eventId: + $ref: '#/components/schemas/DccfEvent' + procInterval: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + eventReports: + type: array + items: + $ref: '#/components/schemas/EventParamReport' + minItems: 1 + description: List of event parameter reports. +# + EventParamReport: + description: Represents a summarized report for one event parameter. + type: object + required: + - name + - values + properties: + name: + type: string + description: The name of the reported parameter. + values: + type: array + items: {} + minItems: 1 + description: The list of values of the reported parameter. + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + area: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + spacing: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NumberAverage' + duration: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NumberAverage' + avgAndVar: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NumberAverage' + mostFreqVal: {} + leastFreqVal: {} + count: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minValue: + type: string + description: The minimum value of the parameter. + maxValue: + type: string + description: The maximum value of the parameter. +# + StorageHandlingInformation: + description: Contains storage handling information about data or analytics. + type: object + properties: + lifetime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + delNotifInd: + type: boolean + description: Indicates if deletion alerts are requested. +# + DeletionAlert: + description: Contains information about data or analytics that are about to be deleted. + type: object + properties: + alertStorTransId: + type: string + description: > + Storage transaction identifier that can be used to retrieve data or analytics. + required: + - alertStorTransId +# + NotifResponse: + description: > + Contains information about planned actions related to data or analytics + that are about to be deleted. + type: object + properties: + retrievalInd: + type: boolean + description: > + Indicates if the NF service consumer has determined to retrieve data + or analytics that are about to be deleted. + required: + - retrievalInd +# + SummarizationAttribute: + anyOf: + - type: string + enum: + - SPACING + - DURATION + - OCCURRENCES + - AVG_VAR + - FREQ_VAL + - MIN_MAX + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the attribute in the summarized report. + Possible values are: + - SPACING: Average and variance of the time interval separating two consecutive occurrences + of the same event and parameter value, or periodicity for periodic reporting. + - DURATION: Average and variance of the time for which the parameter value applies. + - OCCURRENCES: Number of countable occurrences for the parameter. + - AVG_VAR: Average and variance of the parameter. + - FREQ_VAL: Most and least frequent values. + - MIN_MAX: Maximum and minimum parameter values. +# + AggregationLevel: + anyOf: + - type: string + enum: + - UE + - AOI + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the aggregation level for processing instructions. + Possible values are: + - UE: Indicates that the summarized reports shall be provided per UE. + - AOI: Indicates that the summarized reports shall be provided per Area of Interest. +# + DataCollectionPurpose: + anyOf: + - type: string + enum: + - ANALYTICS_GENERATION + - MODEL_TRAINING + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents the purpose for data collection. + Possible values are: + - ANALYTICS_GENERATION: The data is collected for generating the analytics. + - MODEL_TRAINING: The data is collected for ML model training. + +# + TermCause: + anyOf: + - type: string + enum: + - USER_CONSENT_REVOKED + - DCCF_OVERLOAD + - OTHER + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the cause for the subscription termination request by DCCF for data collection. + Possible values are: + - USER_CONSENT_REVOKED: The user consent has been revoked. + - DCCF_OVERLOAD: The DCCF is overloaded. + - OTHER: Indicates that the termination is due to other reason. diff --git a/TS29575_Nadrf_DataManagement.yaml b/TS29575_Nadrf_DataManagement.yaml new file mode 100644 index 0000000..86b2030 --- /dev/null +++ b/TS29575_Nadrf_DataManagement.yaml @@ -0,0 +1,927 @@ +openapi: 3.0.0 +info: + version: 1.1.0-alpha.4 + title: Nadrf_DataManagement + description: | + ADRF Data Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.575 V18.3.0; 5G System; Analytics Data Repository Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.575/' +# +servers: + - url: '{apiRoot}/nadrf-datamanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +# +security: + - oAuth2ClientCredentials: + - nadrf-datamanagement + - {} +# +paths: + /data-store-records: + post: + summary: Creates a new Individual Data Store Record resource. + operationId: CreateADRFDataStoreRecord + tags: + - ADRF Data Store Records (Collection) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreRecord' + required: true + description: ADRF data store record to be stored. + responses: + '201': + description: Successful creation of new Individual ADRF Data Store Record resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nadrf-datamanagement//data-store-records/{storeTransId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreRecord' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + storageAlertNotification: + '{$request.body#/delNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfAlertNotification' + responses: + '200': + description: The alert receipt is acknowledged and a planned action is provided. + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfAlertNotificationResponse' + '204': + description: The alert receipt is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Retrieves existing Individual ADRF Data Store Records. + operationId: GetAdrfDataStoreRecords + tags: + - ADRF Data Store Records (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + parameters: + - name: store-trans-id + description: A storage transaction identifier of a data store record in ADRF. + in: query + required: false + schema: + type: string + - name: fetch-correlation-ids + description: Fetch correlation identifiers received as part of fetch instruction. + in: query + required: false + style: form + explode: false + schema: + type: array + items: + type: string + minItems: 1 + - name: data-set-id + description: The data set identifier. + in: query + required: false + schema: + type: string + responses: + '200': + description: Data store records are returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreRecord' + '204': + description: No matching ADRF data were found. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /data-store-records/{storeTransId}: + delete: + summary: Delete an existing Individual ADRF Data Store Record. + operationId: DeleteADRFDataStoreRecord + tags: + - Individual ADRF Data Store Record (Document) + parameters: + - name: storeTransId + in: path + description: String identifying a Data Store Record in ADRF. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual ADRF Data Store Record resource matching the + storeTransId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /data-retrieval-subscriptions: + post: + summary: Creates a new Individual ADRF Data Retrieval Subscription resource. + operationId: CreateADRFDataRetrievalSubscription + tags: + - ADRF Data Retrieval Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataRetrievalSubscription' + required: true + description: Individual ADRF Data Retrieval Subscription resource to be created. + responses: + '201': + description: Created a new Individual ADRF Data Retrieval Subscription resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nadrf-datamanagement//data-retrieval-subscriptions/{subscriptionId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataRetrievalSubscription' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + adrfDataRetrievalNotification: + '{$request.body#/notificationURI}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataRetrievalNotification' + responses: + '204': + description: The receipt of the Notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /data-retrieval-subscriptions/{subscriptionId}: + delete: + summary: Delete an existing Individual ADRF Data Retrieval Subscription resource. + operationId: DeleteADRFDataRetrievalSubscription + tags: + - Individual ADRF Data Retrieval Subscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + parameters: + - name: subscriptionId + in: path + description: > + String identifying a data retrieval subscription to the Nadrf_DataManagement + Service. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual ADRF Data Retrieval Subscription resource matching + the subscriptionId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /request-storage-sub: + post: + summary: Triggers the creation of a new ADRF Storage Subscription. + operationId: CreateADRFStorageSubscription + tags: + - ADRF Storage Subscriptions + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreSubscription' + required: true + responses: + '200': + description: > + Successful response with reference used to identify the subscription at the ADRF. + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreSubscriptionRef' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + storageSubAlertNotification: + '{$request.body#/delNotifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfAlertNotification' + responses: + '200': + description: The alert receipt is acknowledged and a planned action is provided. + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfAlertNotificationResponse' + '204': + description: The alert receipt is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /request-storage-sub-removal: + post: + summary: Triggers the removal of ADRF storage subscription. + operationId: DeleteADRFStorageSubscription + tags: + - ADRF Storage Subscriptions + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfDataStoreSubscriptionRef' + required: true + responses: + '204': + description: > + No Content. The ADRF Storage Subscription matching the provided reference was deleted. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /remove-stored-data-analytics: + post: + summary: Remove ADRF data based on data or analytics specification. + operationId: DeleteADRFData + tags: + - ADRF Stored Data + security: + - {} + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - oAuth2ClientCredentials: + - nnadrf-datamanagement + - nnadrf-datamanagement:storagerequest + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfStoredDataSpec' + required: true + responses: + '204': + description: No Content. The ADRF data matching the provided specification is deleted. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nadrf-datamanagement: Access to the nadrf-datamanagement API +# + schemas: +# + NadrfDataStoreRecord: + description: Represents an Individual ADRF Data Store Record. + type: object + oneOf: + - allOf: + - required: [anaSub] + - required: [anaNotifications] + - allOf: + - required: [dataSub] + - required: [dataNotif] + properties: + dataNotif: + $ref: '#/components/schemas/DataNotification' + anaNotifications: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscriptionNotification' + minItems: 1 + description: List of analytics subscription notifications. + anaSub: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + minItems: 1 + description: > + Represents the subscription information of the corresponding analytics notification. + dataSub: + type: array + items: + $ref: '#/components/schemas/DataSubscription' + minItems: 1 + description: > + Represents the subscription information of the corresponding data notification. + storeHandl: + $ref: '#/components/schemas/StorageHandlingInfo' + dataSetTag: + $ref: '#/components/schemas/DataSetTag' + dsc: + type: string + description: Data synthesis and compression information. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' +# + NadrfDataStoreSubscription: + description: > + Contains information to be used by the ADRF to create a Data or Analytics subscription. + type: object + allOf: + - oneOf: + - required: [anaSub] + - required: [dataSub] + - oneOf: + - required: [targetNfId] + - required: [targetNfSetId] + properties: + anaSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + dataSetTag: + $ref: '#/components/schemas/DataSetTag' + dataSub: + $ref: '#/components/schemas/DataSubscription' + targetNfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + targetNfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + formatInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/FormattingInstruction' + procInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + multiProcInstructs: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + minItems: 1 + description: Processing instructions to be used for sending event notifications. + storeHandl: + $ref: '#/components/schemas/StorageHandlingInfo' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' +# + NadrfDataRetrievalSubscription: + description: Represents an Individual ADRF Data Retrieval Subscription. + type: object + required: + - notifCorrId + - notificationURI + - timePeriod + oneOf: + - required: [anaSub] + - required: [dataSub] + - required: [dataSetId] + properties: + anaSub: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + dataSetId: + type: string + description: data set identifier of the data or analytics that are subscribed. + dataSub: + $ref: '#/components/schemas/DataSubscription' + notificationURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + notifCorrId: + type: string + description: Notification correlation identifier. + consTrigNotif: + type: boolean + description: > + It indicates that notifications shall be buffered (sending only fetch instructions + to the NF service consumer) until the NF service consumer requests their delivery + using Nadrf_DataManagement Service. + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' +# + NadrfDataRetrievalNotification: + description: > + Represents a notification that corresponds with an Individual ADRF Data + Retrieval Subscription. + type: object + required: + - notifCorrId + - timeStamp + oneOf: + - required: [anaNotifications] + - required: [dataNotif] + - required: [fetchInstruct] + properties: + notifCorrId: + type: string + description: Notification correlation identifier. + anaNotifications: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscriptionNotification' + minItems: 1 + description: List of analytics subscription notifications. + dataNotif: + $ref: '#/components/schemas/DataNotification' + fetchInstruct: + $ref: 'TS29576_Nmfaf_3caDataManagement.yaml#/components/schemas/FetchInstruction'# + terminationReq: + type: boolean + description: > + It indicates the termination of the data management subscription that requested by the + ADRF. + dsc: + type: string + description: Data synthesis and compression information. + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' +# + NadrfDataStoreSubscriptionRef: + description: Contains a reference to a request for a Data or Analytics subscription. + type: object + oneOf: + - required: [transRefId] + - required: [dataSetId] + properties: + transRefId: + type: string + description: Transaction reference identifier. + dataSetId: + type: string + description: data set identifier of data or analytics. +# + NadrfStoredDataSpec: + description: Contains information about Data or Analytics specification. + type: object + required: + - timePeriod + oneOf: + - required: [dataSpec] + - required: [anaSpec] + - required: [dataSetId] + properties: + dataSpec: + $ref: '#/components/schemas/DataSubscription' + anaSpec: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscription' + timePeriod: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + dataSetId: + type: string + description: Data set identifier of stored data or analytics records. +# + DataSubscription: + description: Contains a data specification. + type: object + oneOf: + - required: [amfDataSub] + - required: [smfDataSub] + - required: [udmDataSub] + - required: [nefDataSub] + - required: [afDataSub] + - required: [nrfDataSub] + - required: [nsacfDataSub] + - required: [upfDataSub] + - required: [gmlcDataSub] + properties: + amfDataSub: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/AmfEventSubscription' + smfDataSub: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NsmfEventExposure' + udmDataSub: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/EeSubscription' + afDataSub: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureSubsc' + nefDataSub: + $ref: 'TS29591_Nnef_EventExposure.yaml#/components/schemas/NefEventExposureSubsc' + nrfDataSub: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/SubscriptionData' + nsacfDataSub: + $ref: 'TS29536_Nnsacf_SliceEventExposure.yaml#/components/schemas/SACEventSubscription' + upfDataSub: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/UpfEventSubscription' + gmlcDataSub: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/InputData' +# + DataNotification: + description: Represents a Data Subscription Notification. + type: object + oneOf: + - required: [amfEventNotifs] + - required: [smfEventNotifs] + - required: [udmEventNotifs] + - required: [nefEventNotifs] + - required: [afEventNotifs] + - required: [nrfEventNotifs] + - required: [nsacfEventNotifs] + - required: [upfEventNotifs] + - required: [gmlcEventNotifs] + properties: + amfEventNotifs: + type: array + items: + $ref: 'TS29518_Namf_EventExposure.yaml#/components/schemas/AmfEventNotification' + minItems: 1 + description: List of notifications of AMF events. + smfEventNotifs: + type: array + items: + $ref: 'TS29508_Nsmf_EventExposure.yaml#/components/schemas/NsmfEventExposureNotification' + minItems: 1 + description: List of notifications of SMF events. + udmEventNotifs: + type: array + items: + $ref: 'TS29503_Nudm_EE.yaml#/components/schemas/MonitoringReport' + minItems: 1 + description: List of notifications of UDM events. + nefEventNotifs: + type: array + items: + $ref: 'TS29591_Nnef_EventExposure.yaml#/components/schemas/NefEventExposureNotif' + minItems: 1 + description: List of notifications of NEF events. + afEventNotifs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AfEventExposureNotif' + minItems: 1 + description: List of notifications of AF events. + nrfEventNotifs: + type: array + items: + $ref: 'TS29510_Nnrf_NFManagement.yaml#/components/schemas/NotificationData' + minItems: 1 + description: List of notifications of NRF events. + nsacfEventNotifs: + type: array + items: + $ref: 'TS29536_Nnsacf_SliceEventExposure.yaml#/components/schemas/SACEventReport' + minItems: 1 + description: List of notifications of NSACF events. + upfEventNotifs: + type: array + items: + $ref: 'TS29564_Nupf_EventExposure.yaml#/components/schemas/NotificationData' + minItems: 1 + description: List of notifications of UPF events. + gmlcEventNotifs: + type: array + items: + $ref: 'TS29515_Ngmlc_Location.yaml#/components/schemas/EventNotifyData' + minItems: 1 + description: List of notifications of GMLC events. + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + +# + StorageHandlingInfo: + description: Contains storage handling information about data or analytics. + type: object + properties: + lifetime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + delNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + delNotifCorrId: + type: string + description: Notification correlation identifier for deletion alerts. +# + NadrfAlertNotification: + description: Contains information about data or analytics that are about to be deleted. + type: object + properties: + alertStorTransId: + type: string + description: > + Storage transaction identifier that can be used to retrieve data or analytics. + delNotifCorrId: + type: string + description: Notification correlation identifier. + required: + - alertStorTransId + - delNotifCorrId +# + NadrfAlertNotificationResponse: + description: > + Contains information about planned actions related to data or analytics + that are about to be deleted. + type: object + properties: + retrievalInd: + type: boolean + description: > + Indicates if the NF service consumer has determined to retrieve the data + or analytics that are about to be deleted. + required: + - retrievalInd +# + DataSetTag: + description: Contains an identifier and a description of associated records. + type: object + required: + - dataSetId + properties: + dataSetId: + type: string + description: Data set identifier of data or analytics records. + dataSetDesc: + type: string + description: Data set description of data or analytics records. +# diff --git a/TS29575_Nadrf_MLModelManagement.yaml b/TS29575_Nadrf_MLModelManagement.yaml new file mode 100644 index 0000000..a82df14 --- /dev/null +++ b/TS29575_Nadrf_MLModelManagement.yaml @@ -0,0 +1,347 @@ +openapi: 3.0.0 +info: + version: 1.0.0-alpha.2 + title: Nadrf_MLModelManagement + description: | + ADRF ML Model Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.575 V18.4.0; 5G System; Analytics Data Repository Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.575/' +# +servers: + - url: '{apiRoot}/nadrf-mlmodelmanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +# +security: + - {} + - oAuth2ClientCredentials: + - nadrf-mlmodelmanagement +# +paths: + /mlmodel-store-records: + post: + summary: Creates a new Individual ADRF ML Model Store Record resource. + operationId: CreateADRFMLModelStoreRecord + tags: + - ADRF ML Model Store Records (Collection) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfMLModelStoreRecord' + required: true + description: ADRF ML model store record to be stored. + responses: + '201': + description: Successful creation of new Individual ADRF ML Model Store Record resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nadrf-mlmodelmanagement//mlmodel-store-records/{storeTransId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfMLModelStoreRecord' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Retrieves existing Individual ADRF ML Model Store Record. + operationId: GetAdrfMLModelStoreRecord + tags: + - ADRF ML Model Store Records (Collection) + parameters: + - name: store-trans-id + description: A storage transaction identifier of a ML model store record in ADRF. + in: query + required: false + schema: + type: string + - name: modelUniqueId + description: Unique Model identifier of a ML model. + in: query + required: false + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + responses: + '200': + description: ML model store records are returned. + content: + application/json: + schema: + $ref: '#/components/schemas/NadrfMLModelStoreRecord' + '204': + description: No matching ADRF ML Model were found. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /mlmodel-store-records/{storeTransId}: + delete: + summary: Delete an existing Individual ADRF ML Model Store Record. + operationId: DeleteADRFMLModelStoreRecord + tags: + - Individual ADRF ML Model Store Record (Document) + parameters: + - name: storeTransId + in: path + description: String identifying a ML Model Store Record in ADRF. + required: true + schema: + type: string + responses: + '200': + description: > + Attempted to remove ML model(s) in the Individual ADRF ML Model Store Record resource. + The result is returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MLModelDelResult' + minItems: 1 + '204': + description: > + No Content. The Individual ADRF ML Model Store Record resource matching the + storeTransId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /remove-stored-mlmodel: + post: + summary: Remove stored ML model based on unique ML model identifier. + operationId: DeleteADRFMLModel + tags: + - ADRF Stored ML Model + requestBody: + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NadrfMLModelStoreRecord' + minItems: 1 + required: true + responses: + '200': + description: > + The ADRF ML model matching the provided unique ML model identifier + was attempted to be deleted. The result is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MLModelDelResult' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +# +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nadrf-mlmodelmanagement: Access to the nadrf-mlmodelmanagement API +# + schemas: +# + NadrfMLModelStoreRecord: + description: Represents an Individual ADRF ML Model Store Record. + type: object + allOf: + - oneOf: + - required: [nfInstanceId] + - required: [nfSetId] + - anyOf: + - required: [mlModelIdnfo] + - required: [mlModels] + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + mlModelInfo: + type: array + items: + $ref: '#/components/schemas/MLModelInfo' + minItems: 1 + description: List of ML Model Information. + mlModels: + type: array + items: + $ref: '#/components/schemas/MLModel' + minItems: 1 + description: Represents ML Model(s). + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' +# + MLModelInfo: + description: Represents informatiom of the ML Model. + type: object + allOf: + - required: [modelUniqueId] + - required: [mlFileAddr] + - required: [mlStorageSize] + properties: + modelUniqueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + mlFileAddr: + $ref: 'TS29520_Nnwdaf_MLModelProvision.yaml#/components/schemas/MLModelAddr' + mlStorageSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + allowConsumerList: + type: array + items: + $ref: '#/components/schemas/AllowedConsumer' + minItems: 1 + description: The allowed consumer list of the ML Model. +# + AllowedConsumer: + description: Represents informatiom of the allowed consumer list of the ML Model. + type: object + properties: + nfInstanceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + oneOf: + - required: [nfInstanceId] + - required: [nfSetId] +# + MLModelDelResult: + description: Represents informatiom of the ML Model. + type: object + allOf: + - required: [modelUniqueId] + - required: [DeleteResult] + properties: + modelUniqueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + deleteResult: + $ref: '#/components/schemas/DeleteResult' +# + MLModel: + description: Represents an ML Model. + type: object + allOf: + - required: [modelUniqueId] + - required: [mlModel] + properties: + modelUniqueId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + mlModel: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Binary' +# +# ENUMERATIONS DATA TYPES +# + DeleteResult: + anyOf: + - type: string + enum: + - ML_MODEL_DELETED + - ML_MODEL_NOT_FOUND + - ML_MODEL_FOUND_BUT_NOT_DELETED + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration but is not used to encode + content defined in the present version of this API. + description: | + Represents the store result type. + Possible values are: + - ML_MODEL_DELETED: Indicates that the ML model was deleted in ADRF. + - ML_MODEL_FILE_ADDRESS_NOT_FOUND: Indicates that the ML model was not found in ADRF. + - ML_MODEL_FOUND_BUT_NOT_DELETED: Indicates that the ML model was found in ADRF but not deleted. + diff --git a/TS29576_Nmfaf_3caDataManagement.yaml b/TS29576_Nmfaf_3caDataManagement.yaml new file mode 100644 index 0000000..1c19ee3 --- /dev/null +++ b/TS29576_Nmfaf_3caDataManagement.yaml @@ -0,0 +1,200 @@ +openapi: 3.0.0 + +info: + version: 1.1.0-alpha.2 + title: Nmfaf_3caDataManagement + description: | + MFAF 3GPP Consumer Adaptor (3CA) Data Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.576 V18.2.0; 5G System; Messaging Framework Adaptor Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.576/' + +servers: + - url: '{apiRoot}/nmfaf-3cadatamanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +security: + - oAuth2ClientCredentials: + - nmfaf-3cadatamanagement + - {} + +paths: + /mfaf-data-analytics: + post: + # This is a pseudo operation, clients shall NOT invoke this method! + requestBody: + required: true + content: + application/json: + # Unspecified schema for the JSON body, since this is used by neither the NF service consumer nor the MFAF. + schema: {} + responses: + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + Notification: + '{notificationURI}': + # The URI in {notificationURI} is obtained out of band by the MFAF, i.e. it is provided via the Nmfaf-3daDataManagement API during the configuration for mapping data or analytics. + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NmfafDataRetrievalNotification' + responses: + '204': + description: The receipt of the Notification is acknowledged. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + Fetch: + '{request.body#/fetchInstruction/fetchUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + type: array + items: + type: string + minItems: 1 + description: Indicate the fetch correlation identifier. + responses: + '200': + description: Expected response to a valid request. + content: + application/json: + schema: + $ref: '#/components/schemas/NmfafDataAnaNotification' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmfaf-3cadatamanagement: Access to the nmfaf-3cadatamanagement API + + schemas: + NmfafDataRetrievalNotification: + description: > + Represents the data or analytics or notification of availability of data or analytics + to notification endpoints. + type: object + required: + - correId + oneOf: + - required: [dataAnaNotif] + - required: [fetchInstruction] + properties: + correId: + type: string + description: > + Represents the Analytics Consumer Notification Correlation ID + or Data Consumer Notification Correlation ID. It shall be set to the same + value as the "correId" attribute of MessageConfiguration data type. + dataAnaNotif: + $ref: '#/components/schemas/NmfafDataAnaNotification' + fetchInstruction: + $ref: '#/components/schemas/FetchInstruction' + + FetchInstruction: + description: > + The fetch instructions indicate whether the data or analytics are to be fetched by the + consumer. + type: object + required: + - fetchUri + - fetchCorrIds + properties: + fetchUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + fetchCorrIds: + type: array + items: + type: string + minItems: 1 + description: The fetch correlation identifier(s) of the MFAF Data or Analytics. + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + + NmfafDataAnaNotification: + description: MFAF data or analytics. + type: object + oneOf: + - required: [anaNotifications] + - required: [dataNotif] + properties: + anaNotifications: + type: array + items: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NnwdafEventsSubscriptionNotification' + minItems: 1 + description: List of analytics subscription notifications. + dataNotif: + $ref: 'TS29575_Nadrf_DataManagement.yaml#/components/schemas/DataNotification' diff --git a/TS29576_Nmfaf_3daDataManagement.yaml b/TS29576_Nmfaf_3daDataManagement.yaml new file mode 100644 index 0000000..1fc4a4d --- /dev/null +++ b/TS29576_Nmfaf_3daDataManagement.yaml @@ -0,0 +1,246 @@ +openapi: 3.0.0 +info: + version: 1.1.0-alpha.2 + title: Nmfaf_3daDataManagement + description: | + MFAF 3GPP DCCF Adaptor (3DA) Data Management Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.576 V18.1.0; 5G System; Messaging Framework Adaptor Services; Stage 3. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.576/' +servers: + - url: '{apiRoot}/nmfaf-3dadatamanagement/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. +security: + - oAuth2ClientCredentials: + - nmfaf-3dadatamanagement + - {} +paths: + /configurations: + post: + summary: Creates a new Individual MFAF Configuration resource. + operationId: CreateMFAFConfiguration + tags: + - MFAF Configuration(Collection) + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MfafConfiguration' + required: true + description: > + Contains the information for the creation of a new Individual MFAF + Configuration resource. + responses: + '201': + description: Successful creation of new Individual MFAF Configuration resource. + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nmfaf-3dadatamanagement//configurations/{transRefId} + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/MfafConfiguration' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /configurations/{transRefId}: + put: + summary: Updates an existing Individual MFAF Configuration resource. + operationId: UpdateMFAFConfiguration + tags: + - Individual MFAF Configuration (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MfafConfiguration' + parameters: + - name: transRefId + in: path + description: Unique identifier of the individual MFAF Configurations resource. + required: true + schema: + type: string + responses: + '200': + description: The updated MFAF Configuration resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MfafConfiguration' + '204': + description: The Individual MFAF Configuration resource was modified successfully. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Deletes an existing Individual MFAF Configuration resource. + operationId: DeleteMFAFConfiguration + tags: + - Individual MFAF Configuration (Document) + parameters: + - name: transRefId + in: path + description: Unique identifier of the individual MFAF Configurations resource. + required: true + schema: + type: string + responses: + '204': + description: > + No Content. The Individual MFAF Configuration resource matching + the transRefId was deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmfaf-3dadatamanagement: Access to the nmfaf-3dadatamanagement API + schemas: + MfafConfiguration: + description: Represents an Individual MFAF Configuration. + type: object + required: + - messageConfigurations + properties: + messageConfigurations: + type: array + items: + $ref: '#/components/schemas/MessageConfiguration' + minItems: 1 + description: The configuration of the MFAF for mapping data or analytics. + MessageConfiguration: + description: Represents the message configuration. + type: object + required: + - notificationURI + - correId + properties: + correId: + type: string + description: > + If the configuration is used for mapping analytics or data collection, + representing the Analytics Consumer Notification Correlation ID or + Data Consumer Notification Correlation ID. + formatInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/FormattingInstruction' + mfafNotiInfo: + $ref: '#/components/schemas/MfafNotiInfo' + notificationURI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifEndpoints: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/NotifyEndpoint' + minItems: 1 + description: The information of notification endpoints. + procInstruct: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + multiProcInstructs: + type: array + items: + $ref: 'TS29574_Ndccf_DataManagement.yaml#/components/schemas/ProcessingInstruction' + minItems: 1 + description: Processing instructions to be used for sending event notifications. + adrfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + MfafNotiInfo: + description: > + The MFAF notification information. It shall be provided in a response message + if it had not been provided in the respective request message. + type: object + required: + - mfafNotifUri + - mfafCorreId + properties: + mfafNotifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + mfafCorreId: + type: string diff --git a/TS29577_Nipsmgw_SMService.yaml b/TS29577_Nipsmgw_SMService.yaml new file mode 100644 index 0000000..08f610a --- /dev/null +++ b/TS29577_Nipsmgw_SMService.yaml @@ -0,0 +1,259 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.2' + title: 'Nipsmgw_SMService Service API' + description: | + IP-SM-GW SMService. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.577 V18.1.0; 5G System; IP Short Message Gateway and SMS Router For Short Message Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.577/' + +security: + - oAuth2ClientCredentials: + - nipsmgw-smservice + - {} + +servers: + - url: '{apiRoot}/nipsmgw-smservice/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /mt-sm-infos/{gpsi}: + put: + summary: Create the routing information for a given UE + operationId: RoutingInfo + tags: + - Creation of Routing Info + security: + - {} + - oAuth2ClientCredentials: + - nipsmgw_smservice + - oAuth2ClientCredentials: + - nipsmgw_smservice + - nipsmgw_smservice:mtsminfos:write + parameters: + - name: gpsi + in: path + required: true + description: Generic Public Subscription Identifier (GPSI) + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRoutingData' + required: true + responses: + '201': + description: Routing Information is created in IP-SM-GW + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedRoutingData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nipsmgw-smservice//mt-sm-infos/{gpsi}' + required: true + schema: + type: string + '200': + description: Routing Information is updated in IP-SM-GW + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedRoutingData' + '204': + description: Routing Information is updated in IP-SM-GW + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mt-sm-infos/{gpsi}/sendsms: + post: + summary: Send SMS payload for a given UE + operationId: SendSMS + tags: + - Send MT SMS message and the delivery report + security: + - {} + - oAuth2ClientCredentials: + - nipsmgw_smservice + - oAuth2ClientCredentials: + - nipsmgw_smservice + - nipsmgw_smservice:sendsms:invoke + parameters: + - name: gpsi + in: path + required: true + description: Generic Public Subscription Identifier (GPSI) + schema: + type: string + requestBody: + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SmsData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: sending delivery report + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SmsDeliveryData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nipsmgw-smservice: Access to the nipsmgw-smservice API + nipsmgw-smservice:mtsminfos:write: Access to write MT SM Infos + nipsmgw-smservice:sendsms:invoke: Access to invoke Send SMS + + schemas: + + CreateRoutingData: + description: Information used for creating or updating the routing information of the user. + type: object + required: + - smsfId + properties: + smsfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + CreatedRoutingData: + description: Information used for receiving the MT SMS. + type: object + properties: + ipsmgwIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipsmgwIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + ipsmgwFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + correlationId: + type: string + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + SmsData: + description: Information within request message for delivering SMS. + type: object + required: + - smsPayload + properties: + smsPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + + SmsDeliveryData: + description: > + Information within response message invoking MtForwardSm service operation, for delivering + MT SMS Delivery Report. + type: object + required: + - smsPayload + properties: + smsPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' diff --git a/TS29577_Nrouter_SMService.yaml b/TS29577_Nrouter_SMService.yaml new file mode 100644 index 0000000..ff4db19 --- /dev/null +++ b/TS29577_Nrouter_SMService.yaml @@ -0,0 +1,224 @@ +openapi: 3.0.0 + +info: + version: '1.1.0-alpha.2' + title: 'Nrouter_SMService Service API' + description: | + SMS Router SMService. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.577 V18.1.0; 5G System; IP Short Message Gateway and SMS Router For Short Message Services; Stage 3 + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.577/' + +security: + - oAuth2ClientCredentials: + - nrouter-smservice + - {} + +servers: + - url: '{apiRoot}/nrouter-smservice/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501. + +paths: + /mt-sm-infos/{gpsi}: + put: + summary: Create the routing information for a given UE + operationId: RoutingInfo + tags: + - Creation of Routing Info + security: + - {} + - oAuth2ClientCredentials: + - nrouter_smservice + - oAuth2ClientCredentials: + - nrouter_smservice + - nrouter_smservice:mtsminfos:write + parameters: + - name: gpsi + in: path + required: true + description: Generic Public Subscription Identifier (GPSI) + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/CreateRoutingData' + required: true + responses: + '201': + description: Routing Information is created in SMS Router + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedRoutingData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nrouter-smservice//mt-sm-infos/{gpsi}' + required: true + schema: + type: string + '200': + description: Routing Information is updated in SMS Router + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedRoutingData' + '204': + description: Routing Information is updated in SMS Router + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /mt-sm-infos/{gpsi}/sendsms: + post: + summary: Send SMS payload for a given UE + operationId: SendSMS + tags: + - Send MT SMS message and the delivery report + security: + - {} + - oAuth2ClientCredentials: + - nrouter_smservice + - oAuth2ClientCredentials: + - nrouter_smservice + - nrouter_smservice:sendsms:invoke + parameters: + - name: gpsi + in: path + required: true + description: Generic Public Subscription Identifier (GPSI) + schema: + type: string + requestBody: + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: sending delivery report + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: 'TS29577_Nipsmgw_SMService.yaml#/components/schemas/SmsDeliveryData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nrouter-smservice: Access to the nrouter-smservice API + nrouter-smservice:mtsminfos:write: Access to write MT SM Infos + nrouter-smservice:sendsms:invoke: Access to invoke Send SMS + + schemas: + + CreatedRoutingData: + description: Information used for receiving the MT SMS. + type: object + properties: + routerIpv4: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + routerIpv6: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + routerFqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' diff --git a/TS29578_Nmnpf_NPStatus.yaml b/TS29578_Nmnpf_NPStatus.yaml new file mode 100644 index 0000000..29dcbb4 --- /dev/null +++ b/TS29578_Nmnpf_NPStatus.yaml @@ -0,0 +1,96 @@ +openapi: 3.0.0 +info: + title: 'Nmnpf_NPStatus' + version: '1.1.0-alpha.1' + description: | + Nmnpf Number Portability Status Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: 3GPP TS 29.578 V18.0.0; Mobile Number Portability Services. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.578/ +servers: + - url: '{apiRoot}/nmnpf-npstatus/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nmnpf-npstatus + +paths: + /{gpsi}: + get: + summary: Retrieves the Number Portability status of the UE + operationId: GetNumberPortabilityStatus + tags: + - Number Portability Status (Document) + parameters: + - name: gpsi + in: path + description: GPSI of the UE + required: true + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + $ref: '#/components/schemas/NpStatusInfo' + '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': + description: GPSI Not Found + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmnpf-npstatus: Access to the nmnpf-npstatus API + schemas: + +# COMPLEX TYPES: + + NpStatusInfo: + description: Contains the Subscription Network + type: object + required: + - subscriptionNetwork + properties: + subscriptionNetwork: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + +# SIMPLE TYPES: + + + +# ENUMS: diff --git a/TS29579_Niwmsc_SMService.yaml b/TS29579_Niwmsc_SMService.yaml new file mode 100644 index 0000000..e4a15b2 --- /dev/null +++ b/TS29579_Niwmsc_SMService.yaml @@ -0,0 +1,155 @@ +openapi: 3.0.0 +info: + title: 'Niwmsc_SMService' + version: '1.1.0-alpha.2' + description: | + SMS-IWMSC Short Message Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.579 V18.1.0; 5G System; SMS Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.579/ + +servers: + - url: '{apiRoot}/niwmsc-smservice/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - oAuth2ClientCredentials: + - niwmsc-smservice + - {} + +paths: + /mo-sm-infos/{supi}/sendsms: + post: + summary: Send SMS payload for a given UE + operationId: SendSMS + tags: + - Send MO SMS message and the delivery report + parameters: + - name: supi + in: path + required: true + description: Subscription Permanent Identifier (SUPI) + schema: + type: string + requestBody: + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SmsData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + required: true + responses: + '200': + description: sending delivery report + content: + multipart/related: # message with a binary body part + schema: + type: object + properties: + jsonData: + $ref: '#/components/schemas/SmsDeliveryData' + binaryPayload: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryPayload: + contentType: application/vnd.3gpp.sms + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '504': + $ref: 'TS29571_CommonData.yaml#/components/responses/504' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + niwmsc-smservice: Access to the niwmsc-smservice API + + schemas: + + SmsData: + description: > + Information within resquest message invoking MoForwardSm service operation, + for delivering MO SMS. + type: object + required: + - smsPayload + properties: + smsPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + + SmsDeliveryData: + description: > + Information within response message invoking MoForwardSm service operation, + for delivering MO SMS Delivery Report. + type: object + required: + - smsPayload + properties: + smsPayload: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + +# COMPLEX TYPES: + + + +# SIMPLE TYPES: + + + +# ENUMS: diff --git a/TS29580_Nmbsf_MBSUserDataIngestSession.yaml b/TS29580_Nmbsf_MBSUserDataIngestSession.yaml new file mode 100644 index 0000000..4e348f1 --- /dev/null +++ b/TS29580_Nmbsf_MBSUserDataIngestSession.yaml @@ -0,0 +1,1115 @@ +openapi: 3.0.0 + +info: + title: nmbsf-mbs-ud-ingest + version: 1.1.0-alpha.5 + description: | + API for MBS User Data Ingest Session Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.580 V18.4.0; 5G System; Multicast/Broadcast Service Function Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.580/' + +servers: + - url: '{apiRoot}/nmbsf-mbs-ud-ingest/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + +paths: + /sessions: + get: + summary: Retrieve all the active MBS User Data Ingest Sessions managed by the MBSF. + tags: + - MBS User Data Ingest Sessions (Collection) + operationId: RetrieveMBSUserDataIngSessions + responses: + '200': + description: > + OK. All the active MBS User Data Ingest Sessions managed by the MBSF are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MBSUserDataIngSession' + minItems: 0 + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new MBS User Data Ingest Session. + tags: + - MBS User Data Ingest Sessions (Collection) + operationId: CreateMBSUserDataIngSession + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Data Ingest Session + at the MBSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + responses: + '201': + description: > + Created. A new MBS User Data Ingest Session is successfully created and a representation + of the created Individual MBS User Data Ingest Session resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nmbs-mbs-ud-ingest/v1/sessions/{sessionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /sessions/{sessionId}: + parameters: + - name: sessionId + in: path + description: Identifier of the Individual MBS User Data Ingest Session resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: RetrieveIndMBSUserDataIngSession + responses: + '200': + description: > + OK. The requested Individual MBS User Data Ingest Session resource is successfully + returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: UpdateIndMBSUserDataIngSession + requestBody: + description: > + Contains the updated representation of the Individual MBS User Data Ingest Session + resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session resource is successfully + updated and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session resource is + successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: ModifyIndMBSUserDataIngSession + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User Data Ingest + Session resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSessionPatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session resource is successfully + modified and a representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngSession' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session resource is + successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS User Data Ingest Session resource. + tags: + - Individual MBS User Data Ingest Session (Document) + operationId: DeleteIndMBSUserDataIngSession + responses: + '204': + description: > + No Content. The Individual MBS User Data Ingest Session resource is successfully + deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /status-subscriptions: + get: + summary: Retrieve all the active MBS User Data Ingest Session Status Subscription resources managed by the MBSF. + tags: + - MBS User Data Ingest Session Status Subscriptions (Collection) + operationId: RetrieveMBSUserDataIngStatSubscs + responses: + '200': + description: > + OK. All the active MBS User Data Ingest Session Status Subscriptions managed by the MBSF + are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + minItems: 0 + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new MBS User Data Ingest Session Status Subscription. + tags: + - MBS User Data Ingest Session Status Subscriptions (Collection) + operationId: CreateMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Data Ingest Session + Status Subscription. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + responses: + '201': + description: > + Created. Successful creation of a new Individual MBS User Data Ingest Session + Status Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nmbs-mbs-ud-ingest/v1/status-subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + mbsUserDataIngestSessionStatusNotif: + '{request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatNotif' + responses: + '204': + description: No Content. Successful reception of the notification. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /status-subscriptions/{subscriptionId}: + parameters: + - name: subscriptionId + in: path + description: > + Identifier of the Individual MBS User Data Ingest Session Status Subscription resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: RetrieveIndMBSUserDataIngStatSubsc + responses: + '200': + description: > + OK. Successful retrieval of the requested Individual MBS User Data Ingest Session + Status Subscription resource. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: UpdateIndMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the updated representation of the Individual MBS User Data Ingest Session Status + Subscription resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session Status Subscription resource + is successfully updated and a representation of the updated resource is returned in the + response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session Status Subscription + resource is successfully updated and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: ModifyIndMBSUserDataIngStatSubsc + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User Data Ingest + Session Status Subscription resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubscPatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Data Ingest Session Status Subscription resource + is successfully modified and a representation of the updated resource is returned in the + response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserDataIngStatSubsc' + '204': + description: > + No Content. The concerned Individual MBS User Data Ingest Session Status Subscription + resource is successfully modified and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS User Data Ingest Session Status Subscription resource. + tags: + - Individual MBS User Data Ingest Session Status Subscription (Document) + operationId: DeleteMBSUserDataIngStatSubsc + responses: + '204': + description: > + No Content. Successful deletion of the existing Individual MBS User Data Ingest Session + Status Subscription resource. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + description: > + When the Nmbsf_MBSUserDataIngestSession is consumed by a trusted or internal AF, then + 'nmbsf-mbs-ud-ingest' shall be used as the scope (i.e. with the 'scopes' property) and + '{nrfApiRoot}/oauth2/token' shall be used as the URI to retrieve the token + (i.e. 'tokenUri'). + +# +# STRUCTURED DATA TYPES +# + schemas: + MBSUserDataIngSession: + description: Represents MBS User Data Ingest Session information. + type: object + properties: + mbsUserServId: + type: string + mbsDisSessInfos: + type: object + additionalProperties: + $ref: '#/components/schemas/MBSDistributionSessionInfo' + minProperties: 1 + nullable: true + description: > + Represents one or more MBS Distribution Session(s) composing the MBS User Data Ingest + Session. + The key of the map shall be any unique string encoded value. + actPeriods: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + mbsUserServAnmt: + $ref: '#/components/schemas/MBSUserServAnmt' + mbsUserServiceAnmt: + $ref: 'TS26517_MBSUserServiceAnnouncement.yaml#/components/schemas/UserServiceDescription' + mbsUserServiceAnmtUrl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - mbsUserServId + - mbsDisSessInfos + + MBSDistributionSessionInfo: + description: Represents MBS Distribution Session information. + type: object + properties: + mbsDistSessionId: + type: string + mbsDistSessState: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/DistSessionState' + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + associatedSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AssociatedSessionId' + mbsServInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceInfo' + maxContBitRate: + $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxContDelay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + distrMethod: + $ref: '#/components/schemas/DistributionMethod' + fecConfig: + $ref: '#/components/schemas/FECConfig' + objDistrInfo: + $ref: '#/components/schemas/ObjectDistrMethInfo' + pckDistrInfo: + $ref: '#/components/schemas/PacketDistrMethInfo' + trafficMarkingInfo: + type: string + tgtServAreas: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceArea' + extTgtServAreas: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalMbsServiceArea' + mbsFSAId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsFsaId' + locationDependent: + type: boolean + description: > + Represents an indication that this MBS Distribution Session belongs to a location- + dependent MBS. This attribute shall be set to "true" to indicate that the MBS + Distribution Session belongs to a location-dependent MBS; or set to "false" to + indicate that the MBS Distribution Session does not belong to a location-dependent MBS. + The default value is "false", if omitted. + default: false + multiplexedServFlag: + type: boolean + description: > + Represents an indication that this MBS Distribution Session belongs to a multiplex, i.e. + forms part of a set of MBS Distribution Sessions under the same parent MBS User Data + Ingest Session with identical or empty sets of target service areas and multiplexed onto + the same MBS Session at the MB-SMF. + default: false + restrictedFlag: + type: boolean + description: > + Represents an indication that this MBS Distribution Session is not open to any UE, i.e. + restricted to a set of UEs according to their MBS related subscription information. + This attribute may be included only if the parent MBS User Service is of Multicast + service type. This attribute shall be set to "true" to indicate that this MBS + Distribution Session is restricted to a set of UE(s); or set to "false" to indicate that + this MBS Distribution Session is open to any UE. + The default value is "false", if omitted. + default: false + required: + - distrMethod + - maxContBitRate + + MBSUserDataIngSessionPatch: + description: > + Represents the requested modifications to an MBS User Data Ingest Session Status + Subscription. + type: object + properties: + mbsDisSessInfos: + type: object + additionalProperties: + $ref: '#/components/schemas/MBSDistributionSessionInfo' + minProperties: 1 + nullable: true + description: > + Contains the requested modifications to one or more MBS Distribution Session(s) + composing the MBS User Data Ingest Session. + The key of the map shall be any unique string encoded value. + actPeriods: + type: array + items: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + minItems: 1 + + ObjectDistrMethInfo: + description: > + Represents additional MBS Distribution Session parameters for the case of an Object + Distribution Method. + type: object + properties: + operatingMode: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/ObjDistributionOperatingMode' + objAcqMethod: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/ObjAcquisitionMethod' + objAcqIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 0 + objIngUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objDistrUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objRepairUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - operatingMode + - objAcqMethod + - objAcqIds + + PacketDistrMethInfo: + description: > + Represents additional MBS Distribution Session parameters for the case of Packet + Distribution Method. + type: object + properties: + operatingMode: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/PktDistributionOperatingMode' + pckIngMethod: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/PktIngestMethod' + ingEndpointAddrs: + $ref: 'TS29581_Nmbstf_DistSession.yaml#/components/schemas/MbStfIngestAddr' + required: + - operatingMode + - pckIngMethod + - ingEndpointAddrs + + MBSUserDataIngStatSubsc: + description: > + Represents an MBS User Data Ingest Session Status Subscription. + type: object + properties: + mbsIngSessionId: + type: string + eventSubscs: + type: array + items: + $ref: '#/components/schemas/SubscribedEvent' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - mbsIngSessionId + - eventSubscs + - notifUri + + MBSUserDataIngStatSubscPatch: + description: > + Represents the requested modifications to an MBS User Data Ingest Session Status + Subscription. + type: object + properties: + eventSubscs: + type: array + items: + $ref: '#/components/schemas/SubscribedEvent' + minItems: 1 + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + SubscribedEvent: + description: > + Represents a subscribed MBS User Data Ingest Session Status event and the related + information. + type: object + properties: + statusEvent: + $ref: '#/components/schemas/Event' + mbsDistSessionId: + type: string + required: + - statusEvent + + MBSUserDataIngStatNotif: + description: > + Represents an MBS User Data Ingest Session Status Notification. + type: object + properties: + mbsIngSessionId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/EventNotification' + minItems: 1 + required: + - mbsIngSessionId + - eventNotifs + + EventNotification: + description: Represents Event Notification. + type: object + properties: + statusEvent: + $ref: '#/components/schemas/Event' + mbsDisSessionId: + type: string + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + statusAddInfo: + type: string + timeStamp: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - statusEvent + - timeStamp + + MBSUserServAnmt: + deprecated: true + description: > + Represents the MBS User Service Announcement currently associated with the MBS User Data + Ingest Session. + type: object + properties: + extServiceId: + type: array + items: + type: string + minItems: 1 + servClass: + type: string + startTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + endTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + servNameDescs: + type: array + items: + $ref: 'TS29580_Nmbsf_MBSUserService.yaml#/components/schemas/ServiceNameDescription' + minItems: 1 + mainServLang: + type: string + mbsDistSessAnmt: + additionalProperties: + $ref: '#/components/schemas/MBSDistSessionAnmt' + minProperties: 1 + description: > + Represents the set of MBS Distribution Session Announcements currently associated with + this MBS User Service Announcement. + required: + - extServiceId + - servClass + - servNameDescs + + MBSDistSessionAnmt: + description: > + Represents the set of MBS Distribution Session Announcements currently associated with this + MBS User Service Announcement. + type: object + properties: + mbsSessionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsSessionId' + mbsFSAId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsFsaId' + distrMethod: + $ref: '#/components/schemas/DistributionMethod' + objDistrAnnInfo: + $ref: '#/components/schemas/ObjectDistMethAnmtInfo' + sesDesInfo: + type: array + items: + type: string + minItems: 1 + required: + - distrMethod + - sesDesInfo + + ObjectDistMethAnmtInfo: + description: > + Represents MBS Distribution Session Announcement parameters for Object Distribution Method. + type: object + properties: + objDistrSched: + $ref: 'TS29122_CommonData.yaml#/components/schemas/TimeWindow' + objDistrBaseUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objRepBaseUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + + FECConfig: + description: Represents FEC configuration information. + type: object + properties: + fecScheme: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + fecOverHead: + type: integer + additionalParams: + type: array + items: + $ref: '#/components/schemas/AddFecParams' + minItems: 1 + required: + - fecScheme + - fecOverHead + + AddFecParams: + description: Represents additional scheme-specific parameters for AL-FEC configuration. + type: object + properties: + paramName: + type: string + paramValue: + type: string + required: + - paramName + - paramValue + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + DistributionMethod: + anyOf: + - type: string + enum: + - OBJECT + - PACKET + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the MBS Distribution method. + Possible values are: + - OBJECT: Indicates the Object Distribution Method. + - PACKET: Indicates the Packet Distribution Method. + + Event: + anyOf: + - type: string + enum: + - USER_DATA_ING_SESS_STARTING + - USER_DATA_ING_SESS_STARTED + - USER_DATA_ING_SESS_TERMINATED + - DIST_SESS_STARTING + - DIST_SESS_STARTED + - DIST_SESS_TERMINATED + - DIST_SESS_SERV_MNGT_FAILURE + - DIST_SESS_POL_CRTL_FAILURE + - DATA_INGEST_FAILURE + - DELIVERY_STARTED + - SESSION_TERMINATED + - SESSION_STARTED + - SESSION_RELEASED + - DIST_SESS_ACTIVATED + - DIST_SESS_EST_FAILURE + - USER_SER_AD + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the MBS User Data Ingest Session Status events. + Possible values are: + - USER_DATA_ING_SESS_STARTING: > + Indicates that the MBS User Data Ingest Session is starting. This is an "MBS User Data + Ingest Session" level event. + - USER_DATA_ING_SESS_STARTED: > + Indicates that the MBS User Data Ingest Session established. This is an "MBS User Data + Ingest Session" level event. + - USER_DATA_ING_SESS_TERMINATED: > + Indicates that the MBS User Data Ingest Session is terminated. This is an "MBS User Data + Ingest Session" level event. + - DIST_SESS_STARTING: > + Indicates that the MBS Distribution Session is starting. This is an "MBS Distribution + Session" level event. + - DIST_SESS_STARTED: > + Indicates that the MBS Distribution Session started. This is an "MBS Distribution + Session" level event. + - DIST_SESS_TERMINATED: > + Indicates that the MBS Distribution Session is terminated. This is an "MBS Distribution + Session" level event. + - DIST_SESS_SERV_MNGT_FAILURE: > + Indicates that the MBS Distribution Session could not be started (e.g. the necessary + resources could not be allocated by the MBS system). This is an "MBS Distribution + Session" level event. + - DIST_SESS_POL_CRTL_FAILURE: > + Indicates that the MBS Distribution Session could not be started because of a policy + authorization/control failure or rejection. This is an "MBS Distribution Session" + level event. + - DATA_INGEST_FAILURE: > + The MBS User Data Ingest is failed because the MBSTF is expecting data (the MBS Session + is active), but not receiving it. This is an "MBS Distribution Session" level event. + - DELIVERY_STARTED: > + The MBS User Data delivery is started. + - SESSION_TERMINATED: > + The MBS User Data Ingest Session is terminated. + - SESSION_STARTED: > + The MBS Session is started. + - SESSION_RELEASED: > + The MBS Session is released. + - DIST_SESS_ACTIVATED: + Indicates that the MBS Distribution Session is activated successfully. + - DIST_SESS_EST_FAILURE: + Indicates that the MBSF failed to successfully establish the MBS Distribution Session at + the MBSTF. This is an "MBS Distribution Session" level event. + - USER_SER_AD: + Indicates that the MBSF advertises the User Service Announcement information to the MBS + Application Provider. diff --git a/TS29580_Nmbsf_MBSUserService.yaml b/TS29580_Nmbsf_MBSUserService.yaml new file mode 100644 index 0000000..2b342ef --- /dev/null +++ b/TS29580_Nmbsf_MBSUserService.yaml @@ -0,0 +1,439 @@ +openapi: 3.0.0 + +info: + title: nmbsf-mbs-us + version: 1.1.0-alpha.2 + description: | + API for MBS User Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.580 V18.1.0; 5G System; Multicast/Broadcast Service Function Services. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.580/' + +servers: + - url: '{apiRoot}/nmbsf-mbs-us/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: [] + + +paths: + /mbs-user-services: + get: + summary: Retrieve all the active MBS User Service(s) managed by the MBSF. + tags: + - MBS User Services (Collection) + operationId: RetrieveMBSUserServices + responses: + '200': + description: > + OK. All the active MBS User Services managed by the MBSF are returned. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/MBSUserService' + minItems: 0 + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Request the creation of a new MBS User Service. + tags: + - MBS User Services (Collection) + operationId: CreateMBSUserService + requestBody: + description: > + Contains the parameters to request the creation of a new MBS User Service at the MBSF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + responses: + '201': + description: > + Created. A new MBS User Service is successfully created and a representation of the + created Individual MBS User Service resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nmbsf-mbs-us/v1/mbs-user-services/{mbsUserServId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /mbs-user-services/{mbsUserServId}: + parameters: + - name: mbsUserServId + in: path + description: Identifier of the Individual MBS User Service resource. + required: true + schema: + type: string + + get: + summary: Retrieve an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service (Document) + operationId: RetrieveIndMBSUserService + responses: + '200': + description: > + OK. The requested Individual MBS User Service resource is successfully returned. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: Request the update of an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service (Document) + operationId: UpdateIndMBSUserService + requestBody: + description: > + Contains the updated representation of the Individual MBS User Service resource. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + responses: + '200': + description: > + OK. The concerned Individual MBS User Service resource is successfully updated and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + '204': + description: > + No Content. The concerned Individual MBS User Service resource is successfully updated + and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: Request the modification of an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service (Document) + operationId: ModifyIndMBSUserService + requestBody: + description: > + Contains the parameters to request the modification of the Individual MBS User Service + resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/MBSUserServicePatch' + responses: + '200': + description: > + OK. The concerned Individual MBS User Service resource is successfully modified and a + representation of the updated resource is returned in the response body. + content: + application/json: + schema: + $ref: '#/components/schemas/MBSUserService' + '204': + description: > + No Content. The concerned Individual MBS User Service resource is successfully modified + and no content is returned in the response body. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Request the deletion of an existing Individual MBS User Service resource. + tags: + - Individual MBS User Service (Document) + operationId: DeleteIndMBSUserService + responses: + '204': + description: > + No Content. The concerned Individual MBS User Service resource is successfully deleted. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUri}' + scopes: {} + description: > + When the Nmbsf_MBSUserService is consumed by a trusted or internal AF, then + 'nmbsf-mbs-us' shall be used as the scope (i.e. within the 'scopes' property) and + '{nrfApiRoot}/oauth2/token' shall be used as the URI to retrieve the token + (i.e. 'tokenUri'). + +# +# STRUCTURED DATA TYPES +# + schemas: + MBSUserService: + description: Represents the parameters of an MBS User Service. + type: object + properties: + extServiceIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + servType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/MbsServiceType' + servClass: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + servAnnModes: + type: array + items: + $ref: '#/components/schemas/ServiceAnnouncementMode' + minItems: 1 + servNameDescs: + type: array + items: + $ref: '#/components/schemas/ServiceNameDescription' + minItems: 1 + mainServLang: + type: string + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - extServiceIds + - servType + - servClass + - servAnnModes + - servNameDescs + + ServiceNameDescription: + description: > + Represents a set of per language service name and/or service description. + type: object + properties: + servName: + type: string + servDescrip: + type: string + language: + type: string + required: + - language + anyOf: + - required: [servName] + - required: [servDescrip] + + MBSUserServicePatch: + description: > + Represents the requested modifications to the parameters of an MBS User Service. + type: object + properties: + extServiceIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + servClass: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + servAnnModes: + type: array + items: + $ref: '#/components/schemas/ServiceAnnouncementMode' + minItems: 1 + servNameDescs: + type: array + items: + $ref: '#/components/schemas/ServiceNameDescription' + minItems: 1 + mainServLang: + type: string + +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + ServiceAnnouncementMode: + anyOf: + - type: string + enum: + - VIA_MBS_5 + - VIA_MBS_DISTRIBUTION_SESSION + - PASSED_BACK + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the service announcement mode. + Possible values are: + - VIA_MBS_5: Indicates the MBS User Service Announcement compiled by the MBSF is advertised + to the MBSF Client at reference point MBS-5. + - VIA_MBS_DISTRIBUTION_SESSION: Indicates the MBS User Service Announcement compiled by + the MBSF is advertised to the MBSF Client via the MBS Distribution Session at reference + point MBS-4-MC. + - PASSED_BACK: Indicates the MBS User Service Announcement compiled by the MBSF is passed + back to the MBS Application Provider by the MBSF, and then advertised to the MBSF Client + via application-private means at reference point MBS-8. diff --git a/TS29581_Nmbstf_DistSession.yaml b/TS29581_Nmbstf_DistSession.yaml new file mode 100644 index 0000000..89577cf --- /dev/null +++ b/TS29581_Nmbstf_DistSession.yaml @@ -0,0 +1,767 @@ +openapi: 3.0.0 + +info: + title: Nmbstf-distsession + version: 1.1.0-alpha.1 + description: | + MBSTF Distribution Session Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.581 V18.3.0; 5G System; MBSDistribution Service. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.581/ + +servers: + - url: '{apiRoot}/nmbstf-distsession/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nmbstf-distsession + +paths: + /dist-sessions: + post: + summary: Create + tags: + - MBS distribution sessions collection + operationId: Create + requestBody: + description: > + Representation of the MBS distribution session to be created in the MBSTF + Creates an individual MBS distribution session resource in the MBSTF. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateReqData' + responses: + '201': + description: > + Successful creation of an MBS session + content: + application/json: + schema: + $ref: '#/components/schemas/CreateRspData' + headers: + Location: + description: > + 'Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nmbstf-distsession//dist-sessions/{distSessionRef}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /dist-sessions/{distSessionRef}: + patch: + summary: Updates an individual MBS distribution session resource in the MBSTF. + tags: + - Individual MBS distribution session + operationId: Update + parameters: + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + requestBody: + description: Data within the Update Request + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '204': + description: > + Successful modification of the MBS distribution session without content in the response. + '200': + description: > + Successful response containing the updated representation of Distribution Session. + content: + application/json: + schema: + $ref: '#/components/schemas/DistSession' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Deletes an individual MBS distribution session resource in the MBSTF. + tags: + - Individual MBS distribution session + operationId: Destroy + parameters: + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + responses: + '204': + description: > + Successful release of the MBS distribution session without content in the response. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + get: + summary: Retrieves an individual MBS distribution session resource in the MBSTF. + tags: + - Individual MBS distribution session + operationId: Retrieve + parameters: + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + responses: + '200': + description: successful retrieval of MBS distribution session parameters + content: + application/json: + schema: + $ref: '#/components/schemas/DistSession' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /dist-sessions/{distSessionRef}/subscriptions: + post: + summary: StatusSubscribe creating a subscription + tags: + - Subscriptions collection for MBS distribution session + operationId: StatusSubscribe + parameters: + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + requestBody: + description: Data within the StatusSubscribe Request + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/StatusSubscribeReqData' + responses: + '201': + description: Data within a successful StatusSubscribe Response + content: + application/json: + schema: + $ref: '#/components/schemas/StatusSubscribeRspData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + callbacks: + statusNotification: + '{$request.body#/notifUri}': + post: + parameters: + - name: Content-Encoding + in: header + description: Content-Encoding, described in IETF RFC 9110 + schema: + type: string + requestBody: + description: Notification Payload + content: + application/json: + schema: + $ref: '#/components/schemas/StatusNotifyReqData' + responses: + '204': + description: Expected response to a successful callback processing + headers: + Accept-Encoding: + description: Accept-Encoding, described in IETF RFC 9110 + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + + /dist-sessions/{distSessionRef}/subscriptions/{subscriptionId}: + delete: + summary: StatusUnSubscribe to unsubscribe from the Status Subscription + tags: + - Individual Subscription for an MBS session + operationId: StatusUnSubscribe + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the subscription + schema: + type: string + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + responses: + '204': + description: Successful deletion of the subscription + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: + summary: StatusSubscribe to modify (update or renew) an individual subscription + tags: + - Individual Subscription for an MBS distribution session + operationId: StatusSubscribeMod + parameters: + - name: subscriptionId + in: path + required: true + description: Unique ID of the individual subscription to be modified + schema: + type: string + - name: distSessionRef + in: path + required: true + description: Unique ID of the MBS distribution session + schema: + type: string + requestBody: + description: Data to be modified in the DistSessionSubscription + required: true + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + responses: + '200': + description: Successful modification of the individual Status Subscription + content: + application/json: + schema: + $ref: '#/components/schemas/DistSessionSubscription' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nmbstf-distsession: Access to the nmbstf-distsession API + + schemas: +# +# STRUCTURED DATA TYPES +# + CreateReqData: + description: Data within Create Request + type: object + properties: + distSession: + $ref: '#/components/schemas/DistSession' + required: + - distSession + + CreateRspData: + description: Data within Create Response + type: object + properties: + distSession: + $ref: '#/components/schemas/DistSession' + required: + - distSession + + DistSession: + description: Mbs Distribution Session Information + type: object + properties: + distSessionId: + type: string + distSessionState: + $ref: '#/components/schemas/DistSessionState' + mbUpfTunAddr: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress' + mbmsGwTunAddr: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress' + upTrafficFlowInfo: + writeOnly: true + allOf: + - $ref: '#/components/schemas/UpTrafficFlowInfo' + mbr: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/BitRate' + maxDelay: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/PacketDelBudget' + objDistributionData: + $ref: '#/components/schemas/ObjDistributionData' + pktDistributionData: + $ref: '#/components/schemas/PktDistributionData' + fecInformation: + $ref: 'TS29580_Nmbsf_MBSUserDataIngestSession.yaml#/components/schemas/FECConfig' + dscpMarking: + type: string + writeOnly: true + required: + - distSessionId + - distSessionState + - mbUpfTunAddr + - mbr + oneOf: + - required: [ objDistributionData ] + - required: [ pktDistributionData ] + + + + ObjDistributionData: + description: Info for Object Distribution Method + type: object + properties: + objDistributionOperatingMode: + $ref: '#/components/schemas/ObjDistributionOperatingMode' + objAcquisitionMethod: + $ref: '#/components/schemas/ObjAcquisitionMethod' + objAcquisitionIdsPull: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + objAcquisitionIdPush: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objIngestBaseUrl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + objDistributionBaseUrl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - objDistributionOperatingMode + - objAcquisitionMethod + not: + required: [ objAcquisitionIdsPull, objAcquisitionIdPush ] + + PktDistributionData: + description: Info for Packet Distribution Method + type: object + properties: + pktDistributionOperatingMode: + $ref: '#/components/schemas/PktDistributionOperatingMode' + pktIngestMethod: + $ref: '#/components/schemas/PktIngestMethod' + mbStfIngestAddr: + $ref: '#/components/schemas/MbStfIngestAddr' + required: + - pktDistributionOperatingMode + - mbStfIngestAddr + + StatusSubscribeReqData: + description: Data within the StatusSubscribe Request + type: object + properties: + subscription: + $ref: '#/components/schemas/DistSessionSubscription' + required: + - subscription + + StatusSubscribeRspData: + description: Data within StatusSubscribe Response + type: object + properties: + subscription: + $ref: '#/components/schemas/DistSessionSubscription' + reportList: + $ref: '#/components/schemas/DistSessionEventReportList' + required: + - subscription + + StatusNotifyReqData: + description: Status Notification + type: object + properties: + reportList: + $ref: '#/components/schemas/DistSessionEventReportList' + required: + - reportList + + DistSessionSubscription: + description: Data within the Status Subscription + type: object + properties: + nfcInstanceId: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + eventList: + type: array + items: + $ref: '#/components/schemas/DistSessionEventType' + minItems: 1 + notifyUri: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifyCorrelationId: + type: string + writeOnly: true + expiryTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + distSessionSubscUri: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - eventList + - notifyUri + + DistSessionEventReportList: + description: List of Event Reports + type: object + properties: + eventReportList: + type: array + items: + $ref: '#/components/schemas/DistSessionEventReport' + minItems: 1 + notifyCorrelationId: + type: string + required: + - eventReportList + + DistSessionEventReport: + description: Data related to a specific event + type: object + properties: + eventType: + $ref: '#/components/schemas/DistSessionEventType' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - eventType + + UpTrafficFlowInfo: + description: IP Multicast Address and Port Number + type: object + properties: + destIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - destIpAddr + - portNumber + + MbStfIngestAddr: + description: MBSTF Ingest Addresses + type: object + properties: + afEgressTunAddr: + writeOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress' + mbStfIngressTunAddr: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress' + afSsm: + writeOnly: true + allOf: + - $ref: '#/components/schemas/ExtSsm' + mbStfListenAddr: + readOnly: true + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/TunnelAddress' + + ExtSsm: + description: SSM and Port Number + type: object + properties: + ssm: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ssm' + portNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + required: + - ssm + - portNumber + + +# +# SIMPLE DATA TYPES +# + +# +# ENUMERATIONS +# + + DistSessionState: + description: Current State of MBS distribution session + anyOf: + - type: string + enum: + - INACTIVE + - ESTABLISHED + - ACTIVE + - DEACTIVATING + - type: string + + ObjDistributionOperatingMode: + description: Mode of data ingestion for Object distribution method + anyOf: + - type: string + enum: + - SINGLE + - COLLECTION + - CAROUSEL + - STREAMING + - type: string + + ObjAcquisitionMethod: + description: Object Acquisition Method + anyOf: + - type: string + enum: + - PULL + - PUSH + - type: string + + PktDistributionOperatingMode: + description: Mode of data ingestion for Packet distribution method + anyOf: + - type: string + enum: + - PACKET_PROXY + - PACKET_FORWARD_ONLY + - type: string + + DistSessionEventType: + description: Status Event Type + anyOf: + - type: string + enum: + - DATA_INGEST_FAILURE + - SESSION_DEACTIVATED + - SESSION_ACTIVATED + - SERVICE_MANAGEMENT_FAILURE + - DATA_INGEST_SESSION_ESTABLISHED + - DATA_INGEST_SESSION_TERMINATED + - type: string + + PktIngestMethod: + description: Packet Ingest Method + anyOf: + - type: string + enum: + - MULTICAST + - UNICAST + - type: string diff --git a/TS29583_PIN_ASRegistration.yaml b/TS29583_PIN_ASRegistration.yaml new file mode 100644 index 0000000..618f820 --- /dev/null +++ b/TS29583_PIN_ASRegistration.yaml @@ -0,0 +1,329 @@ +openapi: 3.0.0 + +info: + title: PINServer PAS Registration_API + version: 1.0.0-alpha.3 + description: | + API for PAS registration to PIN server. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.583; Application layer support for Personal IoT Network (PINAPP); + Personal IoT Network (PIN) Server Services; Stage 3. + url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.583/' + +security: + - {} + - oAuth2ClientCredentials: [] + +servers: + - url: '{apiRoot}/pin-as-registration/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.3 of 3GPP TS 29.583. + +paths: + /registrations: + post: + summary: Create a new PAS Registration + operationId: CreatePASRegistration + tags: + - PAS Registrations (Collection) + description: Register a new PAS at the PIN Server. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + responses: + '201': + description: PAS information is registered successfully at PIN server. + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /registrations/{registrationId}: + get: + summary: Get an Individual PAS Registration + operationId: GetIndPASReg + tags: + - Individual PAS Registration (Document) + description: Retrieve an Individual PAS registration resource. + parameters: + - name: registrationId + in: path + description: Registration Id. + required: true + schema: + type: string + responses: + '200': + description: OK (The PAS registration information at the PIN Server). + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual PAS Registration + operationId: UpdateIndPASReg + tags: + - Individual PAS Registration (Document) + description: Fully replace an existing PAS Registration resource. + parameters: + - name: registrationId + in: path + description: PAS Registration Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + responses: + '200': + description: OK (The PAS registration information is updated successfully). + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + '204': + description: No Content. The PAS registration information is updated successfully. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual PAS Registration + operationId: ModifyIndPASReg + tags: + - Individual PAS Registration (Document) + description: Partially update an existing PAS Registration resource. + parameters: + - name: registrationId + in: path + description: PAS registration Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing PAS registration resource. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/PASRegistrationPatch' + responses: + '200': + description: > + The Individual PAS registration is successfully modified and + the updated registration information is returned in the response. + content: + application/json: + schema: + $ref: '#/components/schemas/PASRegistration' + '204': + description: No Content. The Individual PAS registration is successfully modified. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual PAS Registration + operationId: DeleteIndPASReg + tags: + - Individual PAS Registration (Document) + description: Delete an existing PAS registration at PIN server. + parameters: + - name: registrationId + in: path + description: Registration Id. + required: true + schema: + type: string + responses: + '204': + description: The individual PAS registration is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + PASRegistration: + type: object + description: Represents an PAS registration information. + properties: + conInfo: + $ref: '#/components/schemas/ConnectivityInfo' + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + requestorId: + type: string + description: Indentifies a PAS + passId: + type: string + description: Indentifies a PIN service + required: + - requestorId + - conInfo + - passId + + ConnectivityInfo: + type: object + description: Represents a connection information of PAS. + properties: + fqdn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Fqdn' + ipv4Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Ipv6Addr' + uri: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + oneOf: + - required: [uri] + - required: [fqdn] + - required: [ipv4Addr] + - required: [ipv6Addr] + + PASRegistrationPatch: + type: object + description: Represents partial update request of individual PAS registration information. + properties: + conInfo: + $ref: '#/components/schemas/ConnectivityInfo' + expTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTimeRm' + passId: + type: string + description: Identifies a PIN service provided by PAS. diff --git a/TS29583_PIN_ASServiceContinuity.yaml b/TS29583_PIN_ASServiceContinuity.yaml new file mode 100644 index 0000000..3f2bbf9 --- /dev/null +++ b/TS29583_PIN_ASServiceContinuity.yaml @@ -0,0 +1,400 @@ +openapi: 3.0.0 + +info: + title: PINServer Service Continuity Information_API + description: | + API for PINServer Service Continuity Information Reporting. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.0.0-alpha.2 + +externalDocs: + description: > + 3GPP TS 29.583; Application layer support for Personal IoT Network (PINAPP); + Personal IoT Network (PIN) Server Services; Stage 3. + url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.583/' + +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/pin-as-servicecontinuity/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.3.1 of 3GPP TS 29.583. + +paths: + /subscriptions: + post: + summary: Creates a new Individual Service Continuity Information Subscriptions resource + operationId: CreateServiceContinuityInfo + tags: + - Service Continuity Information Subscriptions (Collection) + description: Create a Subscription for reporting service continuity information to PAS. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + responses: + '201': + description: > + Created (The individual Service Continuity information subscription resource is created successfully) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ServiceContinuityInfoNotification: + '{request.body#/notificationAddr}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfoNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Read an Individual Service Continuity Information Subscriptions resource + operationId: ReadIndServiceContinuityInfo + tags: + - Individual Service Continuity Information Subscription (Document) + description: Retrieve an Individual Service Continuity information subscription information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '200': + description: OK (Successfully get the Service Continuity information subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual Service Continuity Information Subscriptions resource + operationId: UpdateIndServiceContinuityInfo + tags: + - Individual Service Continuity Information Subscription (Document) + description: Fully replace an existing Individual Service Continuity information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + responses: + '200': + description: OK (Successfully modified The individual Service Continuity information). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + '204': + description: No Content. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual Service Continuity Information Subscriptions resource + operationId: ModifyIndServiceContinuityInfo + tags: + - Individual Service Continuity Information Subscription (Document) + description: Partially update an existing Individual ServiceContinuity information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing Individual ServiceContinuity information. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfoPatch' + responses: + '200': + description: > + OK (The Individual ServiceContinuity information Subscription is successfully modified + and the updated subscription information is returned in the response). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceContinuityInfo' + '204': + description: > + No Content (The individual Service Continuity information subscription was modified + successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual Service Continuity Information Subscriptions resource + operationId: DeleteIndServiceContinuityInfo + tags: + - Individual Service Continuity Information Subscription (Document) + description: Delete an existing Individual Service Continuity information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '204': + description: The individual subscription is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ServiceContinuityInfo: + type: object + description: Represents an Individual Service Continuity Information Subscription. + properties: + subsEvent: + $ref: '#/components/schemas/EventType' + notificationAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestorId: + type: string + description: Identifies a AF requestor. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - subsEvent + - notificationAddr + - requestorId + + ServiceContinuityInfoPatch: + type: object + description: Represents the partial update of Individual Service Continuity Information. + properties: + subsEvent: + $ref: '#/components/schemas/EventType' + notificationAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestorId: + type: string + description: Identifies a AF requestor. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + + ServiceContinuityInfoNotification: + type: object + description: Represent the service continuity information for notification. + properties: + subsId: + type: string + description: > + Identifies the individual service continuity information subscription for which + the service continuity information notification is delivered. + repInfo: + $ref: '#/components/schemas/ServiceContinuityReportInfo' + + ServiceContinuityReportInfo: + type: object + description: List of notifications that include the information of the service continuity. + properties: + acId: + type: string + description: Identifies an application client identifier. + pegcId: + type: string + description: Identifies a PEGC. + serviceId: + type: string + description: Identifies a PIN service. + sessionId: + type: string + description: Identifies an application session. + targetPineId: + type: string + description: Identifies the PINE. + sessionDes: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + + EventType: + anyOf: + - type: string + enum: + - SERVICE_CONTINUITY_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates service continuity happens in a PIN. + Possible values are: + - SERVICE_CONTINUITY_INFO: Indicates service continuity happens in a PIN. diff --git a/TS29583_PIN_ASServiceSwitch.yaml b/TS29583_PIN_ASServiceSwitch.yaml new file mode 100644 index 0000000..73d5daa --- /dev/null +++ b/TS29583_PIN_ASServiceSwitch.yaml @@ -0,0 +1,394 @@ +openapi: 3.0.0 + +info: + title: PINServer Service Switch Information_API + description: | + API for PINServer Service Switch Information Reporting. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + version: 1.0.0-alpha.2 + +externalDocs: + description: > + 3GPP TS 29.583; Application layer support for Personal IoT Network (PINAPP); + Personal IoT Network (PIN) Server Services; Stage 3. + url: 'http://www.3gpp.org/ftp/Specs/archive/29_series/29.583/' + +security: + - {} + - oAuth2ClientCredentials: [] +servers: + - url: '{apiRoot}/pin-as-serviceswitch/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 6.2.1 of 3GPP TS 29.583. + +paths: + /subscriptions: + post: + summary: Creates a new Individual Service Switch Information Subscriptions resource + operationId: CreateServiceSwitchInfo + tags: + - Service Switch Information Subscriptions (Collection) + description: Create a Subscription for reporting service switch information to PAS. + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + responses: + '201': + description: > + Created (The individual Service Switch information subscription resource is created successfully) + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + headers: + Location: + description: 'Contains the URI of the newly created resource' + required: true + schema: + type: string + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + callbacks: + ServiceSwitchInfoNotification: + '{request.body#/notificationAddr}': + post: + requestBody: # contents of the callback message + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfoNotification' + responses: + '204': + description: No Content (successful notification) + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: Read an Individual Service Switch Information Subscriptions resource + operationId: ReadIndServiceSwitchInfo + tags: + - Individual Service Switch Information Subscription (Document) + description: Retrieve an Individual Service Switch information subscription information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '200': + description: OK (Successfully get the Service Switch information subscription). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29122_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + put: + summary: Update an Individual Service Switch Information Subscriptions resource + operationId: UpdateIndServiceSwitchInfo + tags: + - Individual Service Switch Information Subscription (Document) + description: Fully replace an existing Individual Service Switch information Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + responses: + '200': + description: OK (Successfully modified The individual Service Switch information). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + '204': + description: No Content. + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + patch: + summary: Modify an Individual Service Switch Information Subscriptions resource + operationId: ModifyIndServiceSwitchInfo + tags: + - Individual Service Switch Information Subscription (Document) + description: Partially update an existing Individual ServiceSwitch information. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + requestBody: + description: Partial update an existing Individual ServiceSwitch information. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfoPatch' + responses: + '200': + description: > + OK (The Individual ServiceSwitch information Subscription is successfully modified + and the updated subscription information is returned in the response). + content: + application/json: + schema: + $ref: '#/components/schemas/ServiceSwitchInfo' + '204': + description: > + No Content (The individual Service Switch information subscription was modified + successfully). + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '411': + $ref: 'TS29122_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29122_CommonData.yaml#/components/responses/413' + '415': + $ref: 'TS29122_CommonData.yaml#/components/responses/415' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete an Individual Service Switch Information Subscriptions resource + operationId: DeleteIndServiceSwitchInfo + tags: + - Individual Service Switch Information Subscription (Document) + description: Delete an existing Individual ServiceSwitchinformation Subscription. + parameters: + - name: subscriptionId + in: path + description: Subscription Id. + required: true + schema: + type: string + responses: + '204': + description: The individual subscription is deleted. + '307': + $ref: 'TS29122_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29122_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29122_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29122_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29122_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29122_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29122_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29122_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29122_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29122_CommonData.yaml#/components/responses/default' + +# Components + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: {} + + schemas: + ServiceSwitchInfo: + type: object + description: Represents an Individual Service Switch Information Subscription. + properties: + subsEvent: + $ref: '#/components/schemas/EventType' + notificationAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestorId: + type: string + description: Identifies a AF requestor. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + required: + - subsEvent + - notificationAddr + - requestorId + + ServiceSwitchInfoPatch: + type: object + description: Represents the partial update of Individual Service Switch Information. + properties: + subsEvent: + $ref: '#/components/schemas/EventType' + notificationAddr: + $ref: 'TS29122_CommonData.yaml#/components/schemas/Uri' + requestorId: + type: string + description: Identifies a AF requestor. + expTime: + $ref: 'TS29122_CommonData.yaml#/components/schemas/DateTime' + + ServiceSwitchInfoNotification: + type: object + description: Represent the service switch information for notification. + properties: + subsId: + type: string + description: > + Identifies the individual service switch information subscription for which + the service switch information notification is delivered. + repInfo: + $ref: '#/components/schemas/ServiceSwitchReportInfo' + + ServiceSwitchReportInfo: + type: object + description: List of notifications that include the information of the service switch. + properties: + acId: + type: string + description: Identifies an application client identifier. + sessionId: + type: string + description: Identifies an application session. + targetPineId: + type: string + description: Identifies the PINE that the service is switched to. + sessionDes: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + + EventType: + anyOf: + - type: string + enum: + - SERVICE_SWITCH_INFO + - type: string + description: > + This string provides forward-compatibility with future + extensions to the enumeration and is not used to encode + content defined in the present version of this API. + description: | + Indicates service switch happens in a PIN. + Possible values are: + - SERVICE_SWITCH_INFO: Indicates service switch happens in a PIN. diff --git a/TS29591_Nnef_DNAIMapping.yaml b/TS29591_Nnef_DNAIMapping.yaml new file mode 100644 index 0000000..429895e --- /dev/null +++ b/TS29591_Nnef_DNAIMapping.yaml @@ -0,0 +1,207 @@ +openapi: 3.0.0 +info: + title: Nnef_DNAIMapping + version: 1.0.0-alpha.1 + description: | + NEF DNAI Mapping Service. + © 2023 , 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.591 V18.3.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ +servers: + - url: '{apiRoot}/nnef-dnai-mapping/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnef-dnai-mapping +paths: + + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29522_DNAIMapping.yaml#/components/schemas/DnaiMapSub' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: 'TS29522_DNAIMapping.yaml#/components/schemas/DnaiMapSub' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnef-dnai-mapping//subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: 'TS29522_DNAIMapping.yaml#/components/schemas/DnaiMapUpdateNotif' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: retrieve subscription + operationId: GetIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: 'TS29522_DNAIMapping.yaml#/components/schemas/DnaiMapSub' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-dnai-mapping: Access to the Nnef_DNAIMapping API diff --git a/TS29591_Nnef_EASDeployment.yaml b/TS29591_Nnef_EASDeployment.yaml new file mode 100644 index 0000000..7d01490 --- /dev/null +++ b/TS29591_Nnef_EASDeployment.yaml @@ -0,0 +1,330 @@ +openapi: 3.0.0 + +info: + title: Nnef_EASDeployment + version: 1.1.0-alpha.3 + description: | + NEF EAS Deployment service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.591 V18.2.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ + +servers: + - url: '{apiRoot}/nnef-eas-deployment/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnef-eas-deployment + +paths: + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeploySubData' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeploySubData' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure: + {apiRoot}/nnef-eas-deployment//subscriptions/{subscriptionId}. + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + notifUri: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeployInfoNotif' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: retrieve subscription + operationId: GetIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/EasDeploySubData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-eas-deployment: Access to the Nnef_EASDeployment API + + schemas: + EasDeploySubData: + description: Represents an Individual EAS Deployment Event Subscription resource. + type: object + properties: + appId: + type: string + dnnSnssaiInfos: + type: array + items: + $ref: 'TS29522_AMInfluence.yaml#/components/schemas/DnnSnssaiInformation' + minItems: 1 + description: Each of the element identifies a (DNN, S-NSSAI) combination. + eventId: + $ref: '#/components/schemas/EasEvent' + eventsNotifs: + type: array + items: + $ref: '#/components/schemas/EasDeployInfoData' + minItems: 1 + description: > + Represents the EAS Deployment Information changes event(s) to be reported. + Shall only be present if the "immRep" attribute is included and sets to true, + and the current status of EAS Deployment Information is available. + immRep: + type: boolean + description: > + Indication of immediate reporting. Set to true: requires the immediate reporting of the + current status of EAS Deployment Information, if available. Set to false (default): EAS + Deployment Information event report occurs when the event is met. + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + notifId: + type: string + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + required: + - eventId + - notifId + - notifUri + + EasDeployInfoNotif: + description: > + Represents notifications on EAS Deployment Information changes event(s) that occurred for an + Individual EAS Deployment Event Subscription resource. + type: object + properties: + easDepNotifs: + type: array + items: + $ref: '#/components/schemas/EasDepNotification' + minItems: 1 + notifId: + type: string + required: + - easDepNotifs + - notifId + + EasDepNotification: + description: Represents the EAS Deployment Notifcation. + type: object + properties: + easDepInfo: + $ref: '#/components/schemas/EasDeployInfoData' + eventId: + $ref: '#/components/schemas/EasEvent' + required: + - easDepInfo + - eventId + + EasDeployInfoData: + description: Represents the EAS Deployment Information to be reported. + type: object + properties: + appId: + type: string + dnaiInfos: + type: object + additionalProperties: + $ref: 'TS29522_EASDeployment.yaml#/components/schemas/DnaiInformation' + minProperties: 1 + description: > + list of DNS server identifier (consisting of IP address and port) and/or IP address(s) + of the EAS in the local DN for each DNAI. The key of map is the DNAI. + dnn: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + fqdnPatternList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/FqdnPatternMatchingRule' + minItems: 1 + internalGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + snssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + targetAfId: + type: string + description: > + Identifier of the AF that is responsible for the EAS associated with this EAS + deployment information. + required: + - fqdnPatternList + +# Simple data types and Enumerations + + EasEvent: + anyOf: + - type: string + enum: + - EAS_INFO_CHG + - type: string + description: | + Represents the EAS event. + Possible values are: + - EAS_INFO_CHG: Indicates that the EAS Deployment Information is changed. diff --git a/TS29591_Nnef_ECSAddress.yaml b/TS29591_Nnef_ECSAddress.yaml new file mode 100644 index 0000000..5642ffa --- /dev/null +++ b/TS29591_Nnef_ECSAddress.yaml @@ -0,0 +1,321 @@ +openapi: 3.0.0 +info: + title: Nnef_ECSAddressConfigurationInformation + version: 1.0.0-alpha.2 + description: | + NEF ECS Address Service. + © 2023 , 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.591 V18.3.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ +servers: + - url: '{apiRoot}/nnef-ecs-addr-cfg-info/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnef-ecs-addr-cfg-info +paths: + + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoSub' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoSub' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnef-ecs-addr-cfg-info//subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: retrieve subscription + operationId: GetIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoSub' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: update subscription + operationId: ReplaceIndividualSubcription + tags: + - IndividualSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoSub' + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/EcsAddrCfgInfoSub' + '204': + description: No Content. Resource was succesfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-ecs-addr-cfg-info: Access to the Nnef_ECSAddress API + schemas: + EcsAddrCfgInfoSub: + description: Represents an Individual ECS Address Configuration Information subscription data. + type: object + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Each element identifies a DNN. + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: Each element identifies a slice. + internalGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + immRepInd: + type: boolean + description: > + Indication of immediate reporting. If included, when it is set to true it indicates + immediate reporting of the subscribed events, if available. Otherwise, reporting will + occur when the event is met. + immReports: + type: array + items: + $ref: '#/components/schemas/EcsAddrCfgInfoNotification' + minItems: 1 + description: Immediate report with ECS Address Configuration Information that + match this subscription. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - notifUri + - notifCorrId + + EcsAddrCfgInfoNotification: + description: Represents notifications for ECS Address Configuration Information data. + type: object + properties: + notifCorrId: + type: string + description: Notification correlation identifier. + ecsAddrCfgInfo: + type: array + items: + type: string + minItems: 1 + description: Contains the ECS Address Configuration Information. + required: + - notifCorrId + - ecsAddrCfgInfo diff --git a/TS29591_Nnef_EventExposure.yaml b/TS29591_Nnef_EventExposure.yaml new file mode 100644 index 0000000..b23dbc9 --- /dev/null +++ b/TS29591_Nnef_EventExposure.yaml @@ -0,0 +1,652 @@ +openapi: 3.0.0 + +info: + title: Nnef_EventExposure + version: 1.3.0-alpha.4 + description: | + NEF Event Exposure Service. + © 2023 , 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: > + 3GPP TS 29.591 V18.4.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ + +servers: + - url: '{apiRoot}/nnef-eventexposure/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nnef-eventexposure + +paths: + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureSubsc' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureSubsc' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnef-eventexposure//subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureNotif' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: retrieve subscription + operationId: GetIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + - name: supp-feat + in: query + description: Features supported by the NF service consumer + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureSubsc' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: update subscription + operationId: ReplaceIndividualSubcription + tags: + - IndividualSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureSubsc' + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/NefEventExposureSubsc' + '204': + description: No Content. Resource was succesfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-eventexposure: Access to the Nnef_EventExposure API + + schemas: + NefEventExposureSubsc: + description: Represents an Individual Network Exposure Event Subscription resource. + type: object + properties: + dataAccProfId: + type: string + eventsSubs: + type: array + items: + $ref: '#/components/schemas/NefEventSubs' + minItems: 1 + eventsRepInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/NefEventNotification' + minItems: 1 + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - eventsSubs + - notifId + - notifUri + + NefEventExposureNotif: + description: > + Represents notifications on network exposure event(s) that occurred for an Individual Network + Exposure Event Subscription resource. + type: object + properties: + notifId: + type: string + eventNotifs: + type: array + items: + $ref: '#/components/schemas/NefEventNotification' + minItems: 1 + required: + - notifId + - eventNotifs + + NefEventNotification: + description: Represents information related to an event to be reported. + type: object + properties: + event: + $ref: '#/components/schemas/NefEvent' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + svcExprcInfos: + type: array + items: + $ref: '#/components/schemas/ServiceExperienceInfo' + minItems: 1 + ueMobilityInfos: + type: array + items: + $ref: '#/components/schemas/UeMobilityInfo' + minItems: 1 + ueCommInfos: + type: array + items: + $ref: '#/components/schemas/UeCommunicationInfo' + minItems: 1 + excepInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/ExceptionInfo' + minItems: 1 + congestionInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/UserDataCongestionCollection' + minItems: 1 + perfDataInfos: + type: array + items: + $ref: '#/components/schemas/PerformanceDataInfo' + minItems: 1 + dispersionInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/DispersionCollection' + minItems: 1 + collBhvrInfs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/CollectiveBehaviourInfo' + minItems: 1 + msQoeMetrInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/MsQoeMetricsCollection' + minItems: 1 + msConsumpInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/MsConsumptionCollection' + minItems: 1 + msNetAssInvInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/MsNetAssInvocationCollection' + minItems: 1 + msDynPlyInvInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/MsDynPolicyInvocationCollection' + minItems: 1 + msAccActInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/MSAccessActivityCollection' + minItems: 1 + gnssAssistDataInfo: + $ref: '#/components/schemas/GNSSAssistDataInfo' + datVolTransTimeInfos: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/DatVolTransTimeCollection' + minItems: 1 + required: + - event + - timeStamp + + NefEventSubs: + description: Represents an event to be subscribed and the related event filter information. + type: object + properties: + event: + $ref: '#/components/schemas/NefEvent' + eventFilter: + $ref: '#/components/schemas/NefEventFilter' + required: + - event + + NefEventFilter: + description: Represents event filter information for an event. + type: object + properties: + tgtUe: + $ref: '#/components/schemas/TargetUeIdentification' + appIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + minItems: 1 + locArea: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + collAttrs: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/CollectiveBehaviourFilter' + minItems: 1 + required: + - tgtUe + + TargetUeIdentification: + description: Identifies the UE to which the request applies. + type: object + properties: + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + interGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + anyUeId: + type: boolean + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + + ServiceExperienceInfo: + description: Contains service experience information associated with an application. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + svcExpPerFlows: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/ServiceExperienceInfoPerFlow' + minItems: 1 + contrWeights: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + minItems: 1 + required: + - svcExpPerFlows + + UeMobilityInfo: + description: > + Contains UE mobility information associated with an application. If the "appId" attribute is + not present, then indicates the collected UE mobility information is applicable to all the + applications for the UE. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ueTrajs: + type: array + items: + $ref: '#/components/schemas/UeTrajectoryInfo' + minItems: 1 + areas: + type: array + items: + $ref: 'TS29554_Npcf_BDTPolicyControl.yaml#/components/schemas/NetworkAreaInfo' + minItems: 1 + required: + - supi + - ueTrajs + + UeCommunicationInfo: + description: Contains UE communication information associated with an application. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + interGroupId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + comms: + type: array + items: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/CommunicationCollection' + minItems: 1 + required: + - comms + + UeTrajectoryInfo: + description: Contains UE trajectory information. + type: object + properties: + ts: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + location: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + required: + - ts + - location + + PerformanceDataInfo: + description: Contains Performance Data Analytics related information collection. + type: object + properties: + appId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationId' + ueIpAddr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + ipTrafficFilter: + $ref: 'TS29122_CommonData.yaml#/components/schemas/FlowInfo' + userLoc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + appLocs: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnai' + minItems: 1 + asAddr: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/AddrFqdn' + perfData: + $ref: 'TS29517_Naf_EventExposure.yaml#/components/schemas/PerformanceData' + timeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - perfData + - timeStamp + + GNSSAssistDataInfo: + description: Represents GNSS Assistance Data related information. + type: object + properties: + gnssAssistData: + $ref: '#/components/schemas/GNSSAssistData' + servArea: + $ref: '#/components/schemas/GNSSServArea' + sourceInfo: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicalCoordinates' + required: + - gnssAssistData + - servArea + + GNSSServArea: + description: Represents the serving area of the GNSS Assistance Data. + type: object + properties: + geographicalArea: + $ref: 'TS29572_Nlmf_Location.yaml#/components/schemas/GeographicArea' + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 1 + oneOf: + - required: [geographicalArea] + - required: [taiList] + +# Simple data types and Enumerations + + NefEvent: + + anyOf: + - type: string + enum: + - SVC_EXPERIENCE + - UE_MOBILITY + - UE_COMM + - EXCEPTIONS + - USER_DATA_CONGESTION + - PERF_DATA + - DISPERSION + - COLLECTIVE_BEHAVIOUR + - MS_QOE_METRICS + - MS_CONSUMPTION + - MS_NET_ASSIST_INVOCATION + - MS_DYN_POLICY_INVOCATION + - MS_ACCESS_ACTIVITY + - GNSS_ASSISTANCE_DATA + - DATA_VOLUME_TRANSFER_TIME + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration but + is not used to encode content defined in the present version of this API. + description: | + Represents a Network Exposure Event. + Possible values are: + - SVC_EXPERIENCE: Indicates that the subscribed/notified event is service experience + information for an application. + - UE_MOBILITY: Indicates that the subscribed/notified event is UE mobility information. + - UE_COMM: Indicates that the subscribed/notified event is UE communication information. + - EXCEPTIONS: Indicates that the subscribed/notified event is exceptions information. + - USER_DATA_CONGESTION: Indicates that the subscribed/notified event is user data congestion + analytics related information. + - PERF_DATA: Indicates that the subscribed/notified event is performance data information. + - DISPERSION: Indicates that the subscribed/notified event is dispersion information. + - COLLECTIVE_BEHAVIOUR: Indicates that the subscribed/notified event is collective behaviour + information. + - MS_QOE_METRICS: Indicates that the subscribed/notified event is Media Streaming QoE + metrics. + - MS_CONSUMPTION: Indicates that the subscribed/notified event is Media Streaming + consumption reports. + - MS_NET_ASSIST_INVOCATION: Indicates that the subscribed/notified event is Media Streaming + network assistance invocation. + - MS_DYN_POLICY_INVOCATION: Indicates that the subscribed/notified event is Media Streaming + dynamic policy invocation. + - MS_ACCESS_ACTIVITY: Indicates that the subscribed/notified event is Media Streaming access + activity. + - GNSS_ASSISTANCE_DATA: Indicates that the subscribed/notified event is GNSS Assistance Data + Collection. + + GNSSAssistData: + type: string + description: > + Represents GNSS Assistance Data encoded as specified in clause 6.5.2.1 of + 3GPP TS 37.355 [31]. diff --git a/TS29591_Nnef_TrafficInfluenceData.yaml b/TS29591_Nnef_TrafficInfluenceData.yaml new file mode 100644 index 0000000..d2162cb --- /dev/null +++ b/TS29591_Nnef_TrafficInfluenceData.yaml @@ -0,0 +1,402 @@ +openapi: 3.0.0 +info: + title: Nnef_TrafficInfluenceData + version: 1.0.0-alpha.3 + description: | + NEF Traffic Influence Data Service. + © 2023 , 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.591 V18.4.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ +servers: + - url: '{apiRoot}/nnef-traffic-influence-data/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnef-traffic-influence-data +paths: + + /subscriptions: + post: + summary: subscribe to notifications + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataSub' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataSub' + headers: + Location: + description: > + Contains the URI of the newly created resource, according to the structure + {apiRoot}/nnef-traffic-influence-data//subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/notifUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataNotify' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: read all of the active subscriptions + operationId: ReadAllSubscriptions + tags: + - Traffic Influence Data + parameters: + - name: dnn + in: query + description: Identifies a DNN. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + - name: snssai + in: query + description: Identifies a slice. + required: false + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + - name: internal-Group-Id + in: query + description: Identifies a group of users. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + - name: supi + in: query + description: Identifies a user. + required: false + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + responses: + '200': + description: OK. + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/TrafficInfluDataSub' + '204': + description: No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + get: + summary: retrieve subscription + operationId: GetIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataSub' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: update subscription + operationId: ReplaceIndividualSubcription + tags: + - IndividualSubscription (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataSub' + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/TrafficInfluDataSub' + '204': + description: No Content. Resource was succesfully modified + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + parameters: + - name: subscriptionId + in: path + description: Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-traffic-influence-data: Access to the Nnef_TrafficInfluenceData API + schemas: + TrafficInfluDataSub: + description: Represents an Individual traffic influence subscription data. + type: object + properties: + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + notifCorrId: + type: string + description: Notification correlation identifier. + dnns: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + minItems: 1 + description: Each element identifies a DNN. + snssais: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 1 + description: Each element identifies a slice. + internalGroupIds: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + minItems: 1 + description: Each element identifies a group of users. + supis: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + minItems: 1 + description: Each element identifies the user. + anyUe: + type: boolean + description: > + Identifies any UE when setting to "true". Default value is "false" if omitted. + rptInfo: + $ref: 'TS29523_Npcf_EventExposure.yaml#/components/schemas/ReportingInformation' + immReports: + type: array + items: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficInfluData' + minItems: 1 + description: Immediate report with Traffic Influence Data that match this subscription. + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - notifUri + - notifCorrId + anyOf: + - required: [dnns] + - required: [snssais] + - required: [internalGroupIds] + - required: [supis] + - required: [anyUe] + + TrafficInfluDataNotify: + description: Represents notifications for traffic influence data. + type: object + properties: + notifCorrId: + type: string + description: Notification correlation identifier. + eventNotifications: + type: array + items: + $ref: 'TS29519_Application_Data.yaml#/components/schemas/TrafficInfluData' + minItems: 1 + description: Notifications about Individual Events. + required: + - notifCorrId + - eventNotifications diff --git a/TS29591_Nnef_UEId.yaml b/TS29591_Nnef_UEId.yaml new file mode 100644 index 0000000..e1077e4 --- /dev/null +++ b/TS29591_Nnef_UEId.yaml @@ -0,0 +1,99 @@ +openapi: 3.0.0 +info: + title: Nnef_UEId + version: 1.0.0-alpha.1 + description: | + NEF Traffic Correlation Service. + © 2023 , 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.591 V18.4.0; 5G System; Network Exposure Function Southbound Services; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.591/ +servers: + - url: '{apiRoot}/nnef-ueid/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nnef-ueid + +paths: + /fetch: + post: + summary: fetch the Internal UE Identifier for roaming UE(s). + operationId: FetchUEId + tags: + - UE ID (Document) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdReq' + responses: + '200': + description: The requested information was returned successfully. + content: + application/json: + schema: + $ref: '#/components/schemas/UeIdInfo' + '204': + description: No Content (The requested Internal UE Identifier does not exist.) + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nnef-ueid: Access to the UE ID API + + schemas: + UeIdReq: + description: Contains parameters to request to fetch the Internal UE Identifier. + type: object + properties: + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + required: + - gpsi + + UeIdInfo: + description: Contains the UE ID Information. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + required: + - supi + diff --git a/TS29594_Nchf_SpendingLimitControl.yaml b/TS29594_Nchf_SpendingLimitControl.yaml new file mode 100644 index 0000000..305f527 --- /dev/null +++ b/TS29594_Nchf_SpendingLimitControl.yaml @@ -0,0 +1,371 @@ +openapi: 3.0.0 + +info: + version: 1.3.0-alpha.2 + title: Nchf_SpendingLimitControl + description: | + Nchf Spending Limit Control Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.594 V18.3.0; 5G System; Spending Limit Control Service. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.594/' + +servers: + - url: '{apiRoot}/nchf-spendinglimitcontrol/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nchf-spendinglimitcontrol + +paths: + + /subscriptions: + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SpendingLimitContext' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/SpendingLimitStatus' + headers: + Location: + description: > + Contains the URI of the created individual spending limit resource, + according to the structure + {apiRoot}/nchf-spendinglimitcontrol/v1/subscriptions/{subscriptionId} + 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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + statusNotification: + '{$request.body#/notifUri}/notify': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SpendingLimitStatus' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + subscriptionTermination: + '{$request.body#/notifUri}/terminate': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SubscriptionTerminationInfo' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + parameters: + - in: path + name: subscriptionId + description: Identifies an individual spending limit retrieval subscription. + required: true + schema: + type: string + put: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SpendingLimitContext' + responses: + '200': + description: OK. Resource was succesfully modified and representation is returned + content: + application/json: + schema: + $ref: '#/components/schemas/SpendingLimitStatus' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nchf-spendinglimitcontrol: Access to the Nchf_SpendingLimitControl API + + schemas: + SpendingLimitContext: + description: > + Represents the subscription data structure required for an individual CHF spending limit + subscription. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + gpsi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + policyCounterIds: + type: array + items: + $ref: '#/components/schemas/PolicyCounterId' + minItems: 1 + description: > + This is a list of policy counter identifier(s), which identifies policy counters + maintained per subscriber within the CHF. + notifUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + notifId: + type: string + + SpendingLimitStatus: + description: > + Represents the data structure presenting the statuses of policy counters. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + notifId: + type: string + statusInfos: + type: object + additionalProperties: + $ref: '#/components/schemas/PolicyCounterInfo' + minProperties: 1 + description: > + Status of the requested policy counters. The key of the map is the attribute + "policyCounterId". + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + PolicyCounterInfo: + description: Represents the data structure presenting the policy counter status. + type: object + properties: + policyCounterId: + $ref: '#/components/schemas/PolicyCounterId' + currentStatus: + type: string + description: > + Identifies the policy counter status applicable for a specific policy counter identified + by the policyCounterId. The values (e.g. valid, invalid or any other status) are not + specified. The interpretation and actions related to the defined values are out of scope + of 3GPP. + penPolCounterStatuses: + type: array + items: + $ref: '#/components/schemas/PendingPolicyCounterStatus' + minItems: 1 + description: Provides the pending policy counter status. + required: + - policyCounterId + - currentStatus + + PendingPolicyCounterStatus: + description: > + Represents the data structure presenting the pending policy counter status. + type: object + properties: + policyCounterStatus: + type: string + description: > + Identifies the policy counter status applicable for a specific policy counter identified + by the policyCounterId. The values (e.g. valid, invalid or any other status) are not + specified. The interpretation and actions related to the defined values are out of scope + of 3GPP. + activationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - policyCounterStatus + - activationTime + + PolicyCounterId: + type: string + description: Identifies a policy counter. + SubscriptionTerminationInfo: + description: > + Represents the data structure presenting the indication of the termination of the + subscription. + type: object + properties: + supi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + notifId: + type: string + termCause: + $ref: '#/components/schemas/TerminationCause' + required: + - supi + +# Simple data types and Enumerations + + TerminationCause: + anyOf: + - type: string + enum: + - REMOVED_SUBSCRIBER + - type: string + description: > + This string provides forward-compatibility with future extensions to the enumeration + and is not used to encode content defined in the present version of this API. + description: | + Represents the cause for requesting the termination of the subscription to policy counter + status changes. + Possible values are: + - REMOVED_SUBSCRIBER: The subscriber identified by the SUPI has been removed from the CHF. \ No newline at end of file diff --git a/TS29598_Nudsf_DataRepository.yaml b/TS29598_Nudsf_DataRepository.yaml new file mode 100644 index 0000000..73f610a --- /dev/null +++ b/TS29598_Nudsf_DataRepository.yaml @@ -0,0 +1,2632 @@ +openapi: 3.0.0 +info: + title: Nudsf_DataRepository + version: 1.2.0-alpha.5 + description: | + Nudsf Data Repository Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.598 UDSF Services, V18.4.0. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.598/' + +servers: + - url: '{apiRoot}/nudsf-dr/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + +paths: + + /{realmId}/{storageId}/records: + summary: Access to all Records of a Storage + description: >- + root of all Records of a Storage + get: + summary: Records search with get + description: Retrieve one or multiple Records based on filter + operationId: SearchRecord + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: limit-range + in: query + description: The most number of record references to fetch + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + - name: filter + in: query + description: Query filter using conditions on tags + content: + application/json: + schema: + $ref: '#/components/schemas/SearchExpression' + - name: count-indicator + in: query + description: Indicates whether the number of records that matched the criteria shall be returned. + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: retrieve-records + in: query + description: Indicates whether the UDSF is requested to include matching records within the response. + schema: + $ref: '#/components/schemas/RetrieveRecords' + - name: max-payload-size + in: query + description: Indicates the number of kilo octets the consumer is prepared to receive + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + - name: tag-count-filter + in: query + description: Indicates the parameters for advanced counting feature + schema: + $ref: '#/components/schemas/CountExpression' + responses: + '200': + description: Successful case. Response contains result of the search. + content: + application/json: + schema: + $ref: '#/components/schemas/RecordSearchResult' + '204': + description: >- + The search condition does not match any Record. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Bulk Deletion of Records + description: Delete multiple Records based on filter + operationId: BulkDeleteRecords + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: filter + in: query + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/SearchExpression' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Successful case. Response contains RecordIdList. + content: + application/json: + schema: + $ref: '#/components/schemas/RecordIdList' + '204': + description: Successful case. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/records/{recordId}: + summary: Access to a specific Record, identified by its RecordId + description: >- + Access to a specific Record + get: + summary: Record access + description: retrieve one specific Record + operationId: GetRecord + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200' : #result ok + $ref: '#/components/responses/RecordBody' + '304': + $ref: '#/components/responses/304' + '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' + '412': + $ref: '#/components/responses/412' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create/Modify Record + description: Create or Modify a Record with a user provided RecordId + operationId: CreateOrModifyRecord + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record:create + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: UserRecordValue000000001 + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: get-previous + in: query + description: Retrieve the Record before update + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + $ref: '#/components/requestBodies/RecordBody' + callbacks: + recordExpired: + '{$request.body#/callbackReference}': + post: + parameters: + - name: Content-Location + in: header + description: The expired record URI + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + requestBody: + $ref: '#/components/requestBodies/RecordBody' + responses: + '204': + description: Callback executed successfully + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + responses: + '200' : # Update with return + $ref: '#/components/responses/RecordBody' + '201': + description: >- + Create case. The resource has been successfully created, location header indicates + the URI of the created Record. + $ref: '#/components/responses/RecordBody' + headers: + Location: + $ref: '#/components/headers/Location' + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '204': # Update without return + description: >- + Update case. The resource has been successfully updated and no + additional content is included in the response message. + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '409': + $ref: '#/components/responses/409' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '412': # Return Record value if get-previous=true + $ref: '#/components/responses/RecordBody' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a Record with an user provided RecordId + operationId: DeleteRecord + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record:modify + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: UserRecordValue000000001 + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: get-previous + in: query + description: Retrieve the Record before delete + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + $ref: '#/components/responses/RecordBodyDelete' + '204': + description: Successful case. + headers: + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '412': # Return return value if get-previous=true + $ref: '#/components/responses/RecordBody' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/records/{recordId}/meta: + summary: Access to the meta of a specific Record, identified by its RecordId + description: >- + Access to the meta of a specific Record + get: + summary: Record's meta access + description: retrieve meta of a specific Record + operationId: GetMeta + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record-meta:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + content: + application/json: + schema: + $ref: '#/components/schemas/RecordMeta' + '304': + $ref: '#/components/responses/304' + '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' + '412': + $ref: '#/components/responses/412' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: # patch meta data + summary: Record's meta update + description: update meta of a specific Record + operationId: UpdateMeta + tags: + - Record CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:record-meta:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + description: Meta data to patch + content: + application/json-patch+json: + example: '[{ "op": "replace", "path": "/tags/ueId", "value": "450005" }, { "op": "remove", "path": "/tags/recordId" }]' + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '200': + description: >- + One or more modification instructions have been discarded, the execution report is returned in response PatchResult. + content: + application/json: + example: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '204': + description: >- + Successful case. The meta has been successfully updated and no return is expected. + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '409': + $ref: '#/components/responses/409' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '412': + $ref: '#/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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/records/{recordId}/blocks: + summary: Access to the Blocks of a specific Record, identified by its RecordId + description: >- + Access to the Blocks of a specific Record + get: + summary: Record's Blocks access + description: retrieve all Blocks of a specific Record + operationId: GetBlockList + tags: + - Block CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:block:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a successful request + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + content: + multipart/parallel: + schema: + type: object + properties: + blocks: + type: array + description: >- + an array of Block parts, can be empty + items: + $ref: '#/components/schemas/Block' + encoding: + blocks: + contentType: '*/*' # Block content type can be of any type. + headers: + Content-Id: # Block identifier is defined by the Content-Id header. + schema: + type: string + required: true + Content-Transfer-Encoding: + schema: + type: string + required: true + '204': + description: Successful response, the record contains no blocks + '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' + '412': + $ref: '#/components/responses/412' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/records/{recordId}/blocks/{blockId}: + summary: Access to a Block of a specific Record, identified by its BlockId + description: >- + Access to a specific Block of a specific Record + get: + summary: Retrieve a specific Block + description: retrieve a specific Block + operationId: GetBlock + tags: + - Block CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:block:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: blockId + in: path + description: Id of the Block + required: true + schema: + type: string + example: 'userDefjson01' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + $ref: '#/components/responses/BlockBody' + '304': + $ref: '#/components/responses/304' + '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' + '412': + $ref: '#/components/responses/412' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: '#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create or Update a specific Block in a Record. + description: Create or update a specific Block, related to a Record + operationId: CreateOrModifyBlock + tags: + - Block CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:block:create + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: blockId + in: path + description: Id of the Block + required: true + schema: + type: string + example: 'userDefjson01' + - name: get-previous + in: query + description: Retrieve the Block before update + required: false + schema: + type: boolean + default: false + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + description: information on the Block to create + required: true + content: + '*/*': + schema: + $ref: '#/components/schemas/Block' + responses: + '200': + $ref: '#/components/responses/BlockBody' + '201': + description: >- + Creation case. The Block has been successfully created. Location header indicates the URI of the created Block. + headers: + Location: + $ref: '#/components/headers/Location' + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '204': + description: >- + Successful case. The resource has been successfully updated. + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '409': + $ref: '#/components/responses/409' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '412': # Return previous Block value if get-previous=true + $ref: '#/components/responses/BlockBody' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a specific Block. Then update the Record + description: delete a specific Block, related to a Record + operationId: DeleteBlock + tags: + - Block CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:block:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: recordId + in: path + description: Identifier of the Record + required: true + schema: + type: string + example: 'UserRecordValue000000001' + - name: blockId + in: path + description: Id of the Block + required: true + schema: + type: string + example: 'userDefjson01' + - name: get-previous + in: query + description: Retrieve the Block before delete + required: false + schema: + type: boolean + default: false + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + $ref: '#/components/responses/BlockBodyDelete' + '204': + description: >- + Successful case. The Block has been successfully deleted. + headers: + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '412': # Return previous Block value if get-previous=true + $ref: '#/components/responses/BlockBody' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/subs-to-notify: + summary: The notification subscription collection resource + description: >- + Access to the subscription resource + get: + summary: Notification subscription retrieval + description: retrieve all notification subscriptions of the storage + operationId: GetNotificationSubscriptions + tags: + - NotificationSubscriptions CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:subscription:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: limit-range + in: query + description: The maximum number of NotificationSubscriptions to fetch + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationSubscription' + '304': + $ref: '#/components/responses/304' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/subs-to-notify/{subscriptionId}: + summary: The notification subscription resource + description: >- + Access to the subscription resource + get: + summary: Notification subscription retrieval + description: retrieve a single notification subscription of the storage + operationId: GetNotificationSubscription + tags: + - NotificationSubscription CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:subscription:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: subscriptionId + in: path + description: Identifier of the NotificationSubscription + required: true + schema: + type: string + example: Subscription01 + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + responses: + '200': + description: Expected response to a valid request + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationSubscription' + '304': + $ref: '#/components/responses/304' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + delete: + summary: Delete a Notification Subscription of the storage + description: delete a single subscriptions of the storage + operationId: DeleteNotificationSubscription + tags: + - NotificationSubscription CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:subscription:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: subscriptionId + in: path + description: Identifier of the NotificationSubscription + required: true + schema: + type: string + example: Subscription01 + - name: client-id + in: query + description: Identifies the NF or NFSet + required: true + schema: + $ref: '#/components/schemas/ClientId' + - name: get-previous + in: query + description: Retrieve the NotificationSubscription before delete + required: false + schema: + type: boolean + default: false + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Deleted NotificationSubscription if requested with get-previous + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/NotificationSubscription' + '204': + description: >- + Successful case. The SubscriptionNotification has been successfully deleted. + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '412': + description: Return previous NotificationSubscription value if get-previous=true + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationSubscription' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + patch: # patch NotificationSubscription data + summary: NotificationSubscription update + description: update a specific NotificationSubscription + operationId: UpdateNotificationSubscription + tags: + - NotificationSubscription CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:subscription:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: subscriptionId + in: path + description: Identifier of the NotificationSubscription + required: true + schema: + type: string + example: Subscription01 + - name: If-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + description: data to patch + content: + application/json-patch+json: + example: 'TBD' + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '200': + description: >- + One or more modification instructions have been discarded, the execution report is returned in response PatchResult. + content: + application/json: + example: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '204': + description: >- + Successful case. The meta has been successfully updated and no return is expected. + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + put: + summary: NotificationSubscription Create/Update + operationId: CreateAndUpdateNotificationSubscription + tags: + - NotificationSubscription CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:subscription:create + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: subscriptionId + in: path + description: Identifier of the NotificationSubscription + required: true + schema: + type: string + example: Subscription01 + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationSubscription' + required: true + responses: + '200' : # Update + description: Expected response to a valid update request + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationSubscription' + '201': + description: Expected response to a valid create request + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource according to the structure: {apiRoot}/nudsf-dr//{realmId}/{storageId}/subs-to-notify/{subscriptionId}' + required: true + schema: + type: string + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '409': + description: Conflict + content: + application/json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + description: Unexpected error + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + callbacks: + onDataChange: + '{request.body#/callbackReference}': + post: + requestBody: + $ref: '#/components/requestBodies/RecordNotificationBody' + responses: + '204': + description: Callback executed successfully + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + subscriptionExpiryNotification: + '{request.body#/expiryCallbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/NotificationInfo' + responses: + '204': + description: Successful Notification response + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/meta-schemas/{schemaId}: + summary: Access to a specific Meta Schema, identified by its SchemaId + description: >- + Access to a specific Meta Schema + get: + summary: Meta Schema access + description: retrieve one specific Meta Schema + operationId: GetMetaSchema + tags: + - MetaSchema CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:meta-schema:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: schemaId + in: path + description: Identifier of the Meta Schema + required: true + schema: + $ref: '#/components/schemas/SchemaId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Modified-Since + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.3 + schema: + type: string + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200' : #result ok + $ref: '#/components/responses/RecordBody' + '304': + $ref: '#/components/responses/304' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Create/Modify Meta Schema + description: Create or Modify a Meta Schema with a user provided SchemaId + operationId: CreateOrModifyMetaSchema + tags: + - MetaSchema CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:meta-schema:create + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: schemaId + in: path + description: Identifier of the Meta Schema + required: true + schema: + $ref: '#/components/schemas/SchemaId' + - name: If-None-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.2 + schema: + type: string + - name: If-Match + in: header + description: Validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: get-previous + in: query + description: Retrieve the Meta Schema before update + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/MetaSchema' + required: true + responses: + '200': + description: Update with return + content: + application/json: + schema: + $ref: '#/components/schemas/MetaSchema' + '201': + description: >- + Create case. The resource has been successfully created, location header indicates + the URI of the created Record. + $ref: '#/components/responses/RecordBody' + headers: + Location: + $ref: '#/components/headers/Location' + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '204': # Update without return + description: >- + Update case. The resource has been successfully updated and no + additional content is included in the response message. + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '412': + description: Return Meta Schema value if get-previous=true + content: + application/json: + schema: + $ref: '#/components/schemas/MetaSchema' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a Meta Schema with an user provided SchemaId + operationId: DeleteMetaSchema + tags: + - MetaSchema CRUD + security: + - {} + - oAuth2ClientCredentials: + - nudsf-dr + - oAuth2ClientCredentials: + - nudsf-dr + - nudsf-dr:meta-schema:modify + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: schemaId + in: path + description: Identifier of the Meta Schema + required: true + schema: + $ref: '#/components/schemas/SchemaId' + - name: If-Match + in: header + description: Record validator for conditional requests, as described in RFC 9110, 13.1.1 + schema: + type: string + - name: get-previous + in: query + description: Retrieve the Meta Schema before delete + required: false + schema: + type: boolean + default: false + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/MetaSchema' + '204': + description: Successful case. + headers: + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + '304': + $ref: '#/components/responses/304' + '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' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '412': + description: Return value if get-previous=true + content: + application/json: + schema: + $ref: '#/components/schemas/MetaSchema' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudsf-dr: Access to the nudsf-dr API + nudsf-dr:record:read: Access to read records + nudsf-dr:record:modify: Access to update records + nudsf-dr:record:create: Access to create records + nudsf-dr:record-meta:read: Access to read a record's meta + nudsf-dr:record-meta:modify: Access to update a record's meta + nudsf-dr:block:read: Access to read blocks + nudsf-dr:block:modify: Access to update blocks + nudsf-dr:block:create: Access to create blocks + nudsf-dr:subscription:read: Access to read subscriptions + nudsf-dr:subscription:modify: Access to update subscriptions + nudsf-dr:subscription:create: Access to create subscriptions + nudsf-dr:meta-schema:read: Access to read meta schema + nudsf-dr:meta-schema:modify: Access to update meta schema + nudsf-dr:meta-schema:create: Access to create meta schema + + schemas: + RecordSearchResult: + description: Count and collection of Record references matching the providing filter. + type: object + properties: + count: # The total number of elements found. + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + references: # The Record references found. If count-indicator is true, no references are sent back. + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + matchingRecords: + description: A map (list of key-value pairs where recordId serves as key) of Records + type: object + additionalProperties: + $ref: '#/components/schemas/Record' + minProperties: 1 + tagCountResult: + description: A map of TagCount (list of key-value pairs with unique indentifier as key) + type: object + items: + $ref: '#/components/schemas/TagCount' + example: {"advancedTagCount1" : {"tag1" : 1}, "advancedTagCount2" : {"tag2" : 2}} + required: + - count + RecordMeta: + description: Meta data of a Record + type: object + properties: + ttl: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + tags: + type: object # dictionary type + description: >- + A dictionary of {"tagName": [ "tagValue", ...] }. A tag name can be used to retrieve a Record. The tagValue are unique. + additionalProperties: + type: array + items: + type: string + uniqueItems: true + minItems: 1 + minProperties: 1 + example: '{"ueId" : [ "455345", "455346" ], "recordId" : [ "1000106" ] }' + example: >- + { "tags" : {"ueId" : [ "455345", "455346" ], "recordId" : [ "1000106" ] }} + schemaId: + $ref: '#/components/schemas/SchemaId' + + Record: + description: Definition of a Record + type: object + properties: + meta: + # json representation of the Meta Data + $ref: '#/components/schemas/RecordMeta' + blocks: + # List of multipart data + type: array + description: list of opaque Block's in this Record + items: + $ref: '#/components/schemas/Block' + minItems: 1 + required: + - meta + example: >- + {"meta": { "tags" : {"tag1" : ["value1"], "tag2" :["value2"] } }, "blocks": [{"Content-Id": "userDefBinaryBlob", "Content-Type": "text/plain", "content": "QmxvY2sgY29udGVudA=="}, {"Content-Id": "userDefJsonBlob", "Content-Type": "application/json", "content": "{"key": "ftsimpletype-999550000000002", "value": "A3E71A78377179B5B91A;imsi-999550000000123"}]} + + RecordIdList: + description: List of Record IDs + type: object + properties: + recordIdList: + type: array + items: + type: string + minItems: 1 + required: + - recordIdList + + Block: + description: A Block can be of any type + example: >- + "QmxvY2sgY29udGVudA==" + NotificationSubscription: + description: Definition of a notification subscription + type: object + properties: + clientId: + $ref: '#/components/schemas/ClientId' + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + expiryCallbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + expiry: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + expiryNotification: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + subFilter: + $ref: '#/components/schemas/SubscriptionFilter' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + required: + - clientId + - callbackReference + + RecordNotification: + description: Definition of a notification on a record + type: object + properties: + descriptor: + # json representation of the notification description + $ref: '#/components/schemas/NotificationDescription' + meta: + # json representation of the Meta Data + $ref: '#/components/schemas/RecordMeta' + blocks: + # List of multipart data + type: array + description: list of opaque Block's in this Record + items: + $ref: '#/components/schemas/Block' + required: + - descriptor + - meta + example: >- + {"descriptor": { "recordRef" : "...", "operationType" : "DELETED"}, "meta": { "tags" : {"tag1" : ["value1"], "tag2" :["value2"] } }, "blocks": [{"Content-Id": "userDefBinaryBlob", "Content-Type": "text/plain", "content": "QmxvY2sgY29udGVudA=="}, {"Content-Id": "userDefJsonBlob", "Content-Type": "application/json", "content": "{"key": "ftsimpletype-999550000000002", "value": "A3E71A78377179B5B91A;imsi-999550000000123"}]} + + NotificationDescription: + description: Description of a record notification + type: object + properties: + recordRef: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + operationType: + $ref: '#/components/schemas/RecordOperation' + subscriptionId: + # unique identifier of the NotificationSubscription + type: string + required: + - recordRef + - operationType + example: >- + { "record" : "...", "operationType" : "DELETED"} + + SubscriptionFilter: + description: A subscription filter + type: object + properties: + monitoredResourceUris: + type: array + description: list of resources applicable to the subscription + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + operations: + type: array + description: list of resources applicable to the subscription + items: + $ref: '#/components/schemas/RecordOperation' + maxItems: 3 + + ClientId: + description: Defines the identity of the NF Consumer + type: object + properties: + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nfSetId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfSetId' + + RecordOperation: + description: Indicate operation made on a record + anyOf: + - type: string + enum: + - CREATED + - UPDATED + - DELETED + - type: string + + ConditionOperator: + description: TBD + anyOf: + - type: string + enum: + - AND + - OR + - NOT + - type: string + + ComparisonOperator: + description: TBD + anyOf: + - type: string + enum: + # Equals + - EQ + # Not Equal + - NEQ + # Greater Than + - GT + # Greater Than or Equal + - GTE + # Less Than + - LT + # Less Than or Equal + - LTE + - type: string + + CountExpression: + description: A map containing parameters for advanced counting feature with unique key for each request + type: object + properties: + tag: + type: string + countType: + $ref: '#/components/schemas/TagCountType' + filter: + $ref: '#/components/schemas/SearchExpression' + required: + - countType + example: + {"advancedTagCount1":{"tag" : "tag1", countType : UNIQUE_COUNT , "filter" : NULL}, "advancedTagCount2":{"tag" : "tag2", countType : AGGREGATE_COUNT, "filter" : NULL}} + + TagCountType: + description: Indicate mode of tag count operations + anyOf: + - type: string + enum: + - UNIQUE_COUNT + - AGGREGATE_COUNT + - TOTAL_COUNT + - type: string + + TagCount: + description: The TagCount result of a_Advanced Count request + type: object + properties: + tag: + type: string + count: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + valueCount: + type: array + items: + $ref: '#/components/schemas/ValueCount' + + ValueCount: + description: The AggregateCount map + type: object + properties: + value: + type: string + count: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + SearchExpression: + description: A logical expression element + type: object + oneOf: + - $ref: '#/components/schemas/SearchCondition' + - $ref: '#/components/schemas/SearchComparison' + - $ref: '#/components/schemas/RecordIdList' + example: + { "cond": "OR", "units": [ { "op": "EQ", "tag" : "ueId", "value" : "455345" }, { "op": "EQ", "tag" : "supi", "value" : "imsi-999559807001001" } ] } + + SearchCondition: + description: A logical condition + type: object + properties: + cond: + $ref: '#/components/schemas/ConditionOperator' + units: + type: array + items: + $ref: '#/components/schemas/SearchExpression' + minItems: 1 + schemaId: + $ref: '#/components/schemas/SchemaId' + required: + - cond + - units + example: + { "cond": "OR", "units": [ { "op": "EQ", "tag" : "ueId", "value" : "455345" }, { "op": "EQ", "tag" : "supi", "value" : "imsi-999559807001001" } ] } + + SearchComparison: + description: A comparison to apply on tag/values pairs. + type: object + properties: + op: + $ref: '#/components/schemas/ComparisonOperator' + tag: + type: string + value: + type: string + required: + - op + - tag + - value + example: + { "op": "EQ", "tag" : "supi", "value" : "imsi-999559807001001" } + + MetaSchema: + description: Defines the Meta Schema + type: object + required: + - schemaId + - metaTags + properties: + schemaId: + $ref: '#/components/schemas/SchemaId' + metaTags: + type: array + items: + $ref: '#/components/schemas/TagType' + + TagType: + description: Defines the Tag Type + type: object + required: + - tagName + - keyType + properties: + tagName: + type: string + keyType: + $ref: '#/components/schemas/KeyType' + sort: + type: boolean + default: false + presence: + type: boolean + + SchemaId: + description: Represents the Identifier of a Meta schema. + type: string + + KeyType: + description: Represents the type of a key. + anyOf: + - type: string + enum: + - UNIQUE_KEY + - SEARCH_KEY + - COUNT_KEY + - SEARCH_AND_COUNT_KEY + - OTHER_TAG + - type: string + + RetrieveRecords: + description: Indicates the data to be retrieved. + anyOf: + - type: string + enum: + - ONLY_META + - META_AND_BLOCKS + - type: string + + NotificationInfo: + type: object + required: + - expiredSubscriptions + properties: + expiredSubscriptions: + type: array + items: + $ref: '#/components/schemas/NotificationSubscription' + minItems: 1 + + ExtendedProblemDetails: + description: Extending problemDetails + allOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ProblemDetailsExtension' + + ProblemDetailsExtension: + anyOf: + - $ref: '#/components/schemas/Record' + - $ref: '#/components/schemas/RecordMeta' + + headers: + Cache-Control: + description: Cache-Control containing max-age, as described in RFC 9111, 5.2 + schema: + type: string + ETag: + description: Entity Tag, containing a strong validator, as described in RFC 9110, 8.8.3 + schema: + type: string + Last-Modified: + description: Timestamp for last modification of the resource, as described in RFC 9110, 8.8.2 + schema: + type: string + Location: + description: Contains the URI of the newly created resource + required: true + schema: + type: string + Retry-After: + description: 'Indicates the time the NF Consumer has to wait before making a new request. It can be a non-negative integer (decimal number) indicating the number of seconds the NF Consumer has to wait before making a new request or an HTTP-date after which the AF can retry a new request.' + schema: + anyOf: + - type: integer + - type: string + + requestBodies: + RecordBody: + description: The record multipart request body. The meta part shall be the first part and is mandatory but can be empty and zero or more block parts may follow the meta part. + required: true + content: + multipart/mixed: + schema: + $ref: '#/components/schemas/Record' + encoding: + meta: # The meta part shall be the first part and is mandatory but can be empty + contentType: application/json + headers: + Content-Id: + schema: + type: string + required: true + blocks: # 0 or more block parts may follow the meta part + contentType: '*/*' # Block part can be of any type + headers: + Content-Id: # Block identifier is defined by the Content-Id header. + schema: + type: string + required: true + Content-Transfer-Encoding: + schema: + type: string + required: true + + RecordNotificationBody: + description: The record notification multipart request body. The descriptor part shall be the first one, followed by record meta part and by zero or more block parts. + required: true + content: + multipart/mixed: + schema: + $ref: '#/components/schemas/RecordNotification' + encoding: + descriptor: # The descriptor part shall be the first part and is mandatory + contentType: application/json + headers: + Content-Id: + schema: + type: string + required: true + meta: # The meta part shall be the second part and is mandatory but can be empty + contentType: application/json + headers: + Content-Id: + schema: + type: string + required: true + blocks: # 0 or more block parts may follow the meta part + contentType: '*/*' # Block part can be of any type + headers: + Content-Id: # Block identifier is defined by the Content-Id header. + schema: + type: string + required: true + Content-Transfer-Encoding: + schema: + type: string + required: true + + responses: + '304': # Etag response if the value might differ from that sent + description: Not Modified + content: + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Retry-After: + $ref: '#/components/headers/Retry-After' + + 'RecordBody': # Record value with associated headers + description: >- + - 200 Update. The resource has been successfully updated and previous value must be sent in the response message if requested. + - 200 Get. The resource exists, its value must be sent in the response message + - 412 Precondition Failed, the previous value must be sent in response message if requested. + content: + multipart/mixed: + schema: + $ref: '#/components/schemas/Record' + encoding: + meta: # The meta part shall be the first part and is mandatory but can be empty. + contentType: application/json + headers: + Content-Id: # The meta part is identified by the 'meta' Content-Id header. + schema: + type: string + required: true + blocks: # Zero or more block parts may follow the meta part + contentType: '*/*' # Block parts can be of any type. + headers: + Content-Id: # Block identifier is defined by the Content-Id header. + schema: + type: string + required: true + Content-Transfer-Encoding: + schema: + type: string + required: true + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + + 'RecordBodyDelete': # Record value with associated headers + description: >- + - 200 Delete. The resource has been successfully delete and previous value must be sent in the response message if requested. + content: + multipart/mixed: + schema: + $ref: '#/components/schemas/Record' + encoding: + meta: # The meta part shall be the first par and is mandatory but can be empty. + contentType: application/json + headers: + Content-Id: # The meta part is identified by the Content-Id header. + schema: + type: string + required: true + blocks: # Zero or more block parts may follow the meta part. + contentType: '*/*' # Block parts can be of any type. + headers: + Content-Id: # Block identifier is defined by the Content-Id header. + schema: + type: string + required: true + Content-Transfer-Encoding: + schema: + type: string + required: true + headers: + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + + 'BlockBody': # Block value with associated headers + description: >- + - 200 Update: The resource has been successfully updated and previous value must be sent in the response message if requested. + - 200 Get: The resource exists, its value must be sent in the response message + - 412 Precondition Failed: the previous value must be sent in response message if requested. + content: + '*/*': + schema: + $ref: '#/components/schemas/Block' + headers: + Cache-Control: + $ref: '#/components/headers/Cache-Control' + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + + 'BlockBodyDelete': # Block value with associated headers + description: >- + - 200 Delete: The resource has been successfully delete and previous value must be sent in the response message if requested. + content: + '*/*': + schema: + $ref: '#/components/schemas/Block' + headers: + ETag: + $ref: '#/components/headers/ETag' + Last-Modified: + $ref: '#/components/headers/Last-Modified' + + '409': + description: Conflict + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + '412': + description: Precondition Failed + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + '500': + description: Internal Server Error + content: + application/problem+json: + schema: + $ref: '#/components/schemas/ExtendedProblemDetails' + diff --git a/TS29598_Nudsf_Timer.yaml b/TS29598_Nudsf_Timer.yaml new file mode 100644 index 0000000..edff361 --- /dev/null +++ b/TS29598_Nudsf_Timer.yaml @@ -0,0 +1,568 @@ +openapi: 3.0.0 +info: + title: Nudsf_Timer + version: 1.1.0-alpha.3 + description: | + Nudsf Timer Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.598 UDSF Services, V18.4.0. + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.598/' + +servers: + - url: '{apiRoot}/nudsf-timer/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + +paths: + + /{realmId}/{storageId}/timers: + summary: Access to all Timers of a Storage + description: >- + root of all Timers of a Storage + get: + summary: Timers search with get + description: Retrieve one or multiple TimerIDs based on filter + operationId: SearchTimer + tags: + - Timer Search + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: filter + in: query + description: Query filter using conditions on tags + content: + application/json: + schema: + $ref: 'TS29598_Nudsf_DataRepository.yaml#/components/schemas/SearchExpression' + - name: expired-filter + in: query + description: Used to query for expired timers. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Successful case. Response contains result of the search. + content: + application/json: + schema: + $ref: '#/components/schemas/TimerIdList' + '204': + description: >- + The search condition does not match any Timer. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete one or multiple timers based on filter + operationId: DeleteTimers + tags: + - Timers Delete + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:modify + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + - name: filter + in: query + description: A filter that determines the set of timers to be deleted + content: + application/json: + schema: + $ref: 'TS29598_Nudsf_DataRepository.yaml#/components/schemas/SearchExpression' + - name: expired-filter + in: query + description: Presence indicates that only expired timers are to be deleted. + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NullValue' + responses: + '200': + description: Successful case. Response contains result of the search. + content: + application/json: + schema: + $ref: '#/components/schemas/TimerIdList' + '204': + description: Successful case. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /{realmId}/{storageId}/timers/{timerId}: + summary: Access to a specific Timer, identified by its TimerId + description: >- + Access to a specific Timer + put: + summary: Create/Replace Timer + description: Create or Modify a Timer with a user provided TimerId + operationId: CreateOrModifyTimer + tags: + - Timer Start + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:create + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: timerId + in: path + description: Identifier of the Timer + required: true + schema: + $ref: '#/components/schemas/TimerId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/Timer' + required: true + responses: + '201': + description: Timer successfully created + '204': + description: Timer successfully replaced + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + timerExpiry: + '{request.body#/callbackReference}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/Timer' + responses: + '204': + description: Callback executed successfully + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Timer modification + description: update a specific Timer + operationId: UpdateTimer + tags: + - Timer Update + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:modify + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: timerId + in: path + description: Identifier of the Timer + required: true + schema: + $ref: '#/components/schemas/TimerId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + requestBody: + description: Timer data to patch + content: + application/json-patch+json: + schema: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchItem' + minItems: 1 + required: true + responses: + '200': + description: >- + One or more modification instructions have been discarded, the execution report is returned in response PatchResult. + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PatchResult' + '204': + description: >- + Successful case. The timer has been successfully updated and no return is expected. + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Delete a Timer with an user provided TimerId + operationId: DeleteTimer + tags: + - Timer Stop + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:modify + parameters: + - name: realmId + in: path + description: Identifier(name) of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: timerId + in: path + description: Identifier of the Timer + required: true + schema: + $ref: '#/components/schemas/TimerId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '204': + description: Successful case. + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + get: + summary: Timer access + description: retrieve one specific Timer + operationId: GetTimer + tags: + - Timer Get + security: + - {} + - oAuth2ClientCredentials: + - nudsf-timer + - oAuth2ClientCredentials: + - nudsf-timer + - nudsf-timer:timer:read + parameters: + - name: realmId + in: path + description: Identifier of the Realm + required: true + schema: + type: string + example: Realm01 + - name: storageId + in: path + description: Identifier of the Storage + required: true + schema: + type: string + example: Storage01 + - name: timerId + in: path + description: Identifier of the Timer + required: true + schema: + $ref: '#/components/schemas/TimerId' + - name: supported-features + in: query + description: Features required to be supported by the target NF + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200' : #result ok + description: Successful case. + content: + application/json: + schema: + $ref: '#/components/schemas/Timer' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nudsf-timer: Access to the nudsf-timer API + nudsf-timer:timer:read: Access to read timers + nudsf-timer:timer:modify: Access to update timers + nudsf-timer:timer:create: Access to create timers + + schemas: + +# COMPLEX TYPES: + + Timer: + description: Represents a timer. + type: object + required: + - expires + properties: + timerId: + $ref: '#/components/schemas/TimerId' + expires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + metaTags: + description: A map (list of key-value pairs where a tagName of type string serves as key) of tagValue lists + type: object + additionalProperties: + type: array + items: + type: string + minItems: 1 + minProperties: 1 + callbackReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + deleteAfter: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + periodicRepetition: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + repetitionCount: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + TimerIdList: + description: Represents a list of timer IDs. + type: object + required: + - timerIds + properties: + timerIds: + type: array + items: + $ref: '#/components/schemas/TimerId' + minItems: 1 + + +# SIMPLE TYPES: + + TimerId: + description: Represents the identifier of a timer. + type: string + diff --git a/TS29673_Nucmf_UERCM.yaml b/TS29673_Nucmf_UERCM.yaml new file mode 100644 index 0000000..6e6fdb0 --- /dev/null +++ b/TS29673_Nucmf_UERCM.yaml @@ -0,0 +1,672 @@ +openapi: 3.0.0 + +info: + title: Nucmf_UECapabilityManagement + version: 1.2.0-alpha.1 + description: | + Nucmf_UECapabilityManagement Service. + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. + +externalDocs: + description: 3GPP TS 29.673 V18.0.0; 5G System; UE Radio Capability Management Services + url: 'https://www.3gpp.org/ftp/Specs/archive/29_series/29.673/' + +servers: + - url: '{apiRoot}/nucmf-uecm/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 + +security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + +paths: + /dic-entries: + get: + summary: retrieve a dictionary entry matching query parameters + operationId: RetrieveDictionaryEntry + tags: + - Dictionary Entry (Store) + security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + - oAuth2ClientCredentials: + - nucmf-uecm + - nucmf-uecm:dictionary:read + parameters: + - name: ue-radio-capa-id + in: query + required: true + description: UE Radio Capability ID, either PLMN Assigned or Manufacturer Assigned + schema: + $ref: '#/components/schemas/UeRadioCapaId' + - name: rac-format + in: query + description: Encoding format of RAC Info + schema: + $ref: '#/components/schemas/RacFormat' + - name: supported-features + in: query + description: supported features of the NF consumer + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/DicEntryData' + binaryDataUeRadioCapability5GS: + type: string + format: binary + binaryDataUeRadioCapabilityEPS: + type: string + format: binary + binaryDataUeRadioCap5GSForPaging: + type: string + format: binary + binaryDataUeRadioCapEPSForPaging: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataUeRadioCapability5GS: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapabilityEPS: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCap5GSForPaging: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapEPSForPaging: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + post: + summary: Create a dictionary entry in the UCMF + tags: + - a dictionary entry (Document) + operationId: CreateDictionaryEntry + security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + - oAuth2ClientCredentials: + - nucmf-uecm + - nucmf-uecm:dictionary:create + requestBody: + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/DicEntryCreateData' + binaryDataUeRadioCapability5GS: + type: string + format: binary + binaryDataUeRadioCapabilityEPS: + type: string + format: binary + binaryDataUeRadioCap5GSForPaging: + type: string + format: binary + binaryDataUeRadioCapEPSForPaging: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataUeRadioCapability5GS: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapabilityEPS: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCap5GSForPaging: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapEPSForPaging: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + responses: + '201': + description: Dictionary Created + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nucmf-uecm//dic-entries/{dicEntryId}' + required: true + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/DicEntryCreatedData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /dic-entries/{dicEntryId}: + get: + summary: Get an individual dictionary entry via dicEntryId + operationId: GetDicEntry + tags: + - dic Entry Id (Document) + security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + - oAuth2ClientCredentials: + - nucmf-uecm + - nucmf-uecm:dictionary:read + parameters: + - name: dicEntryId + in: path + description: the ID of a dictionary entry in the UCMF + required: true + schema: + $ref: '#/components/schemas/DicEntryId' + - name: rac-format + in: query + description: Encoding format of of RAC Info + schema: + $ref: '#/components/schemas/RacFormat' + - name: supported-features + in: query + description: supported features of the NF consumer + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + responses: + '200': + description: Expected response to a valid request + content: + multipart/related: # message with binary body part(s) + schema: + type: object + properties: # Request parts + jsonData: + $ref: '#/components/schemas/DicEntryData' + binaryDataUeRadioCapability5GS: + type: string + format: binary + binaryDataUeRadioCapabilityEPS: + type: string + format: binary + binaryDataUeRadioCap5GSForPaging: + type: string + format: binary + binaryDataUeRadioCapEPSForPaging: + type: string + format: binary + encoding: + jsonData: + contentType: application/json + binaryDataUeRadioCapability5GS: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapabilityEPS: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCap5GSForPaging: + contentType: application/vnd.3gpp.ngap + headers: + Content-Id: + schema: + type: string + binaryDataUeRadioCapEPSForPaging: + contentType: application/vnd.3gpp.s1ap + headers: + Content-Id: + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + + /subscriptions: + post: + summary: Nucmf_UECapabilityManagement Subscribe service Operation + operationId: CreateIndividualSubcription + tags: + - Subscriptions (Collection) + security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + - oAuth2ClientCredentials: + - nucmf-uecm + - nucmf-uecm:subscription:create + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSubscription' + responses: + '201': + description: Success + content: + application/json: + schema: + $ref: '#/components/schemas/CreatedSubscription' + headers: + Location: + description: 'Contains the URI of the newly created resource, according to the structure: {apiRoot}/nucmf-uecm//subscriptions/{subscriptionId}' + required: true + schema: + type: string + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + myNotification: + '{$request.body#/ucmfNotificationUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/UcmfNotification' + responses: + '204': + description: No Content, Notification was succesfull + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + /subscriptions/{subscriptionId}: + delete: + summary: unsubscribe from notifications + operationId: DeleteIndividualSubcription + tags: + - IndividualSubscription (Document) + security: + - {} + - oAuth2ClientCredentials: + - nucmf-uecm + - oAuth2ClientCredentials: + - nucmf-uecm + - nucmf-uecm:subscription:modify + parameters: + - name: subscriptionId + in: path + description: Event Subscription ID + required: true + schema: + type: string + responses: + '204': + description: No Content. Resource was succesfully deleted + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + + +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nucmf-uecm: Access to the Nucmf_UECapabilityManagement API + nucmf-uecm:dictionary:read: Access to read dictionaries + nucmf-uecm:dictionary:create: Access to create dictionary entitries + nucmf-uecm:subscription:create: Access to create subscriptions + nucmf-uecm:subscription:modify: Access to update subscriptions + + schemas: + DicEntryData: + description: A dictionary entry for a UE radio capability ID in the UCMF + type: object + required: + - typeAllocationCode + properties: + dicEntryId: + $ref: '#/components/schemas/DicEntryId' + typeAllocationCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TypeAllocationCode' + plmnAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnAssiUeRadioCapId' + manAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ManAssiUeRadioCapId' + ueRadioCapability5GS: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueRadioCapabilityEPS: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueRadioCap5GSForPaging: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueRadioCapEPSForPaging: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + + DicEntryCreateData: + description: Data for a creating a dictionary entry request + type: object + required: + - typeAllocationCode + properties: + typeAllocationCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TypeAllocationCode' + ueRadioCapability5GS: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueRadioCapabilityEPS: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + ueRadioCap5GSForPaging: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + ueRadioCapEPSForPaging: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RefToBinaryData' + + DicEntryCreatedData: + description: Data for a creating a dictionary entry response + type: object + required: + - plmnAssiUeRadioCapId + properties: + plmnAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnAssiUeRadioCapId' + + + UeRadioCapaId: + description: UE Radio Capability ID + type: object + properties: + plmnAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnAssiUeRadioCapId' + manAssiUeRadioCapId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ManAssiUeRadioCapId' + + + CreateSubscription: + description: Data for a creating a subscription request + type: object + required: + - ucmfNotificationUri + properties: + nfId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + ucmfNotificationUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + suggestedExpires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + CreatedSubscription: + description: Data for a creating a subscription response + type: object + required: + - dicEntryId + properties: + dicEntryId: + $ref: '#/components/schemas/DicEntryId' + confirmedExpires: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + + UcmfNotification: + description: Data for a notification request from a UCMF + type: object + required: + - dicEntryId + - eventType + properties: + dicEntryId: + $ref: '#/components/schemas/DicEntryId' + eventType: + $ref: '#/components/schemas/EventType' + manAssOpRequestlist: + $ref: '#/components/schemas/manAssOpRequestlist' + minItems: 1 + versionId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uinteger' + + manAssOpRequestlist: + description: Manufacturer Assigned operation requested list + type: object + oneOf: + - required: [plmnAssiUeRadioCapId] + - required: [typeAllocationCod] + properties: + plmnAssiUeRadioCapId: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnAssiUeRadioCapId' + minItems: 1 + typeAllocationCode: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TypeAllocationCode' + + +# +# SIMPLE DATA TYPES +# + DicEntryId: + type: integer + minimum: 0 + maximum: 4294967295 + +# +# ENUMERATIONS +# + + EventType: + anyOf: + - type: string + enum: + - CREATION_OF_DICTIONARY_ENTRY + - DELETION_OF_PLMN_ASSIGNED_IDS + - NEW_VERSION_ID_OF_PLMN_ASSIGNED_IDs + - type: string + + RacFormat: + anyOf: + - type: string + enum: + - 5GS + - EPS + - type: string diff --git a/TS29675_Nucmf_Provisioning.yaml b/TS29675_Nucmf_Provisioning.yaml new file mode 100644 index 0000000..a5e649b --- /dev/null +++ b/TS29675_Nucmf_Provisioning.yaml @@ -0,0 +1,331 @@ +openapi: 3.0.0 +info: + title: Nucmf_Provisioning + version: 1.2.0-alpha.3 + description: | + UCMF_Provisioning Service. + © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 29.675 V18.3.0; User Equipment (UE) radio capability provisioning service; Stage 3. + url: https://www.3gpp.org/ftp/Specs/archive/29_series/29.675/ +servers: + - url: '{apiRoot}/nucmf-provisioning/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in clause 4.4 of 3GPP TS 29.501 +security: + - {} + - oAuth2ClientCredentials: + - nucmf-provisioning +paths: + /provisionings: + post: + summary: Create an Individual UE radio capability provisioning + operationId: CreateProvisioning + tags: + - UE radio capability provisionings (Collection) + requestBody: + description: Create new provisionings for a given SCS/AS. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + responses: + '201': + description: > + Created. The creation of an Individual UE radio capability provisioning + resource is confirmed and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + headers: + Location: + description: Contains the URI of the newly created resource. + 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': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + /provisionings/{provisioningId}: + parameters: + - name: provisioningId + in: path + description: Provisioning ID + required: true + schema: + type: string + get: + summary: Get an Individual UE radio capability provisioning + operationId: GetProvisioning + tags: + - Individual UE radio capability provisioning (Document) + responses: + '200': + description: OK. The provisioning information related to the request URI is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '406': + $ref: 'TS29571_CommonData.yaml#/components/responses/406' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + patch: + summary: Update (PATCH) an Individual UE radio capability provisioning + operationId: UpdateProvisioning + tags: + - Individual UE radio capability provisioning (Document) + requestBody: + description: Update an existing parameter provisioning. + required: true + content: + application/merge-patch+json: + schema: + $ref: '#/components/schemas/RacsDataPatch' + responses: + '200': + description: > + OK. The Individual UE radio capability provisioning resource is modified + and a representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + put: + summary: Replace (PUT) an Individual UE radio capability provisioning + operationId: ReplaceProvisioning + tags: + - Individual UE radio capability provisioning (Document) + requestBody: + description: Update an existing parameter provisioning. + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + responses: + '200': + description: > + OK. The Individual UE radio capability provisioning resource is modified and a + representation of that resource is returned. + content: + application/json: + schema: + $ref: '#/components/schemas/RacsData' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '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': + description: The RACS data for all RACS IDs were not provisioned successfully. + content: + application/json: + schema: + type: array + items: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsFailureReport' + minItems: 1 + application/problem+json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + delete: + summary: Remove an Individual UE radio capability provisioning + operationId: RemoveProvisioning + tags: + - Individual UE radio capability provisioning (Document) + responses: + '204': + description: > + No Content. The Individual UE radio capability resource was successfully removed. + The content shall be empty. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + $ref: 'TS29571_CommonData.yaml#/components/responses/400' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + $ref: 'TS29571_CommonData.yaml#/components/responses/403' + '404': + $ref: 'TS29571_CommonData.yaml#/components/responses/404' + '429': + $ref: 'TS29571_CommonData.yaml#/components/responses/429' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '502': + $ref: 'TS29571_CommonData.yaml#/components/responses/502' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{tokenUrl}' + scopes: + nucmf-provisioning: Access to the Nucmf_Provisioning API + schemas: + RacsData: + description: Represents a UE radio capability data provided by the NF service consumer. + type: object + properties: + suppFeat: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + racsConfigs: + type: object + additionalProperties: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsConfiguration' + minProperties: 1 + description: > + Identifies the configuration related to manufacturer specific UE radio capability. + Each element uniquely identifies an RACS configuration for an RACS ID and is + identified in the map via the RACS ID as key. The response shall include + successfully provisioned RACS data. + racsReports: + type: object + additionalProperties: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsFailureReport' + minProperties: 1 + description: > + Contains the RACS IDs for which the RACS data are not provisioned successfully. The + failure reason is also included. Any string value can be used as a key of the map. + readOnly: true + required: + - racsConfigs + RacsDataPatch: + description: > + Represents a modification of a UE radio capability data provided by the NF service + consumer. + type: object + properties: + racsConfigs: + type: object + additionalProperties: + $ref: 'TS29122_RacsParameterProvisioning.yaml#/components/schemas/RacsConfigurationRm' + minProperties: 1 + description: > + Identifies the configuration related to manufacturer specific UE radio + capability. Each element uniquely identifies an RACS configuration for an RACS ID + and is identified in the map via the RACS ID as key. diff --git a/TS32291_Nchf_ConvergedCharging.yaml b/TS32291_Nchf_ConvergedCharging.yaml new file mode 100644 index 0000000..09fe0fe --- /dev/null +++ b/TS32291_Nchf_ConvergedCharging.yaml @@ -0,0 +1,2723 @@ +openapi: 3.0.0 +info: + title: Nchf_ConvergedCharging + version: 3.2.0-alpha.3 + description: | + ConvergedCharging Service © 2023, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 32.291 V18.3.0: Telecommunication management; Charging management; + 5G system, charging service; Stage 3. + url: 'http://www.3gpp.org/ftp/Specs/archive/32_series/32.291/' +servers: + - url: '{apiRoot}/nchf-convergedcharging/v3' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 4.4 of 3GPP TS 29.501. +security: + - {} + - oAuth2ClientCredentials: + - nchf-convergedcharging +paths: + /chargingdata: + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataResponse' + '400': + description: Bad request + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '404': + description: Not Found + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '405': + $ref: 'TS29571_CommonData.yaml#/components/responses/405' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + callbacks: + chargingNotification: + '{$request.body#/notifyUri}': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingNotifyRequest' + responses: + '200': + description: OK. + content: + application/ json: + schema: + $ref: '#/components/schemas/ChargingNotifyResponse' + '204': + description: 'No Content, Notification was succesfull' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad request + content: + application/problem+json: + schema: + oneOf: + - $ref: TS29571_CommonData.yaml#/components/schemas/ProblemDetails + - $ref: '#/components/schemas/ChargingNotifyResponse' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + '/chargingdata/{ChargingDataRef}/update': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + parameters: + - name: ChargingDataRef + in: path + description: a unique identifier for a charging data resource in a PLMN + required: true + schema: + type: string + responses: + '200': + description: OK. Updated Charging Data resource is returned + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataResponse' + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '400': + description: Bad request + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '403': + description: Forbidden + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '404': + description: Not Found + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '405': + $ref: 'TS29571_CommonData.yaml#/components/responses/405' + '408': + $ref: 'TS29571_CommonData.yaml#/components/responses/408' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + '/chargingdata/{ChargingDataRef}/release': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + parameters: + - name: ChargingDataRef + in: path + description: a unique identifier for a charging data resource in a PLMN + required: true + schema: + type: string + responses: + '204': + description: No Content. + '307': + $ref: 'TS29571_CommonData.yaml#/components/responses/307' + '308': + $ref: 'TS29571_CommonData.yaml#/components/responses/308' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '404': + description: Not Found + content: + application/problem+json: + schema: + oneOf: + - $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + - $ref: '#/components/schemas/ChargingDataResponse' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nchf-convergedcharging: Access to the Nchf_ConvergedCharging API + schemas: + ChargingDataRequest: + type: object + properties: + subscriberIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + tenantIdentifier: + type: string + chargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + mnSConsumerIdentifier: + type: string + nfConsumerIdentification: + $ref: '#/components/schemas/NFIdentification' + invocationTimeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + invocationSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + retransmissionIndicator: + type: boolean + oneTimeEvent: + type: boolean + oneTimeEventType: + $ref: '#/components/schemas/oneTimeEventType' + notifyUri: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + serviceSpecificationInfo: + type: string + multipleUnitUsage: + type: array + items: + $ref: '#/components/schemas/MultipleUnitUsage' + minItems: 0 + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + easid: + type: string + ednid: + type: string + eASProviderIdentifier: + type: string + aMFId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + pDUSessionChargingInformation: + $ref: '#/components/schemas/PDUSessionChargingInformation' + roamingQBCInformation: + $ref: '#/components/schemas/RoamingQBCInformation' + sMSChargingInformation: + $ref: '#/components/schemas/SMSChargingInformation' + nEFChargingInformation: + $ref: '#/components/schemas/NEFChargingInformation' + registrationChargingInformation: + $ref: '#/components/schemas/RegistrationChargingInformation' + n2ConnectionChargingInformation: + $ref: '#/components/schemas/N2ConnectionChargingInformation' + locationReportingChargingInformation: + $ref: '#/components/schemas/LocationReportingChargingInformation' + nSPAChargingInformation: + $ref: '#/components/schemas/NSPAChargingInformation' + nSMChargingInformation: + $ref: '#/components/schemas/NSMChargingInformation' + mMTelChargingInformation: + $ref: '#/components/schemas/MMTelChargingInformation' + iMSChargingInformation: + $ref: '#/components/schemas/IMSChargingInformation' + edgeInfrastructureUsageChargingInformation': + $ref: '#/components/schemas/EdgeInfrastructureUsageChargingInformation' + eASDeploymentChargingInformation: + $ref: '#/components/schemas/EASDeploymentChargingInformation' + directEdgeEnablingServiceChargingInformation: + $ref: '#/components/schemas/NEFChargingInformation' + exposedEdgeEnablingServiceChargingInformation: + $ref: '#/components/schemas/NEFChargingInformation' + proSeChargingInformation: + $ref: '#/components/schemas/ProseChargingInformation' + mMSChargingInformation: + $ref: '#/components/schemas/MMSChargingInformation' + required: + - nfConsumerIdentification + - invocationTimeStamp + - invocationSequenceNumber + ChargingDataResponse: + type: object + properties: + invocationTimeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + invocationSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + invocationResult: + $ref: '#/components/schemas/InvocationResult' + sessionFailover: + $ref: '#/components/schemas/SessionFailover' + supportedFeatures: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SupportedFeatures' + multipleUnitInformation: + type: array + items: + $ref: '#/components/schemas/MultipleUnitInformation' + minItems: 0 + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + pDUSessionChargingInformation: + $ref: '#/components/schemas/PDUSessionChargingInformation' + roamingQBCInformation: + $ref: '#/components/schemas/RoamingQBCInformation' + locationReportingChargingInformation: + $ref: '#/components/schemas/LocationReportingChargingInformation' + required: + - invocationTimeStamp + - invocationSequenceNumber + ChargingNotifyRequest: + type: object + properties: + notificationType: + $ref: '#/components/schemas/NotificationType' + reauthorizationDetails: + type: array + items: + $ref: '#/components/schemas/ReauthorizationDetails' + minItems: 0 + required: + - notificationType + ChargingNotifyResponse: + type: object + properties: + invocationResult: + $ref: '#/components/schemas/InvocationResult' + NFIdentification: + type: object + properties: + nFName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nFIPv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + nFIPv6Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + nFPLMNID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + nodeFunctionality: + $ref: '#/components/schemas/NodeFunctionality' + nFFqdn: + type: string + required: + - nodeFunctionality + MultipleUnitUsage: + type: object + properties: + ratingGroup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatingGroup' + requestedUnit: + $ref: '#/components/schemas/RequestedUnit' + usedUnitContainer: + type: array + items: + $ref: '#/components/schemas/UsedUnitContainer' + minItems: 0 + uPFID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + multihomedPDUAddress: + $ref: '#/components/schemas/PDUAddress' + required: + - ratingGroup + InvocationResult: + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + failureHandling: + $ref: '#/components/schemas/FailureHandling' + Trigger: + type: object + properties: + triggerType: + $ref: '#/components/schemas/TriggerType' + triggerCategory: + $ref: '#/components/schemas/TriggerCategory' + timeLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + volumeLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + volumeLimit64: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + eventLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxNumberOfccc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + tariffTimeChange: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + required: + - triggerCategory + MultipleUnitInformation: + type: object + properties: + resultCode: + $ref: '#/components/schemas/ResultCode' + ratingGroup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatingGroup' + grantedUnit: + $ref: '#/components/schemas/GrantedUnit' + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + validityTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + quotaHoldingTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + finalUnitIndication: + $ref: '#/components/schemas/FinalUnitIndication' + timeQuotaThreshold: + type: integer + volumeQuotaThreshold: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + unitQuotaThreshold: + type: integer + uPFID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + announcementInformation: + $ref: '#/components/schemas/AnnouncementInformation' + required: + - ratingGroup + RequestedUnit: + type: object + properties: + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + serviceSpecificUnits: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + UsedUnitContainer: + type: object + properties: + serviceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceId' + quotaManagementIndicator: + $ref: '#/components/schemas/QuotaManagementIndicator' + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + triggerTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + serviceSpecificUnits: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + eventTimeStamps: + + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + minItems: 0 + localSequenceNumber: + type: integer + pDUContainerInformation: + $ref: '#/components/schemas/PDUContainerInformation' + nSPAContainerInformation: + $ref: '#/components/schemas/NSPAContainerInformation' + pC5ContainerInformation: + $ref: '#/components/schemas/PC5ContainerInformation' + required: + - localSequenceNumber + GrantedUnit: + type: object + properties: + tariffTimeChange: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + serviceSpecificUnits: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + FinalUnitIndication: + type: object + properties: + finalUnitAction: + $ref: '#/components/schemas/FinalUnitAction' + restrictionFilterRule: + $ref: '#/components/schemas/IPFilterRule' + restrictionFilterRuleList: + type: array + items: + $ref: '#/components/schemas/IPFilterRule' + minItems: 1 + filterId: + type: string + filterIdList: + type: array + items: + type: string + minItems: 1 + redirectServer: + $ref: '#/components/schemas/RedirectServer' + required: + - finalUnitAction + RedirectServer: + type: object + properties: + redirectAddressType: + $ref: '#/components/schemas/RedirectAddressType' + redirectServerAddress: + type: string + required: + - redirectAddressType + - redirectServerAddress + ReauthorizationDetails: + type: object + properties: + serviceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceId' + ratingGroup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatingGroup' + quotaManagementIndicator: + $ref: '#/components/schemas/QuotaManagementIndicator' + PDUSessionChargingInformation: + type: object + properties: + chargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + sMFchargingId: + type: string + homeProvidedChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + sMFHomeProvidedChargingId: + type: string + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + mAPDUNon3GPPUserLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + non3GPPUserLocationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mAPDUNon3GPPUserLocationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + pduSessionInformation: + $ref: '#/components/schemas/PDUSessionInformation' + unitCountInactivityTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + rANSecondaryRATUsageReport: + $ref: '#/components/schemas/RANSecondaryRATUsageReport' + UserInformation: + type: object + properties: + servedGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + servedPEI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + unauthenticatedFlag: + type: boolean + roamerInOut: + $ref: '#/components/schemas/RoamerInOut' + PDUSessionInformation: + type: object + properties: + networkSlicingInfo: + $ref: '#/components/schemas/NetworkSlicingInfo' + pduSessionID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + pduType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + hPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + servingNetworkFunctionID: + $ref: '#/components/schemas/ServingNetworkFunctionID' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + mAPDUNon3GPPRATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + dnnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + dnnSelectionMode: + $ref: '#/components/schemas/dnnSelectionMode' + chargingCharacteristics: + type: string + pattern: '^[0-9a-fA-F]{1,4}$' + chargingCharacteristicsSelectionMode: + $ref: '#/components/schemas/ChargingCharacteristicsSelectionMode' + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + sessionStopIndicator: + type: boolean + pduAddress: + $ref: '#/components/schemas/PDUAddress' + diagnostics: + $ref: '#/components/schemas/Diagnostics' + authorizedQoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AuthorizedDefaultQos' + subscribedQoSInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SubscribedDefaultQos' + authorizedSessionAMBR: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + subscribedSessionAMBR: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + servingCNPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + mAPDUSessionInformation: + $ref: '#/components/schemas/MAPDUSessionInformation' + enhancedDiagnostics: + $ref: '#/components/schemas/EnhancedDiagnostics5G' + redundantTransmissionType: + $ref: '#/components/schemas/RedundantTransmissionType' + pDUSessionPairID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + cpCIoTOptimisationIndicator: + type: boolean + 5GSControlPlaneOnlyIndicator: + type: boolean + smallDataRateControlIndicator: + type: boolean + 5GLANTypeService: + $ref: '#/components/schemas/5GLANTypeService' + sNPNInformation: + $ref: '#/components/schemas/SNPNInformation' + required: + - pduSessionID + - dnnId + PDUContainerInformation: + type: object + properties: + timeofFirstUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofLastUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosData' + qoSCharacteristics: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosCharacteristics' + afChargingIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + afChargingIdString: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ApplicationChargingId' + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + servingNodeID: + type: array + items: + $ref: '#/components/schemas/ServingNetworkFunctionID' + minItems: 0 + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + sponsorIdentity: + type: string + applicationserviceProviderIdentity: + type: string + chargingRuleBaseName: + type: string + mAPDUSteeringFunctionality: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteeringFunctionality' + mAPDUSteeringMode: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteeringMode' + trafficForwardingWay: + $ref: '#/components/schemas/TrafficForwardingWay' + qosMonitoringReport: + type: array + items: + $ref: '#/components/schemas/QosMonitoringReport' + minItems: 0 + NSPAContainerInformation: + type: object + properties: + uplinkLatency: + type: integer + downlinkLatency: + type: integer + uplinkThroughput: + $ref: '#/components/schemas/Throughput' + downlinkThroughput: + $ref: '#/components/schemas/Throughput' + maximumPacketLossRateUL: + type: integer + maximumPacketLossRateDL: + type: integer + serviceExperienceStatisticsData: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/ServiceExperienceInfo' + theNumberOfPDUSessions: + type: integer + theNumberOfRegisteredSubscribers: + type: integer + loadLevel: + $ref: 'TS29520_Nnwdaf_EventsSubscription.yaml#/components/schemas/NsiLoadLevelInfo' + NSPAChargingInformation: + type: object + properties: + singleNSSAI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - singleNSSAI + NetworkSlicingInfo: + type: object + properties: + sNSSAI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + hPlmnSNSSAI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - sNSSAI + PDUAddress: + type: object + properties: + pduIPv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + pduIPv6AddresswithPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + pduAddressprefixlength: + type: integer + iPv4dynamicAddressFlag: + type: boolean + iPv6dynamicPrefixFlag: + type: boolean + addIpv6AddrPrefixes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + addIpv6AddrPrefixList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Prefix' + ServingNetworkFunctionID: + type: object + properties: + servingNetworkFunctionInformation: + $ref: '#/components/schemas/NFIdentification' + aMFId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + required: + - servingNetworkFunctionInformation + RoamingQBCInformation: + type: object + properties: + multipleQFIcontainer: + type: array + items: + $ref: '#/components/schemas/MultipleQFIcontainer' + minItems: 0 + uPFID: # Included for backwards compatibility and + # can be included based on operators requirement + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + roamingChargingProfile: + $ref: '#/components/schemas/RoamingChargingProfile' + MultipleQFIcontainer: + type: object + properties: + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + triggerTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + localSequenceNumber: + type: integer + qFIContainerInformation: + $ref: '#/components/schemas/QFIContainerInformation' + required: + - localSequenceNumber + QFIContainerInformation: + type: object + properties: + qFI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + reportTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofFirstUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofLastUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosData' + qoSCharacteristics: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosCharacteristics' + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + servingNetworkFunctionID: + type: array + items: + $ref: '#/components/schemas/ServingNetworkFunctionID' + minItems: 0 + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + 3gppChargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + diagnostics: + $ref: '#/components/schemas/Diagnostics' + enhancedDiagnostics: + type: array + items: + type: string + required: + - reportTime + RoamingChargingProfile: + type: object + properties: + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + partialRecordMethod: + $ref: '#/components/schemas/PartialRecordMethod' + SMSChargingInformation: + type: object + properties: + originatorInfo: + $ref: '#/components/schemas/OriginatorInfo' + recipientInfo: + type: array + items: + $ref: '#/components/schemas/RecipientInfo' + minItems: 0 + userEquipmentInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + roamerInOut: + $ref: '#/components/schemas/RoamerInOut' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + sMSCAddress: + type: string + sMDataCodingScheme: + type: integer + sMMessageType: + $ref: '#/components/schemas/SMMessageType' + sMReplyPathRequested: + $ref: '#/components/schemas/ReplyPathRequested' + sMUserDataHeader: + type: string + sMStatus: + type: string + pattern: '^[0-7]?[0-9a-fA-F]$' + sMDischargeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + numberofMessagesSent: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + sMServiceType: + $ref: '#/components/schemas/SMServiceType' + sMSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + sMSresult: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + submissionTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sMPriority: + $ref: '#/components/schemas/SMPriority' + messageReference: + type: string + messageSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + messageClass: + $ref: '#/components/schemas/MessageClass' + deliveryReportRequested: + $ref: '#/components/schemas/DeliveryReportRequested' + OriginatorInfo: + type: object + properties: + originatorSUPI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + originatorGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + originatorOtherAddress: + $ref: '#/components/schemas/SMAddressInfo' + originatorReceivedAddress: + $ref: '#/components/schemas/SMAddressInfo' + originatorSCCPAddress: + type: string + sMOriginatorInterface: + $ref: '#/components/schemas/SMInterface' + sMOriginatorProtocolId: + type: string + RecipientInfo: + type: object + properties: + recipientSUPI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + recipientGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + recipientOtherAddress: + $ref: '#/components/schemas/SMAddressInfo' + recipientReceivedAddress: + $ref: '#/components/schemas/SMAddressInfo' + recipientSCCPAddress: + type: string + sMDestinationInterface: + $ref: '#/components/schemas/SMInterface' + sMrecipientProtocolId: + type: string + SMAddressInfo: + type: object + properties: + sMaddressType: + $ref: '#/components/schemas/SMAddressType' + sMaddressData: + type: string + sMaddressDomain: + $ref: '#/components/schemas/SMAddressDomain' + RecipientAddress: + type: object + properties: + recipientAddressInfo: + $ref: '#/components/schemas/SMAddressInfo' + sMaddresseeType: + $ref: '#/components/schemas/SMAddresseeType' + MessageClass: + type: object + properties: + classIdentifier: + $ref: '#/components/schemas/ClassIdentifier' + tokenText: + type: string + SMAddressDomain: + type: object + properties: + domainName: + type: string + 3GPPIMSIMCCMNC: + type: string + SMInterface: + type: object + properties: + interfaceId: + type: string + interfaceText: + type: string + interfacePort: + type: string + interfaceType: + $ref: '#/components/schemas/InterfaceType' + RANSecondaryRATUsageReport: + type: object + properties: + rANSecondaryRATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + qosFlowsUsageReports: + type: array + items: + $ref: '#/components/schemas/QosFlowsUsageReport' + Diagnostics: + type: integer + IPFilterRule: + type: string + QosFlowsUsageReport: + type: object + properties: + qFI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + startTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + 5GLANTypeService: + type: object + properties: + internalGroupIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + NEFChargingInformation: + type: object + properties: + externalIndividualIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + internalIndividualIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + externalGroupIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ExternalGroupId' + groupIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GroupId' + aPIDirection: + $ref: '#/components/schemas/APIDirection' + aPITargetNetworkFunction: + $ref: '#/components/schemas/NFIdentification' + aPIResultCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + aPIName: + type: string + aPIReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + aPIOperation: + $ref: '#/components/schemas/APIOperation' + aPIContent: + type: string + required: + - aPIName + SNPNInformation: + type: object + properties: + sNPNID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + accessType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AccessType' + required: + - sNPNID + RegistrationChargingInformation: + type: object + properties: + registrationMessagetype: + $ref: '#/components/schemas/RegistrationMessageType' + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + pSCellInformation: + $ref: '#/components/schemas/PSCellInformation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + 5GMMCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Bytes' + mICOModeIndication: + $ref: '#/components/schemas/MICOModeIndication' + smsIndication: + $ref: '#/components/schemas/SmsIndication' + taiList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Tai' + minItems: 0 + serviceAreaRestriction: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + minItems: 0 + requestedNSSAI: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 0 + allowedNSSAI: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 0 + rejectedNSSAI: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 0 + nSSAIMapList: + type: array + items: + $ref: '#/components/schemas/NSSAIMap' + minItems: 0 + amfUeNgapId: + type: integer + ranUeNgapId: + type: integer + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + sNPNID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnIdNid' + cAGIDList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CagId' + minItems: 0 + required: + - registrationMessagetype + PSCellInformation: + type: object + properties: + nrcgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ncgi' + ecgi: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ecgi' + NSSAIMap: + type: object + properties: + servingSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + homeSnssai: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - servingSnssai + - homeSnssai + N2ConnectionChargingInformation: + type: object + properties: + n2ConnectionMessageType: + $ref: '#/components/schemas/N2ConnectionMessageType' + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + pSCellInformation: + $ref: '#/components/schemas/PSCellInformation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + amfUeNgapId: + type: integer + ranUeNgapId: + type: integer + ranNodeId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/GlobalRanNodeId' + restrictedRatList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + minItems: 0 + forbiddenAreaList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Area' + minItems: 0 + serviceAreaRestriction: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceAreaRestriction' + minItems: 0 + restrictedCnList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/CoreNetworkType' + minItems: 0 + allowedNSSAI: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 0 + nSSAIMapList: + type: array + items: + $ref: '#/components/schemas/NSSAIMap' + minItems: 0 + rrcEstCause: + type: string + pattern: '^[0-9a-fA-F]+$' + required: + - n2ConnectionMessageType + LocationReportingChargingInformation: + type: object + properties: + locationReportingMessageType: + $ref: '#/components/schemas/LocationReportingMessageType' + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + pSCellInformation: + $ref: '#/components/schemas/PSCellInformation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + required: + - locationReportingMessageType + N2ConnectionMessageType: + type: integer + LocationReportingMessageType: + type: integer + NSMChargingInformation: + type: object + properties: + managementOperation: + $ref: '#/components/schemas/ManagementOperation' + idNetworkSliceInstance: + type: string + listOfserviceProfileChargingInformation: + type: array + items: + $ref: '#/components/schemas/ServiceProfileChargingInformation' + minItems: 0 + managementOperationStatus: + $ref: '#/components/schemas/ManagementOperationStatus' +# To be introduced once the reference to 'generic.yaml is resolved +# managementOperationalState: +# $ref: 'genericNrm.yaml#/components/schemas/OperationalState' +# managementAdministrativeState: +# $ref: 'genericNrm.yaml#/components/schemas/AdministrativeState' + required: + - managementOperation + ServiceProfileChargingInformation: + type: object + properties: + serviceProfileIdentifier: + type: string + sNSSAIList: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + minItems: 0 +# To be introduced once the reference to 'nrNrm.yaml is resolved +# sST: +# $ref: 'nrNrm.yaml#/components/schemas/Sst' + latency: + type: integer + availability: + type: number +# To be introduced once the reference to sliceNrm.yaml is resolved +# resourceSharingLevel: +# $ref: 'sliceNrm.yaml#/components/schemas/SharingLevel' + jitter: + type: integer + reliability: + type: string + maxNumberofUEs: + type: integer + coverageArea: + type: string +# To be introduced once the reference to sliceNrm.yaml is resolved +# uEMobilityLevel: +# $ref: 'sliceNrm.yaml#/components/schemas/MobilityLevel' +# delayToleranceIndicator: +# $ref: 'sliceNrm.yaml#/components/schemas/Support' + dLThptPerSlice: + $ref: '#/components/schemas/Throughput' + dLThptPerUE: + $ref: '#/components/schemas/Throughput' + uLThptPerSlice: + $ref: '#/components/schemas/Throughput' + uLThptPerUE: + $ref: '#/components/schemas/Throughput' + maxNumberofPDUsessions: + type: integer + kPIMonitoringList: + type: string + supportedAccessTechnology: + type: integer +# To be introduced once the reference to sliceNrm.yaml is resolved +# v2XCommunicationModeIndicator: +# $ref: 'sliceNrm.yaml#/components/schemas/Support' + addServiceProfileInfo: + type: string + Throughput: + type: object + properties: + guaranteedThpt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + maximumThpt: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + MAPDUSessionInformation: + type: object + properties: + mAPDUSessionIndicator: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/MaPduIndication' + aTSSSCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AtsssCapability' + EnhancedDiagnostics5G: + $ref: '#/components/schemas/RanNasCauseList' + RanNasCauseList: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RanNasRelCause' + QosMonitoringReport: + description: Contains reporting information on QoS monitoring. + type: object + properties: + ulDelays: + type: array + items: + type: integer + minItems: 0 + dlDelays: + type: array + items: + type: integer + minItems: 0 + rtDelays: + type: array + items: + type: integer + minItems: 0 + AnnouncementInformation: + type: object + properties: + announcementIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + announcementReference: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + variableParts: + type: array + items: + $ref: '#/components/schemas/VariablePart' + minItems: 0 + timeToPlay: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + quotaConsumptionIndicator: + $ref: '#/components/schemas/QuotaConsumptionIndicator' + announcementPriority: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + playToParty: + $ref: '#/components/schemas/PlayToParty' + announcementPrivacyIndicator: + $ref: '#/components/schemas/AnnouncementPrivacyIndicator' + Language: + $ref: '#/components/schemas/Language' + VariablePart: + type: object + properties: + variablePartType: + $ref: '#/components/schemas/VariablePartType' + variablePartValue: + type: array + items: + type: string + minItems: 1 + variablePartOrder: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + required: + - variablePartType + - variablePartValue + Language: + type: string + MMTelChargingInformation: + type: object + properties: + supplementaryServices: + type: array + items: + $ref: '#/components/schemas/SupplementaryService' + minItems: 1 + SupplementaryService: + type: object + properties: + supplementaryServiceType: + $ref: '#/components/schemas/SupplementaryServiceType' + supplementaryServiceMode: + $ref: '#/components/schemas/SupplementaryServiceMode' + numberOfDiversions: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + associatedPartyAddress: + type: string + conferenceId: + type: string + participantActionType: + $ref: '#/components/schemas/ParticipantActionType' + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + numberOfParticipants: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + cUGInformation: + $ref: '#/components/schemas/OctetString' + IMSChargingInformation: + type: object + properties: + eventType: + $ref: '#/components/schemas/SIPEventType' + iMSNodeFunctionality: + $ref: '#/components/schemas/IMSNodeFunctionality' + roleOfNode: + $ref: '#/components/schemas/RoleOfIMSNode' + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + ueTimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + isupCause: + $ref: '#/components/schemas/ISUPCause' + controlPlaneAddress: + $ref: '#/components/schemas/IMSAddress' + vlrNumber: + $ref: '#/components/schemas/E164' + mscAddress: + $ref: '#/components/schemas/E164' + userSessionID: + type: string + outgoingSessionID: + type: string + sessionPriority: + $ref: '#/components/schemas/IMSSessionPriority' + callingPartyAddresses: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + calledPartyAddress: + type: string + numberPortabilityRoutinginformation: + type: string + carrierSelectRoutingInformation: + type: string + alternateChargedPartyAddress: + type: string + requestedPartyAddress: + type: array + items: + type: string + minItems: 1 + calledAssertedIdentities: + type: array + items: + type: string + minItems: 1 + calledIdentityChanges: + type: array + items: + $ref: '#/components/schemas/CalledIdentityChange' + minItems: 1 + associatedURI: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uri' + minItems: 1 + timeStamps: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + applicationServerInformation: + type: array + items: + type: string + minItems: 1 + interOperatorIdentifier: + type: array + items: + $ref: '#/components/schemas/InterOperatorIdentifier' + minItems: 1 + imsChargingIdentifier: + type: string + relatedICID: + type: string + relatedICIDGenerationNode: + type: string + transitIOIList: + type: array + items: + type: string + minItems: 1 + earlyMediaDescription: + type: array + items: + $ref: '#/components/schemas/EarlyMediaDescription' + minItems: 1 + sdpSessionDescription: + type: array + items: + type: string + minItems: 1 + sdpMediaComponent: + type: array + items: + $ref: '#/components/schemas/SDPMediaComponent' + minItems: 1 + servedPartyIPAddress: + $ref: '#/components/schemas/IMSAddress' + serverCapabilities: + $ref: '#/components/schemas/ServerCapabilities' + trunkGroupID: + $ref: '#/components/schemas/TrunkGroupID' + bearerService: + type: string + imsServiceId: + type: string + messageBodies: + type: array + items: + $ref: '#/components/schemas/MessageBody' + minItems: 1 + accessNetworkInformation: + type: array + items: + type: string + minItems: 1 + additionalAccessNetworkInformation: + type: string + cellularNetworkInformation: + type: string + accessTransferInformation: + type: array + items: + $ref: '#/components/schemas/AccessTransferInformation' + minItems: 1 + accessNetworkInfoChange: + type: array + items: + $ref: '#/components/schemas/AccessNetworkInfoChange' + minItems: 1 + imsCommunicationServiceID: + type: string + imsApplicationReferenceID: + type: string + causeCode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + reasonHeader: + type: array + items: + type: string + minItems: 1 + initialIMSChargingIdentifier: + type: string + nniInformation: + type: array + items: + $ref: '#/components/schemas/NNIInformation' + minItems: 1 + fromAddress: + type: string + imsEmergencyIndication: + type: boolean + imsVisitedNetworkIdentifier: + type: string + sipRouteHeaderReceived: + type: string + sipRouteHeaderTransmitted: + type: string + tadIdentifier: + $ref: '#/components/schemas/TADIdentifier' + feIdentifierList: + type: string + EdgeInfrastructureUsageChargingInformation: + type: object + properties: + meanVirtualCPUUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + meanVirtualMemoryUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + meanVirtualDiskUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Float' + measuredInBytes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + measuredOutBytes: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + durationStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + durationEndTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + EASDeploymentChargingInformation: + type: object + properties: + eEASDeploymentRequirements: + $ref: '#/components/schemas/EASRequirements' + lCMEventType: + $ref: '#/components/schemas/ManagementOperation' + lCMStartTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + lCMEndTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + MMSChargingInformation: + type: object + properties: + mmOriginatorInfo: + $ref: '#/components/schemas/MMOriginatorInfo' + mmRecipientInfoList: + type: array + items: + $ref: '#/components/schemas/MMRecipientInfo' + minItems: 0 + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + correlationInformation: + type: string + submissionTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + mmContentType: + $ref: '#/components/schemas/MMContentType' + mmPriority: + $ref: '#/components/schemas/SMPriority' + messageID: + type: string + messageType: + type: string + messageSize: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + messageClass: + type: string + deliveryReportRequested: + type: boolean + readReplyReportRequested: + type: boolean + applicID: + type: string + replyApplicID: + type: string + auxApplicInfo: + type: string + contentClass: + type: string + dRMContent: + type: boolean + adaptations: + type: boolean + vasID: + type: string + vaspID: + type: string + MMOriginatorInfo: + type: object + properties: + originatorSUPI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + originatorGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + originatorOtherAddress: + type: array + items: + $ref: '#/components/schemas/SMAddressInfo' + minItems: 0 + MMRecipientInfo: + type: object + properties: + recipientSUPI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + recipientGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + recipientOtherAddress: + type: array + items: + $ref: '#/components/schemas/SMAddressInfo' + + PC5ContainerInformation: + type: object + properties: + coverageInfoList: + type: array + items: + $ref: '#/components/schemas/CoverageInfo' + radioParameterSetInfoList: + type: array + items: + $ref: '#/components/schemas/RadioParameterSetInfo' + transmitterInfoList: + type: array + items: + $ref: '#/components/schemas/TransmitterInfo' + minItems: 0 + timeOfFirst Transmission: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeOfFirst Reception: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + CoverageInfo: + type: object + properties: + coverageStatus: + type: boolean + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + locationInfo: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + minItems: 0 + + RadioParameterSetInfo: + type: object + properties: + radioParameterSetValues: + type: array + items: + $ref: '#/components/schemas/OctetString' + minItems: 0 + changeTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + TransmitterInfo: + type: object + properties: + proseSourceIPAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + proseSourceL2Id: + type: string + ProseChargingInformation: + type: object + properties: + announcingPlmnID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + announcingUeHplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + announcingUeVplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + monitoringUeHplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + monitoringUeVplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + discovererUeHplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + discovererUeVplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + discovereeUeHplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + discovereeUeVplmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + monitoredPlmnIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + proseApplicationID: + type: string + ApplicationId: + type: string + applicationSpecificDataList: + type: array + items: + type: string + minItems: 0 + proseFunctionality: + $ref: '#/components/schemas/ProseFunctionality' + proseEventType: + $ref: '#/components/schemas/ProseEventType' + directDiscoveryModel: + $ref: '#/components/schemas/DirectDiscoveryModel' + validityPeriod: + type: integer + roleOfUE: + $ref: '#/components/schemas/RoleOfUE' + proseRequestTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + pC3ProtocolCause: + type: integer + monitoringUEIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + requestedPLMNIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + timeWindow: + type: integer + rangeClass: + $ref: '#/components/schemas/RangeClass' + proximityAlertIndication: + type: boolean + proximityAlertTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + proximityCancellationTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + relayIPAddress: + $ref: 'TS29571_CommonData.yaml#/components/schemas/IpAddr' + proseUEToNetworkRelayUEID : + type: string + proseDestinationLayer2ID: + type: string + pFIContainerInformation: + type: array + items: + $ref: '#/components/schemas/PFIContainerInformation' + minItems: 0 + transmissionDataContainer: + type: array + items: + $ref: '#/components/schemas/PC5DataContainer' + minItems: 0 + receptionDataContainer: + type: array + items: + $ref: '#/components/schemas/PC5DataContainer' + minItems: 0 + required: + - aPIName + + PFIContainerInformation: + type: object + properties: + pFI: + type: string + reportTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofFirstUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofLastUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosData' + qoSCharacteristics: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosCharacteristics' + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + + PC5DataContainer: + type: object + properties: + localSequenceNumber: + type: string + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + coverageStatus: + type: boolean + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + dataVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + changeCondition: + type: string + radioResourcesId: + $ref: '#/components/schemas/RadioResourcesId' + radioFrequency: + type: string + pC5RadioTechnology: + type: string + + OctetString: + type: string + pattern: '^[0-9a-fA-F]+$' + E164: + type: string + pattern: '^[0-9a-fA-F]+$' + IMSAddress: + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + e164: + $ref: '#/components/schemas/E164' + anyOf: + - required: [ ipv4Addr ] + - required: [ ipv6Addr ] + - required: [ e164 ] + ServingNodeAddress: + type: object + properties: + ipv4Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + ipv6Addr: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + anyOf: + - required: [ ipv4Addr ] + - required: [ ipv6Addr ] + SIPEventType: + type: object + properties: + sIPMethod: + type: string + eventHeader: + type: string + expiresHeader: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + ISUPCause: + type: object + properties: + iSUPCauseLocation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + iSUPCauseValue: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + iSUPCauseDiagnostics: + $ref: '#/components/schemas/OctetString' + enhancedDiagnostics: + $ref: '#/components/schemas/EnhancedDiagnostics5G' + CalledIdentityChange: + type: object + properties: + calledIdentity: + type: string + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + InterOperatorIdentifier: + type: object + properties: + originatingIOI: + type: string + terminatingIOI: + type: string + EarlyMediaDescription: + type: object + properties: + sDPTimeStamps: + $ref: '#/components/schemas/SDPTimeStamps' + sDPMediaComponent: + type: array + items: + $ref: '#/components/schemas/SDPMediaComponent' + minItems: 0 + sDPSessionDescription: + type: array + items: + type: string + minItems: 0 + SDPTimeStamps: + type: object + properties: + sDPOfferTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + sDPAnswerTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + SDPMediaComponent: + type: object + properties: + sDPMediaName: + type: string + SDPMediaDescription: + type: array + items: + type: string + minItems: 0 + localGWInsertedIndication: + type: boolean + ipRealmDefaultIndication: + type: boolean + transcoderInsertedIndication: + type: boolean + mediaInitiatorFlag: + $ref: '#/components/schemas/MediaInitiatorFlag' + mediaInitiatorParty: + type: string + threeGPPChargingId: + $ref: '#/components/schemas/OctetString' + accessNetworkChargingIdentifierValue: + $ref: '#/components/schemas/OctetString' + sDPType: + $ref: '#/components/schemas/SDPType' + ServerCapabilities: + type: object + properties: + mandatoryCapability: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + minItems: 0 + optionalCapability: + type: array + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + minItems: 0 + serverName: + type: array + items: + type: string + minItems: 0 + TrunkGroupID: + type: object + properties: + incomingTrunkGroupID: + type: string + outgoingTrunkGroupID: + type: string + MessageBody: + type: object + properties: + contentType: + type: string + contentLength: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + contentDisposition: + type: string + originator: + $ref: '#/components/schemas/OriginatorPartyType' + required: + - contentType + - contentLength + AccessTransferInformation: + type: object + properties: + accessTransferType: + $ref: '#/components/schemas/AccessTransferType' + accessNetworkInformation: + type: array + items: + $ref: '#/components/schemas/OctetString' + minItems: 0 + cellularNetworkInformation: + $ref: '#/components/schemas/OctetString' + interUETransfer: + $ref: '#/components/schemas/UETransferType' + userEquipmentInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + instanceId: + type: string + relatedIMSChargingIdentifier: + type: string + relatedIMSChargingIdentifierNode: + $ref: '#/components/schemas/IMSAddress' + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + AccessNetworkInfoChange: + type: object + properties: + accessNetworkInformation: + type: array + items: + $ref: '#/components/schemas/OctetString' + minItems: 0 + cellularNetworkInformation: + $ref: '#/components/schemas/OctetString' + changeTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + NNIInformation: + type: object + properties: + sessionDirection: + $ref: '#/components/schemas/NNISessionDirection' + nNIType: + $ref: '#/components/schemas/NNIType' + relationshipMode: + $ref: '#/components/schemas/NNIRelationshipMode' + neighbourNodeAddress: + $ref: '#/components/schemas/IMSAddress' + EASRequirements: + type: object + properties: + requiredEASservingLocation: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/ServingLocation' + softwareImageInfo: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/SoftwareImageInfo' + affinityAntiAffinity: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/AffinityAntiAffinity' + serviceContinuity: + type: boolean + virtualResource: + $ref: 'TS28538_EdgeNrm.yaml#/components/schemas/VirtualResource' + MMContentType: + type: object + properties: + typeNumber: + type: string + addtypeInfo: + type: string + contentSize: + type: integer + mmAddContentInfo: + type: array + items: + $ref: '#/components/schemas/MMAddContentInfo' + minItems: 0 + MMAddContentInfo: + type: object + properties: + typeNumber: + type: string + addtypeInfo: + type: string + contentSize: + type: integer + APIOperation: + type: object + properties: + name: + type: string + description: + type: string + NotificationType: + anyOf: + - type: string + enum: + - REAUTHORIZATION + - ABORT_CHARGING + - type: string + NodeFunctionality: + anyOf: + - type: string + enum: + - AMF + - SMF + - SMS # Included for backwards compatibility, shall not be used + - SMSF + - PGW_C_SMF + - NEFF # Included for backwards compatibility, shall not be used + - SGW + - I_SMF + - ePDG + - CEF + - NEF + - MnS_Producer + - SGSN + - V_SMF + - 5G_DDNMF + - IMS_Node + - MMS_Node + - EES + - PCF + - UDM + - UPF + - type: string + ChargingCharacteristicsSelectionMode: + anyOf: + - type: string + enum: + - HOME_DEFAULT + - ROAMING_DEFAULT + - VISITING_DEFAULT + - type: string + TriggerType: + anyOf: + - type: string + enum: + - QUOTA_THRESHOLD + - QHT + - FINAL + - QUOTA_EXHAUSTED + - VALIDITY_TIME + - OTHER_QUOTA_TYPE + - FORCED_REAUTHORISATION + - UNUSED_QUOTA_TIMER # Included for backwards compatibility, shall not be used + - UNIT_COUNT_INACTIVITY_TIMER + - ABNORMAL_RELEASE + - QOS_CHANGE + - VOLUME_LIMIT + - TIME_LIMIT + - EVENT_LIMIT + - PLMN_CHANGE + - USER_LOCATION_CHANGE + - RAT_CHANGE + - SESSION_AMBR_CHANGE + - UE_TIMEZONE_CHANGE + - TARIFF_TIME_CHANGE + - MAX_NUMBER_OF_CHANGES_IN_CHARGING_CONDITIONS + - MANAGEMENT_INTERVENTION + - CHANGE_OF_UE_PRESENCE_IN_PRESENCE_REPORTING_AREA + - CHANGE_OF_3GPP_PS_DATA_OFF_STATUS + - SERVING_NODE_CHANGE + - REMOVAL_OF_UPF + - ADDITION_OF_UPF + - INSERTION_OF_ISMF + - REMOVAL_OF_ISMF + - CHANGE_OF_ISMF + - START_OF_SERVICE_DATA_FLOW + - ECGI_CHANGE + - TAI_CHANGE + - HANDOVER_CANCEL + - HANDOVER_START + - HANDOVER_COMPLETE + - GFBR_GUARANTEED_STATUS_CHANGE + - ADDITION_OF_ACCESS + - REMOVAL_OF_ACCESS + - START_OF_SDF_ADDITIONAL_ACCESS + - REDUNDANT_TRANSMISSION_CHANGE + - CGI_SAI_CHANGE + - RAI_CHANGE + - type: string + FinalUnitAction: + anyOf: + - type: string + enum: + - TERMINATE + - REDIRECT + - RESTRICT_ACCESS + - type: string + RedirectAddressType: + anyOf: + - type: string + enum: + - IPV4 + - IPV6 + - URL + - URI + - type: string + TriggerCategory: + anyOf: + - type: string + enum: + - IMMEDIATE_REPORT + - DEFERRED_REPORT + - type: string + QuotaManagementIndicator: + anyOf: + - type: string + enum: + - ONLINE_CHARGING + - OFFLINE_CHARGING + - QUOTA_MANAGEMENT_SUSPENDED + - type: string + FailureHandling: + anyOf: + - type: string + enum: + - TERMINATE + - CONTINUE + - RETRY_AND_TERMINATE + - type: string + SessionFailover: + anyOf: + - type: string + enum: + - FAILOVER_NOT_SUPPORTED + - FAILOVER_SUPPORTED + - type: string + 3GPPPSDataOffStatus: + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + ResultCode: + anyOf: + - type: string + enum: + - SUCCESS + - END_USER_SERVICE_DENIED + - QUOTA_MANAGEMENT_NOT_APPLICABLE + - QUOTA_LIMIT_REACHED + - END_USER_SERVICE_REJECTED + - USER_UNKNOWN #Included for backwards compatibility, shall not be used + - RATING_FAILED + - QUOTA_MANAGEMENT + - type: string + PartialRecordMethod: + anyOf: + - type: string + enum: + - DEFAULT + - INDIVIDUAL + - type: string + RoamerInOut: + anyOf: + - type: string + enum: + - IN_BOUND + - OUT_BOUND + - type: string + SMMessageType: + anyOf: + - type: string + enum: + - SUBMISSION + - DELIVERY_REPORT + - SM_SERVICE_REQUEST + - DELIVERY + - type: string + SMPriority: + anyOf: + - type: string + enum: + - LOW + - NORMAL + - HIGH + - type: string + DeliveryReportRequested: + anyOf: + - type: string + enum: + - YES + - NO + - type: string + InterfaceType: + anyOf: + - type: string + enum: + - UNKNOWN + - MOBILE_ORIGINATING + - MOBILE_TERMINATING + - APPLICATION_ORIGINATING + - APPLICATION_TERMINATING + - type: string + ClassIdentifier: + anyOf: + - type: string + enum: + - PERSONAL + - ADVERTISEMENT + - INFORMATIONAL + - AUTO + - type: string + SMAddressType: + anyOf: + - type: string + enum: + - EMAIL_ADDRESS + - MSISDN + - IPV4_ADDRESS + - IPV6_ADDRESS + - NUMERIC_SHORTCODE + - ALPHANUMERIC_SHORTCODE + - OTHER + - IMSI + - type: string + SMAddresseeType: + anyOf: + - type: string + enum: + - TO + - CC + - BCC + - type: string + SMServiceType: + anyOf: + - type: string + enum: + - VAS4SMS_SHORT_MESSAGE_CONTENT_PROCESSING + - VAS4SMS_SHORT_MESSAGE_FORWARDING + - VAS4SMS_SHORT_MESSAGE_FORWARDING_MULTIPLE_SUBSCRIPTIONS + - VAS4SMS_SHORT_MESSAGE_FILTERING + - VAS4SMS_SHORT_MESSAGE_RECEIPT + - VAS4SMS_SHORT_MESSAGE_NETWORK_STORAGE + - VAS4SMS_SHORT_MESSAGE_TO_MULTIPLE_DESTINATIONS + - VAS4SMS_SHORT_MESSAGE_VIRTUAL_PRIVATE_NETWORK(VPN) + - VAS4SMS_SHORT_MESSAGE_AUTO_REPLY + - VAS4SMS_SHORT_MESSAGE_PERSONAL_SIGNATURE + - VAS4SMS_SHORT_MESSAGE_DEFERRED_DELIVERY + - type: string + ReplyPathRequested: + anyOf: + - type: string + enum: + - NO_REPLY_PATH_SET + - REPLY_PATH_SET + - type: string + oneTimeEventType: + anyOf: + - type: string + enum: + - IEC + - PEC + - type: string + dnnSelectionMode: + anyOf: + - type: string + enum: + - VERIFIED + - UE_DNN_NOT_VERIFIED + - NW_DNN_NOT_VERIFIED + - type: string + APIDirection: + anyOf: + - type: string + enum: + - INVOCATION + - NOTIFICATION + - type: string + RegistrationMessageType: + anyOf: + - type: string + enum: + - INITIAL + - MOBILITY + - PERIODIC + - EMERGENCY + - DEREGISTRATION + - type: string + MICOModeIndication: + anyOf: + - type: string + enum: + - MICO_MODE + - NO_MICO_MODE + - type: string + SmsIndication: + anyOf: + - type: string + enum: + - SMS_SUPPORTED + - SMS_NOT_SUPPORTED + - type: string + ManagementOperation: + anyOf: + - type: string + enum: + - CreateMOI #Included for backwards compatibility, shall not be used + - ModifyMOIAttributes #Included for backwards compatibility, shall not be used + - DeleteMOI #Included for backwards compatibility, shall not be used + - CREATE_MOI + - MODIFY_MOI_ATTR + - DELETE_MOI + - NOTIFY_MOI_CREATION + - NOTIFY_MOI_ATTR_CHANGE + - NOTIFY_MOI_DELETION + - type: string + ManagementOperationStatus: + anyOf: + - type: string + enum: + - OPERATION_SUCCEEDED + - OPERATION_FAILED + - type: string + RedundantTransmissionType: + anyOf: + - type: string + enum: + - NON_TRANSMISSION + - END_TO_END_USER_PLANE_PATHS + - N3/N9 + - TRANSPORT_LAYER + - type: string + VariablePartType: + anyOf: + - type: string + enum: + - INTEGER + - NUMBER + - TIME + - DATE + - CURRENCY + - type: string + QuotaConsumptionIndicator: + anyOf: + - type: string + enum: + - QUOTA_NOT_USED + - QUOTA_IS_USED + - type: string + PlayToParty: + anyOf: + - type: string + enum: + - SERVED + - REMOTE + - type: string + AnnouncementPrivacyIndicator: + anyOf: + - type: string + enum: + - NOT_PRIVATE + - PRIVATE + - type: string + SupplementaryServiceType: + anyOf: + - type: string + enum: + - OIP + - OIR + - TIP + - TIR + - HOLD + - CB + - CDIV + - CW + - MWI + - CONF + - FA + - CCBS + - CCNR + - MCID + - CAT + - CUG + - PNM + - CRS + - ECT + - type: string + SupplementaryServiceMode: + anyOf: + - type: string + enum: + - CFU + - CFB + - CFNR + - CFNL + - CD + - CFNRC + - ICB + - OCB + - ACR + - BLIND_TRANFER + - CONSULTATIVE_TRANFER + - type: string + ParticipantActionType: + anyOf: + - type: string + enum: + - CREATE + - JOIN + - INVITE_INTO + - QUIT + - type: string + TrafficForwardingWay: + anyOf: + - type: string + enum: + - N6 + - N19 + - LOCAL_SWITCH + - type: string + IMSNodeFunctionality: + anyOf: + - type: string + enum: +# The applicable IMS Nodes are MRFC, IMS-GWF (connected to S-CSCF using ISC) and SIP AS. + - S_CSCF + - P_CSCF + - I_CSCF + - MRFC + - MGCF + - BGCF + - AS + - IBCF + - S-GW + - P-GW + - HSGW + - E-CSCF + - MME + - TRF + - TF + - ATCF + - PROXY + - EPDG + - TDF + - TWAG + - SCEF + - IWK_SCEF + - IMS_GWF + - type: string + RoleOfIMSNode: + anyOf: + - type: string + enum: + - ORIGINATING + - TERMINATING + - FORWARDING + - type: string + IMSSessionPriority: + anyOf: + - type: string + enum: + - PRIORITY_0 + - PRIORITY_1 + - PRIORITY_2 + - PRIORITY_3 + - PRIORITY_4 + - type: string + MediaInitiatorFlag: + anyOf: + - type: string + enum: + - CALLED_PARTY + - CALLING_PARTY + - UNKNOWN + - type: string + SDPType: + anyOf: + - type: string + enum: + - OFFER + - ANSWER + - type: string + OriginatorPartyType: + anyOf: + - type: string + enum: + - CALLING + - CALLED + - type: string + AccessTransferType: + anyOf: + - type: string + enum: + - PS_TO_CS + - CS_TO_PS + - PS_TO_PS + - CS_TO_CS + - type: string + UETransferType: + anyOf: + - type: string + enum: + - INTRA_UE + - INTER_UE + - type: string + NNISessionDirection: + anyOf: + - type: string + enum: + - INBOUND + - OUTBOUND + - type: string + NNIType: + anyOf: + - type: string + enum: + - NON_ROAMING + - ROAMING_NO_LOOPBACK + - ROAMING_LOOPBACK + - type: string + NNIRelationshipMode: + anyOf: + - type: string + enum: + - TRUSTED + - NON_TRUSTED + - type: string + TADIdentifier: + anyOf: + - type: string + enum: + - CS + - PS + - type: string + ProseFunctionality: + anyOf: + - type: string + enum: + - DIRECT_DISCOVERY + - DIRECT_COMMUNICATION + - type: string + ProseEventType: + anyOf: + - type: string + enum: + - ANNOUNCING + - MONITORING + - MATCH_REPORT + - type: string + DirectDiscoveryModel: + anyOf: + - type: string + enum: + - MODEL_A + - MODEL_B + - type: string + RoleOfUE: + anyOf: + - type: string + enum: + - ANNOUNCING_UE + - MONITORING_UE + - REQUESTOR_UE + - REQUESTED_UE + - type: string + RangeClass: + anyOf: + - type: string + enum: + - RESERVED + - 50_METER + - 100_METER + - 200_METER + - 500_METER + - 1000_METER + - UNUSED + - type: string + RadioResourcesId: + anyOf: + - type: string + enum: + - OPERATOR_PROVIDED + - CONFIGURED + - type: string diff --git a/TS32291_Nchf_OfflineOnlyCharging.yaml b/TS32291_Nchf_OfflineOnlyCharging.yaml new file mode 100644 index 0000000..c1b4d87 --- /dev/null +++ b/TS32291_Nchf_OfflineOnlyCharging.yaml @@ -0,0 +1,703 @@ +openapi: 3.0.0 +info: + title: Nchf_OfflineOnlyCharging + version: 1.2.0-alpha.1 + description: | + OfflineOnlyCharging Service + © 2022, 3GPP Organizational Partners (ARIB, ATIS, CCSA, ETSI, TSDSI, TTA, TTC). + All rights reserved. +externalDocs: + description: > + 3GPP TS 32.291 V18.0.0: Telecommunication management; Charging management; + 5G system, charging service; Stage 3. + url: 'http://www.3gpp.org/ftp/Specs/archive/32_series/32.291/' +servers: + - url: '{apiRoot}/nchf-offlineonlycharging/v1' + variables: + apiRoot: + default: https://example.com + description: apiRoot as defined in subclause 4.4 of 3GPP TS 29.501. +security: + - {} + - oAuth2ClientCredentials: + - nchf-offlineonlycharging +paths: + /offlinechargingdata: + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + responses: + '201': + description: Created + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataResponse' + '400': + description: Bad request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + '/offlinechargingdata/{OfflineChargingDataRef}/update': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + parameters: + - name: OfflineChargingDataRef + in: path + description: a unique identifier for a charging data resource in a PLMN + required: true + schema: + type: string + responses: + '200': + description: OK. Updated Charging Data resource is returned + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataResponse' + '400': + description: Bad request + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '403': + description: Forbidden + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '404': + description: Not Found + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' + '/offlinechargingdata/{OfflineChargingDataRef}/release': + post: + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/ChargingDataRequest' + parameters: + - name: OfflineChargingDataRef + in: path + description: a unique identifier for a charging data resource in a PLMN + required: true + schema: + type: string + responses: + '204': + description: No Content. + '404': + description: Not Found + content: + application/json: + schema: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + '401': + $ref: 'TS29571_CommonData.yaml#/components/responses/401' + '410': + $ref: 'TS29571_CommonData.yaml#/components/responses/410' + '411': + $ref: 'TS29571_CommonData.yaml#/components/responses/411' + '413': + $ref: 'TS29571_CommonData.yaml#/components/responses/413' + '500': + $ref: 'TS29571_CommonData.yaml#/components/responses/500' + '503': + $ref: 'TS29571_CommonData.yaml#/components/responses/503' + default: + $ref: 'TS29571_CommonData.yaml#/components/responses/default' +components: + securitySchemes: + oAuth2ClientCredentials: + type: oauth2 + flows: + clientCredentials: + tokenUrl: '{nrfApiRoot}/oauth2/token' + scopes: + nchf-offlineonlycharging: Access to the Nchf_OfflineOnlyCharging API + schemas: + ChargingDataRequest: + type: object + properties: + subscriberIdentifier: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Supi' + nfConsumerIdentification: + $ref: '#/components/schemas/NFIdentification' + invocationTimeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + invocationSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + retransmissionIndicator: + type: boolean + serviceSpecificationInfo: + type: string + multipleUnitUsage: + type: array + items: + $ref: '#/components/schemas/MultipleUnitUsage' + minItems: 0 + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + pDUSessionChargingInformation: + $ref: '#/components/schemas/PDUSessionChargingInformation' + roamingQBCInformation: + $ref: '#/components/schemas/RoamingQBCInformation' + required: + - nfConsumerIdentification + - invocationTimeStamp + - invocationSequenceNumber + ChargingDataResponse: + type: object + properties: + invocationTimeStamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + invocationSequenceNumber: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + invocationResult: + $ref: '#/components/schemas/InvocationResult' + sessionFailover: + $ref: '#/components/schemas/SessionFailover' + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + pDUSessionChargingInformation: + $ref: '#/components/schemas/PDUSessionChargingInformation' + roamingQBCInformation: + $ref: '#/components/schemas/RoamingQBCInformation' + required: + - invocationTimeStamp + - invocationSequenceNumber + NFIdentification: + type: object + properties: + nFName: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + nFIPv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + nFIPv6Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + nFPLMNID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + nodeFunctionality: + $ref: '#/components/schemas/NodeFunctionality' + nFFqdn: + type: string + required: + - nodeFunctionality + MultipleUnitUsage: + type: object + properties: + ratingGroup: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatingGroup' + usedUnitContainer: + type: array + items: + $ref: '#/components/schemas/UsedUnitContainer' + minItems: 0 + uPFID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + multihomedPDUAddress: + $ref: '#/components/schemas/PDUAddress' + required: + - ratingGroup + InvocationResult: + type: object + properties: + error: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ProblemDetails' + failureHandling: + $ref: '#/components/schemas/FailureHandling' + Trigger: + type: object + properties: + triggerType: + $ref: '#/components/schemas/TriggerType' + triggerCategory: + $ref: '#/components/schemas/TriggerCategory' + timeLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + volumeLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + volumeLimit64: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + eventLimit: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + maxNumberOfccc: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + required: + - triggerType + - triggerCategory + UsedUnitContainer: + type: object + properties: + serviceId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ServiceId' + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + triggerTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + serviceSpecificUnits: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + eventTimeStamps: + type: array + + items: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + minItems: 0 + localSequenceNumber: + type: integer + pDUContainerInformation: + $ref: '#/components/schemas/PDUContainerInformation' + required: + - localSequenceNumber + PDUSessionChargingInformation: + type: object + properties: + chargingId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/ChargingId' + sMFChargingId: + type: string + userInformation: + $ref: '#/components/schemas/UserInformation' + userLocationinfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + mAPDUNon3GPPUserLocationInfo: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + userLocationTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + pduSessionInformation: + $ref: '#/components/schemas/PDUSessionInformation' + unitCountInactivityTimer: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DurationSec' + rANSecondaryRATUsageReport: + $ref: '#/components/schemas/RANSecondaryRATUsageReport' + required: + - pduSessionInformation + UserInformation: + type: object + properties: + servedGPSI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Gpsi' + servedPEI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Pei' + unauthenticatedFlag: + type: boolean + roamerInOut: + $ref: '#/components/schemas/RoamerInOut' + PDUSessionInformation: + type: object + properties: + networkSlicingInfo: + $ref: '#/components/schemas/NetworkSlicingInfo' + pduSessionID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionId' + pduType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PduSessionType' + sscMode: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SscMode' + hPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + servingNetworkFunctionID: + $ref: '#/components/schemas/ServingNetworkFunctionID' + ratType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + mAPDUNon3GPPRATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + dnnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Dnn' + chargingCharacteristics: + type: string + chargingCharacteristicsSelectionMode: + $ref: '#/components/schemas/ChargingCharacteristicsSelectionMode' + startTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + stopTime: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + sessionStopIndicator: + type: boolean + pduAddress: + $ref: '#/components/schemas/PDUAddress' + diagnostics: + $ref: '#/components/schemas/Diagnostics' + authorizedQoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/AuthorizedDefaultQos' + subscribedQoSInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/SubscribedDefaultQos' + authorizedSessionAMBR: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + subscribedSessionAMBR: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ambr' + servingCNPlmnId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PlmnId' + mAPDUSessionInformation: + $ref: '#/components/schemas/MAPDUSessionInformation' + enhancedDiagnostics: + $ref: '#/components/schemas/EnhancedDiagnostics5G' + required: + - pduSessionID + - dnnId + PDUContainerInformation: + type: object + properties: + timeofFirstUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofLastUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosData' + qoSCharacteristics: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosCharacteristics' + aFCorrelationInformation: + type: string + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + servingNodeID: + type: array + items: + $ref: '#/components/schemas/ServingNetworkFunctionID' + minItems: 0 + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + sponsorIdentity: + type: string + applicationserviceProviderIdentity: + type: string + chargingRuleBaseName: + type: string + mAPDUSteeringFunctionality: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteeringFunctionality' + mAPDUSteeringMode: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/SteeringMode' + NetworkSlicingInfo: + type: object + properties: + sNSSAI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Snssai' + required: + - sNSSAI + PDUAddress: + type: object + properties: + pduIPv4Address: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv4Addr' + pduIPv6AddresswithPrefix: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Ipv6Addr' + pduAddressprefixlength: + type: integer + iPv4dynamicAddressFlag: + type: boolean + iPv6dynamicPrefixFlag: + type: boolean + ServingNetworkFunctionID: + type: object + properties: + servingNetworkFunctionInformation: + $ref: '#/components/schemas/NFIdentification' + aMFId: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AmfId' + required: + - servingNetworkFunctionInformation + RoamingQBCInformation: + type: object + properties: + multipleQFIcontainer: + type: array + items: + $ref: '#/components/schemas/MultipleQFIcontainer' + minItems: 0 + uPFID: + $ref: 'TS29571_CommonData.yaml#/components/schemas/NfInstanceId' + roamingChargingProfile: + $ref: '#/components/schemas/RoamingChargingProfile' + MultipleQFIcontainer: + type: object + properties: + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + triggerTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + time: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint32' + totalVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + localSequenceNumber: + type: integer + qFIContainerInformation: + $ref: '#/components/schemas/QFIContainerInformation' + required: + - localSequenceNumber + QFIContainerInformation: + type: object + properties: + qFI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + timeofFirstUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + timeofLastUsage: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + qoSInformation: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosData' + qoSCharacteristics: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/QosCharacteristics' + userLocationInformation: + $ref: 'TS29571_CommonData.yaml#/components/schemas/UserLocation' + uetimeZone: + $ref: 'TS29571_CommonData.yaml#/components/schemas/TimeZone' + presenceReportingAreaInformation: + type: object + additionalProperties: + $ref: 'TS29571_CommonData.yaml#/components/schemas/PresenceInfo' + minProperties: 0 + rATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + servingNetworkFunctionID: + type: array + items: + $ref: '#/components/schemas/ServingNetworkFunctionID' + minItems: 0 + 3gppPSDataOffStatus: + $ref: '#/components/schemas/3GPPPSDataOffStatus' + RoamingChargingProfile: + type: object + properties: + triggers: + type: array + items: + $ref: '#/components/schemas/Trigger' + minItems: 0 + partialRecordMethod: + $ref: '#/components/schemas/PartialRecordMethod' + RANSecondaryRATUsageReport: + type: object + properties: + rANSecondaryRATType: + $ref: 'TS29571_CommonData.yaml#/components/schemas/RatType' + qosFlowsUsageReports: + type: array + items: + $ref: '#/components/schemas/QosFlowsUsageReport' + Diagnostics: + type: integer + IPFilterRule: + type: string + QosFlowsUsageReport: + type: object + properties: + qFI: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Qfi' + startTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + endTimestamp: + $ref: 'TS29571_CommonData.yaml#/components/schemas/DateTime' + uplinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + downlinkVolume: + $ref: 'TS29571_CommonData.yaml#/components/schemas/Uint64' + MAPDUSessionInformation: + type: object + properties: + mAPDUSessionIndicator: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/MaPduIndication' + aTSSSCapability: + $ref: 'TS29571_CommonData.yaml#/components/schemas/AtsssCapability' + EnhancedDiagnostics5G: + $ref: '#/components/schemas/RanNasCauseList' + RanNasCauseList: + type: array + items: + $ref: 'TS29512_Npcf_SMPolicyControl.yaml#/components/schemas/RanNasRelCause' + NodeFunctionality: + anyOf: + - type: string + enum: + - SMF + - SMSF # Included for backwards compatibility, shall not be used + - I-SMF + - type: string + ChargingCharacteristicsSelectionMode: + anyOf: + - type: string + enum: + - HOME_DEFAULT + - ROAMING_DEFAULT + - VISITING_DEFAULT + - type: string + TriggerType: + anyOf: + - type: string + enum: + - FINAL + - ABNORMAL_RELEASE + - QOS_CHANGE + - VOLUME_LIMIT + - TIME_LIMIT + - EVENT_LIMIT + - PLMN_CHANGE + - USER_LOCATION_CHANGE + - RAT_CHANGE + - SESSION_AMBR_CHANGE + - UE_TIMEZONE_CHANGE + - TARIFF_TIME_CHANGE + - MAX_NUMBER_OF_CHANGES_IN_CHARGING_CONDITIONS + - MANAGEMENT_INTERVENTION + - CHANGE_OF_UE_PRESENCE_IN_PRESENCE_REPORTING_AREA + - CHANGE_OF_3GPP_PS_DATA_OFF_STATUS + - SERVING_NODE_CHANGE + - REMOVAL_OF_UPF + - ADDITION_OF_UPF + - INSERTION_OF_ISMF + - REMOVAL_OF_ISMF + - CHANGE_OF_ISMF + - START_OF_SERVICE_DATA_FLOW + - GFBR_GUARANTEED_STATUS_CHANGE + - HANDOVER_CANCEL + - HANDOVER_START + - HANDOVER_COMPLETE + - ADDITION_OF_ACCESS + - REMOVAL_OF_ACCESS + - START_OF_SDF_ADDITIONAL_ACCESS + - type: string + TriggerCategory: + anyOf: + - type: string + enum: + - IMMEDIATE_REPORT + - DEFERRED_REPORT + - type: string + FailureHandling: + anyOf: + - type: string + enum: + - TERMINATE + - CONTINUE + - RETRY_AND_TERMINATE + - type: string + SessionFailover: + anyOf: + - type: string + enum: + - FAILOVER_NOT_SUPPORTED + - FAILOVER_SUPPORTED + - type: string + 3GPPPSDataOffStatus: + anyOf: + - type: string + enum: + - ACTIVE + - INACTIVE + - type: string + ResultCode: + anyOf: + - type: string + enum: + - SUCCESS + - END_USER_SERVICE_DENIED + - type: string + PartialRecordMethod: + anyOf: + - type: string + enum: + - DEFAULT + - INDIVIDUAL + - type: string + RoamerInOut: + anyOf: + - type: string + enum: + - IN_BOUND + - OUT_BOUND + - type: string diff --git a/YamlExtract_1_24.zip b/YamlExtract_1_24.zip deleted file mode 100644 index 49c1783603eb00e2711665cafae634ce0d4602f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15638447 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

_M@K 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

W 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

! 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

ZLheW8T050`^ev(uyPK!>h*7; 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%0D*QTIo-8jCk+y$}`p@CgFZ) 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�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 z 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

fdHgl1=*@<*&#_6nMDy25PIHmI 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

B)tjH%hnJDzHkfC_pkTDeUdijAJ__ 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≫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 PzIiCgeS0yO}z*9Z9P!=Vo%?# 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¥GAQ& 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%0DtdH3yQqCQG_G52$O!VxR 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 z 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%0A(2_+%0Aq1EBMe#2RLnJt^-1m^W8<((*U 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�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 z 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 z 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 Sl~Df%-lc6Dv8 zy>Lc&#}d7?W=CB!rR#DxFU>u$HdXTW8GvoX-tKU!G+SRVB+5hMF_cb4wf1Ts#z3-?XpeK6waeK|9 zgcr9y*)M#r=zcBTRIXgOw?1}FX^7XsD@m^ulfN8$dgU|Yx1T!}Pi?F`f2;5dxqp18v~<@|3)Q#3 zys9JD?{u5}Cnz*|bya3&j@xdp+G9~ab)HPg{Oc)IDC6b0_!+MQ|Ht3_7oW2D&amta z%sStCCP{k1_UA{c*1XwvDR)^B^T)KwyVQc$CM-^52(rGo)opgr^N&IM+>WfPSbB$l z{x7xrL0yO0vQC8VXNmk06TW!&)*BoK_stsDF7Wk#&cL;M*>k?=g7)qyTOC|#Q(lRk zut~Y_>gwuvRSQAso|LW`?+g#ExRn0JDNtp_<6Uul3w@0e8~S8-Zqsgh^5=8WLNm=9 ztM9E66nc=bRBTNP%R$c%o?8}LDvBN4?DFB_4(Okc6%0Ywl?9P=bsRoyC zW!+ppuiHm`a`LyWAI`3@zC5-1&a!_2JA(M8oMSz=S@Xc=oxkRmf4;Ev-e%d#We?Vc zt>ldjdHrlkfoYD;mABt_?ci_wa(8OcMSq0}-}jcQh!&M<6>gn(bc^%K=WD(#Or9P& z|Lm&#)h@~L8&yAwO4=IDoP8;9RY%bipF?RaTk>8)ENyH$R*#ky5LCPkL~ zidM4YKDqNM&x{cBmjS-2JpDQ`hI6;a%`Ca?*n4F6jziu3T^`>X7P78C{fXiKX*Q)w zzwMcg)BMgG{H%Mk)BS9QmE(^)5}V3rNS}JdC}(jhZQ1v5_IGJj2mYI0+#6`Ox9hNY z{GF$Vv(0Z+FT5qGIPEQ;AK&Zki;wEfJ^AIpHlDcPC@wHb zU&TA{W&ghm^Sv)_(FmNqHp%awcencX*Edr79!rhJL}z3*<KAd|`)ugCR zSa^2w?#t`h|K_b|-xk`v(26hQrG@f2mCqhKc(#ADm~m=JX6ufLEx+ErW} zQPGghGU<%%+|0U;Zf47~eRp)vhI9R1vt#a}91l+GWt}Bg_-5^>KOtJk)2Lj3wCv}- zxBNv{Gbhc-3%rst+uG;w45K*DzZze9R!(iRSm?p-H-Gt$1zDdtItr)#V->SdKhgB6 z;1N^D7Zavr@pZq7>b|kHT{xn--#dPfsm@l{`VDS^Z_3Y=3TtTy$;WyMPnfT@$VSd7 zaMy{pZ4Ct)&cUXQ)7dnh_nUAPap_Lj5)qLs^CUyV+CFQ*B>eWfb`KF8F?KXUhqNy4FSF7yhff{PFUmkiUddlYiH4r~eO2 z)s(}$CcgT4D~n@ez_x`w{Og1N-%Cw`u-xhm%wlUsDFY0LI=sTmB#sYV8`HBP8JVEcYb`h|wW z+8Q~1je9k#e7~FK%N1_i)u!24lX=og=-Zb4V)L$xKNNm({5QXIl34Y-leaR2)!%G= zE3zr@{uZ^bUuX0F-?3rloIhp!hyJ>D%|FH5k<(p&=!LN4j#n>_dBpZF0n&y(-JNJ*{y=zN1yqMIPH?vVLXhVbOv;$2Je(ef-svBpYXkWVI9Q*U; zzLSlY_n7AgeYtwHC1=jDysMk#p1#?zlKofuq^TM)PKy3AQ+5RSCzgeNk1yu^XRt*+ zbb@`I!oUB5i~sEZ`tHB=wSemv4}>57F>QM?|H8SKk7#e#y|Bflcu}p%wT)hm&WVDX zQX21^aPeB?I$^OF|HM~@GakS5>W$yYk(PEUJMGiE^jDvDa)`-H`NGdq5?Y^f+KbWU z^!wkQal+|wAggh;t=^T>3Ttk^PVeqI z{ctNmaj0 zWm~Ys`&E2@PoCIm6zgWXuB1q@FKqGx(`%16ddz*m@*s3F)2Tb_1I3H#?PdpYB9d7eLuO2F=8O)+!%<#@MW zRJfUM>t-D`C7(mP(@`Nx{D>1<`xO1Bo{t?lE-rP?ca;i#eMLx5ZGZja1G=l6W-j=% zH^jM*0{0xg6}aE|mSJ<`zKooSCqrvr@Ko)5&Fi#JTSCp$lYRb`Z;Q4b zPf+P9U$AgaO-I;MrxUxLc&Ta4KO%nNh}g?^VS{ZJfd!?@bgg6``Kq-!*;+i4o}FFg zEW6@+{;5NSzt@ViT$sB3Xw!zdOZ)h(O}Tbjsl9xWzjIp9{JY(!Uv;-G9bM2=e=JL55yt(#DK~Yk6Ug0zM_nW`Ie*fO?(5io%=CIcI_*!l93R~~> zBWz8Wwx{#4?CTQ?gH8uOwAE$H@p{vkoOk%{KPS6er5^u#&94dU+noKoL+*;b5!ceA zS5DNoFZjM`LvQg{j-7Cr9$xXQ*SKPibDSqOLvVOB-=h0g$3i5w2 zPtRMBFWs3uA^L&lN+z#m61*1~IC{<2sXtHnH+%EMLfw0QPsFC$GvC_!d+9MpWhK*< zC$vM`LXRz)2+T_z7469w=Zz_*fD=n zey`+dRqr=@RBzqc!jp7A9JOoydd7E2@Ltn9C6=jA9LzUnKjqxpwmR2g z+ClwG)?02o;aj??zjE1>nhnjXE!)?An0@p5v!QUyw-(+0*Yx=L zbxp>yDXk~IX1>|}eUj-_!TLvc<1JV4UYA_uT#@ptlkIf$;pfv{Redg6glXo3(3HJ>)yi)Wr|E5Eby9lfJG5HRAtz5f9GX8ru z1ih7i`Y_?2vE#hv$aF0O0na$WK4$%UDqr45i|eUKF|CMC+x}5Ezw7#*;)JLj%u+{WecCEWFnQiC9@5WKN=kN97mz;zWc5nO7DA)a; zf&cmcAO@A3H@z|c*xzTwSS?UT#**{@&-@nDa z-j8RbZkMpiRX-bQ#PheSwUS5P{Dg3M$KBUWO{Z6=N!tBht6*^Xa_VKTTSXJDJ+1rw z`%3LI-SjD^{(sK=WbaU?z-Tg?D)1OMu7InF} zuxoc_Y!_`ev9&$hXu81Kg=HdR@?TvI7Kc-bGY)VlT$T0YdFYqFpyc-=u5U~{IZd_m zoV$#}n_5475ztZa`8@G!;{5dF2@0v3cCSd$RoqdwJbk780)La!!SBV>HEg|tubJ+c zuVpshgq`(^So)bhmFl2P(|Z#v_nU`5YFV~CZSAZa&B;ZfMi(sdR);NK^+eOQrm@pu z(b)@&nB|w8?@UXroTF9tly)rl!RuB~8g>SpM2T=;r=pUqqi zua~Mjf~4OY3u}~qo^mYVx?P;^fhL9ExaU!7hAys}Ujn~gHhi6VHpBRVui7s5(odha zJ}ndwRtYva>2!c^_rWic)?LdogN#ErTBa&73q1(XQ+1W}OF6kyr(4G>Quo8MpnXrZ z7cy;LEC1=bX5bF_iuR9RmYYi=)k=F6V`_QR`_KbVX??#^VO_6qfg?@ zvpHYf{Q9}%#KbP2+L>3ZS1u^_yyr1{NzM8!cCce-JBNm1np`X6tm{gPke?PwQMB_4$;r z?%&1DYx*(MX6=E=7Eh1ri}=Z36!)JlsA1{(Ird;-aq6Rt&p$6bx>@X@mwV`_*)FFA z*X}Vjc&#hgaDVEo^VghgXRYf0e{Ndg?njH(?s<~A-0Mc|IT7i^8x}WqR%v4%m zZK2A{q!*1K5wZCU3l{M~BSOTLngZ##}1-*d)T{?Wfh z_9Fcgt3;(Z>w7ig&&PMUXbL~@TD(JT;fF+vBf=gG7xQ{_PkGFKuH?H^*Jqh}b47Jvz@FuGm)?IZePsLos8Uivp8gRXmlK9bMoR)DCl;t33Dg!y zS$L-O=gbe61MD21m^6j(XS}_!@pbCn%qc})8&Yqw8sFRTa#4`C`_qku8p{?dSiY5( zIbdad{##D`qg}r$H9vEyha@GdtuQV3eROgT!<+S8Gc-hXj5dc%*4q5zY$DGxpQEou zLJk*SeJ1WL6;>tw&*zOBcjN6GGj$Q?nD;ezy15?MUtJZfd)sM#DF3Wz@zSKCgLUDe zdneR!rC!{5CU#Dnah1xd^~qmXR-`n=d-G`CwNT@)o?iZHN?zQVWT96JpSgS}ZQIT) z_fzxU$=X!`YV+^R-LF#O_U!EL8SA+0JoJ_>)GhYCtg5p2_I-bec=r9f*YzspADs2@ z{nvAE>|U(76xg{_`r^f`J-X{ul|Jb!DeaZ({dxcVn@?`{Cs_6Fnm^}44HwUUnK`0w zv$oq!Y?{gCbLM*0|BD$LT0%U&IWUwqPXBKGylO^~aO#P;`AyH_WCLad9%S9KL&bE; zp0lf8mag1?_}!$L#`gnCxqk0t~re((LV?#|MADr^5Xy{db<*i7xdrOZxu`9l>_lk67> zmxj7te^#GeaKfxZ@=ve)&grUkKR4b{RPmI)93>cwp%A}3O62%i78b8*v+h5Ovy2M;F7JOya{f9&V_Dnl=B5oTcFL0BrB|NC z&)jTvrtVJlRb_!Y`DLftCMcBY)L&}jnZADKoMIO*y}k`+<$HwRZjWd^y+l~+=TeOx zU-hLG9tDhwc^@vHlG|-uGI)ak9pJ;iBNZ2e&gHOk|4rER^F~ z8Bll5{J{5y1?&B^*0_2dtTs8jV8!KCi=TgJ*)5}ecG9|;57hogWEq{C_vP$4msF#7 z(_C_`d)ijM-eADk*Wqq-_fnVs7ip(+Eb=%0g~~}U{x~b|#?~LF846E^w7Q#Y&Arzo ze!xHHeDCf*pJNnRCS6gq{L<}rf2Z~B)B}Ff|7Qkvt$93Q-(i(K=ZX*9%e-(ebHUpX zU*0`u4c~3P`t8)!)%J_KKUzrZhs!S8`+TCl@6X@+zaNnJIsMXqW`lH&|G#B!|6dya z-@fkVzk1P}+sDl|Uo$g`6m*h49~5p(o}dC~0q|LO|ATi-33H#5!c zTXwtopN+qM=cLHI&gu}8ycnqPEKzit=exSfi|y%#t2|fDomzCi$9keh^@Y|r%i8}7 zIdhLy>j~UTpLTEEjG*rqC&)I>KD+Kt-l>U&R@XLf+ovBBlN<_h`tgz!L;i$&qPma?ujh|+y8qy+%kKm zHEXG5@->?Yb1e1=9G<&+V$x!t>Tf&ezMLfYc4|V(g7lBObuGw;fQ(jIy>sSNamf^$AL5U zzZLWo41KY=>389T?F?Z6 z7U2(eSJx z%A=P#{1g58Qe{uhndK7>NaSaUZkoACf2CgI8#B9W|J4&s4BZX~X0eDSDmAs7Ymwm7 z?ed+*__u%Cr{fX79fG$zSs$zXqrCg{rF6^wJz^)D+B&{;nDRdO-_cbk#j$GI*NK}~ zEn{u-P}VYTlb#}VnXOA$UH7oM`Qta2Vwn;Y!`L1>zPr5FAX8sx^ZGg2398n-ZMzsa z9KP>Qnpx()|G|g7p-hr~vzsfN^m=CAw|zDLru^I6ZzGTFxP7?S%~$S`n8z_qc$2Ef1+i&_*SM1zl(Tp9Br`uyL=1lpElO= zo@}Mr*K^(Km(JZ;cXM9z|MuLZ`s7!CyZ$)_`6L~2lj;icl2|-Z#w#M}LUq%F?mail zem>^***MM3m?3ld>MAL{#fAUMQqN6ucSyR-_i~=W?0bq=a?J}k%9xGJ-&z**IkB{e ziR(YDI6C7~YVNIX^Q#X1;)7T=#6A9^G#1F{c2_PspBrzt^>=54 z|D7cZE_+>4v1rYlvr)3+arWQON zJvR)Mn3MP~e%Ny+dh%^u-%I&7Gu{Nx{lFyyMGNie_xzBx01Kz@voiI1r?9F{uTzNKe)SjMgeTvZm*_n`G-$)pjMFs#ePySMMzT)Oyz`|9UpF@F~T3r3v+Q>{fhG zKKtx9lZBKg|Mjub;f(VlwaYn%&KIfe8~mwr)|G zqN%?1x&`Nn$9JSyA8m*{dc<8mXXW;|fXgy=qMI(3#UGp<8YMV8=kM=xD@#{I_Dnyn zu-YV!J!G=Tl%gCKRrU#b?N`?n=DJESmbpJI*!b|)!*8Y)`y`$|Xw|TjyVP|wmSNHi z{UiTxzR^5vm8>RE|L26_ulwfJo`%ZP|I3ACR{TnkdHm~Z9OK#9M*pq^PuTR&M|5hb zGkbI7;$NMe43ZKIrs*dWjFlg9!|`^ePPkF zrBCl}+nBL*^G?H#>qe)~-`ncfDF5XDjc?yytGvFJ{O!wkPge7d;%@Ufo@ZFRpXJB! z{MO5b&bO|d{mdx1@pNbuSH3&8i>-1_F5X_&(*IcV%Q1bwJNITM=E={~$f}rdXZ`Aj+ZJnz*2>GS+wb~& z8mIY=*Zck2?pDVYZ!C}JTOe)kGPBrl>z}Ugm7V@QuXfp+9{<hE@`g%-bYe)MZ1|E<}3pKYl5>Qg(JM@YWBxJtW~voC(r zqgU$hX1}dJ+QM0PC$WB&=#|Nj?-f)YKeEg=^$_c}h9f3T&)3Rk^?X`sJ>9bB_~EGK zN-GsaRsJuElV2B}Hv9dqWojz3R?KlvjRorAUa?lg6HtmHa%_pTcsZWt?AW;N~pS#!=+hIQGWEhhI5 zDecSsJAo;D+gs(jtlFyw_t^Zlxh>-=rM&m39ef|u@63s(XH}7Q8brk-+=W@jy4U;Q&`oS)q z=}gBKR6kqex~)Q9_)?wYG;!Th%VRxKKa5OR9~=v>N?)L>TEtf@vOZzK{&_-XYRpHj z9aLDi@ObgRLj5?GpKJOgM5DFtMg=lVpD%8DxhTtxW9GH@37`HoRZI78wUOO8vyb1e zz(jdshPcxIY0`Jj2K3GN^83f-jZOlBMmZXF^Nik3TR*#-f8MV2+sscgdukIW{Bzd{ zbXni_m;Y;Yv)%4_52ycmb!Nu%=jrcmR-b)VvR87Gr~*rqX6<^5Gxw8xe=z^MC{dam z(_6!ES$A>LPQ{xo`@%d=)$+dUJ>#c6(LB45Wm`Y9)3L+)B2zD`xF;=ej{G0sbF_i) zY}lzdwcq#HPJfDTF}{?4U{XlWqQ_aL)2=z6yHtOq$@Hu193}U{-y*_#DhrlMwVuxq z+NZNZ?(3$=jzt0;RY9#v>9Hp+IZYLtvdfYq{L;lsWgBK^=^E!6*5sJ4%lzwgv4xvE zC)Zx8;cn8FV#&PCi__{nL=?VrWo5_y-kJ06S(ANTa|{39w@OdE7%N%-Xm5+_)H~j8 zC)KAa9_KyZx9pnn-uQJvPm;M`iAG;O>U$$VOoP>L;o@B;?@tTFoePy)RlBOE>ZXR& zwVK5G>oQzbCwhNbyB+)aGHiB<;u6-EmwMaS7XNtiq)**vZt9!Wxlt#&KDOR%Jz8j; zv`GEvR?7)ioAN&J{(JGnp|`wMC+=ZOk)?q3^6v0u-p(7m11CuTx%K_f>>tX%ru-^9 zHRGPz5~n5UmVu#+ZLH0wR(kL~WNyD9WN~?3qd`f4;uW)e{-t|(c@{LvXEo=D&fjE^ z{@c09iS720xbri-H)&te_^0~qh=5GB&c+Q(+M=xY`z$OI-Pk5)dEW4TcGRBkS8oy@ zohpzzcFL$ZBWXv=is?ai=NztQ*nWCvDk|ia&{x;(dVa3(hm~?mx6WSn_j}a!?1ERJ zk%!+qIIW9cJ6Uh30$a_p{mgvD1#RtQG=DppvH1CLqCM(y+wY<6gGh}PE^fh{KiSE{X>i5{=>c^L1S0Ap7 z`y+9c^QPk0V_TB;tGt)ETJ~P~?aZkxr4l#()yqAq-*Zi_s^7d( z>BGKt*D@8o*0;YD&j~!3u)cVypv>}f%Ix3m^_u<4+N>A!?OUb!SEJHO?8-LoVEJjQ zWG3yZPifK;KYF?7#L{RJpK6f`b03an_jV>7(wwl(E-*Rh?Iw;>d1s?09A?<2amchc zYFmF`Na~r?)$XS1k$FARxjn@V58v9ZG%L6MdoZE@aF2NsVds)p3l`L)vMe~soD3e;d|@9RS{?HrsXwGTDX|u?so;3(i;=| zPyNi{Q!(UZXj;JC#I@jmLilb)z8&96%Th!HZy(+G`CP{z7O|!F=j2X(`PycGMmf{W zP;P4IdS^M+{!f?Od8V;yt?^fSf26$rp`1Wuv%#XzZ#!fYtYia!Zc^VIx14YGq|4hx z+4R!O4}M;@;QRHrnLkt4Rv%rxjpb87wqYLg@BLYu)*cr#U6U~B$ja2i?b{!71S>A& z-uCd%(!O0A%NI<2^>)JIL%cQmn=i(yMrzNPRZ_TWZ~dKy$5K<(6t69pUv$t`A@|B6 zyGWTE7k>F0O<+@(K6Lh$_|NX#nGda&i5|#Tznu{J?8U-7$Lu`|4-|I!&N*n8y)`cM z^CMs9t*@@Nh;PwV>%3l}y>8A`yM%HvtYhc{!Ea?W8U1>U#^OToULA;kn_s zVY;GdX#GT=nw1XPoWYlzH6!1x3drzr5039%6P*&a?Z;o+bD|S%XT*MN?tPSKwRghG zwYTe+YujuvWD`1P{)uM_1}h zy0X!SJ9nC&J@zYYRhD6}U3uudelJ6h=Yaxd?vGn^TXU>uKJ{DIpjFS<^N6eN@trTN z@|o#oZ#LF|L?i4zlckGakT8(bzE=Kdp5Rh%)7o$-`}__?|ZuZ;7U6Ru%S1;Vmi-^ESGu_r}cH&7O_sdB4jsU^w}y?J(tzN&r_*0J@~4?fem_F>u;S*BH+ z;%B+-uV7izqWh8mztA=jbM|NDMVsm)s(J$o|8Fxp`8E08L?8F(4LANad^z{*uJxRz zTSv1yoh~~cdbdLQK#cIRMt2SE8^x&#au&yhKUD00Vp;R#T*b4N%YTh5lIHJHzG^EU zrLcH@`u_$m&tHYMrI(lNIq30GDzdip@rpUN0`F!h?ON~lU)_NH(6{cTmaDzoj@>=t zvZ`(A!677xoCa!i3{v|j5KXbEwRu_A9r^e+qF>!a~GIl zRky!c#%+CzcU%38MSoW$PEaqq_BVXhfTxShMqjm>T%~)^Q2Yl`i_?E z{=dL9_a47=?N9ULpUX?rFF&eDwmPkSX4^w8#fNNNp`rrBdZ# zDQEMYUYnB}kMr$+TT!QURP5tFDYlRDcMCrVeGqmmmY)|ewb#TZd+E;O4n6u22ZMEz zJwv_NWHzSkyLIDg!p}FlhAcjo@2A*uZ2KCukRk5V(IWNvzh9(_ufNEm&9Z9OY`fwJ zZg#Uko8YH^9|Z_y*i~-)b}8xKys(~|>n&@JwZ1#r-s5&!&Uka#tMeBQe%ieChok(e z2^#*c30LG*eJXlu`qI?3nvQ;FOq^p`TOz)FlFfg{g+aNOU5bR?U+g@)!Q1+V_ol0d zIuHGQq3&{}|8zB{Gxv$-Thi7R2W`vTz_`%k*gV%*?yCLD2ElnzVk)xdR)?1aAMZJ2 zlCf{K#V^)O`?a}qzN$VvY!YA2%Wm_~U%T!lUu%N)Ue^o9X1C7tb+q%4U9>trTKa2E zz=}j&zKzq}UWG8E$alC|`f;;ad3g6`b+8|}Qs->I>{aL&5;yzcaaB$>NshAxD%XR< z_e{C6%luqautZku8QrbtI=TELf*KFG@p5||GW(?Esbi(7@-#$k;!H<}t!Ik=8ul$> zd|G~Z%cREmNec^Znu&@ZD`c8jx00nS^@4xMrHP(V_iytg=I)t#xB6-CG>-EO+ZX-u zyWINPQn1y+kkRz6xt=MDS#hB0(T7VqBv!vU6g2tXnFEQt7*<{BN|xrE`}E`1Pr?bV z>bVzLr(RDD&Qi5qcx&a(Rl0EpTQxn@kDk0#r@Q~_$L@rUyPk=y>tSJLVB78Yva@Kn zU|&{4#7UR>j?_3GTL`mYq* zbJz#`T2uZ*+-A#$q9B8rirLlzfwMmwxAU!9`6zN~@ZMFM{B`t0l&^^{UwlRK@p1lt|4rp~SxN4UxOMxlxl*0Q;`K>&*Mp+guajWEFIp(sB!0wb z-Sou=c$76AHtQ5BE?(5VYKM{0cCO6NRS(YuN2)E-ouU+##>o=UBBH!KGOy!-;)&^L zGKrsc(`w!e*zYhut#{|$3r04ffXHRGF>!fid(!Wv-RX?G_xV%J`vB&7aj!RK*+?zq zSQ<9>*fEcnymRL6&^R1A=a|~t)BECPR-OK)y(Ql9Y~eF^etEzAs6F>SHS^b`RMb^3 z-f_2janxOtheyQMd-eQc{&;*cm&{$BZ96^Z{`#yS>U7X`f^p*ABbyH1%jXY6Z#>=dM$q{|@q$&?^`(EFVT<^c!>Yx3?C8u1)8l70tSRm9ls;qa zSr+S%wxg-(^8U_a{GS4xdUoH>$ZdaZnsBYAWE+$89-iv!4H2r(^%t(aX0W_awd%ep z(@yIKMNT#AUkVfYGs~^(o_oC!udH?b+S)EGy{c;6%>&0paxc$YVlS(`;mF?`yII~? zFmXS)F{PdiZ2 zR-He=-&<(e_`U6bP(DkX?9@?TBFX^nT)-{W-estYe&vBG}I zjA#|rD~X$po70^h)W6=ub;XDAns?j2%9INRN=I4(R_s{1T7Jd}4GEtma<;3A0}qFo z@~pk`%O`c$nq|AU@in=`_iWm-!{6-L`ww;ss~Ut~r*+Jlr|h}Q($=b}q1F6A9pnAP zPf3dTEq5c{-QP4Lf7>5VqdURRX2$+~U;ShGzl%#wtXF#V>dPZphV9QZYWLiVI=W9= zX{uj{sqXKRWoIf@Z7NuLim}hrfp@F%hlZ0nef%b?P5Dos>ywIBG*}oLaNE7WPTtvY z#>@!A|L5nwdtNK~^yFWYUn!67^J?zeVzGAJVYidpuDq6eEfoFXt!eQj0kwkPdyhEe z9sg=4D;Ml65E`=YdZt5xi$W;TxbGo(0n z9ln=vTXUw>lD0pW4b!T>S?H8AZIylR*%w)yA-l;=Sl4S;_O;9^9sUnNFZ1VR1UR(M z$z2(hYp&)UH$U^(+J`8IyN~LUje4FntiiI&-uoQg z>ix}mv2qGcjtsx##fPP4#Ho|>Z|fCgLX2_WV4&~BiOzw?DV9L-FP?LWWGF6Qac`13o?w5derS2!0o$@=~_ z(KznkpnN_{`LM9^*`q=4Z{8{XwelOoX6vW&yR|YzR`O&BKie#HgE{f6^tWTIjeqnL zcKjDwTHhBeYIIh5$MrzZi`K^Wvo5oT*WTE-!S1Jj4@b^PwmYJI#l}i=rd=`Fw7U3% z{n33lervo>3BIviYi99-toGND-HMkgRF7N>DQLLW*v_fxR}=V!_5IuJHKJQrxx86( z>2X+8XtZ|2yH&aqUfc;jbn8s{m!HW@b2U{P_20~sXu5G{&O!f)9zlm|{;aikPW&l7 z>DF()WumUU_FGqbJzvYJy*(to@9?o*KTf)N_d+61-hDx9|){>ZiW>8L>0H^ImK|&}{!QaxbIamG^>bq3qr- z#Qa|byJjC(x@X9>rPwKG&VQy36U(Hnm7iO-2RBVwQU8)bz`{Vlf@kOa+Y2p13U^z` zi?@GSKj&$VNM@@>>-W8UZM&{!nlA~h)s&65TBJ~|T%X1Bt1$XeujH48)r<7c$(kP4 zIkVk!opEeRV?0mD-B~*{CY`U!-1D+vj=c5q2P*9w<|l1Vf6&^=!nWs5)+gBmUJTE_ zw}cxW4gS<7-5+Ht=rDarT@$lr^V8*3t(Lihvhzis?Fe6NAAD=oxpf zc!|f~rR)4d`8}FHPGI<{)U0-KL#DpxJidDetAhPm%_C=RW(hmF$9qSCajR&-jnCFI z#LjOiZ**Gb{KL?2)x)ytFNIHTKN6l9#8kd*>U@tEx0gNon8SHBL2l+2C-cMYWmWnm zz(-sr26}9+^HJ_sB;KKAi^E$y0yvPkttOxO8Pj`I?hj z{4sM~ea<%JF8P*N6CLyO=%f=B)R%)n^`Qw;bBn$R2l(QSW7J+0TFW?BQ}nZ+9=)EV#Dq z3cCxxYLgwq-Saz^9XeC`FUJ?5Hz}zzVjopmsxAsX_x;$0}{dd&&kD77(!o1nPgm?E{ z%zQCX=I=wUwtFWF|4;UowT8}@Mi^H*OyZ}am5f92Jg`+n_@H=khxuQeWGo;;rsmuKOb}X+`hzH+PQif82fk-FCxBjTpz9H_x%1t1pkQ`G3!<=zsO@ z)@wg9jemt#>Ym`dd-7pM|7wMdiSNVNJy_iW*FAWyxHdNKQNjsz?zL@)p4jc%(%4Gu|*xae@}{aJqRz#@cvPr>L=X(dsh)( zYyI*?3z}JfVZEi!fv&HYy0@Cdd*GwJ9D!=_k4Kn^V9BEv!jq>>7<&5`)YY_r$60VT=FtMc>NXK zlOH?|udF_|n)~^@pLuIrt|`Cje9j@}fk3k4V11`dfy9r_w_LEsanCT@7GJe%{fvFj@&NMUceQoq}1wi*Z+{w!sSx$?|qTmJYnCw`Lho@ zU-PT@^C@9(|l|N35i!nT{Ya?W3_mQU_GFR^y=@1wQTW=d%Pxwz-2g?a2HmbNzGjYWLM z8MDJ$IxlZ^HcXoO!qnJQQ!`)kZ0>k`evi&aqGb%<3d= z-lB&VoS({sWIkETh{SZ=+#|6n_d~|37iJgv|8c8l?0k98s5H4_`TA`~p55wQGqLrF zOX8JMp+wgbwXm(vcSt|Zu=b7Pv&r}~{rB~M0>7H(njK%iy;X{ zM<}vQj`U8gv0Q7J^yHAqLFIVq0-c1!N7_yQBBDED%DVFT_xx*7W)v(7*9h{nxD(Nz zlHS4j?^Ugr$J^W21Rj08RqN9cbo9aBatHlC;y>bxr^o+#XUVpf{k*m84H>>UOAi&_ zJuNM^M_V*wX4a;xq+L^P*-jKmo&8w$Tmhq7(qzu3+sxR_w|K&4h!KPOaHgg9) z^sRenl`MFDhOX@Hs|7}-xZ%9U1{AC9Q~5loKK7W zjiv7Sh~FFLcg@LTy8BnIbDs#qq%)E~((jvxZJWH~VMnWF^6@7#?>0KG{!=mEEc^5Y z^?MGamhAz#^ue8(BVD! z_;!)E?)SormsJ{DgLJAF>uDVSF*{?q#T$34>I$V(_Hn)w)`+mwFL;xwXY)d~dEu(U zBi>adJ5+8>UZy3}^Yz!2oTabtY7`kH_)Gjxp4zncs8krE--q%?j`z>Ko6#euzj5-!75Z|AkH*He zMhZ#A^p#AQT=8q(k_(?7o>nQa=GuI$O6E(lZRWjbndO$fo9;#$SmdOg`J5TK%FCHU z=B;%wHdk2BKmTWl>k_B(U4c*of52l$x!WIyC%eoKiV7IL&6wBz z$8*o&NypZfG>PZkzO~4*j`^Fd&A;O_-S!5aD|ouvcz-`OD9J)vl!*&kIg; z3@Db;+Ie*2&;6IO6;Bn+pUTzaZZKKv*l8{C0^^A>U5|WT=o{Ym`(qF)qaE>T8t2|c zS|9vmmM+jx*FSz!yU={P{{rUp$tN`ueWp$Op}ack(8ud@<%5NtAF#cga(D95?t--+ zr|vy>?}?Y1-PMb(6{T}^-tN;B53g)-ozB)aC*)dO#YocYMx z_gY-&L*Y(8-)$4i_y2RcwrvtOtG_evs-j&7)@;6{=WbZE&tNfkBlkViE|IxvQ*Yc< zHfL#EtG7%oUGq?EjpW(svy!dc+!+)Z>KgAJta-~6r_R^L z6yK3}-ZUxY-kEr-RV|j$ts-ydPnTb;?|I@$S;gTA#T|8$wwsg>(7e7=7sce;l`@1h_7&)yLe@R;XcCL&*OK%wQC zR9?}Xrt#%n1T`=jr@@(oybmZ{(QaqhEadk%g|vU+rWmZ{o< zJ)vqU^Oo&8lpe|Jo)-Ck;@=vP?wPgeTKI$=yHA}D>+H!;IeKx$;`14GD>y

zLzT(Sw4j%<)?0;FDmRI4NfkaXEqh!v+c%q2#mx3j)P(L8cUcU+^i9*r-DHv$!2efd z$)*15GGA(bMTGTU`T2L{y6>y6M$b9zb#afpO;QAl%ef~;PgZ|RP0#dSZa-J0zVhB) zDe0w>{K>yQ^~rjF^47@JW_MO>@I5Gc^T+=Se;Dq6D3h|PGi#_S$%&HqH$(mGcizCw zR_C8y+pep=KxcW1f47Il_U9S*rkbbjIlR3-C+Ty3`?nda`>!ouwejTfZh=vw5Wu^5tnr z1e`>Pq=z7p3tyXlh1R~aRfyAvt}LiDF4FMGJF?Dw+n3ya=d zmYo(VSCk~F`@>gSk@eOiwTh$i-u<;Vx7dI5-M!l*)?(J_VE2NbM^@-3rmG2mZrRqj zKv`W{?b<^3-tPx?sK0q^v-N}Y^p@-My;)V`S1~ykd_Q>W#Ll&8L0hJ3o-|(QY{ z-3PDT?RdH1(tHu!!m}cO*+MWMF zX6TaHGbA461>Q`NNZvU)`G8g8yXp1P@72FQF&F#ce)7e?K%;H{15T#M-2Feb;%EG3 zy_M5eKPzC=QrorT&<3-FZ~J|x9dzkjarf;fhnrH-hGTa?M!sN+WDhu;I-QDfU9oxD8_@9#@|C_4An(;v_O9qDlU( z^fDFA^5!Du5=*~?%^M61bI;H1OJH8KQgvFA{sPHfP3OnEPV|ea9QW;BQOaeqlb72Q#*NZQOWUw2|eiZPNMu z2?0*h(I+;om0ij9%2?$RQ^oU}+KHtqEm{{X<7B2NyiR#`v9tbA-}CDyFXx=j5b=v= z%<|bBZPXp6BeML`H@QC#x#&oY;E1Nkc&Po8bn zf2_&ZyFQs^vC*%b@T!W_8xw!tSyOSL+Q;ATmdUk8AN%bDZp`Sh|L?U>adXz0ux*#h z7Cd)dA-Ciq3}!mKB%K^brFGsl$M@x5WqN?deLBk{=d@5@&%U!Xkw#2Xp?B|I5Mr_C-j z-kQ1YGsDiOGef+d#snX}CV+x)&PDUS$y@L1x3yn@gn^)sh0 zq*^Fy+|J5j2{v1*CYD{2wV3OL-67T^t}Hzv^Xs}kpYG`oT=IOydEe9NX_=AQnPumU zo*6GY{>nz&|48ie4|)DALX%yz7TxhIKYDqgSfBTzJ147@?;hRD*`M(vSl&^3k*k>s)vx)@ zuI*fPG5qA*Ys<5K75JJKl&`+3-LY3!Ww}k<7hTuc*Aq+*|GTlhe3fPIr|oj6k)7LecG{Y&3mNuB)mgLg$37F^RkI|{K<8@^m(t7> zC$35JAJ18G)6`vL)vt!~8IQikAMi@E{BpKf>7DDH)PwJ;1m3aDu6^`><-(hL*WM8S za(4~~*Y9f056xmzF6&x+ZWPkDICy!+D!Emhd4=JYuVu8?y-2wEd&Y%tB0KdJH?weA zH6}BEioR35&ZBDLn}e3cCPF_m%$M^d_s3o2U8cKsy5j!L9zuHY`^As(q|3b^Zc@i@kng{tl017esAxMm!9e;-nL9Z z)(pOEtF7TFkA*4V1yPa*Sfc<;>wRcJ?KOKGXC-`gd?uAA>e0`(# zUk+fsm~+NCzc9b`z{2wTt2)?kuiRJCHRstv&aTIMBrd7S7Cy7cUZiy}x#UsML+!-J zm!;0mJn=5+&T@oAtGgmLYIYD@boM1 zrRPZt3)xi_FR^&EzKT0U>rdCchHW=ymfm70D?CzrD!UfUw=Sp;Ro)X^JWDP^Kp^bO|C(=~_FsKbU$ScNzxU_Qh)tg8c-rHQdOH^h#cp7A;eG&|O^r&Ua&o}>>Mcy#vE??Vmc8Td0*MbF#=Z@sGMO@bB ze|tjVldnjXopy}sF3l*VHJlPBCZ3$r8>1ED>s@SBkskBs&F*T`Eq{K0@M&e;C2q)l z%Fau_@!O~7+4AlZQ`ru&DX~B4{`uW=a@~S8YxvHe-p*8+Ib(NX1^&Y2)4_A%zxv}irI$`{t~*m@UW6iQTfYNHuD%G zOBEv5ADTNUJC#5BR?w`5_in%L=KfUETP-aSyCx&<>qN_1<*6Zi_SHr`RJ(ubSj(Q* z7ebgPGDcqFQ!VAGQTLOakvZ+d!ndJmD)%zmFWK~^O?2I(cVok6$wXhCqn{@m?p=KJ z&t=7RzFHgAHY|Izljm4Y_tdj(0^P^cq!Tx3|J2dQTCsk0)2f2?e3{~t&&EY9Z>ueR zD|66WimADlwZ3y!PT6<;)4bMgNu7&(2<7ZuWY@^UQt4 z_Ew+8P1J$}^Jkv%yce;G`$KuoX};yRSVA(F&hSPWN4ohlh|x9EA)6`f4Awcvgo%0%Clc6 zyS8|y|4o!=+5Py_Lj6lZ%hXP{ed&73w^(lFuIN>L?Pg-;cLVot|K_oE?Jl7mwK4b9 zW(ICtyUKYTdw0Sy(FJkeC4V!9O+CXo%W1Zk*m?cp{cQ4`?l&e#8uXnk{I+IJ*Wn)? zDhl#P9xO9{CRzP2MP%KB6DjiMObXSVmThc`2dwwcPTXm?uPMt|eT~s!UfC$w_u#pm zhCwGHw)|lF{QBA2h(tm5@PZg7rS7})jUMvXO|Y84rI^8#eY7g&Pqo=K{&()o{GFed zH{A}*TR(e6GxSmA9QtRud%+& zkz$-Tdr^c?oo-=8a-qePjvu)X8S%ow=&W>2=&C6zEv{X%c;yEV6b&F!> z{)kzB*|Vi9*D`VY&)rkDE$(4zTYsw5_tQav$IH!r+N@6d^=R&q&l8{b>~A_R{$R~v z{b#2Z@;KC-y&NaVywXzs@}_53Z5>lH>yvB#T0CX?d$qX2Wl7IuVHsUL70uwf18qA_ zY@QG(6Bu?x{84oI9n)>H%XhYK*!oD+Il103qMXY)XtuaJLqK+gx~i7t&TkykiUsD~ zw`2KSs<`W`6PM661CcA*zRYqJ2Vdnm?fDrf`ug~>Zo!UF$!TIZ;e~flt`Y)I`t+qWtwd>wHyVIwlXI@^Qo2+`aqsa5SH9J?tn*>Yg`G*(C9?$%h zxc1ccjdOm?IWHh~^}Rt?;Menyx9NY;ubjN8!7BU=kK3(dJFKp)PAuALJ?E^X`u3^+ zJo-{SL?m~l$A3`VRrS^P^}ZvfmotCAmWsRBBKa>$Xh(>S&mO^biaKu|rDTO(Ijr%e zuawu{aieLQmz-Sf>sq~3jHgR%O-u9mlPfv*v2@cB;4pL*KVPZ&`&;>o^73%6kqT5 zEB&OERF%lvUnjOkzBQI+YdLdbtA$posm|36T>4YY-|RC!@+D$x{J+^3d5^>E>G`MOZJMRgbIBW?cV#R()MDqcVIRkLzk?))|2_&lE`N zDBiknSg>}P#Imz4D%@Eat(>|v)AJEyMbc{@ zN5e~vks{?Rhs2LgYI1GKO`p*&9WVH1ZsA|vyXQ6UA9Hr?uva{|DL~{*yRKt4-!B=h zS+}pHeyL};_HKWxHO}<#vkpvO`tU^Xr5j0K-+kNu`)XcENeKrF*ZXPf){3#kef$$x_~Yqw zHD#^4+XSv!@Ay&i;Og%mS|&f(uSn>ASSYfTjZ5Hdw~a`jYDVt+eM-v(&QDCMIA=R= zchvDDyKTOU#a2%AXik2r?`yMm$Kh33EBwsnXQ%4@Unz4{Yli(RXV=@WfATHS_u2iN z{YU$Z7t)svx9XfeY9E#Jr8mTE+njBiXYoJTmQZ{C_wD`m+Yii?^6@xu$Ln>`if3*0 zHLGvFQtHY6v2k6f&o8YPM{gdnSa5E_&WblCXA^~EqoU@?n>_jYWp(Sie~(mU?C;4G$+~^Z_k6gfF7RaXgl)f9O&5^7nWn5SxV}Dk{!N9q z4@xH7-o>S~Py5(ipWJMh6|3gVj6Rj?r*kql>|T(~_MURR4JoN6k+Qnp3q4M!My#$& znYCfb8IQT2Ww*N(T#(IFGhO>Yp;0hLe9AU4UeeA9AvWghnfZt)$ z-Y!@^mD}UvFR8n!GnSi9ynS77eN+4*Wycdu2RCeU3wgZreR}k=g}=6j3PyGIH0^%M z!{u%IU42c!g^6~CK})`6IZZg*=8=8hNL5clMS5AX?YmDC+P@^<7Fjm=#|ww+2M%-{ zakN;mMo8t6qp#M@6+2ED?TlIYOvqAQ&inJym1=)_Kk~Z!_8XaphXzd1dAfZ8XIJ2c zE1DZ>JpVO(`w;ECZ-?WB)neiI*XF)mZSLh?v}0a_=v^f?1qTaRV~36_D;X{MLmGPa zy|}L2Cy;bu^F6P_^KWE11h~yIPf?nw#pa!M!p|_Ub&9T0XS%%k+WY!B5ih@=UFdb- z)rF(Wgi`iyXPKgs|~JyO2S_%zIDjDy#0i0;_mV= zy~<6p+X`0+-jz;~d~;w2`;kz;GkxEb8E;?74nL`QMSLr#gO9h&vW7!Vrp=|g$*hk3 zr+b@^&cA%@+|!cx9>3mQs4QGCfrZWg+nUl0sV|wWW_|_bZgV#*O}=2IHup?gm|2|6 z>eJ^64jsHzv~EMpk=W3OyMn&|dARj(FrUXdwh4tRz0UNgo_rOsexD5Q;#t?1RCEW& z=lqlFv|G1NsoQ3MgV;vJ^|vnZ#4LDyGV^l6>WvyYmn(R?R&NS>=caq`UPO%C%%3(( z&kMTxo2;~5Gh@-=6AUg6CNnQjS;r-GisOo<-a$sQV_hqEnm&p(eHkHLz1Se3tyT9> zg7ULjg4|~xGi&5Xzp?n2vT6OFUKi&pM>gASY>@o*#O8vK*;0=Co(b*2i9v>k-Z1Sy z;Buh;7w5&Vbvn0~g=P0;oN{c?sABRQvpF+`^Il0- zK3hChi-Yme^(X4lPScyt?f$>;hha~gYv#n@xih2s*=+?D?z}BKY5m#@*#&i8x8JE5 zsyyAUa_sGQxsb3lBMJEri(Ox=%AHqp;vY+3Re{U#YT=KLhgW^5j8Ff#Go({Ot~LGo zI+6a1O&@sI9hH@N92%Lh?2`A)+$}x7bY>n@k7V?@8dW`;i{a6S6t$WglIE;)m=nHM z+!TBk^iZ&^Fu1uw@1}#JqyCgCKI09IA8fzG`utwk7P!;J--)xO>E<=I-A=7u7S;3Q zO1BnS_r37h<#KO1|I-CU{PJRqkN z<%3M7W_?w`d$x+(B$pIC4^oVDs(1S{OKd^+zr#A57ri&K%59ewkPl$wGhf>}(aYtJ zz>8h^J};bg+*jz#4%D6YTQx!Rm)1URZBFzhu9!-L15?tFKlc z^}IXto=%jxi-_V&t9!-z|Kt=qd(|%X7Ut{w(sHhrXSiuo2nDK3-_~Mo^?SYh zhn$P8+!qu1f@X=dnx9HcH<9!#7S2{WS!MpGqv+bY$MJjI54?J8C)fCR+18Yzx6;Kk zyC3K-{}BGz{E*C2W7RnJqsNCU7lW@0G__Z_oUTBy-)PMT)0!lv9omYTX7rfcRTf$ zs0ki_qFy}3t9ALL7ksj6zK6e?`7Ak99`f+tmb`e;NjzQ}6V;67X+>4f)!6H_Iq*hL z%zU$ZhTidw^)1DP^<_blZzrzk>P#{f6 z2jyP{qfdKUP5CkVu*$ND#SfP9Y+>xKcp3RN@0PClJc;wu-d2~nRhVkMxU?}<`I=?X z%KN1?DZ6>s8c#obHA1%ibtL;Ev$Ma2WD5%(E#D~|Q?TdM61AGQlcy(32=6@h%rT+x~2^W3t zdZmRa;!cXix#jE<7Yo@Mu0$9AS-ts0i%RI0@lRElg?d^*BA`M@|1Sg(~dhF2WuQ1!p>HU*PwSX6@ZO)gcI;mM-|BG*LiT|-@`Q*eIjfs;xL6pn3bT^=%X zZAH(k^QOETyiRf4Ju&CqOWkXqB#I}$xf}GuwEFBsDQ6>twPEw7%o6(LCZuuh>q_%& z`Ik;OMyzC(Y}DRVQ&rKjKPMtdhjH)UVry{oI??GaI)C9mWH(iz&0{`bH&Y!;_N`ZpZ`+yGB=z#x`x{YhsX6eq{q;I))ivNKn56zPAwRAIlSDF&wFIXz6GF|nV-`1UnTEb1-4z8Mb zH-KdgkAt$^{wrO(lO}9QZ8o01-{AQP_QZLn8vonsU%0G_3fkUYa(aWL#l>oqW%vHx z2sE)uxh`MvqhY$M%^!|yuO)hRekzrScr>k)L2c^M*$cL_|9dpAGh3;OW&hDY9_i$c zPkSW;@?>}qmHIrsZ}KYS@pT%d|?Lg@oOASUH*Vlf&H4Eal6DwyY3XCS?2m z$EFEE9|bPh^KCJCTcY6mYN6Y&()nLsEXr4TcU55bh0i-oo=#l&V5W*dSn@;-YfmHg zJBt{%pSmOBU==)P&4j79o^MNeS^3FR=c%R69Cv|egRqiS2F>NO)qJ!X+*_T!=f9{- zIr@9CM%danej4fxagP=^M3~G}`t;`7(V~bQKQ^Ze8I>J+xJ(@&&8xk77ZGf3jj$ z9y7mcr%%y*?rrGFdxBl@%d5k+{w=>)pZ|K-EO8~5@zX0GAs+TwyF8`|@#tB#T;L7s zTr)HU6|sx@@B^ta+&34f|qCkbTrpAN`bpdTY% z9?W}qrG(JVD}TzG?60*uC^bCYcI1DO%*@LyyEAS~Hrvc_tA~3Nr}q1%5DzPrZyf(` z?2Y^=(Nn!5x4TiJPqD;7x_?Oa-wYjay9+@5WPb3m5ko^4;4ZWJ8j zj+q=2{pQ}~_s3XnD0}8jj)``?Sua?Q`MeRlaE( z>YXDWwBMZ1Czsmo>hY)PiqGe14(dW5R#zPkQq-3GW%_K7``(AqY?H6b<=&8rji^3n z{Ilz3`{uOD6X}b7v}ZL|oaDc>`2Lzx++DuEt2WM1$!Thx*UtU4dz$DeYnO7TquVNl ze&t@<%T~W(-M60tQ$!{pv$JFYMysSvL_{~@OgU~E)uQ}Nl zcg%XM^VVl+)DdOTGpuHhJzJ}-_qJ_1F2x)w#JhT{3~TVGrlviAq~G25;@De|TP~oW zAjhGg@aF$Q`N`!)TYhc-)hIrTtxO@cFO_?boL)|}%ZgPzv(EY?Nf)-a_V&mb9?Mzj zt@r5Y1k0tCsnrH=a<4z+5e<5v{O^FG|B7`5mo|n5{5sBff5px(S~Cv#Z{KaZKR%st zdw)-+QtI z^y?|=hZeQW4^K!ve*4soGlFLN?_bK^n(w(#K9*@>qwoHsi_STf9VxhFm!2`R{KwIQ zsUPyHOaPPDkt zk-YDhu=@6R&l#1sl|zKH`q+G|i)HUE_B9Wm%V!Y0&Z9hj`QkqIJC zL@akso_TN4thFbvc?m99#poYC&G4~w=e0vtR&Gh{)^<^v7Wedz9$3BH>fjX4;#;}v zRK@1K7xk4AqKw{Ho`nE4*{UZ5DQ{IOCp*Q<7K(u9ti$zA7;U5@TjHf(BG zt!ca^QMI-0&cc1s7f+pXo>K0(`OBK07aJ|wcU}vc&pea4edaa3D93|~-6#7mFCE2sDlPHs>gIJ5*^dQ(Js-=*-utC2b025H$2VVI*O%BFd1N}P^>k!L=(}Z$5*M61 znNs`o0^3$^-yg;2w_B)R?~Ybby=(AGZ|;<{KId*M$?)4d&#G(wbN!{xp1p>jmEUfE z^kRzBui(#HX21RLmRIl9rCN*Ioj&_F9sB?8k+(z7mPuS!v)AuyHhj3?*eCazL*HI# z>OX&dW%2sfhu48do{aF_xBSI~y2*2I9686N)UZF3Z|=W0T_UT^ zv)b$)9zGuRE4g36^a?}c1pS$H7c*`L_g|hj^IG;^-`9+uheLPFnBlPEw%L8(Gli~; zvNz_=IA;30XGiqPvZ!>%^Qrp0?8|SRQ#_D%=o9O%S!G=Fz8QZ;A756#J)` zKfLRj+giw0;ymvjt4%`ud!`0`xitq(*RTF8eZt5#vvEytSkBby1E=^-pNlNizN9*h zEh!>T^z0RbyqDIS8D8zn+H{3|>2m&pJ6GOyOGkZqv4iV{#@5BriKj|43KX;)Vh)A< z5w4aH`1@zlby0!mW*76WR&7@O{A__OQu*Ooi;+^msan9NW;|^?26vDof?U5bAgJBiKXd9~^2z6CG5OKv=q^;GxzJ27d| zvuCMW@2s?XakHEM%#pkcYh@QIUQ7D z`hlzd_(l27W76xsdG~d*913K)d-DA0zYj$%!Hs6IW=j5{QIn^a(dN4v^p^r?%-pPM<)YRqw{gNizm-BvE?V+02jPsP* zv#(CLX)(io$?OFa60cXP>ak3C{k}_i)(Y8Hpda|C5i-|6O1DM0e$p13@odw=7<| z-mm)GwBsoUT@R{GHTHCTy20{j#O_VIexw|l7y5Nt&g$QrOW!-Y-o6<4A}KKh{l`a*R14f9pF# zfeC!=zJCqv>g#jowYY3N&zoQLqxrv={M(S{>$StAmVUo3tyaAE`C`>81%h(si&f89 zX@~4HPj|FgR#~6HEqXXt!qD-D>A7jIR$KmBRWB)9<$gRi*lCA<^o(s8&tBzrSe)Eg z#^Pwa=vh^TgUj2sL3fT$C_T5%EKoBcKr=_teP{QfYs~u%-mNx^4Vbyfpw8!5JGbDj zmD$GD3o>M0+%sAqewy?9veb>ji}xo-8UEiBADi%U=Cw0sb1zTQv{!n2;^w56|Gj=5 z|D4V?Yn#=lzBTNvGaFJ)zq|8;t*>E;%+r5G`+VH*eXFWJI6+E+YW z7V+Qm*4!n0FO8q3RkHQG{3kVqM{Ztrf%+Vdsx{_2mVK{pJ}SD%Xxj^Bjk!tc=*(T;6;5&-V zMVa-2Ma}^WzfYBqatKI_S*-W*9f11Y?n)*tHH$H7^>iYx1clY{k`~UiM zYW#}bmVb{#{*#?r9BOlJ)pF5ex{XY0Pu{;*61%Qh{JWjm#k`d}dN^dlJ~CCW5!2yz zmeNT{+NJ6}&A+(%oC;b^7ThDK@`;o==TBR!ft3Btur3;uG_7^uzj?TMgUXCIz1`DQSL9Bc zlfzQR@!p?l@|!4Q74d8D-tJRrpKG&E;Jx0SPPVNL0cO7IZ|+JhKKW@U%cPaBKhFtz zto-q;+Fsq=D>a1zzP_<8iL)?R&HIwMEHwLjP`puxd=G?}vOaG8(EVOSfWPhHhl+cJ%I9@?-F3F-t_a%8tZv)OlAqaGy)SzGK6fRqV3|`Ay|>l2y*uYC&#SwwTy2f_X0P@T3P1WfqH)!N z{}sZwH54abRS@2pw8{DIi?!DOHz+RqGpW_dyW*71+tnw&zbcu~{-De;FE6Tlm*ea> zCpTA%BE<(4%?}P1D5*IccfIaeZ0PRld2M^A?&Xf67oJ}P*Bq&N5UF~qIp@TN-Tb>( zPL?m!ey{FZ!>l~J>4KG8&c5zhiQ9SWvM+@3+$t4RJgj&wzQ>Mn@lWdxX0~F*PhBC$ zH&-Cd3i+fzwcqJ#PRQ27P)_v*H)yG_)7@L>;{C!=rxb_3b=`-57Rh%kb3ohP? zoT6eAQ@ms1tgLOhr)OL|X zJ%-Tt2Ge~*{hTdZZzr#Mw&-|-#MHEND@^@b<~?G67h~wpy4CaaLu;-Ts_ScyykMK+ zl~Oc+>-VpxvnpTxJN2|LYMWNHNft*%sITe59lTr*U)=Na{`x`9`|qx4YRfKfzP3cp z;`h>{dprJUb56b!_IWjX-MmdJt~*)AUK84OUL}~-%6VbO15tkkUUi1zi57R|+7eIc z&(wR)m+qGS?nCe^x4TR~x3`!Eyn3C}`C*^OmD|gINZg$?S88cfhwkcM-o)ZQ?ld_&1xh+tle3&`pY%K3L-j#DF+OL`;UbVIT{Z{Vt?MtWnDry*o2AbG& zP2OsJp(m5!?5l{vO+{aXmR*%lliai-e4~MH_V-&^Od_u@ZaMtQV20_1K>3!)WBpSU z3OEBQk|h&3R4+aMF>C%zv;Czf@7mAMy?WHO{{4hW`?wtb^}am+w9caG(}oJ3=8SF4 z!tv#kmtWqPGJVRjLgo33&(E}f<8S-wY*=RZ{(N3lPw8tV`i>v6nZ6q>u2Phgd-Uby ze%Vd0U+Yh3uzkJHXvbI8OPZ30meh7``>Ev0ps~rJ^5~v&&)%ITd9C$*mG2A}R&mGs zx5!q!C}>wJ*f(%`n>cCG(_cqyM~C?`H{j-WLR}w9HaJwI=VM zcXB{>T|mjyKM(m~*h6^JAGsec{QZH-YE=^h!KxpPSW^dFIXJM8o|V*Pe;1 zL`rR}oxo`r9P{u|U`vPd)pZlE&e|xXQS^7-&L>6J1hoDJAFZApC4Rth#pCDvZv*wi zQoqidaj?M7a+0)1y=5hj*ZIS3UX!;*S-EWbe9)%)Zq|COt*WzkJhIT-smGVTnR(Oo zd1@DJW2BAwOr)3&i^jQb_cil;_v^;)GZtlTKh`exZdccv^78Vu%I97i59~<1EB<~~ z|N4(6PHG2b_eUS_h>2bP?aN_N!!P|8_eX7)+OC*w86Y4az2Se&#EFY0|Nigr|4;b8 zaKj1A!j9q^tIsNLy0B63hR5V5YJ!fFLc|Q`Pui>YR(`!u@SNRqIj8(vw|9w!zG9SD z*VZo)>y*y-etNwv>OrOLiAvvFPnbS#*sfvtkmIq#_Z7QuDNR#rn*7W0YjV`K*fl#A zm^%dClv3kbpYp%_VMV{z$%<#|B2R1BpR)26W%(f}RoDJ6Hi`SBC{ww^WLL4~DRZEcs>Zb^lS&ifX=f&E*abEp_& zz|NJc-Y8v3;dJf3bo&0SUxkmYb5?lnzg5-&`LF%IUGcAjx&QL08*DnDbomjxtD(eNjpJr_baY?j6@2DVkutfqLTlHaj47=< zr%a#PE#7&@D|K3#)b6ucOT(gO_v~F4U%Yqys~gT zCBgGj#F-Os=5)q*8AnMNe_UZ4UD3!ndm{gyuxyv@{g&Pmuf+^+SA-pZwedd7{F(8& z3T`V66RkM&Z5nfT%w18o|I9o0bCco^8omrXnc9%IqDW)@@%|as>B6_8B`-9E$jF@y zUTt-0fltES4DW|cv$$o=m%q&FyL+_x!`_SOd-rsxD-^6wcFXBYmw1^wuWRM!nG1T) zzniw*cE;zHTVI48T$-D`({O)uo0L@bCZi9{u6L4!&YoeNnBq76TzGU9yJutm!*dD$ zR||*Fu)CYI*n7J9sx(u1z9Qwt*B8zeklMLY)^gsw6Q6HKZt(p0M_NnW`M?y`@|=j` z+vmk)x@`Yf=pK8uh4tCSZl~=g8)^@8`hL74ZT-^b*Nx@}*CpiiCAO^HekbYNF7=^h&`ZcCR3x3Dbf-q3#oH z_AO{N3vjzwq558NR`qE{mfEfEOe{`^t2W4nEYHvoUVI`eWJ%8HdA{aHY8>yr_|a_j zEopJ;uqQ}d)52>Ah#{coE(@q;%ndB8+7hE*vXx^A>y|_Z=a9B`J_F=!j zlao$!^jercx@`G<{`$X)1~vz-TP+s7!8d)oQe~{X*|D8RR&p!z&3zpsZ08<#cI}P3 zqMipu>LyQiKh5iS^!7K_j`rJkcW&k4ie3L{?|Z8j`KTJM+{^DjO{tmL{>1uGPGGnCa%@h~8r%4t@o%@DHv6sH&wHS^Cu4q~ z!}tG>-ppN8e0Nsa-5Zh{!G{@?eL7|gIn&@|$J-Q_?0?mNBkphie(=ug4=>l+s$X68 zeb?$=S65q15}9HgzW0(s@TB7lf3x3sHYxaDRxr;@zYQC|8~kZn_;AMT*#u0lh^vv|$TkUPj=V)9x=X#Rr3N9|k;;j6- z#3kG&&bEuo4{NkkZFjiCHNR?0h+NXHO{Ls-4eEDmckh|Z%Fo+3A@bfcdyP9s-*om# zG)(+?pw2k|^uf2C(=7NV9EoA?*>)s`NnhEjS?mKh^OOzxzx+K9uTSO{$}Q?*J!1HE z!qlxUFRtZHc>U7Q#8z|n!kV+MtnL-IzFc@Jf=ycqkHBtHjbZWY?kxR zDQX3aRySogW!)0nwzc!^E~di;*`2CsJg4WM{J8ae{* zV1Dy!-VMJ_uYW81c4q#y*>Ug8%8#+XauW*M=j=SWd55a+zSGOq_S>CfUitN1io=?Y(2PEW>IS=Yp5>*Q#&(aI@a<)Xhoxl1?9v%r3jM zY0{ZFSJG9o|9(94^`g|*gZ#f#R3sP__p3iMvZ(nxCux~lc{EA`dtX4Ofpk5xN&U(j|{giikSWhpE5tz5(Q9Sg9V`RQ}ym7+sQo2}mXTxs(t zVQ2o$_vxzKxx2QUf7|XRBxJ417u@Z>TdC`ri277<#WuhHyTgRvpT2kY)633~I>is` z_?|8D-+08M{BbN}gYiMvCx8Dv`JXQ+xAtJ#mWS_8@Ui_l&*`UHsl5CDn{)oBzRc&+ zapOx15b)dc-gmKD06#-ZV0U?=+A0;5W7I0}IWKtHf57Se=-0{&c`q&(oWhTI)VywstnV zX4oBa;+XjDiRT&*X;xQg#CcYVo&NV&B$(PW3wFOa?QiM4Zd0htf0flQ z_78^qa@_i&wGEQd+$AmO+)#iX4k00y$20 zp+Bw<++2|9`>T{Tlk)B{w}>JTx3b#E_0=N;d5)7Y)ka3!yNhoRXd}u9|}@D z>E2Ug$+xv+v!=stCjP<~J0Bw`Pzx=Ma zS32+gQ~L3(u}q|ly{!7hY1bt(JbqVfIDaVTdFHRC#@6q)XG9k9%(vNWwAMuXBva_J zFDxwK+rRGntG_Ap*vmV2m3KQOuPNwRe`T{^TIhzN{)LI{CZ=b$tZ}+|{P2pf2W8(r zJ)AXPHU4#=_L5yXC!9>gZq1jtf5+`PbJN9N+c)Nv`fOl&Zm_=jdghD8pDSZpFFyU$ zS<~UylVxDMp4a~k&&=gNmsQ==@b3L1GxJJNhHyk@)jt;D#c!_W9{QFrEA2~wz|9&1 zv3}EIJVotCW|p+C*wa$Zuyc9z9zDA=i(XEgBWS+E?x@U1{+6Ae>|9u5AFpY98Fwoq z=TCclhI;irnA@hjUVb!$`A zPwG3xUM1h(pLkt*w(TOD`ueQAJ< zIr~nKZoIAc{JO%kZgoW`LH(RvrfC!0Qgdg_T-@!l@?uWb^($*$wJ&~skk#Icw6 z4#-~IUmvBWUVULt<|4a$_m%V6D<{VWi)>SVqFS!$BcpFSCyHm?bjc#OdLBj=;lDQ* z??1uNQMtjr-{41Q$KICAMA!TydzU;Ye0-eq#GZ-KM&&bpWHMEDm8XR*mRj<>;@tbG zjoefAe_MJ$vD+m1R6ym+hKA@ciP+gEy0!$pT^M@T*!pc={xiip8K=DF-ARA;f5%Dz zwfyNbY)ihS-}q?qI#)|7+DOgt)bYt1PaoOTIOFMy4Y%LrJo{s2xU;75I%9CY;q0G$ zV(VG1CD+-VHc^V^c{M@SXM>9NQa!KlDb9VHwX(T#A8z0L= zDu0V^tgut=#3#DjZ=cjWrI%SKEL`lmStk6}+S{`Ztn@Q8@6|l#@mu)fM5px$Y%d?J zT)g3@`n+}f4*q4`e@WG#?oQC1{RLgMo-qt>`S#>cWIY4#>Djf(*Haov5Z$@Qm@Ol zM-z>@i^Cmvw@O79_cnelPW$;YQu62N#@7onKS+OjoNXCDx1ibf*b`UrCs&@ZNjk3V zvo`o@_d{pH!Al0cf8X)G{rK|91-6a90zWvco0;bQwf(hu{?|xx@r5x{wT$KT7JYHr zFMC*SWB<{h&6|$(ylPzZj;GYEQgGMgX{Wh-m+Y5Xd2n$?r+UFphebIeOf54fr}k7& zUtAs(>0Ei&Z5b1DN$$G5Ifpm5PF~mY%HqYQ4GGOJ=51W#7qfEJG`&kGxOD=S_7RicM)%FH|DVd|ze;I6L-qt)&KC>s z`^-GK=#%NiXJ-HX>@vmVLUu2|zV=RkzYJ4Hf5Pi9d7;f=g=|qPKDI?>=mtIa3SmuJ zQPzGvbW5{pxwO#ln;JXv4o^?pu=3}Fw~9rxB7U!t)z=Jnv67kOn3D8*d6N3J)6(bu zXtV|#_d5Pw^Zsqo)urtBg7#f?yC+u@@cXZ8z|XcP;k6zg-9k%pmwn?qwogp?^r?@5 zqQPs!7awDezZ*eGlI=-6CJyB7jfg=%YEQ#itCz zt4}%q#Zz zq`dkkYE>~4k2`w4+K_3y`;4E}inSXdy z?349o*RsClo;Lleu7^YHxuaeGceEE7DD3^Y>Q{~V_Zr(h(RXJnE#vvQ=fKS<`#{%f zbt|Sjx9(W78pgJ4Hd`qjCL-ls+54!%#e4sO*nPq3KW==T8b3Ma`>ErzU!FMKd+gmJ z^_EPj<;u@ZR+XHbuTUK+-aYY~!kGy!2VT9-Tf}vO`P&Zmj!O*}oDS5#doXnYUtIZH zN9BNn{4*scEA(u(XM4EG)}*@Q%%=sLgnf+p?B*%(J-=sn&Nzifyy4DnhpT6&u`nDh zXYkUFu-vqp`3GCT6svWoWbGE3zCM2G!?|DjTZEs@{jV8xhWFj#-)^jijahGJ1y7Nf z#g*PKc1UP_dDc78L!$Bh#{4~P+OL+Cxu{Nd*mG?9j0V@uZjUF`iEcV1dtyQYkG65O z#(T46{=)y&1SB=>gBr??C|yg{P}twm7NH4(~azJ+94n zdSK6z%#MpHe}jZsw`ZKr!hs#JXQJ_-gz0)9>zD ztxizMOrO=8&T20CgX>sp>j$Y~8P!EcMYgkezmT+0lDxh9F@rhZg+0oPc;%T3KOAxX zaxl5TLpFG__63{Ii?7VQ7tXQBBGhp4iv3%VNZAAO0q*JXTDVCjBCmA~E@C0+t+CmO$6 zoU&)(y}tn#dw=o2o9;aM?cow$zBK-elQ|FVt}XDGCj5p!enp?~gzvUn|3-vazwoa= zCw-Lnlh^KZpX}iZ4<^mZ2q&bhSp=j)lPi=(AfwOiS*v2|TbIA^j)Aa3q*?Olg; z|N6BXnsDFsF!yOW<1(*sZCr!>>BXN)IFBEh#q#}x%S#^B^KSz7aGjX`N1W42zxMLk zf~Mr0HJ7FaFJBNG%M_D9Kq-o;v?-PQIf)h`( zKk^LJoo{#e=}yrb`XRA~%1mL;(Kr~ArlQm0riOL*t+*IN*ncw|GM zq8{Vkgdcy;KV~>5?zh|LeyXV-um!c{F%I6OH6-s%6_kJJ7xIE_r&J!H~mk$N~rI@ z%OlKeec)iMQPYlN?~0tx&HcD`)5kzV8KJ(L|5;QMe@{C<|Kwa3|DS9H0>bv3>^JX; zto-tLnpxBYXZHp3T+WMBx0oE))?enuXm8B&>1SVp((0D8ZmKtfF0WbL_A2yol&+?f zmX7Jkhvd--I@klDF!%r}>#&=Ss*XuR7fA;4b`*yQN<_^!@_*!hZsF ztKR(B_&(A|8x-kVccZeX5iVGnD{I5jF9&S*1x>WCk>8YRSiABWxx0RtFJ|-58v*r zzBT!8>0I{!_7bxj3-`(hCiT@@-cAcNlF?{tHS= zf9!EC`Mhco6UWjCzh8NrJCJlf^IPTLt41qMoejuedZo1Psn@yu*49lvagR8eN#z%SbH(&Gq-R&1Yw4!aGub-B*71x`tS60U7fYU`JG$lCeM!>JjB#xu0Ao?86BHm5@ zaX~3;W1RQwdzR=T1+TdfAzai!SxO?J9Kn zUA^v-*z{{$FKjd?-&gk#FR{5jYwD~@y9b+tbF5YFxJW6uie7qKDYHKMgZ|caTX{M} zi}b!*KAWb#=JdahR(~&)d-+EfYwwr3#$K~VkM;1IlV4u*PFe6`#)DMNrM$alCK()! zxV^_Z_sp@EYyriU*!;<538&ZZGs6!w zDgN_qHLy@iSn<^@#&U*(gGI#C?v4Kw(-Jw& zgBt!#7r1Zft~hw$V$!VTvTr)rgkNrbbH3rRsNuGiYW5Zjb0ijKozW>{zU1>E?1j%p zOPv>NrLwG9R?Za%)GzzOP9Sr~X{Qzq-jof7_khFYjYl*qUBD z{qBt7kWSabi%T<@63h5d*;XQ-}zfKQPA>p*xn0;?fb1J|GH}Ze?s9k zhDX`XbJjOMTDyHilU{zscaQ%p@s}2txpcFuoJ+JWR;p{fEwa{fJO8o(Z+&GJ@wI|C z113B_ev>2M;ViW~GZw~9%@vgW^i;cT-uCk%nlh(U?@zpM_(-@k{&DomgB6!TrLuJb z=7lel_;cw0y2U|rHwHX7qUL#|f2Mz{+;kbA>=$i@H}-D~37i>tA;oIT#%cXqZGPy! z{3ab~ZMZhk&?k3uZ_Zq`r7SPcau&au_f_HWSMTXruRS9Q*pG=ETw$CN{^U?JZ&!a+ z_y0r9S(A8cqz`iXx|jbh{(JA^^Jfp*Ql_(?F?s&%TwdtzO54^%M%!&igZvk~kaUS% zZ~xrn{&i=mqYqvmUbJ)3v1wmEo=l$isPE?;`8#hvpQ&=tx@i4rW%(4-+jq>TXQk}? z|NW|`i>A@f$`@);7oR34PP&nGBZ9x@Z@j+DjhDZ;>kYKFpZfVLa<|aB`HCt(GuA}s z#NOOIgXM>VlJ@L%?`*S-Ip%w>yEcvG_MESeYSg2D1uofJ|8K3NfP8+7ke!6U1S=DP z2`B7%YPHs#3;QOP^ewL}?SH&;j@Om9Aq7_g{=QgfzAHC1B_%4VXRXwOr99lP%vgCp ziEeegt|-N|qCEF)@42&+o~I|_2azFY4PbeMcG*0u zNtfSzyYBkW-?fLocYpK}RoXN8*sKq24*BP;HywGEaJ%0ym1pt22}->i9-W!cH~-@O zS=D7dm3M5O9Z_u)|Kk7f(V0M#KcdHvS=TT3xN*}XMSOwvhc$fbr9hT9 z@zOTj9F|(6D=oRHfb>0Jmy+^kj?Cl#*Vdy3Um8q6*4YF>aXWtemFLi`N!I+ z1=ByyT+O)X`1_Nqxx)Xv)7r14(8qtJo_9DF@5Hldvki#R;m2*TkfhF7INjNsPB|WgALi`K0@aI z9g>7{q~4Iky+IIrIP?<`YqO<&bC{Yv(Ku>vzCkNp>)`ve(Oo4-!( zTQyZ%@rS!}?boTV+-9F#baMKWtgz0r$rmo)?@D#+G;ezE=O*|4pykISQ~IA9aLxGg z^_AASrMEo(to$+C`^jO>0xJQZ^I281?{Ae{-~FIa`R~4nVE5)?dvza+aSEjT;%A>OG}QPn>fi~yNY6eI`e~TvISdP0;fOL^$OwpQ(ovK2#aXTAN)}~Dt}eN7di&echvq)2p8v(k>(0&h9-`ajymp8r zYm~JJzL>NkQ#eRtf1#A`X@x`o3Mw0C$||Px-aZiVUqxs40@%0+)~xm4J{>#&RQy^UP~i!wbrUmS4Q@QcIh!{M1P|NVZ-`y*%d zT^$aA38qKv-RJ-R{_(T^m!4PC{%lfO6*u!#=MHIsu=0?9iZQnnEf+5Ix4FTg_%p{~ znWNh23Bj3$Ze`k6&c9c9GcobRVl}4CZ#OM{5@ey+d{gTEta;PVUS59PhKcdP)2g=* zJTenZBYS=r-i-IYTK#(YtCks$-pIZGlU-td_Wa!H983Kx`}S?S zv()~eimboj(yDSP_U%bdlJe8`YHR;xD!KYm-RI?IFPojwtaz{KR`SZj34>o?D=}{ujD&v1qU2JNk*yUT#5?5EU+&mqUu6xh2T+LQ# zx};*(|D@*nz2YK_V%%>tF7*aIwm&y_zjM!{MO&FzW*@v9u<1hGy=xNLMT>RIZvKsY zmH#dB(W|Q!Vlxj%*onO}j5@aRamLwDtC&Xz;}6(Avhdz^v|i}g?N^@3*X_QaeZs;RlS^)!r%1;#9obcU-eo?^ocmJGB1PYPK9+Om zuA%qlsP7C1B?~7d@wYg96k=Ippz&$?mGz3*n|Q;Lx(a#Eb!B(eF6BNw`IvY5?t_UF z{*+zo@%!g;y5Q~|C8m&M1vZ&@g~gp;9=_&V(=xkVV)m+C)pH*h%-6p+iAidvNRawU z=gR9o3Wgfa&K0W#pM`K=&dqIquvqn6l*-X17b4{n^(QDKJ$|}p=H*ABO8t{%CvOv; zd(xLDN9dK!Qig-OW{R%tI9d3>`iOg6zVhR$6wgOro~)U|E1-Dw%EFk`W^3!(|GS(e zR(H2D|Gy{uW&c0R#BcTQCj9R^C1up7l{Mr3r*obb-O&oX53cY}X*?QawB=Y<2dC7$ z2L?qYD^51({5`vZ(=xL9`(tK61=eBRZ z$)`P4H&L-`=@OOc@8|dLJ3eRr{M*?q_3`2_>R!L;nILp>LhA!*H}00sCZi61^@EY? zA4@Ch$pu;dx%&GeZKy~4FetYmHUgYBY z$BA75?0#WVSDh|wz0H%@vxL3y`HaS&qb@!4qQ~dU%^*=dZSMCgy zYD)Vt!+7W6BJ}{X4HpF!5BfhadHX*jXl6lm(2I+wR@6t^{o@MgIj}NycT=LM@1zMz zJ_)BeIi?w$WOP>jyk_Yo#>|CLv!CVOT@*U^Y1Cri5~<*=2X$yJx>?n4Nq2)Ywus@2PvI2tNMTarKyy zclM#jr{0+LDu(UxF&*<#xm5+u4x=!_Hga4R z{@S_vk7q#X(r)!X)1FL!x#9i_3BKeVJMXIf-e>pIU1wgkw6kxF=`rM6bHKW@qQJWrT@*T2x9&-Jg_Y3sX-4ZJkLS#q_-ISOZ7x2C zGhS=^@Hu^0$32UK&ne^@cjM!lRebNNey)4JdY$&gMOlw-9D3P5>38|tXT=T% zPk4BSrxrw{$#Z4x7@d&?_v^MmYv4J z25&SD-wkv>a+^ExtPtOB!(%SShi2|gTz2}w^2HApubvRL>A>OsG$#I^XRjYkk2PMg zqWja?&AVpS-`=$6f2aE$srMY49`N0ee$U60VbK=%F{ABfZa(jhhLsyP3!B;pXczB( z-FbHJ-oP30UT%F{3RzzB-o-3@rM_d8yV&w1lkQc!4~L27U*ZqC|BUs=f{?9l`S*&a zPyYHo`f1}TuzPfR8k+=v)hxDuY-(A9sxBZ%~nVhx#|3%@s>-nmj z*9G@+=t#CjO!d*5!57ifcVit(Y}oO<;0qeo>Tf;QT|8U=b5+U9*{_7}ytnHJtY+X| zKmBFL1BngWkFuR@3C(>_cl-9|S$9ik{r+Wi{rPuBtq#%SHgyI^PT5Nw*4m%nG(ElQ zTkONh^R_6oPfvfwF}wU`T=J84?$tYM%ny0K(+E6mU^umH?x}6LYAc`at>qJ4l`U5G zdP~WI{UNeh+f$8qZE6om%p6$ zz3;Sx-IT85Gy1M=Km5z@{RNpjg{R+|UATOI&tmgsyJQ|nil5u~^-@K)^wE0>d`fS> z*;zTnFYvbJWsiIJF32w9XIZj;<0`+ONt|l;A6pXD8lTB+*>~PN+1pO`|LgCo-ki!c?)%tMwemYhyW2*CmOqZg8M1S- z_I|W`$t;sxt0KL^apFrmBc3@YF9~Tgy_lEC_cq7>LeFi5|9L{sTRTp8*|S(*%Q-W% zy^gEwr(-_D6RXd%iy~i4VfnoL|BtmL!S*lqmP9g%Evqdl_~D&&yvF(5pYHJRmEuVs z61*1eeU?1c@71D()y9p5W_A1Lm32;v?EN45ymMBB<<5vpS*G{r9hTZ=>>gn*cjR@c z?d=EIo9=(Mu-7~@?UYdrM_{E)>4n9wzRT>ESa!2$A$K!l+VjPyo*Zjv|M&eSN z)%vNjqM_zCMuBZV6Q}-vl$>yV#pi=@$`^|wJ-6vsQ|wt!^|@*gdI=>F^Oir@Q$1lGE+{W)AJ9Guz8qF=Z}sJY@m(#ah{ ze`NPhSZ82Wu_!fD=5O4|DP1=8E6>EIajuNbS=#$lOY%?F<>!f$m=+74`rg~#o6V_za0)UEm-FUefV6hAtky#pm#@PQ|8CSIe#9m zi!DvDH9Kf_WqSR$e_t&k%Adb;ZeU?*a{KYz;X=JU`~Rhd#U?p10oOMCNt(U-f}GLf zmVaFgVkh-la&2XvwWy`u72lGaB5tI@RvJ}pux#=Y#Z{dbeRZZbZCb4U)>6zbWx3ZO zt<;Ybw_JEPKXI>KvF_W`={w_o^L?8*>5R?ZRZFe8+LQ8nFQ5N7_w%^_-Xs(dRx&CN-uie{-q-%4I)wyeJn!Dq#p6#DlSv_%Z#<<1y)Cf=+(JwnlVXqj@R~xwXJOtEJm)1 z>4mA@X`A()#h&$6V=}Jd;3{HpK9ISuNyLt8;f4pkZ#T>fxwz(1m1*Pl8S!>;cYf>4 zJYU+ob0dr7+!^0z|2z`FXFTn6(A;w~4ECK`63DqzS4W0h_tM>}9~ULw?%F=V@5$B+ zA{iehC~#JC9{Kfy?|XRmt+)&K1U@&eG>Z5){n@!mOt%hS2)tSH)#%lR>6{v}dzw@g z${ybPymaUOuVN8~x7CGMrX5K%_OuHNtBl`WSAA4q@;O(tsIynzFPXXJh5NnfyiVy^ zeVpa9esel=EzSu#y|gdqRKZe#-)e#PbFF(GyvZpzH`Sc)@YOJnGL5e4Z5~NJ%WUtn zykI^v_o~#z8QnXcG@N?$);w_KN8i?;K1o|1-MC|`bMIQs)kevC*J=yb9FyG|<{DBN zvZeRT4BzUXjneZD*UifPFg5#iP_bms&tpE{Cq+z}lXW2`P)P6D>5?W6jcxHKFW!pw zd2x@G;pjt|hGxcPddf;x;{N69O6v-XH&*@c{wLE=n9XV+v0Igu(@ME0?4EI^=F-*r zHXna*hnrpI`So4*$EqdomHtQbp49USd>-wh)3kWfhY8c~oHNw@6j?6Hbs{xh_?p?J z4I9mVuJn_0_bp#H%kv`d(`$GA`W9$D&w9i8cE*}hEbrgnoF*hZU6Ap%(N4<g=!<=iDH~FS@hg?6;FiBOj>@|DWh8G8T+l6NyNjuIP_UT>2 z-KD!FMEfqz)~k7ybLvVq|JqmaA<5!Po|uS;t@@U>X48y)K0hp;+TSR3tlLm{eeIKY zbN+}~HpvbqBAHWbmfoKlC-47FdgH%Yta6WDuM+i}Sai2_U3tBS;N$6!gpV3GJ<8qm zeTsdceQ4kx=lhph8y94E+Qc{rm);d=C>1-mQGbr0TARxPIR(?=+sUk*_YDuZmcHA- z{CBIb?xdVkWz*)ZS3Un%!J|}rQ{3)`fXc%kzu$SxVd6RWfqG^r^QuLw%5QU6AC|o$ zH0j#ycPpYD?6)6HHCEuGjSWgiate#|U zV0~SP_tgDJMo;Guh5s$9U)Wael(?{}O+DvQ zb^Gf}j?tgjyh>j^uWC|V?bn~ydCND&ueW<9`D;@6tNzwqlgz&_*Za2KOJ`l*CzGig zuJ6vwjruumuO8A|#rt!&wzTybL6=8!9R-?r zzE3%BZD99VckXj_lPAv^uKwHb^Ns#4Kh-Pxr#PN?Rxiy7-WqsXf9aJ2C#HPeu<_TD z$JU)!Zlr|D*L891bO`_hp6Q%Fmp;z6j1WZ&@5G`Tp2P>4oOA zUOly*)Ec$FLDII5jd|kyEnh90FEGxI;LT66oOJAt<)-`$D~5`+53<4Y`oju*`E(xk z-b#CzG9zh1+xik|-?RCPWv%Wl_p)C4{Mf4dekmJXT@l@&d8my0v(Tv^**nF}zpnni zWB6>9hjPI!zm2Bn3nJ5_+Q0AdYH0ZMCU|4=CU*A+2Is}zHOBoh-1w%^``pTPsym_` zpS)JS&1QA`mHw}b3+^R7-KmoJtXMBt>wMw2g_op%I;0ped-yD^$hn`jphG+3o4nhm zse%l5HznVb_7SUa^mlnv?WMLv?Cd+EYu&Ae-Us+rvbJsS@0MNoW7`$m-}(2m%C4*l z=He6+xnF9tTJq$&lp8@-tWD(|^}QSZ_Dz5C|KLeyrvICrF4b>-pv3oWT^hsn|BO$6 zCa|#zI)A%okkl~!TB*ryy$devEiWtB4G!DAHV?`Pe13+%p>pzV_Ox`{-5WntR@+u{ zh%}_QG%`1KbX1t<1|2(jy~Qx!I>46C47O%;&h)vk=T9K=5d!N@fow(FuuKaTCv{Rw~w1oZ6r2O$b z9Qq)aduQ&uo8gUDK0mjte!lznQ|W1)zkcPPHS06jl^^2J(6HjaqQ?LKMu+$7uh=0q z^Tr=_jrB>78+2Muv3uYkP0^qC-@#kOejvg;iJ zKYW{&nw7-oeqU;GiaEP=^T~#j8xICQx4r(bX!7Rg_kS~o$!D{lzuQqOw7yJVvuXFj zt(J;Yr0s^%WN(-7RVS#h=A?7421= zw>`8#+_{!}vbna|L$*UKPy0HxHq<)_Mj3gQymn%8-_2_A{ZENxrNy@z4$EsY3&bD# zu1;2*x@~&mlF+4717tUaGg?&WO?|ebZ$s&exz8r8l|9>W&in_@vw!P4AJ*jAG_5i& zy?OY@U9AV-<}ykeTFK zPyPn0afLf(PB@xezU14A8TVeqPZP_tUE@66W8Fl;Fj?Wqx_n?r<1;&PLVf z2VrK<)E1R-Hy0Udul8VGt)XxEA~ME0WmpOYEf0%d2ZrQ?5=2PDXbu>Skd1yUTnS>PQ$vcN6MVfZ| z9F2ATCZ?h8A7b|L$+ER6%Q`gVxcu#d_IK*Ey=W9sDt;oRR9vq(=|YF>Oo^4A?-=`j zEYzE}<)eky)FbV8OHS*2?1^}IplWJGaEQBmQFC$-^M~uzPBSzw=Ci2p^V^u=9Tq!j zmtI)XHus+T(t9Tx*z`L03#UD*zoGf;e(hKLyCIM7GN^9=L@1l%^vc>Ua=Yx6{|DeaREFDktK`sb~$yB_bo{y5-w@$AoBA+|aKOC+lq zrc^noT=lj!R5?K7ie=L**|y;EovZo3w{IiIm< z#fwJCtou%bmrHRuztWRQ`ESP-?O&H` z%FGmBMXoLuZGG!uU1+fMsHKjnX1z1}(o)m(o4ai}h0d_EyVevqZ(E{pYpcGe(Urr` zWbU24?Pa)XRj1kHkC|Vix1OzAvSU_g=Z~_bRzJ#vC)G(d3pnSNEZfzbHgWxW@dl%( zSyOXgh_`;)sp+tx_|^0#Ywp-Gr`N#&E{;{lXKYEjZgia~&*9~s*oKo6LeC2c-}U4E zUsuA+@h8Y;R@$b6UhB1t`Iy?~rzL<<0S2S8m6->wPal%ZSqQQnzZPx zNZ5fDQ$>7A(>*ROwA?EBt?~CQvAE^3mP=k=IprCxye`%+xBS0}L*-hl-M3mK6nfq$ z#+NsrT6s|U(KeIWn{KYXnX^J}!KDvdmny_Ai z!;T}}xB7nGVEVjtM{vs8r=IM!8JCXq9%JH7TNU;FO5@TrDV2sb3enXMV}y5|a85~| z>Gj)XZpgyw^}#xYo;BJ(4?UlAE#GD8wzsdM%NrE$NwVhMNLwgPR{>Lo)eCdtn zVT~&0+({ze(wesP?JSFaB(Nq^Cvx*k#lZff4xfr1+5VqlcKqDbOLN(8`R{Le6ZL&- zwZgF*^A~!qzP$N_N$5w#P2TbQud^>tSH{#}Im=l(@r_xr%_UJk zteQ6)6eU$mkLq1#JUOh|c%|wGA&s@Ctt7=}rhR^P@%BRIV9gUOCiDKpGuP#M?hkj{ zzKG|7s_kCScTKg{lS3@+`~u`Pm+m+*d1u7()jVu>Rkys;ejd11>yvWg9Ye>(t5c-c z8H-Pv^lw2{wWOi-uDOxJbcP8Zde;9s(c{m|o6fVPCDN)e*mvti$;3P* z1&TJUwHv?dlDB1_@e+ISxj*C4&b6xkOTy2FP4~Pp zYiGbkk+`UD6ZZEDM^18hAyVG8Z9!_@##bjYLZALla?>w#^ zi*eg0x#Bmo_`9kH-L{A4%N4{n#|U2kGxge>+dO|5vN#)iOLShV@m=4_a5?VCy`Du< zFZ_>OxYzdM*`5xzG=I^&u5e?=Q-!Ve{J?lF8d8_Zx*xH9N#{V^`82H3+s5E zIv4rLy>R$HqjzUnSoC4Vbp!SCtzZa0^*1X(&B ziWA#w6usoi#21x~qAJ3E{#6khd>@wRE^K=`^S9K5_#I4(4;_3KfA{?|-K|S=PKDYZ zX*|dyEBpSUr2x}(W4}d$-P6C_Y2o=4b;(gzHLioHSmD{gm znB27G?)#ATA>+8~%XvHYPMqj*Bg%hepkrZG!rP^`!l^5Zeg3%G{rP=|%glYs6`oe{ zIr9xA<^`77v1liINi%GjYI00xyZ95~5XHpxw+;zE5uWktdZ@$PiLqz2jqE#>TipE_ zJ{>WeySUy*>crw@Sx-K0@ppKZc&Iqv`S4nk7FGi`*|!VVZx*t8AlI|@sk!}m9ofL> zPiA2oYW@j-KHANeEb5nQA#_ADYoy?gJ)PR~}F!+q&p?JI3_-~GD+R)q6LtUB?(al*VQ6DQ8R zm3DMersMMkTrU>oZE)>fc!FJnC#J~t?Cgzk-~W~_XI-GN`|;d=f939$`n%s<{NRPn z`r|e}wqdc892T!!Q4-8%S9;vEyV~WQ{PdsoMps_edrxNSE$)1{UzOAF!+-zGPx}78 zcOU(H^MC%6N9UMW;@+vvo4PF^B8qVi2ivB)lCrsFlMk>ttIzg(6TZiTajmG~j!Rpf zPQIcWf4+Kszx;+}h06lJF z>6?AlF;5D7yjpf?q%Y6Qem89+zP&d?*6@Bw4o&zQ+gSB&_JvPw%RcOi=$za6Dk9VC z=XceR;P|ccfVG=V_4d4vx<%(LGfhG^)GfO&A5ftYu)~U{aP{>c>+7pu zdi2IW`}#V6wh7b!&4-@-KT!JW|HcpVEvGMCeJ?GDX#aS3Klv}9|m-u3)(-u8>@8ve-zlnFKpei74) z*NJ;EcSGMi#?PYvJmwhJdN5hLU0N0@cIbx0mX5_-_Ngy=mi671%4+?rZ5;jKvSP7N zWz(N_af2h9SFz1$y}Z+SB5SeO*S%T0R!!mCa<8Oh*O{Q5TLps`$1oiz*fT%sK_PEt z<-bgxyoEQywqM!T`uGw1<&R1({63duKDJ+F`n>tc*_ib%Z*PU%P4N1~Ah_Q6{(j4; zizR|*_E!8naeU)P_9w2_xQuQ`2%QmVWD{LDJt#QGvMfG$$=h2?Z>exx{pz&$vE;9K z+58%v7oTNCI9AAsadbSCmx#D}`J&I!s|Rns+3$8Zeph~{(z9E-WkttSrbd z?iDYo-MKmM+uuF*MhuJ%uVy?y{(Jd@bu*4t&stw*bk$->_>ypqNS><-i@YQbpA_(E z-lKfURfFgC|5^VoXSHl))t}TT=`#DK)a8|~vkP=)FW+_2DtV9do)+mZH=JT;PiOo% zp*`^O3YXH!Cz;Jx$Gy~DH?^Q>zWR^M^UAGKZ6Zh9o(rs6QruPE%zd@^)n7r5n-{8I z`G$3z%9#5scfN}8hWQ8PRsCi6Kj>V+&$uPMQAy`vO^9UAj9=z_bACnULK574(8w(sXlT5RY zm-;!ctZM4@ylk1_kmdZd)5PV)uFgIU^^BXLt6wdB!BfAT>d`V`JZoWH90iZe|>tEx4UBX zImVxR)D{(6t$uMO=ANF+(WIChfrY0n>?$7oyknkFV12tdaM$x{=6f+Nzm1EE*WKyt zK6k<>?%Or)b?*%<+*7!vwm8Wz<<@PnKe52%SM5V9{~ec%RWlnFoRm56H&JoBs%wC~ z@awAjCsQ*`V@3P|D*a{!t-dhFy>Qbz|LL)Y!J1aDw{7lg*Y8{4@IvF0+%MDgmH$L? zK24V5`?{y~Xi!q(*_6-wEvjGdu-KN`FJ2A->N|EHMdEu$??zW0_e$28Eo*o2?36#x8yxKSp(y;7NWi?}6vP4Frs))bHkvrpd#N9O+SqoT|65~rg{M{xyn|JAT+YfOc7ce`t zJdC()yV&VSNI=Uw&7VK(*QE=_-4T>7ZLBMPyz-wJw|YXDz0CHjv4P8H_=p9Syq=`v z>SELT{C6O`=EQ$Gr)EFW&bC_j)-~Vi)!UmpA3J7j4|{PSN%(zTI-`$A$MUJkG0)3C zA1iBNW!}p<|98iQ_9T|*jW4}sgk9`4xKqCESI=WE*X`^8KE>8X)&;;uJuZyf#f&*JRE8P5)^-?~_1^Mt_pi~CD1)mTW) zKYj9PNBG{zxt`u{D^yIoja?Ji9*T9ZeO!9hG}G?!ns8Nl#_f*_17F>W)5v13W{rI5 zGkfaaJ;AF~c&?uLcJ1RrXVaYTmsiSY)o|#(o*d=%?dVW>*Hs)-l-WjiXd%O2N^xs*%c)P&1oMm5y>MVD=SUrti zxH7=!SYp5KI)DF5v!{Xp*YibNXKC$d7OwcAyEImyqV^P%)kDq`_R(A3 zO=7Eg`8oWdz-j*Li<=Y+4JHK6%i7a^<;&uP%$+>F3kCjlpSQj|?_x(uinq1SviwPb z8@!LcyBK|c&iD8lD@TrqciZL}1#As_AQpT6NrHcsTh@gq)8|C-Rk1C4D!wN~_?Svn zjn|~rmRh=Lsa{Lm7QISLV#`Uqc)~eJ7<|gemt=-;b>c8HwS^)at$2qqm~*a*fl@m4Vz>Jf7z3Y_d4$ zJ!`SNy?k`3_4$(BJN9$bd}T9N%W4l2uy|j2{O##OGIpH}?N`4sE4AsLHLpL;TNA<_ z8dJ8xXrAQp?-<}<2QcvvN_FWr;L+@;{Aiu?p7N6 zHhgyVx?Xqd!D)5hC2OJa_{fueuz4MS^KZg z6)}l8{qnsXPs|do_F3+F<9y`cqwwtgiSvEp7_C1>Uf!Q9XDI6?`^`pc(T+V@-*VNS z&N>jA#OrxjtXuckp5Kz+YGszs+5X^Ye5(F}@5N%tj!rw(*EPLhlUc|cwtkXm=_c(> z-=)@kJ@%ZAy>yaY4roLIGq zAF7ic7q)MI{o?c#3rPd##gE)Fs((vNHd&*+taaP2#XLdYdJ@W3aj736s^CEjMElz7tbVBMH$N3Lr!tWMqIt#NC+Q<;N^^22hi^QU*( zm9dJoJ>OFs{Jwh0uZ0CJi%yv2E^~cy?%Bm}%X@>_%Noyx<@Qvb>o7C=zq2wlm+9ou?>5p5F)yYbJ^cA%%nec7 zwoI<(LzmymZGLfGhIMLOkY|d|liZhAk{qrzN&9W|Uh=dpL(qipt@aeL#->JzzelW% zn46B?I@0drZ#pNaVbhd)jpL%H7uL5tb-(iD&bKEH97&>0{cf(`J3CW0ODg+LVZYyV zGHqu2m8^WpD=*!GkNGUk2s-S;@y?)2WiG?ZE$c5{Kec94l#kby`vr0*7X0SR{KQ=UzHu;}<^Pg;7=^i@!R``Vviyw5gsoh!F(k0dTS^ewR zV~_cT+&hMH&bFtI-jv><_(LYNpk8D&US$w8)f3xO6)wc zQfc~z-(Jf$)yckjpKM+@+3t*-1S5On)Q%Vb`!}vmd&st@#^m?a$zP|xihjF$&J2yV zgXeDXy|tLEzTjVg$VC39tJi7tXmkc_JY##S?`*)7=t;AWmCDA<=Ge5K!|<8p`Z+Bu zQrUa2R_HCi`$XMwIrlRwfhE6$F1-lh+N3DWvsQMl#AcbG{=GWPljr}AUs3qLLi~2* zUg0b11=F@JnajTOzoJ$BzdIez(d?-#MBK7YJncE;mf&Eu{T!vsmBd z{j`Zia=Q$9zSV@ze0JRHi}ja#nU~ib=jYqTsL3es$S7M=YvQ?tO&2Rnj~i@O$f*wd z8vgo8QuX`yiQDHj8F3e$SSjQ@g+V8JnTNe=Q(9O1!Ju77KNbJlZo2RJ>v^7iN{83{ zT-@)-Zr`>kVb<#dFMEXkw{4pBu7|l}691d|wxZAcr_}QwSm`-=e^{&Ro1lL=2Q2L_ zE3CJ=+rNS9avGl_*TuDLx;M=pYRJ`htyyiW8*@}e>Z8<`sJe=8sqTYVh^R72bTlgDa`1Bh# z^vNFQcz(6q{d)WZ6*rr8mI-T}s?AG|Xl)QZJLS6e-PQ8y{9z{|FY3Pe{Pob{2V8Nx zViGno2i^)0kG=l5O65>{`abEm8|`wBi7(H0OPbAgmEVT<|Av=0ug(0WmpYQJ{@MHK(w)zT@=q^% z`sYtp3FnqNlNa{dum3Mu@G|SOzJSp2r@tZ$4yhG?+VaL`)}IaMO_w!&Q4MtA%$PZ^ zF#Ni0^TpK79>o*nO0yIUv==7x#AZ{)!2| z_cGbR`9|IBte5JxeyiUf56Ygk{U~Fu`81R0B}>-MGd*KIbHnFDUgbyb32*72Xi%4b zT>nAilI*0)KYzG)e&zoW+b&zN>_f}U%=cH9E|D%1*!4xe0Z$Z=IrHWH7n=IUs zIcc+>!iFeYa~ZAB%6jt$JqHsQY%f%3B>eX@Wi)y4pUc&972BtzMH)@6zcY7b{#zko zaXt9LyCtnRo=ns!IeKBv25D~flRxUj+qSn&YK%Iy=!Cu_qm)eddqXE)UH)Tg6?YHG z$H~t-IOp;C15z0e-X^|z_$F}umY>hsEVt{Omc71e#mWA6K|3FcY-x|ovp?FT``9yl z-3O~hyX*2an>90?XU$i&ToUbL_QJO`wt7yc*36}6j}}cfmEw^-JLh3{&r`pRXUz95 zNO^c~SG*lpzngyb#2<10U!H1T+K?;c|HUphUoWU7V9f!xDyQ4s{lW+I|JSVQNNMD< zZ#nm6m+*eeIF$-k=dH`^SI1dzD9Anht(lJMG^oC8g-AdCV|f+ftEiBwwCfX6WjEKy*>*g)j3@ zY}Z|?we3c|mWbTn9XEaV%xp+ovTjXVQr@O1Gao;mVi{T9&cjrzk(%qJ>3BC?`lRNw z9M0oxJL_<`Vm# zE<5HuV7&fk_mqjTpR}~9tC~-BT)nMdeC1NptFMh~GgDtBy<;z_bpQ0m^6Z-C-tyWP zA1?KDFU+Z2kes|nt2Su+ zmAz-D`-Jo=&T8s8v?$d@LHx4zw4Y7!>g!CtO}(>rUBC{n;#D86Ke{XYIZDldPxxlu z@Atw+^>%mmG(Bs7X0YPopQ7xD>Jl@bLyv#^pL_S-ZoYo~7yDh_j8@ye7@QWpXMKY0 z-e;}r%ac53_AZUubXVAp_sN7mi^^ZkDRAwi+u2z#IQHI%r5AN!^FYeC&$-tXG z|F>Kcha1O+Ngnt2=3EdfP}o0TBzXV1hbA{R+wLtpX64iFyz0N$=HTroE4DU=xihRh zTNzi@ADH&^`IPl*TVn4Y@8W*MDZ%_fpeyNO{bC8zj|Hjg_{A04EgkR6{@`uW0%v(#S~+kY+2~l z(9RIbe|w`;*;@X`8&h5WzG>RN^MjPGtOLh`Y42Sw=l3jXmF@X8Qy_NQ+8a--9|qj? znrs!b%yi$HtIHbiXuU8Mls!<<<9+MdG^@(kMb-ts&J;|4ZhLSS6Z7X!Zk_ACoZ6;U zZ2xFe`Krg)H@}-womdm)vg+@}Wc?{lGr43H*E|yb5h?g&;SzyG))(f7|F)O3KhJ(} zjtTd*ZN-209ji>#*JP8uP-o%L{_KB$&X4?>$`HO7k)=^5L$WT;a^_$)&Dt#e%eyYc zMa4u_a+U)d*U{&R-eRBJ{sk&-OlNzVknu2|Go!BC@ukxJCsX%|Y_+wB&x@-&ke8IA z=sNvy*x|6lw-@&;`RvP^JZsO>XpzXw_VW)eSI$iwX>J3-oki5 z^>p-|&z)Cxz2bW8|8Z%Kq<>0!@MN{V#L_2+ey+HuxkQg8V!c{nh|BuG{5_YqALhJL z;J7()-m^_+?7}BPPTuZT7L@q9HS~n~t8G8e6`F<{e>@i#8GJ*%GiLkj1eGu8511>z z{rGn4e8dfT;rVth^_$AS9kMQD+8ugx$^XKy^UhA#Rp@cG^4^~06@BgbciDff?!IT< zcrfe2Qn?KW-PJ3Y*bL;?=4}ms_AA1wOrk1oyY!3w$`Mx*Tg2FuCNL-^{B7r`x$}SP zmEh1R?7>F`Vpvj&G|aS^54k+Nn)~_klBB9Op`DAIZ}Y!v-%vm4-31%7TZ_zPo#Mqs z=j})|bh@#F)BjUk%)I-)atZ7wlUL~18XuW#d-eIs@@@CJOw5*;PkPd(Q53si$qtTx z4jWgSPg>U#cl?fY{S7^b+bn8-k1}ixnk4b_@fI(cH;%j~s~z_9^zS&k98e=1~y%TsZF>UIzuq3%mO%ACmeMP;mO`hqz@-zQaB5`VcVAoaiDX-rbZRrhLuemIK+uKN| zReuF?gS(gSIH<7vTz;znpV;ZNZ1?Z)K5SB4v3l*VyJs7uR+OyUnfhVjR=tedcHobklhhBh z{|j^PPHHVUf4)?R^DNV1*{ww!-YzBj6{}`$zA@KJ_{-lZUnF`ovtM_5JDO?Uw1}Ov zps~aCs)?&!$hu?G+Gd&bvLxS|S)FsdWWLEZp6}ZEhurT?+;>~Yk!Akz+_I0X?^8R% zPX3B}WR%l%dC#gVIwDexKLkpGRz7px+`Z(%EAz8zqL&)Zx-P%@&U&xYCf$b%Ce`Nr zpYTg%^(0O+F(HX(HmNQCkGCejvI|WVSbZe1qV3;gQ_CF!j;p3_^mBFY-uQ89?iHP< zJKmmdi)^lW*qeQDwaPO0*N!RC@u%kKzy1>`+LY#~_H3tN&ws;*lPjO?tQ79o-Sv9~ zR}iD+;#j*^IuH96tj}pXWMorzfBM@G20x~Jf3fU$tdj=Yh+H$^($NRBN-{>hnd zFHP60?4Ne3bWvd5n>3q%jgJ$bK014S)skJQ(|49_S-)z2EN_j{sgsXFbzVDjZ~ayH zNXAuiUC#06_viEnU1>QIeynKDuc@i^{jHqI8#`R=KLkxwNL2P$zp8y~^2!w#infS- z^p;;3^i@vLHU-@qLx3Dezk20l8L!R8)+hNlqWjtRaT}EopOZAn@ z=lC0M6y4`uI{kALC)>qe2Dj|4-TY$F%Pae-59($m_;pDBf0rG zbh=cNYb0NKe5rU7>bQLS+2jXGJI{PEb(z%`#&s|**(_pK^BP8*c?(qa1l(5c9coHlGP|!lr7Fasfh7Zo9%ncSynC`A}@VU7qi$rJm#;skpdcCme*rahS7p)QeoSMq{!WoZ1V*w=a0Y+tlkzliE7uZ_#PJtt&=QurH7 zr%MqZ=j6_K{KoQ-SNJrS9c@d}*4}<3;GN6bvg4N*WAu%pTLKB|9Sb{HSKixdX47`t zJogLR>jr-1Dtn>YU-mnzj`ALTeSUhA)xKnvS#RC1i-qOtzuM{WsQUk`8@tOtuQ)sZ z8$;h0<&gJJy4GvT3JY<{*Q?lcB_%8D5!`BUu*uv1U=#2CWhdGXpAeelo$Yao<>}p+ zmpoldodvI)eWQ19Tl23euYQJJ@v4$uSf0}Rd3wSU`G>X*a`k8KT>bDYC)EB8)9bdt z*pNMmD+7Pu*s)_$h~B!2Gjo^pHZp#FX2El8@G0K1S0eKA*Ah-4U?s?>j?=g!5N; zgkqYDwUrZP7Jt3DrH$+S_Lq81zBa;FoYEB@ENy@Gy2w@J)tPVU7RU5`ZpeloD{k7h z(blxiH-6tmkG7`ke{BA(^Lc%pw~g!9#JXM+znBX@#1_5DjQgA%syU@#N9oyJ{~UUj z^HvA%ee?S1cfDEdg_jQeHaPA0d+YgEkIfIAcVYN{^SI{yy_KJTCH|9K$!%1+$82HY z;N(MpXePk-M&aXlmEm^H_0kM%!nb5 zk^1lKym+_#^&ZL}_I;8+Uf1+9E$v`f;l1X{g`eGBN^kv}!t-!pW|?ld@#K`(7q*ED zhx=4d`ZATvr@XsA#cze)oRbfpZ_6)@voHY>90rI%+@8T zzMOG#eGSX+x;bzBE2K?RBvTT$y!yno`kc+ib=!8&owaqkK-u|4QrdT|U&QrwEv=Q5 zth~1@ieXb@{CCp-9c)R}WsrJ8?Y*ALp zo~q+_aixDzsY>U$Uvgho{9N4nt>e?gq<-zP6_b*0zt2uRHHlG#Yj7KjQPrelV)4$BsW}jZ@$5~509ACIAM9j46lC4nx z8LPt!vj6XVrku=X&C9y;5s!^+%xn+47g_gai%ef&c5Ujl4_j}jz`i);c{C#5k+ z1za|D>6>L9dZE>P!tDH0#frr{%9>W5ooAJIjPJ{)fb{PnCky3jr_ABhol^Sh&9=z* zyiR|%&Q9vttZ>ah$ot^4#T^1iKdC(7%zb-8%s1ljsf{us)yqt0f5pmlnYf5!V$Aim(8{hpXYAfC9`+T#Yh>?*-98*7^$Bi&k)H70>2A^QXY|rrq=N`*{jHzQ1F) zHPhZVvohnir|fr!t8pKXw5Ffj8zU6>?`r5N4w>Q;%B^b@xjmP%n!bK<>WRhOKIx6y zbbhyaoqlaE4Q>W0jCc)P3So^J{thaV~nv;%Czg_ZB+udZk)#`)*S8kQn*0xtq zUgvr7Ui0Ibln;!5HqMTpbmr~!*|Y9HZmioS8TeCi?dLb={w=z2O8mnK>6UTikEnbFsZK{+CYh!{Wm&qS}YfEQ#85=(hidPTkkLt@;+` z*%Ws-a!aj0{x9H8VTt$eMR^Qo&Ihk*;`w{(_xhdlZzq~hwAi!q=eopck;*stcRt_X z&RWCC_PNVFcZP2-3$w!e6DwIBmHv%9P!VykV!_w`aF=63kv+N!uP$C%yT9pWNW&q~ z&({9Or~OuOjPwqF*tmgz=kfWQ)>bm~NNw9|_rCb?%jAt_?UIdI%~N(@QV?B~dpi!N;WwCLr|1*wraWhdY9)Kat4?{y3oABrD72q&dE{7L+8|vVCX{6mZX%Rb5NB3o3OV~w? zgkJ276#cJwcR|h(#d`~KUMy^npS?kW?L(}IpqfXqhft0|_}w>0-XEydcVpeDe`eE< z(;Rz}MK2_(s%>P>boGA1R3(yS=O$6Z7I`JbNSTJ*zgGUgj_Gur`T1eS3EpQ~ z9zq=`Y}=YO&*X#hNr4&v1DIYg>zN*t{){PYY>jL`85O%qb>?yJTCF`Px`kogDV{i$0|Jf0rwyGJ@x2I3aKCcN zczyWMJ+%%JZ1a{ZK0ZMq$H0+uPp^+)>y9ll%dKZvZu8KrV7B43K4Da)H0gxy6w7Pt zuV3+UzH;C$zjKGwHKp_>{=IC14S$??KV~zVZ4q^0uwqdY;@{S-)O3~q_AkkbJCQ2R zDgT`H99d2{Z*aUR;GCi4m9SevNmyYwmy&S8?r%z73wGbMS)%@{Wu4nWl}qZ6d=z%4 zDES09oXS;LE6`c(cvaxp43(D;j6XQ9Q|iCHaJBUD&I=g=dxDPSC^&1V+*+`%L!~rf zcZE{h180ZX%70I8)e0*@9y^G$IWuv zShZic1xNkbb8cTp#}}QwrH1S7%@R4SUzoe2FO_R=%kJ8BlF>dDeDRl77M$z8Qnm8M z4OW*IujhLCJSms1KHj!Q>Bg~ifwsw$)F#@wL`{g1y|~zB&LSVqkNPW@tbDW72l z_gh-|LUiivGj=BzygPo%=A-nFPYfq2OQ(uw@upss{_~09N#%p{jpxl*?QsZ|%gJ7I zwk6zcfq3}7^>c%sACcZP#iL`X)wU-A`g6sClR6Ik&A59+%B}Tt?A|8RJe6q|*gkD* zJ8T?v_b}i7AdPO9;`h}NYuA?TOz+SwvW)-7RihfTb7_R}X1C;n>K}fFPyKk|v4Y&$ z^JiI)=WWQE<@Bt5s>j3QT2FsJk`s`+lyrc%hEYClX{4Qe&{MxgxidCvyq7MX{NoSf zuJG&2cUjrp@%qYScgX7-Q@j_i_QtdxukB2BPrQEoF`IEpNR+v0)8h&~-uj^Fr|wCg zE!mj1;nc+%TMyrq-c^6hHk@ks#46}Fp;Cl5SCIeg8?S%wwaoKhq}C+4nQwdA_Tlqc zEw&4vfBek#n0jZCIlET2!slN<_kEG_J9wN=Z>p2SY>&lLKdzL#t1)%G^10tne+y;D zxXAooy+-kjv-p<8u)6d4%4^POWhjTwGB42h{Dd2gxWjSq z9P|DLoA_z}Pb{1$UKMj-v1g9DU4L)fvhcX?9t#phN_wL1aT?E`_upe#;+KaK@vZ_{ z^L9U&`1-nZ-Skt%?jL`aJP14?d6#1vd&8OcD>$0YsXzJM6#A_5j>XD73V&S1bN1y$ zAKotzc-ceqcg6dSmpuNs?YCi&>iEgJWz(7m6JwH##GE{nSpt(A!j(5zl!`8XQz4sS z;Wgds4@%k|*Eft>=HpEhcJ|MQ_cTkzSX=TCNfe0}Ek;GO8^ z{g}?r%Kk)NPTCj+EdXz%_mEo%M>P` z+k3X>-@gV`^SVb%E-rnvXwvQ`J(uR+!53#5|BB6a>0XtS%eQGlhvd6iMVc2HWftF` z#SuC|xz&-W)i&U5S;2R|&$hn#50=>Mdmyv^htk~NX4mg8Jz;w8^5m0iJG_qDCfLrd z?X!towElHeG3!gCs|I0ze5Tup>70LB^p2bVxO99(e8<&0i*CKsvD#yBbkbYtD%0r2 z<)0)D-+c3NYk%I-h||7P$b+m1@@MEbozB5y6?*{zEWwM#?w26~>a99lswW z#RU~TF`AxICeTvClDxCf`B#8cPq^%-QlSj%!|T4*l(z4iz0F47y8683|K`n_hdcs* zF2AdoS{hy+EBNW}*{usMF1Y0!V_FkF<>*!4tp(v~@0*#O?;SgGK=l8lYKFvXFIrXq zG*7v9ptbW^b;gg?bAtDVPg6h9dY~>zd%b-2w=dFrUH+~+A-&kcKHe|0W&hfIXZ_uK zK2DmjlkA^7Ji^`@jo|V=(7BpW@a>Lfid&Oj~_gqhYdRqJD z4abJ^35!04hF|!)#&h9^{xr&&*9h7x|(_)+pONqu%iD> z(YZG_%NI6&REYAqC3M==q$`@)Xqke)XPk>-g3ZR2?-qDP9k6`zCdl|)u=DidByFY* zN@;2VMQoBgUNXO2&+&c6(rfN|ttaP|^sh|sR2NQ_-4DE~&XO~t^`4YZ!LFGgi@ok=uYSZi&^gP_^S+ia=?r41z%fM zp3d%?#c#K)i|?3UL&j+)qpO}Ct}(Kiu}3&QZT>asz2-clZGSW)iY?vB<}WT4nz=My zzd7M+q7zr{qxMe|mM>~z-nz~x@I%?dTeXYU@d?=5Zf0>=%(A&5nb%s+d!qP^n|9L` zRhM&AFOcbcCG$N&@aBV)505({Kt9zjT9IClCZ?HpA;Dvd)Zty5sqKlq_?+OrE|NLj-g#- zqvR;znq`IWDxva&XMMoCz_ahmL5@cbrA$K9@pLGy#3E1O<+IP93EbkpQa?$YH` zPfb`jD`HF2lT4Law{EOlp>3O4zhS|Wdy`vw^d`@UF_|UhT*@)))|m@Dz8^QQDNyZi zIVMO8gR`a~C%yQjQUROT+#|14^#;`j2E{}iGAKPmV9WdonJU0VHJ zWK&oEmjz8L=M_D>b|>gOTYCA*y+_XP_r2xW`HJiRtSys&J)c}Aq*gzFi*)EK!Gi)m z=2P7oe<;5GqsV1pTWe2Zq)R6gTY?{T$g**xzfR|EX( ze6=&I1I`v+yEt`YnWe-&+le#t<0r~5(s|(!;E*{}X5-XT=}NJ?7yS!(Ji|8SmzAaW z**9Lt*D0T6>075==5~iO+RUo;j6lc!(vSa&V-2nd>pm`vSM?A0uGA?|^Jv-L8J~CW z{hag8F3z_;BPMAkpY+TZi@0)5CdHkuos=c+aqNhNhYeeD`kJ3p!wuqZ-V8LCY-QOM zzGwXn=d?$4CD(rcKC|ESlWz-!1-0+9ny#cUnJjOSZ}Rxa?49%pyZZr9&mT_ICq4Q#Z}~qt2p#?UkO;6vtB; z8VnQPKTLT0UnqIbuC-_VoXai?79Di!eI|ZTr`~FPhsKQyMuPc*Ywm9S>+pZ8$U)_3 zOSM&dxU9Y`mg^G8XZ{?u_O-+FMPba_i!UFGExS~@~yUqKT@vc+Ia(PkK?zzEu$I@w%5yn2P`rJ*8?!A%Enm>3t-J9p5sc=KCznk}w z!uyYjKh#gf9yhysKx@jvk{QpOjLrX?m$5G-ifSr zI)@8qK9OR#Iq_&|P*&mG+8G5xWv7a^@&9ep!$iMq9jaAOf`oi+?`tu`O_g|7sT5(8fSx&Wzab;A& z>tfA+1)m&+cd*xo-Fx$vpQWX%rECuJEA4m7XG#!F{I9tnS@+}_*XYde z!s6Bv-VZc9&WGHdksNiWt9kN;HQ z_+{bPZl?S2{ufDa5Ao?={?D{~tS|j<|4ZXD79Tp4l~wi358hw-rStny56=X}U`HP7 zicRS%y3aRkIs7j}q(QZcO>mlZFLUZYfhqH%XGd4({I2-4rTJg)H1E0<9qZ<;nzu4; z%CQd-%YCfBu+}U->-F)Y8D&uOQoi!q=4RBfmGL_lh4 zl-GxQSG?2zQ%#Ijz1%#r8B4XPc8hr&=0p3EX~IfBMvt*z&N= z+oVse=K0{2+H>Z1=P?`4y^jxyIWt7EZ2j@sa#x1>@ocXBJ>_R|dGtFb9^CnBsj7X* zB@1iO10TEADvP#B&pP#MKa14+V=Sfm4cq#EKX(e?ROb(_?%u!K(BifJ&pC~a+v*KeM$aCVij?uD`!|6|yHE&uy(zlxid*2MiPZW^_p z_QzOANZD3Q&z3xR>CWY>NGqfF;r7M``Lp6YI31cKe{K7@Ei_E_ui#R_w?8wvR=)Cl zo%vcdv!~B>#a8F)?x;sayai9^bcHXTv*5`BhWox{?&sg0vfukgKy-(-i_2<@IUO8g z`@1}(K5W{vI%D0!u#jnwUcY@6o;*A8u90r;F46m)`V+6(h*sT@*O2}EQ@?fM(`u#G zPbb|pr^Il_`2|hg<6B;BGe22ZTg!j-iaqO{8?urEy63eY2o2dY|5`cIGUd0u)1J0Q zyuJTfMLwO~@!`G65^2}JhR@vp>42x5!eElY^py|WwoYzmb*1S&h z-g0Qoy;|ngTIt*?{gdN){;chfIkbDXFB6BudwY+5xq7>KPvb8ywlT1M#340v!(S@`a`|KKcN z%iSy>qWX<9=3>y5=viyNwzO-q{hqS#_!-Ckxtu>{{9tXQdtE+MZDmzXa6VnINphF^xg_NWMWs{Nl{w!< z&i9Z$wtmT?8RxaHM?E;VXUP-SN3u~RkIg#*BV=P$Zdh)5lpM&kPkX1u@4wq~9)8bw z;K`i9YbNQevAnVW%1z;AtL+#0b*PJ&+nz1ene!uk@9t*|9~2uWeh+orBOJo>@xyA% z=?`tLEG|{C?#Me+adP*ydUNcYzmG$p`;`50rI#=A9_J-L{FZ+te$ADx-ejkvDvA+H zgSC1JW7JeQ`dCC(H>F;hD|uq(j=%qVkN$nop?Bq*{>SSF9|@OC_;Y7!Uq!J%^YTZT z&xE#jpP1k{l|$9sWg@qD=gwgLEjnk*cO6+Tdg!F*lOUHkEuYGs*FD*C&^v2=ZSOSONM-Nb^7yGjr&Zhb_q;2}HD#RioKJ0odY#u6 zmo*yS1H|?`N|)F^@lyY%Iu3qO;d9egy$x6|Vee-#D_NeH(R;92 zxuenj;V+>c*TWnq+1DuV+?3U2u>Pp%>lvO;YQNUW$kg>FZP^}tOeX$s?LzCOD#1ui z1)S{lJV#1Ohm^p7QRdv2n>T;F7Q&xZ-u|rp1-HaX`PNBB zs|DFMIdjia`SB$7$&*X(n0D?y&iX|*b7JvTH;xy2ZXFxuHErCdYhf^d=J`c>HeHE_ zqSq}bX5Dx#b;7wdW~&x3Tuhzg5@o>tS5-44Ztl6I4|bWA-C6T;p>2uI-F1(mGG8Q| z-5@&6=Hh#~PqXW|_^(NReJ#R#=*`C!H=I^8)vgHMvi;LL*Bg&bm;DjgckNi%E&1J# zZw0Kiy6tzsUn0KFt=GzWmom%bs_9UoEOE)Y0~K ze&WPUD%NzUr`1KFW3cD0|-uy27HSJNPrphU=o5u>dZ!t$|tXID#a$%v7_Bz`y-^0yf zWK|1wvwDB(&e<~WslVmjD;L>~>hHNG@0ZU0mRhhPcdgITqt}vR@-i=f(mHujQbvE{ zGQPXA8Smye<+mKJP3=(sCim}ZhvHu~@5pqE0a)P>sc)eC1R z)RjjlN*ri9X{`E3&Z}UDPRr)mYLnvGqa7szm&ui;mK8t!xt(Rg0{==+<}I>9H|+D6 ze;ls+ug1uIidlHW|Ks~!-N}5NE_5M`exAF zDM9O8H6C8GiGOOgm?zRIdH=23ORiYV{x@;OB{qlYI{Qn{+lTY7(fi}j5O4i__lJv< z+HBIZ4^J`sY;kyJsO$Tc2aaYfn{jUPjrwW9-CQ&MI^XmZvA)tNJH%UdCy8m<@{PMn zE+*+MH;nN?k2qWu&_O-XHCq-QjH%5 zYu@e6k+--lS+eoKC$C3~4t1C>Eu2}saf8OMZ>?&TcW=C#$5(f#zIjj6TC;_Hk3P2S zY2DH4(sa{5wfx;i?y#qu9q&HlyWp1kdBdsmvL;j7LSo7opWRz7R$goNytcmY21mU% z=e$|!7f+@X&fXnzZuZq5PbMs}&Hs4R-ze^C5Vs-wYiZ@vPdKM8v^LI4Qv7o&ChXBH zzOpk*UM{>{qO-``=}YJq`7o!m)tw8YZ{7K}QHr^^^-s`6OKn-pR3_Uq@Tjla%HqR%LneMdi)YO5FVdoS8(-eKt?{{U{XVCEvd5d= zi^r_oe`;aTA`HjGyWOhuB^BueE*TXM8j_ucA2}{JH7o} z`K>x^Kg*u#nwobvey2=Tgw8_AC71QRB@fr7iERF5BKbM_gs|3?sWNK*g;LhNg)#*X zB8xaMr&TOj7)W1dSlD{r1UCfW&suz_edn(X! zPO!JP`WHt-zdOHdUv9I~c&#h%K10xao2j&>PIYre{+c{vr|r8N{*)WF|70;vaxn7xZ}az` z=d=HZ4#_aH_2pWAUoE%k!li@L-!Lw_e|MiwOiZT3ytJ@=OA71^mpRHwxfBFv-*enH z|NGJT;X8C+SlzF=81trd+N@W)9!n$Dc+DQoX!vO!Z+3~JE1)dn-Q0-+PVU@Hb&0*@ zMZ76{x|FhR`!U3?*>W)bX_fWG>d!M`o^O*>n(uXNL+^RE($wXwS`SXo?_@RIuVg>{ zckj1NqAOBPhwYGc;XR?f{N;L$Z-JAzl(nyDu9W-A4hPF>SiQqJDvpmg>7{*E7K)E_Z)nz-!J?CE^*hN1IA(tppE z7Yy02`ho*2Qr={kMMeB-x;Sr%+l8jXZ=dH+zw9AkUs2bp@4TV@+mV<5l|JofJ2l@j zb>n>p5!awe%-VtNEvF1w&#uuBTK|&Si?c2&p> zxcrIm%L&iAKMR}>vm2N!E#}9<4rStj2cT{%{dfbnq^z>l78{x;fo$?0*=YoM74ZCKAJfUw;dboM@9%M^uhhTYdd1qL!0Mgf*W6EGo_`jr zul;;JYU`A5$6oEvtGboAV3C)AqD5=^tUI-DMcy!3>KxMV=yE>kcv301@#Vj^#Fv_B zwRLjr!H3W76}k4_ z=Nt`fT^8-Fb$L&7a?AQ|-8;HQWr~JX3+H}oc8Z(U`pWg@wX}DPj)5@~KL2e?Kffh# zQq9rZ98P=-=YG1R{rGG+Q{C%@)9=cLw?0{7edB{%???Xa>tD35$_$7SP^?<6HcMx{ zj*4y7{#!coKmX?)m(IMY@8cjni7__jgZ-Ar`&UMa)_;xQ%Id#tW@PiU{a|~-&u#^F z_f3E7m((T~JgB~urzU)RTP_Isr6t|oX1H;3XYTEJD#Fs{#pmAro;P=Q^!J>*t3viY z@m@9mU-|dW6SK9&5`rhTgs(b z`t?=*H+=E@`}L2BA$>a&lWK3jfA;$4l9uBeIM)~iZ8}_1E+yD-I?^eX`;L17Uw7~Q z16|QXREmgMT(A6KC-n>g$ z%$#=jxXI>qENic(g|1eMIQ9C@KJnKJ7v(RgV_edE&hN+#b?4dnCvSxxITU#9;p{U8 zE9Dk#XDe9wZgu6X@60}*Ov7JF@4R@?Sz``wPj(Fg z=D*_o`~I+}Psu%zan5+s(hrGM^XB-=n_fCGe{!b%on?mW?e85r|NpaCTBxadoYjXj zMK<@p{d}xj;}jMm`{KOF@v!{#Eqkvp-@Ci+l4KgQ+9e}rkCfN*y|-+)nxu0&qx*Vv z>$NkkasMN?%#_}@CQ{t0F3MMG&p}qbQ(ba(PPwc_LeV+V*Q(;9PEStLHBC-6$`)OG zF_+6)Hm^zb>CMj%y()Yp zT59_z>P?Gy`Bo=1&-lRY7eQ>Dk52Q(Y*w&3y=jWAnWdMzzO~5t=icwuJ1pzaXukG5 zG_Ogr>+}9o*Y7%5nFOy0{ld4Z~LpT&pgA0Ft(&-x{l zyz9+Hd;9slSC+OYn;z@>+`a5(>?1k0IWOWW^#1UCupP#vXwJnA5z)84EqI$MWcD-6f_Il0y0H77-?~dL-F%Dc4=8>6o_)Utc^17;anzpEda&GmkK!?Vos+r8Yo58~i_E(tdY|F?tuiq!!%9<+PKKol z5tAApM;a3-oNW0&}S?_+F|?uyU3eaU}I@P!Em+wFPw?-mQr zjGic`e6IF@&&BMYE|y;JZc9CI=@g3zb*%hmw4+)h+u^{6{|Ve2RP*xD5)Nyd zQ|5MFcQ>vJ-gwuI`R14U1&=@fp4y}tGx_#Mb+7dr?RQwpTUbRmEU`ZE;n+(_$FIuv zK_6Bgkk8*;q+6!TcyHxw*)_N3cy^g@>F+-h{;TIt^r~n1+ZV{(GIFWQG_{lOxbWB4 zlx!0|BD!Zq=wF4x z-A#fyqPvxg7i{1&lH-3NQ(0+dZkPIE@zb{SL!Ip(+B3Lsy!6(1rL={uTZ`+DjAZ&D z@#%V7ebr~wo=#dKv#dBRUiJH$-M6m%pEgx4ZTi8FagVP3T@hM$BYBdU*2Js@_VVd- z{VTP%tE|)WKH{hKB&zi0rISH&+sZ3SglF|kmH#{S-AnF=-{jsldqgPksXxyN`)d8H zeAYgH8J-{gnSu}94o`Dx`j)!ACO%KWCTXdo;pZQQ=f8^1EU{}3Ise)vJIcoS-|CMQ z41EqA_B`xgzH6W6fBZL|^ZRt`|AG5;LUU*tijH>)|Q!89R?R; zX561G+wrGXwyRiQSXp4!v6DhZ;>o)27Tsb>Q#!A~`Yb)!c0-f(VT<&L&98D9> zR@2M4s_J0*VXK;y*tYgrf@j$^-fU)-E#ywsJi@z?JIv+S(qsD+6I!efaKF^`_G&&a zxGA#Ot+q^WJ@c-oa}7jO`dycunwnHyzVu_Z@a}h2i?h~h|Jv3pv}aP>oJ0G#8TK%K zQ_bA?eUqOrw}t%Es2R)afBfkEtWhLtu=41WV)0%t<8ID{v8G4nnQeHQ>@Mye$vW@q zy%Rt3*X!)*mJj^DG~{1mWpZ$G`+tYRteBu3nuoIPXT=D$sN``@e!W4?|8G>PK>wF{ zF1OyEzuoGslYD~zNdA`C&&7Lc3)cMgu70j=<`~E5<6Fc3$L(OSg}wXHDZ=|T<@9)5 z`ch`kV~}O;ICtuG%XPk)UYoAlJ)XLvEq*nR#q;ArOpkucd8f-5AHTZedt}d6VYhEG zrvt;pww!9ZzUa`QE`Qh02?v%NpWe$J;(Ousyw^MKJX6^C`SAWrwl9ow?qB%k##VDU zYR-g6r#-)m-m>oEcDOq!%+b^9$+-!u+|`cul(u~Sn|>n*6fcP%@-)oSm659Eo0s# zrF~(tN~zpSdmre|Slz|Q)pSt(TZUifw8Npdg>--2+rOkp<>m*m#WIKI)oK>!EM)X4 zbXz*Bdd-w{tIGF(b(ZpMGrlx+0o&5`OFBfZzx}|t?bW7<4~lxSS3<4{mhS3chU=t*ZkVWAWAC51})tjO}7JB&rFw%^tkKHl^Pnhe)%t(ci&(8ruu;J;RDZeHvfz0*t%_{{9@I^%z+vk?H=vUc#>~n9nTPY!{FtO z)o)_k4a<$ZtZPK;R_#20+@X`}QXh|HPw(fIvQ8NfJ}#Pd^;7HBmBmF_A8S*N3Tm_^ zMS95};=490;ML|!ldfF7|IMoE5L0UW0Y-)dp})CIQK#;F)X&`L$a}{(^Wsn4Uk7Rq zziIPl=;!y}?>0$Lr}Ur6of&#DYwt76xy-&+n_713DxX)e*HuhuO+B*mJ&VU?S; zZfl07)`b%Xy0(5<;}CVZA*5=nzs=-h^OoMINo7@g`gX%))BnK%PqmNu9RK_4U)0_1 z%+r^-mgksp%++Gr9~!T9IMaOf{Hc6r!WK1)KT3PMRQrGPUXJ|bU*DY%{JB6s_{MwH z&9g7F=W4%AU39-&(OjH=)7o3zaf$AF>hhBq?>%GR$9(zV*Mo6Y2Q=-E`0ZKkyN|Yb_SV%1iJRi0E(d54}!db>o`i}B_Gx<^-6;So4 zSSR6are($HSFb~qy-c@D{$1%-_^?aZ?aP%nS%!BnmUwU3boj2|s}}c=u9JkcayuhcRwn-1d_49)kNQDlC%2WYTMQCcl&zV3?K@xLsn9o`8@6n) znA%$MB2G{xh56m1CBnaIYR;LoK30DqSz{o=70r3@?$64rYl1zML@&3_mKKii5LVOe z(r^3HnWWVEWNS&~l^F}Ab)Oj9ABj|ztMB0}P>?D$NcuP9NP=JY_qejt(Q#Te2e#F( zcJkfvyYcY;`|&(3b6&kIpV@QuX43C}%bq#jTexp)d)oJ4_hMaz3(3r{Ew1d4Oc(Wx zVNr8)`*$ZhLM!V1pD@GtH1*O&SucHkrZ0$jw8XY%Nz<|ucMGaC!gD9GZQYh$Tz`>& zrTJ89m%-rnNHr5wI}m38;|PFsaJ~gdGT+?pI%pf={rvv+Qn`r*Z9tkQ0qI| zJ=t?=X=&n{Z5KYREQ!B+U_yMBy~L^7R^h1%U#~c<5)Dja-WXudCcM7vz=1zgrvJ9M zlm0G9`B-Jk{6tk2DXvE+^3@mhy0)F)y?%AuN-t}}eYU&~FLwD%`oO+^3;#~;&C<8( zX561->7O-8x5J2G<}|-K7A%`KNAbz-*mv^54jq4%b2%kmJHvYTILz2=zR5kE*vYS; zH1*Tt%g^_I4xGweQL}b~LH2y*^DTSWi{6#aoO9y4iOsp9%?rAjUe@`f>^W`1b)dHXp60aUGx`J`iu}o9cA5}9E2gM%f<ASdLU;MV+SB*YxewB2lLfpyZXi50m$o?mV z<%=ijvA3x`TQqS~RZru~ezqAl+nRN!Z+)w%RowEbjH8UrC+Y*^6wf}5WfxD_6<2zl z5z{bT6XN9lrfH?TbIi*7#~57${p=onGK{m}fAKxTKjCEgjnln1N|Y-Ou^lR?4*RMx z$3U#I>W9~xEgfN(Plmipu#eSnKdZ7WYN^Uk|E<{@PgE@JJUe^isjbc%Kl7FTYdJgl zZiQpS@*{hV>rO^E)l9o+p;Y(aPwJ;dW*g7+ik_?1devU?bX%F*&#y9DAL-2DZ;KN= zb(h!aiNfD$MrR|_PcdEz4C}lW76|+LjjtX};Pqxp+y} zY5yeI%co>@ciQmY-yEc#YrIcKJyZ6ZN}3Crb#7;z*U(*bM`NvWw*T=W>n(!2 zrpe@pc}-RduH?Er**-auS1u{FWUV`=XxsbuM$f+pR$B^j-un{2p!pTwie-Bgl@kRd zX1q7La3MkWa#ND*YLOLk?wo-;AFrMFbJm5H=1kXC}hoxTaz;6H6}G*dh)Q#FS9mfJLl|Q4^FBa63Bgc=SJk>wkE?hYfh~%Zne`6 z*Duz7^)OSzFJa38oBHL&K2tZDJQc7we|%DexuMCzt=k0CmrAtm>-witr5$2j8z-54 zbdpMN=!wivXFYtrRh6Er-6+5CvC1Z;28Z3NUO9X(i;jG$*U|7Gy*nuDrs)xL z-=zyTE%lOH#o0MOZK@CZjNA+Fzq2oyeD~{w-^`b*@;)Yhx|W=;qw(w08`G*B8t24<^G9;{JOe*5o2LyZ2W5~e=)ot)$ zPqv;sqo<~0dv^ZwLu;(#FK+z4h1Vs9bC=-f3+kV*A1@J8WhrfKb3S}fZAQa}*uSnX zy`(I>lPS%MvxVpF)$BtsgMjK9bvd;>*f;`LnKm+U5)SS>VJX&W?;QN&L#&kM$#sSgo}FGGYkM-q{ucMyn~pPP_+I|R zTz;)D>HEGLojWskJpClnz>#MzwqcU=jD;E8i zH$S56kgfQgh$}T!5j$D`&$jX_y11kKXp2l()U)G-Cq)ralax6-eZ+XAE3K zhHI{1_q_h3X7>3T&TeKsAXvO(&&ro8oZGYx_im2KIw{~fxn*kmyIahWtxvWb4a?^8 z4HcTV=|JMnLkmwZORd_u*ne5qxkaB&IC!kpH2rhnuIuf`FZ*=!+bbmQKFRN#!rOg7 z^{#H~yE~6JJ)6|UkZXBw-l5kM*Btm!czDL80E6o$TPvA0CTT8sVX1A`rW|tJ;A`;Z zH@hmHF3_m=bPhahbz{?^L!V{NwRP1`ty?>*lQb^xn2O{%iUz zvzva^+;R*z^k45ga^l5NHurcjR{7kg{H3SG89(gWoqGL9WVE5v?_HP9cK>i^dmqd> zt2wRel}vMjTl$-Kn;%rPUk{GA>~;JU=bilG@yWZ>7oX(#`2CyQE?qe%u97^fOV7Dd z<0q|E^+~D^(|%m+i_=`?I#OG z>swyip5Hs{#5{B1(Nzy0>Fss=|B?6YhVQHQUih^}^76&G=gqJGTDIc3#@&{XSle0Z zUK4-4HwhLOkw~9lrKUD{1|hvH_NPm7GE?R`~$IMQj|E^qM*+*i$>^!iPil;db#lO-_qw4eLyRa00}zCB(4 z;7hSYxa!)w)m+Y(O=oM`J^4@NP#&Y9;YMzbv&4a`go;+>-{9kVFu7x(I zg%f}E@P0gY_w!@Rgo{Q;`LDl|6SIxkzT;@R&s)}wD>P@@ZEKEyYwBDlZrb!yI{CS` z%;mI$zsnyQ+?KSC{@G-;RPcM5(xdik?c6VBX;(Z-Jdpd*#ActtEB2-}d%m2^ZeI3A zEvYcoS>UC_O^I7SZ0x5^$d`K%KEKPY=Fvx&hav_hD|yl_W`0^C)_Q{PWz_=Bg&v;f ztk3RxHi>GCJX4SFXo&($}vTzb~< zGT&XrDI4TV!WO)8cyWIE2KzlzkFPov9U#%exIsxg$MeK>fs5Q-0!lJ6;T*jw4Vgmi zZV3(N&2H`w_y0OOwPBm6@|+0)i#0^TCC@&H5=y+GxPIBC4PCDOcMLbZd|XnnMqNSY zJx@WA)WmHEKgp>jUG;IAp&@r~YNh9lea%NAm0mvL>`Oh_#lHP)`K`e9X&>u?W2Fw* z*6;YXXw$Lwz8<$@6|YODAO01`J57g2=Z#v==N_L!ZiU}%AI+8y*m8XPkwc%K-}B(R zvB&bd={505)AG)LU^vaUYnQyu>)Wm~rsXIZu|)rvQuJfW7a^^kfqauUY9#N@GZj7D z{_*mGezzz2wlOt+=1ev>IrmDO(_mRsG{Y+G8yL}6u)H!#zl~EM?_ReDq zfAeyG;*<*cW54de>l~hM{pWfG^KUP@BFlK|UFNCN*Ke0ilM8K*R9=~VwtUrHm4giJ z4hC;H-FqZjum3TbcDOBjp=hsTuF#gNA8rMS$1YQ{TrHaG(tN!pcbe(boWeZ6;>DBq zYc_nhs4y&>b>?Dnw3|f5OO1fwVz%T1=f7VqPTA`@sbJ-yb#aI1)kN(+?6h+8nRo7= zryW;Ya@?TC{MgLvsZ&{x<#~qujXJfY%l7^^&R3V!9#52RQsUFz!7lyh(@7b zzppZHt!T(}Zw3a2|Niy!?KW;T{L6nO=kT=x8|{44C45``4$MD2xpPbSzleE%>>tas ze)RsgpuTAH%jV=bJK1=KS-U^57}$Qa{V@N-`vbe%C-~fHJzKDO=>a3%$mjKioA2%V zy|nzIq|_&cg^Rt7ykBN+s}<%m6S940tsgYKu2ffRi|(Z}D_VK_ZBtLI7CNc^#CPEo zHD8un9F+@J^#@(NH1qQNPcv+;C${;0C=kxy_$VX)_uP-w+IG8_d(E@Gz3sxwq==nI zmKCnAR&&{;z!A{6)N%gx^vLC>_L@u+SYV*X81`3hw%x(qOYWN9o*(-6+J6hf`yo!h z60Hjk>@T&0DLhSOTr|?atnj2sJ1QR6Bd*RKrTEf0I7?avrn6x3LqV4spo}zCr@7+lLnf&z|W5dnH73?#n3#{x3to!uRzNPlpbouR; z{YvSKlW+Jg*j*8FBcjIS=`PJApQ+m4?laa;x$ryuxY4G6>-^nzyI1{<3V+M`W&2l8 z$%FCYV*fY&i7vd#*eKt(dpbjLMuWyu{r38(^~>*f+}!(K%YbL6&@Ea29se6Uy(XTU zSGF$fUE?R-9hcXZuzgdSf9i5b+$Q^c_fP-aw5q4=zOm)<^Pg-xUJLsrzByne(sk#8 z*g4C!^Omi!waF>nw{X>p9T{5x)=pq=zV6}oh@*7E#b5p#6p}srZK{@sGHr`}oiP2D zO7!tZ|IWYoyZN!3_s98;Y3u*2ZkvDo+(B7?%Qd^LYffIb=3P8Xa-v=QdduWHO*_6> zuM4@L>}mAKyFK&g9np(X3#KhSuHwkLi{E+cJjH7Z4a1zHQu=!i9AFdTKeBelhKnoI ztG{}(S7%*c*nH+sL`8IZU+znjToVV&ZzcCy-lVSu*cXEPEmGZL?bVo+H22E=GOfcy_^Wg8r1Q%|cTyrJiB5+)^Pem4 zBurah&NXFumXue1`ETx3LanF1P10s(jF$U5Z{>P^rpGT^9$oZ~zqwaB{_TYIhxh~7 z-!pCsTsGVBYAcVR(7R|=6HYhN*suDDNgLv=AE)eV@s(#Xid`6d)Npd4#>L|yTkGfD zRakQV=x5b+s^!}b$H*Mp;O?O=|@W#f-8KL!>JQXVsL>#~Q_``NPIf;P%2jY9rFRI`F@n^j4`}^z6{$1VZ z;C@lub3^U9bH$h6n;sGS7PXP-OZww;!EFXA|4-do@|Y$4_vhDNl?(i)Ft(`8mSB){ zc(y-rg~AdIFOgEVI}*?8eg;mOC)DeHV4hj5Q^T|;$-3W7ISyyec%QL{VQK6Et)z9w z?yAaGJ*jEBYvkguW9rGjYsvGn)9Ih4UpnoVV;Q51|le<5uVOIZ8|l_RgBbax0v8iw0{U95P%?bnp=uV?@KFr`3a`i+Zv3srVL zPl#sBKeGHnt>4c{(=!k1N<3CoKIrtE$y6kG7yBB!>;4>)m$D*!b#vJ-d^0*V`w#O1 zj%^Z!)@ka8K0FItc_LxXeziWHT2Fia&ivnxaMzJc|uB(}}(rYt)a zS6aVcUF!L_)y+ph>JDb+P$-{uTBsUST*~lqsV>Mf&4R7B?<#$Hr2Z!r8la zt2`FVnejPR_F-35{f|7pYK?Xw7B|tRDq&YQu@g#RTkd!GGHyIxDPpF<$$M$?icL@1 zLk_ZfPCA?*V*IFOk`L?4ML#q2ZtM~9ZkOr#cx9gNvbjzf`?+T?{;=2hDt~^~sl5`G zvT2%Duisqx%VU?{xG47K`B~CW8@0LKCO%y8rQ=l?%gsXqZ)`umw`x+I+F%pznlL?j z&SajntHPUeif5n5alGr>V#8usb+hiU-po>ob&B`a{*SQp&A8{W&(H0`=}T=_nU$>g)M$8{7MR?2J~aSJWB)u*tm$Em&z5 zqg=Yd{7HG@d+$Rp`+ZJsn0T|lO{c=>*29dd84oMBPs`eU@;B=Zy#?Z)iJpf9o=$vu z=YlZnwU;G6@}k#%ewpzm<77yWx*@mL?0Y&NL|qN?-Nki0ekezLzOhzlMyx4U(V~8{ zt!Li-aGMh|OJGjlhcD0GH76avZ@ykxp2u?ikIE|TZAJV^mNOpN$}aggBU=BL)1AJk z^_iPo^sXKcdGw$zS9i9-%o!gA*UF!5zBo6`)At4M7e4My^W78*6;zZv`h0JkxH@TX zo82PQGTA@wTl^}P`^jIrm2zbX|NfU8za=vornqS2w{ENHoMksz*}4BK->EyVU3Zi( zm#MTb2ygk>7Jm1AN1xBnyO(+2O*36)eP+7mNl8wthe|FP=Zb2=O6M&uZ!_ES!zajo z1~dEQx34$Mjh(A+JMGK!Z%lKgDlYlC*VuDqGP|=FHE$2HzHQf&)&H}R1_OQOO=CHV&dSuHm>uM`MOb^7^9J3ux1fc}z3b#_;FyF=Tw z_J2?EmDudySbAmELyqo!nlm#k^77o*vsUhz5nlduk=t3-9Ts06J>txkV)FVwhH9bzzSOI!#JGlhoO)^gUG+Q7vHv9`&YtLe ztuB#hzUtcb*>Al*ZT9w>{rfT*t<}$&DqqhPxq6W|>(AC{ad)Q|tmX2l zOf%BBs@uL`Ih!TJHV)oHBKbC7KCJuD6mT)NK#=>=)Q%5ThYC%(XM4}tUV7Z_o}XUq zrz7tK{@k3avp3nVtjFRzr?G4Q+spd0*OeW*MRW~T#cG!P(fVZ|wLCs|{ju{5?aWLs ztbX&_Oq$-uwKM)>TJvem^LGn^muIs64k_5q%O~!WyLwUi>Ye#>@0cCg_>ng$ZSgN9 zzXf8iuX)b1KXrk9QM+R(k3`c&an?&Z%9jpb5Ir_~OTbnOwz<2%94uURIDF?K1Mj9g zA4NaMJN~p>en|fxVyyocXlL;eDXXh8NPUe^ze#Z@K)(^m)eL z0zce|w@sJ+&+}j+o5T$7$rTId3pRT$TCzbvbe0{HMVa}`SMFJFANX>7m{hX&Sg)7k9WmJb?>HI?`ISpQt%blu*`;voNfuT}j5>lnQzU9yne|Ngr>$9$G6Pc${} zta{9QgVlxzGrPz^-unnQnieB|NOsU(zo@-ad$Rrn`NqK?HFdCaT6ey$ZWg)P5--Ey>Q{`L^RBaJF&+dWzi@F=Dq@^fEyVCtJ& zZ<&`(=AZE?spz%hu`f3cdmOrH|3AUx(S`#Fw=XVaJXNQBe>c~h66cFDMpxA(wp9N; z>1Dq>sXu$2-7~dvJ$9D03pDc_axVAsUGVZVB#U%KP(-OTP#@4qj+JD?IVsmm)_O>TgF)MZtJ`=^CdfsUt}-X z#L7NN_OHOv=hqqK>f92mcC^)p|N8i&Q21`*F@g1o=fr=e+?#QWfBOM71(C(Q2GegX zO<%1e>{tJgf7xO|$E~%ppZrP}?Yxp2YmzrGSV0i?qjU+OyK_7@c;h49ewZL zHe|GASU$Y5V}9Z7igyRhqB7>p_&7IVF+Y{%Y*FJQ4mC1%DidYaB zk}K<0uY2;DR93?*KC#wndF9TE@`%mVS-0Xnxl1@I?oOGsZ()|8_9|y)+g%oA#&1>j z+_~%a+3e))=hgKN`(K`JOLTl4aPU(9^7@UBen;(WxV&QTujuxN(u}j%|F%nR{NH`+ zzx=X4+n?X4V^zI+%Kp~l6KzFJl|@X>2b4Zkc|Bm-+Ofw#{G+FDOmED@`B!%~?)>i| zcjM`rKkmPU@2q?N=6iB>{T*iISScl*{?}TsyKaTe3CfG zqjSpKt6;L&$-NhAwPrswY%Y(;(P4k>-yQU+tvJw1w)fUF4bz`F>ke*U_}up>L(f~P zK-TJTVOOTN**W(;i5X>wCPmz`c&l%?n9VErBwLTNui9x1uIJfj&ig1#mrLG#s6Vu+ zGA&hg?vdA%RaV?%O=Zga^-km1G|fwO9sg5(E^nH;XjPd(@SIN5`snW$O(z{zEsOps z^d;%BV@*@Umfa~&rfF3_KlDcOSK1MoBZA()i%VBjU#T-Y702t~BCBxff$ahn$>w^~ z>7G-sKd*01+91}v?-g^CdBgsra z{gfcT-^R8^WSX0|Zu7ia7WSXwVkhF&r)6Bd5?!tS;>9iT`TC8ke)d(pfB5hZ%Uf;U zY1}3UKJl)8*S)mNrY+Rxf_d4YHPbw28Z7gZMCc9TKB82O% z_jBd^soL{CEah)_P^I-!RBNV*=Hv%6_Hs?{^t0$(dav4r$8qg;+qIsv`HRZaS;X&} z@7*5p?3MSs`p3-Ni&>Pv*#9vQmtb)CxZkW{$JVWzC+};Vy7AQd{dIqg%zqvB{l8=X z<7Z#aH@}*;X>*l_opflCj=JM&&BPR|qGp|x=!s6d7p%CX*u@sR)9~zDd%qKX%&)Ik zn@J|!mD`@6?{ZOne(ttk8EI!HS?$<4nSUo=|JnW3`{NbM19dc(l-w0E>}`GD<*?ya zv=T>f<5ck{&t9JXuJmL5jmo31!(|(yem}lt>1T8xLwxq_%SJD^_;y(289ixsl5{%1 zD~XjeB7OHZpY|x;X-8O}oBo^fzEU7&?P>AWO>gQw8kW0RzSOqLT*Ng=YX547qj^T` z*K+Lp6tC`?W;eh1I(PlMke)r(y_x^6r8##69DR6dWANIQPeVQ~Np8_)`g)~m#X0-^ zYxC9a>pHdWIF&0Nc(i?4`D~#*ADEs^T~?bWC%-uH;*O3pe5S8`drI#KSo($Cz1Xqz zMTF<}^t1aixcRQm58C}N)6jiAhiBG&d)bsN_dE7AJPmd8cfK~Orr&J7)fLX$GQEd2 zldZNbS2!UtJ1F;_U$HwEo%L94Ts=lvTzMb|>BCtq~nceL34-sIUC zX2uiCwU50PC<%y4f6#Hc$#%#58QLbwQI~7e9X9`{<34L=@%@^}H_z>@zjE(woPKcj zycYdFd-3a1C!!fwvK{xV>M|Gd+EH=B`9gZNMdNY(LYELfrHK(5 z+Jizjv^$;&@0}B|Oy%x9o+sYE%m0bRcGvRo=-BPq$tuL)@M{0J4A*4#&-UEi@n7dR z?_7I$e*K?z?bR7tN}Wo3D|fuwy(5W3aqD$~j<;8w!k%8Z{91uyvi_rmAGZthI(Rm9 z?V7d8;99H9lZi5S4r+aPbJknq@fGhYJ)A*4c8hj(Pqp;nx^&@nDsT;f~YKr27?( z|9G6a=U1x#Svf^q^7fZQOx!686cp>0St>GktM4;saM?Ir_LqRHbGEhX5%n@BSJdU)FDz(#KPO))$A@$Nbe60Vo8}z- ziUcK-#h!u9i$C_%y_?fmRkl^!@0eJo!92sZg4D&T=iY1KPfDbFE&?lSGWI?uHEVZF1F4q zt$G(OI}oyY8_&YUdaFh5-wJy7g6&ty<>J$`bCx7-oavRg;JlyBl&8m52JQTwCg}Df z_TUrt!tT_5~@5jdgkp@jdr&ns`9cTvBr@AHj6^U6bRk+0#mYm{2p)D{>Xaa?!m zjGo4d2}PAnh3|ctFH3bX&FS}BzqP>N#beFM6O-o8@m!eF?la+%?6&Pvkv0mTp>oT%E71bC>Du_+P7-{+_+Kvix@5 z?SEVP)wmj4BD1qKd8D;ODvDa{3}m!-ItYJ1xAE@usWOtM%XXV}2zi(O@7rAYW|P)J zuRmYv-k-XyogQuQ;_Y6E*?%rhGsybFEO8vd(QfCXkX>2TPKfYE7(P!T-{y19 z;UVQia$oEhAA0e7dVa=IZ|C;qsk+#ra?-*pDw>w zUv;{n_Oej(nH4*^3Kyy7&-^U2-%)>=>)Sx?^nHSJmwXZvFnR43cTVY2@6l-mJ}c&D z8?5RKy=bCe)S94|%N!lP;9#1R0e{tDwTfNkpQ9s^-*(yuCC#jU_FpQV-|)5`t5Vnx zVg1KTuGVYB>lwMMQ<F$&MGtO;NgLE9GIjP(*ANSR5^O`{vpw8}nUiO*YPW;NQPa`{v<0@*I8uf1tKL0N4h@5V;nfs}o`m@RIyvw}P zH^&yNmVLc+Uw4}|HS}feR|YnQ1zijb3g7+JfJonXkv4ZRq z@3YxxXEvL|+$dVSRA(%L}oRR@;tFFf$*u;|lP&smX&=C@Vt5P7EL&Hc{$>hb4x zvOfC^*sizMhrZpfBvRqU{X^}ifJnk`mG`TgyP5ybn*ZER%;v@42`tlVC-$p)ohh|h zQTn+gv$xe^vBn1$;}=yYdG&tBFq?B;`!Bp{`u8O38P8KSZcLfcU9wwp`psNrDIc{b z2?p;CO%&uD)gL+;b~sM7^gE<=GTwk9rTTkqm2J2o+{^2(XRdc?GT@r1-PK6f51Ik75qLZzx9muAq)e;UFba`w;F zgfDwej*fB2yO$C!=DyPRaOK^DU4 z*fjk-N2AS$JABI57QgV^q$lk3IM3+g*RZvnf<-ZUqCEkvH%rpRsx-}xdlqiJXC0Kg z)+zSDgc&|hJh=jjk4ZT?{55*pWj^UsMKo`!Yoz*-9bSi&TAcq1GTwZYxAK$T&TFas zYyXy5{py-!>>K4XB||GaTu$Jp&Yfv~sgEDc>3GO~a$%{n;?GY$eug&}^B+(+BI!9@ zK-gKe`RK7Yg>^zXQ`+tbAI`A7D(E1*_-uTrGwa2b(^GcO>{e=<<*XukjyL6R`=dGlU<9-BZa3tcC}_UbC=t&y6x_Q{p#^eS*r0{ z+&;W>DYAVVaWrPqD|^rF!ted;9Mr<@F-fiXdN5UJ?Z?%(KVID4cT+Uo*XQBn#BU7U zZ)}w0D!(NON6fLzZ~of1H1>;u{VMYdTzyjt%cElsZrPYVWzn12TnBZQUW(4xksIm1 zUxPn~X>JWadj*5&o7(H9{PwdNLhsGL7n~aXWb^C7MSC}W?>TpLYp~?vD>v1;`A$bJ zvSSE7pJ1fUKgCOUxlOfec--Oid!`q!KQW)n{%LNyBxm&MD+g>2Wqr(9r@Qjr=DUgR zcT~c<)KYxaCM>Vp`FcjYz?^A{&pMlp-<0c3Pd2}n^B_KiXM*bQPLoak1-CL1gI2G+ z@$5m-6ZPHV%g)cYe6Yx1-I<1UbLtm0-g+cA@10fNnT%dxv4s|jQBUShaqWIm?b&K! z${KQ>=b3i0RP>y8J{3DAOUyp^l}T>W!uVxE`zLC}&fDg{-Q&4%=k0`tq3S(ZjW)X8 zr$y$mW+=$TZFTWEoRD*LUfPu3BK0P@9+UgsCY?5_*txc3Mp0ASjI%%X6`FdVj|vNU z)grN=U}f6U5N-=Y<6QQOi+WwWXY@~zdh%9Vay754lz;Vxf}9{^Q_KGILvFh+{IX>MEOjW{_pg2iwo2%R0O(fuIMr^ zKO6R?^TtQzGV_ZZQ}r?@9^LWMZ0E!I%wcndb!;|&G3+s6RbdjcKN!V+*?VI6#v=2U z`1CX9uH0?<(6W_Pzva4ovx`;0Q@2$wqi06cKhWEKxcX{*wT(@K$J=|)f0({pSmWMW zv92ir0=DM7 zS8hz=KlI$+cj~=aW>)%7%X*(oNx634dEJJoekGmE-gua z@TV$R=6mQ2zQ-X)Zp7_4vZnT$iEW|6--3XSlIH8JS?@ae)=UU!>py&U!Q9zfT5rae z-dM}IH?jWM{p^hnNy|Ng*BR_OH=eL8)BhT9 zJ-*)V7TaEy2co~2m}XBtE8XyeY1>B8y-WYPZQH0_b@DSS_xC1|w*h6Xs{|9T{$QNu zI{)Hc&JVQ~)3V3;&iMUdHtyF_vrG4u8`9|IppQrufXU$d8}@ zWOTF4=jd)!4K%g+d$42Ttt}=#TRB(?{2m1#_|bhlB(b6~gEOd6_2JY{ER#DK^!#VJ zPy0Ddu-a)U^SSo5FRlBQNqm&C{E&9=(l}|t!sLHuj=JNY(-ITs{geI?GI7!$ z`aAnNH^}OuYm%RLBSSQYPL6Pwf+xy?X|5v|T@UYwX+Pb%WKc&5CUhE3Eboh7pu>%b2e$+S`&fuH-jU&%;L#Do7V$Gz*n;$LT88FM_%$%7?EiWxH zZQnJOH=k?h+o!wEx`xv^%<@EzW6Y7eO{y;~Ik^1g4m_D5ZoP8m{Jr^6j}lJ^E%_XI zmuc$s#6S7MImddoshm=1P;D1T>k8faZrabiRY#k>b=$mdg==I-A7TzQWRhcWyj6E; zUTfnyz1Ax`XWTxJeW@|#(jDcv_xmR%n3+E_TF}72u-1Wr!Rvo%=~woz%CFz3WG`Bf zpZrVSb3ui#w@clUgWq?hE)IP*b&6_#-pNg;7M%)v?fpG#K!9qa`@A-YgP`t_j}bN9^RS0Y@Nf!rX;7AJI^k?ayIFB zdEyPDd3}lfIS)I&=q;?%&RBVQ?g3jxiBN8dxmApNXGve~{j_YpQVfsh<-miRk}PWP z`$jYL;={UyFD5n@iLKLq{%!8f>$90}@a*+|r0}qK zuka6z&fG^Vhh@&~DLQ9We9~AcXydN*37=Aaw@C5wrUeCE6?1jH(fBSUb4%srt3NNj ztbFS?BU8NbY?xrh?2o7UZJ1KHe_Hmb>^|Z5e9o=z`!fEQpKlTh;bv&~^(X)P;lJx2 z|9u%=EW04it9g2kP40cOK5x~J9}f4iFeN%XQEp&pd~`zKS!-ZgO(V;rIfB0$%S+45 zcFoL{*%g_?puA>l+3%FHOVd&|#8{rU{^hvt^7Ps7&R_38-+9Dp^L_rs+Iw%$i}msK zwW|xe%~xw9|AO(tsY3q7sppscblq^R$j3mZfc5xcJMa0C)Ao3o*0{G8vAvj~bLlYi zH+AR3T5S{g!!|fEztb&kd?`M0anzLEYTZY5-82=Ij3F7WP6Q9K0 zt>ee2Jh52eh4?0BrapD=iI0xIfAH9-jR zW-Bk~4d7Atw+u7WRSh#rV=PnIyjIJ1R^b_~xf*Q-Vn%7x!ym0@^vhT@`J&ze&8+DY z0w%717wmP+B5{H2;drg=*vY}Am(OSQavv63cXIkZ*Uz69>=^3yw-c8E~&0)O$iTcAj^5H zzzwdfFOFWapSXJ|>&K7NN_juM(7Ae(%VkSkUf)OV>AOr7cDM_?@wjopNYm5L-tk(Z z@R4iU!E-hBr|;St5FS;a%Etv3Sl&97MRDOg;!eBnLU^Rh1Q?~2@U zE_k=}hF{hvJFk2GC)qVBCVY}Jy5i^c=F_3OukyOyb_UCbeGj_mu2C^%R?V4!?=xRL zj;rXX2xyl%c1E4&tEawAPV#RNR{!7+J>h?wf9Z(+P*(l#vhlgbHyhS^vn%^69!h>) zFS5tsV0Xv^)vE8CruPQLFMJRh{8#$vpSvOPi{0XvACdm@OkU*oa<*^#gSRw)+rQT6 z`IKg(^wkeu&7L*4^1``$TxOg9yUNsbyS&fs+UvZr-1n<(aP9pN`vq(GJr~(6+9W@b zrzU09|7Ayxi_|zBTrN`McJR4KjpM=TA~miDuZz?;AKWfd<9_hF$RCG;{UU!{4xShJ z)7})X@ndS!UlExF56rpvk`@SFlUm#mydYpf(1O4P!3hBgK@SW~*RMP}b5?5B$7RzJ zvO1SdbIG5i>9J5@YLf}qCCwMEjG1n_%}qXBzXB$>I>vMT3cN6%Ns3h})1%j9iJMfA zw9i2SE)UJV>!yoQ^Az8SIhzy-Ien-#fJ7WRJI)cI<6o7u6` zYMIHrxpStAu39f~t3rSFs(o1*!aTW)7Rn}OOytQSj`x z!(OxBUG2M)7O<(~SI)wPqSCj{ScEM+YqV8JMoB7bkLxX&GlBIBZp3hT`R2+!t#M-f zI@?VvKzs3%?;nzDM8DKn_D$tJc|k1TlQq}Ar8XvF z=QFrp9#slfR$Uc(?4WN}+scV@SEmJRxUyRJ^0eR$hc1LI(z@8U=*?nHi?&rV-i})r z%05q37kX;y@=B{J*4uIJ%AWx>Td&6D_J;KKoCDc@Y%-q&vW+Sg{S zIH$ukOEW`p+C<;WeamOOI2Gpnx%y`6lJ#Plxl=Ct9c1G&le(pL>fW2Hei!_{Y|346 zee2{clV9Eyd(|6Uuq7j!_ic#&Z(B!=3x3_n##bL}mRTL!Vys~?Il!`8Yp$=2HF7oBZAuX%)AwjP=~} z|6(&!sVHmsVvo$*0rNUE7jJ#5(s+HskJ#=_%VXVJ?Uy}xZSl71Et}91Y2LTruj*|{q+b1V*q zhu^x=_VL*@*45X3W!;uo!WyremzT$#!mkm#f8XA?}RIV%D@-x2o>1@O>>E{xfUVpT$zwwwv^=%8lE< zZ)awRxY06$3#-G;udQ*k+Z4oBcy-F_{Ji|NUkyDpqoX%3ObbyiN|J_Kf%|Cm9XN%`cNyds9eA8}8ozUe~STtdcf}qm& zC2N-KS+eMq=J}7ltM1wviA&0@S>n`ig0)-xobD=tr@jRbrcc*jsdUNEoRi7od`!T; z4Qo;=uXeRgng7;d`cGr=kdVaBKeE{Nd2PEGAJDo)PjBnZ8Da{1rv$8V<8(Z-!C7Os zQOCDlq3x#_TwQh_bXXe~zq!*!}+JlZ` zTh4^sekDDjBk-bYJ#(+4c-c|YI{D7R)M($gyFSel<2-TuUdZ$8+&evM5;qtum*#Sp zDXRARylU%;%3V+AMBTo#Y39KLb58iOba!=Lv2uQ$5FjEOd$av6ppXcYh zoShkTJ?8eld)KdQ+pu+KYfHzU`F8EUXV)~_%B=aetKC2L z^l9o+U){I48h`f9`pR?6C6iBi@t;L!R$S1!v7~$&|IeW4%Wj+YyfCPgTiqxk9caDx zhI>u2feYVc-^9?nOEehkk8yyZ{D|BHuU-bSY0ou5I(ajZp`UdcQJ?$}Ki^ z-hKGOJC{%1W>Fc#hCW)Usca<&r z@Jn{~p@aaDWh`&|dKq^<+-m0~eXI6_y7aL(Z1KvkJ{&Y`>~JzU@+bG=o+T5mZMkZ8 zrSa||lP$k59?RP>w^07!Mcv)ulU6Hhe81paR>C9aWxhl!V8)eoITNcAQqIgOTX~?w z(Idi(;qI%p15Y@AZ)DuP^l0kQcDFL#+(%3Q-t)OPef`$0JGZVm*w5Uzra|WG+g#pW z3m$3di|UTMPU_x_xZE~%hcioQ2@rKPkfB(X( z)xyO|SG@F^T*SQYFq<^g9J$eIVJUEIJ@-}HjJRCEt*fg}8E@w)=Z{U&5N*q!yuK`O z_j=LD;~6L1SHF`mo%HeXN~e>{riD50ow6gu|8n_k@4!1L*A?E~^ZoYgcKFZRQnzkp z-jSR8xM=09tZTpjL|it{3S@Ot-u!sNtsqX7<~0(%61P%H)+{%BFeS@M$^HC+lDZ0= zthoy{&hYmpl$cZp-Mb)nWT)g-A zZx%WmZ)q2>mtL-R@u%ZDv&r=l*B`9Ub*o=`Eio=jw<=ffUlO}w_4Ok%pDxDBI=Sn7 zncFw=0@}ul_r_-Dkz7^a4_N$!Y zG&p)L>Ysh8S4Z$vr?spnx89yz_Tot!!&!v|rQ4i1CMmg;hU8ojOxe^gJ%c-#@!VOR zmD7J8&sk_PCnZvQ_rdtsX#YpjM)y|#eeuJ5i|K`yE%SFL*Z7up$UVAxW5c{>k{n5= z78d*NacudaB^?|NKkYxYH^#Eku3*DHTLEXz3%e*M~G8QJ#o zyq-<2jbW!(>a1$>dswk0^mc65Vx39ZF2bI3bSllRaacR69l!Bn{o2f|JSXA1_moOb zzPk48>(xsy9tKNo;rSjN>3*ucsi`?kzo=x#HK>EnB*@uy||p z*$p0{%AI*xx@$jL8U?4X&zX7Sa?q;_e-_T!x`5wRU+B%FgFP13&etx_R*8SqF;jQ# zzG+g4oEomz7A@4}sovQ?Nm$T)@~WGvJYBb-kd#D3(+ElV!$-Fsfi=SR+*^=ntX z-XvgmI{fyAeQj3NESD6;x^6MwwqJBlr}_?S_o;A6#y5u)EuTJ>s^0RcQMJPP^hVyC zkI&4)cOTUV`<&yY^?G)6?355CWy9@TG$*)EJw0poHJ0uK*KJ*n`H9z$@YE%)UcWYX zv+?sjGjG0`%V#(0GHxEmwj)XqE>uR}B_Fe2-p%pu< zw$D%rC{EH-H@-4Q&|UPhi>gPV%}*!aQqxAZD%K|l=iNFr{fW-S6%$*7oVd;&5>K)$ z4%^_eU!!M^GPnAgnOE;=EnB?FX^ZP(%f_NBhdwR|kJWX#zIV%~`yHFVc5qxanWs@C z+L0|bc}ByEUnkSUi;svnp4AjPwPnVlsbzjE|ITTZ4K757j1Sa z5%cxw6FOV?YDHk+GM9-hIl~+7c{&-MY~B_`)~$4OvFU zA;FhyY+JnB%nr7_*l_8B+O3YAGw<5Bm2}yi>H2u@LYd?(K{LaLe+^ei2Z|j~elNjx zTH;oo^X!yl*-Ja?!qcUq7M^_|5bY|dD0^ns+p4QC438hXxRu3YRnHljsN~Fi0RgMd z9pGjrY$Bf6^P#5_4tC&LExgu9y6CuLgZSvd{2gTXFNw zeaFORxyoJtYjXGCXT{-{SH?c2HcfA|aeBXY2 zyG6_EcHP;jvu9_mJ`%~;KR3eR_eZO5Jslsz|d*TUj@;u51J)um7NE-)4Rn(<=w zWd5zs`I$dQBss1tnW~UhR=m1bs<|toZL#{=mPJ142`%zUX<|=SC-nUl5EgqGb?Upx zmw*rrEg5f1?#zrL29wE$brx;?YP$AG$r%y9<35qTKPDFaO5QzjlSO6swz`#NS2nWj z&w5lLxq7*uk3gzSs?3=QT@g%kRLv%~EaH5T+<92$cjzA3=~{kG6Hl)@p%Pg!QP*+X zp{%^gsh+39m8-L7ncc2d<8gDD`Z~Z@`H$S2%dKm-uwC5X_~cfv!4seSS!b?p>5^Rk zVq@0DgBDKdWxE6JzkOuI=X=krt!bmi2d0{nAK#kx)>UVet#1=-===HTN}uOxzi*Dp z8-HKBqgJ-$QB11yuTEldt3oh#1ndi6`H-q!EY%PTH>PR#6<{N|{;`e3})_DJzHeY>Vh zUNiso>+H9#WpUmbKVR+%zi@xCsJip*=KR`8I|U`X3eHrq_p?;L&rs8ywDs4lUD2v< z>WsDg)^*!;f$&m-bHyjkLH@%&E7C+Ug3u59n+Y@Hy9lC+%;o{h#SwTz#tB* zCf#dpRvjB}T)!0Iyj)jE`cFy7jm*>Ycw15{IUgSoJGZEnlIpv==EUnWLY*_)ulg?hHOp+plND<;w_gu5wJ+5FR<-KEj>9QO%JutBuiV<( z=zG$ua8|`O3)3k=Nt4}$PKo{JmQVX=|M9ubTfu+nY^?1m*Cly+L+ZrJ{z{qD`9*qH zPxvq#WVS&b< z2=Cj=ZSy{g)$KX@JJa9bg?R8Sow&38##?Ud&O6Vo^VXB)!0`_s#qu9y>)JKSCw}zY zbKz0&50h^H=k8H8Z2Frj4Ci|~O0srqL?nGoUXjO}c>P5G<{Q;-YP|yu{Wt#LUg4Lt zo?oc7<9G0_%WdC!mfD_XkGv(n^||ib^DaN;-ir4y>Y6q!WO`W06rF8b_G_({;E9im zOOxMwe%s2A>DRBBEHs{!n_rW9y^Gm}<4@(kbnoiMs0zWt%W+B}<)0JV%H}WKd*-(8 zTTz}Loqtri=O6P=GU!w=_nsjwee2cc*|Rn`yVq?#x-5Rd#?XCl4t!JalUw%n%C~bx z-vnZX1-rL@EMxoGUUaAJ$7iji^?%P^`gg8?zqq}t zB#mvkQG117TU7PoOaB~sms+r2SnV|}JXC*$Ms#B4|B!u~wwQ0Nm%P&wQ_C%=6aPyL$fq{0#YsTkW^pr+v$Rs(tG+ zPrE_clOIvuzh~U~!NSh?yP;Ns$#_FlY@J6}l85+)OIv#xLOe|07DR{kwVag$A{d|NgK zE_^s4_xtZxZx+6tb5T&`&Z_36#&7uN1}{ihz_8MAu6*}DUw`*<*W&004W1M1y=0g! zd1}6rVzv6VBX5F;$|n^zNylTNtnZvV7Pe1bA$NYFWKU1jwRx-_N4TXMBZ#3>6^(Y> z=gj9rM^!^ZwLb(#1s+|{e?ohfaeAR=YO1E2cGoFyEpf54IxBhh!~{hK>FNiw-jA~B zi=Ji_;%K_!5>v<09tSzi(j#kqmi90G68bCB%O-Hfq9svYYmE*DwP{;U+vGMgMRWC3 zC-0A%!MaQ1X69+~p5pP2TrLuQDvC?$Vr9@Z?ajJNJ!d9sp7mO}bc@Dkou?J4`S+i!#l*>~V>psn4-Fn#4 zYwOZKeS3uFiZ%CHwTY!LXS=N0yCI3~di0qGpSsk-gF>S8w}m*H>MotU!Pw*V8zqr) z;jU_qqwSnWk8^CS?U1OS(q-d#!`APHt?v$d=N63|jOC0Cr>Mz?lry;V)Q+Mg>eNhW|)BpDz+%WHLyK7?n zlfAlZGXs~$C~8dUbUk+OA)k-o+grlB*%zLb^P9Gh*EWbn=WocY+$)z}-hJZ~V$Ax> z!&`o7ZE6Pp1oPJ9bPnDRincRvKHRc=cI2|7(LXJ}`I=iFADmlkt$RHAv-tzs+r%GtE^#%GqNPToJeKZU2nJIv-zU%2<=_LZ&{x2D;} z&2LZ(`el3M$hNA7`xj4ckXe&?s*G<<`tCH(nKDz)Z9P@mW_R&Yzk;iE=ai@|H6Uxt8-B(Mr>zX*tYX51CuaTFwtXo-`99;I} z*Pgq_FYBmI|Fx}!C&4_b?rp^WrT*9ZO-e%AoWCeNy5_`ns^GmYDor zXYY(zRi2eMgX}{7Go4+3M+Hqm#ubRDQE}hm~ zv0xH+iIPuzispTd`%%A=X1%cO`QW0tY1dSd5W%S5Q<SR;C|GJI=Bz z-XkisHv6-iwBHuhz5{<3+Fe|qd$P6DH}HM#!ti%`0g+qonA+%m&t1n*R#IQsxO#%~ zp5ImB4v($PcPH)q@vwdQ;x)@y?mo|u+H%*Sh;oUrfPY(F1?gCpIeDF|$>r?(xc}zGE&S&H#f_dU()wg;y{I&)$CzQ^^m|R>-`{xW^VWT2x~b}? z%+tLkTs)Io#aP|SEUfwd+x?fWPGSxEd#qdc>4Uk4A6f>M9o}`vY6)}HQ(j;0td+tq z9b67eZ4{Tk{-9iwo!R@QT}@m$kKn1}mhl&r`0l%13~qD{Uy@q-f!VZFaNFU&SEp7V zw$)RPT9RyTT3Y&z(IitRcip9TD_ydJrtEuhFjIB&!T5_h>x(9P4Yra@=|2dMXZaF#4d&T}-*OyvP3;U$Il<#q8 zM;)~};JsaIb^rGDp?tloSeuu#zsasmDh!L;-}&ifcV4y0G}Wv>_v4rLT%9An^VJ=W zC5a08g2%32-?2_mZP&V+H_iEkoYp_)v=zP6v$fy*M*i&CZ!Wu?{B|z1b8kt0_p_7j zmGP_6)fW6dTU@#I?8Qp6u+{&%^Vw_t8*ub zI_B?rQIPMj^URzb_mjA{*UnTv>zlM;?Gm>COuJmdB=E5Lfhk`mDnMa~6J~nQ9 zYN}UU>O6VR_f?lN6BB#+N|T+ej+6x7*?sGJShT*T*ZIyK7e59Chx_}_$4EbXv( z^!bbLF=#HGtf{NJZ<*DuId>*|=N0u%^<$n~a_b&*?~enw(zBcWd0IatcYUf756jOM zFy^Q{;lrc5Q7-Og0n=2aaD{@a=k?e9=zP!g<%WW6+sCdQZf~b8wCp{*Ix8bHQMPLH zClQllQ5P)*PXCk4yJvY?@7oWdMM722ciKF2yyJY_o^$WT4QjvKgcc<{mt+!>)jxA) zrufsQ*b`AgXFnCVc`mqIoaVN7m0Fv@OYw(C^&)e=+r;w6T}oMB*IApAx#q|g!)Gzd z2|q{TQiQ>6uAN3@cn`ehDlAGX{czBgt zVS>|F?wPI}mxRxCcKEdHIdMzs)x>FX&PL7Qh~PkbEOJ$=f8lwB68-*>#&a`(-mO{auz7kE|c`agDyj^Vn0 z!%<=HljZSqKC_n0TYFdjD_eT`3wP@!Li-ji;$so*JG6iHjqVA@v=SInHeJ6dec*=u zk#^7joiEJ~U;5AGz5l7#{@$16H+C!ildF!mu}_eHw3+`m$K``nwKw+1zT9s3ccb=S z&SmzcOYIMTdA{z8_>6y-rvBr)9KZY0{e)l9;lHeX>fd|)Z+Iym`*Oa)-_6>8<$eA? z^7`NP^6$DYj6VOLdC9lf$uwo2GdSCvxkKV|mv$}Zve58K-pjkRa}#bok$WVa`>Z=% zX8RH2dFl)*sTUrK_|&tXEO{p&;eRxw^+%MJLsp*phFpPu{(bBsY}Uo)N!t!xHt=Ei zbuWWgVguKth0~TNpW3wgW85C|ZSx&d8 Z@Z!L#`|sly2DrQq&p^C7td!Xm7cM) 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⪼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 z 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

Z05S%t187- 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

  • __dj75^zZsG<9$q?hZnuf;4%xC} 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 z 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

    ^N8}0_K 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�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∨U!tZl^2)2&46A58mMwe`)kfUxwkix>UW z_dK_)S&|)>tjzJ^;gy>uJ*7356trumG#$O1>uUXMZfRY1LzrB)n*J#rj=dsv(tYlK zKU~cIRD3x5?p3Yl3#X^-jl3fHW|P)>S<@LW4u-d}F8^LDF{hM8IKJrO)TIS8d9Lig zpPgy{oG0!9U+4T(u7D%f8&18L{c+>Hzy<#npWU}8dBfzyue;sC+`CS|Mf6gtKBxV@yeB`Uh70zkr7wmDr z`gN0!)o z@2^|nQ`}KIKa4?dyuSwdA56qvmf6wdt@ zc=$i;G_UMG-nVJI67p|V&%eLp{px{F3nKpDEMB zhuaz&64!tFXR5qsx}wD$d%bJ(zxvIqzn7lfahScx{QK)N{mbu#mp$jWuzP=T#r1|8 zt~|lBzujtDP}4pA-A)z1ea&wBJ{N2#cAx&Q@xwFa?){UkHW!t!@A@7naMk(f>ghZI z_Ej8vze~t`YX8?ID*5z7ZR(F0-m`a?Itz+d{;RvEUF+-q=9cuFox%xq*WG{GF>=&$ z&CFeXCQa42C5^TMuc>iDShHvIq4ouJM6!`JQlM{ z zSYj6NQmmT9#kRCY{fJa?&Y&y}r`j?!W@cQ~8VL ziDl~-EERCGdS=cZ>DQ+|Ywm+5vVteJr8|TwwW|Epwpuw!)!XLoiOaWt1iVT1mOsIF zATH%t(L|l*Nq0j#FRNyKK6)b|N@&hh?TQ!X0mp2%cvnUKxb5=r>glk{=alE=EPi-` z-@GWsYj0r0av?PlrK3-mpRwiTP`}gWo3DOus_4}6z-Q-zjmjQnG~J5Ue4)QUcNox(Fkx%d|c4z#^)oH%RRI^~ml&RfQ8Kl<;&47VZ?=5OM% z`U{F*ti3C4#p&H*vUlh7+0NS6qtz`Zy~>!B%5Wn2C%=$T%KTZJ>-O!t@Y6~^C+37$ z&|0A-Qdffh-d!Y-wa9t@w{NvRqNZVDrDBc_J{>o#W->F&zBbmFw0^Sw%sioaD-93F z{>eErCo%lR`I;q@k9QXOwuOFa@;@2ztZ|8j>Dx6Q_RjG%{u{hW~xE%L=`o&&T zNzIvwGtwFNO|w=gKYvb{QB1&`Etcu*%9l^OZ;1Vz6XThFNqo{@QOh;*9IOATb2pVT z#g@nKDtEae@pj3l)e4H2uN~72dvWQ<%A%_lI|3^Tg`!GZ#ny;$MwiE5=$vSJx_iaT zFP9U&51x4!?jd~7?ex#<6}NN~_xhhZE?RPtUB>jOhvb77ZFP#i&p&rFzYRUVEc)rT zM(5v8Y-TNsJ}HzPE3@qLf|q*t;(C6FYrkCGJYk2clx3QD#pF+S&-wcYE9&r(_Nvi=MSj{DQdD{@E{%)od$KKQELboUlCc(X-_1 zs_Sw%QbV{O-AkG5uH>%2sJ!UVe3jb_^1tKntkdjQR*bt^&nEn|tG8BPJ*-@&bJO?b zu2N2yXDVM@Jaf&}itCrJuWMVf{Q3PD9ArRxM$cS;yX#c)>`bC_pLlC11j> zSAV}7_`9&%T4yP-$?)uEg>Tc(v{Y<7FHf5*nQ@S%;f6Cvc*!^!~4}{d!u1cDFu4t*yFQ!uAYa+|6?%MGl z%{?F9)4c9q(}YyzUtf>jRBv6`pd_Uk>GV5HBv*Ii)PyZ6vGrq3h5?i4Yxnk2E zp4D6{ztkvvXWA7%*K;R_ORhk&!}TPmEwP8%+3?No`{+leaF@fHA2&ntL~b_BW(~c(Vxp*szT)XEBDF40 zEbi#_rpXlPEI73zw!89t|0~J*sa76O->==W=%LTO#>h$5U^vp0s&I#&3>} zc=4aIQzy+4@jby{T^k;8ZtYKwApLv7=`X~tXt>Ye4J{4&!5Jlf!&!1>>4X!`A3Xm# zH0p6){;<|wb%KKTdb=!7&aNfl8-l~(k2&DnF#a6B;ob~AC;ub5M|af?rg^{<&2^xAE0VN`_2?%gvt zOzpg2oOLnj{FVDEG*a_B3sR0euity-dpM?cDr4l6;gEk*n+)Tm+DkZ9(D=J zJ%0SvDcbZ*^t?9(0?V01CUf@Ooc1Y}wcUF{!TjyUnzn!SmObh*V9Y!BE~07a6CRy< zj;n43SHychf0O86rD(Z+m(|J}?lub9g^zUi>N0OMe&F(%$x`up@-40PieUoQC(JI* zNFY-LkHGcJK=U=99QTq=}FI^UyEq|?- zxG}G^y5aPhdgm2)(==t4w6@#rv08X|*~a3VZ&+Hr>J|hfPEk!SXjEQSl9r!y_tC@2 z{IkyS@?|{>xy0NjzGdUjo5qIhk!zinv&arjR{*$dx|XS zb@}x0OO=^-|9KBRldgI5fBG&kN8yxonN$S<}E`*==7GaQ>X2HD%4i1&}-0nhjH%xs7rGH z93F{ArK_k5J>|UK)ZN&2_>A#4k+nkX5w zO?g91Z)|jW_nq&aXC*y$b?q`R`10^HQ|$cmGmB?;t*I^Sd+9g#)1gZ4*YhStJmJ>h ze^z7M`*Mn4czWXkgKfuV$Nl$I{5SJZJ?HZ5CB_MJ(& z9%8me^L<2y@T#+X8P9*SES`41{a8lk^!Ofqp@|bNWzKg#t$u2HWoYBCl>&j~`8SIF zjTSsRdaU?b4(lS;neB^}qz)GqZWlcIVns}3MnL3T@u%Xic3Q5wvFFS6<=58m3O?+} z>lMvAck{`owch>DLkejh zZ34HOee@&31SiBVj7XfOZlZc=j^LTIZOofnqW5;pSuDb9swo;JYxZk1&)Fx(?>s** zm9s%`g8#o?#d$2Iza5))ylpCfIIE-Sh^^iMg)2qLGlP7e3W@Dy`(hsSqqlqNw`XLIlNZ& z%3}T?>1{V}?@3U4Gi{CHm&5vN=TFG_%xvPb=&I^TZMOYemAcQL-`upz{Pp@d8aziM zH_r)}_ny7!N88e{-S5Jr_n9yMYW3dp(^It%)hu6_Wk0z5OxC$7AUbbiW{-;!Z>mJd zt2eut9t0$=^|+AJ#heqGchsmR!t2yswa~4iT02ksU5z+x{M;)_?!|1j!-fmaYwT7( zBwTWL(xfRLGmPBC$|rGGbG%tn`!w~WLEarMz8h~I`J1}=*?u|m-c0dw?oq|akdViM zwmUUk&WN>%sJ+!P_%ez0vh{;0(?6(-*6NDvyS1civ&3a~$@`xk2+tG`ujf{JShuu* z(Ry+0nm4JcH_y&|yzg-Pr|jvwm#Ah+XO5&ICq$tL%CgWS*N6)~Mp(hDQ3pY~pmkCQk)ziHo%d$v38Mze`bUQ+kmq=?yQ zvAE&6r+egHoOHIH7{bAp5G%Mw%=vQuPv#>rl37zY+m@f}^`FYYQ05=t+AZ?2>(SX| zWvn-H%v_IJ-OD`xg1y=K=}J3^QjND&67%;NMxW14nO*s;|WV)`@?-xW4RM^zi+Oi}E{EuFrd4y++vGKuXnivR}S}r1!+!s=KZi-zsvh z=~%tfwR+F&nq4zjc`@6YHJvbd!v68uxv#0+Cr>oJQi*Hnz3Fz%HvRgwPs=+(tYhP5 zRhz-LciwE#vcBB!m3i9vQW<}fG;1G9iO0WE-IYA)yyC4R`vi=qC#8Sh-u@!lN<8`S z^y1G?b~o=n?|uDug~?hI^Xp6>KEM4Swti~l>tkDbyKhEiE9 zcTUg9TONJ#iefF()>~g#cl}iT6f{HVltIS{X=~oQy(-gwKGItDc(aIlzQ1vKI=6VT z|J+6%nUX(66O2uktjp>8n|AdGGl%_s!#knb{?m8fO0~~gl`Xr6--U~}G~g2(+ik0p zSrg0-8fITqn{+u~?}6jLYBjs^qm|OT1A7k(%{k1uB9X~Fan`!NDj$1iThYDRzh}I3 zDRSjJ<8f}W{>;arSJZoY4NiMJ7wUaEpKZ}cX1@h?Cl9$YcD>(pW>%-|b!|ho6sRx1(UbtZ1>yxjQzOL@N64T=l))!B{m-mt$^5*B{kvJ4O%XHFAOJlZ)EY{KFgr zBQo12J0CgrBCD_LZkvB3r_iA-OF6EIU2bu{lVc?;HRpli@BJr^%Ac?|s7t6_`0#w> zuExjumOir1ZfQ;Zlbny7w7ajMliq){(Z|NReY5+rUmx1fiSusy%%~Drk9ns?6I}{6cV@l!Zw{7 zrmP3L0yL%E+dF@qf0q0qV^u`mjl#y)rgE1inZHZ#EVA4*&*f;(vG`M$&Im8 ze6}U>f!m=A7n1T%YHp~S+LAX-s;osrXmR$U`^KjZ=9flP+N_(~c-ri`a_bq-Mzg2- z>)B@ZxkPW+AZ>1?rl+E3%3^ltnrr5%-?ew7E}T|7^mJ!#z`ug$e=WT@9b%^?bBX=E z#`E;}#92i*E^P5zWuLNJyKB-}qn{fcj<*V3w!G!aVm!rDJEL8F|MZmGkQ~sEy#Y?yu~bdG|>}W8db~gS*xz)>(d1X$#n^ zYU@?DI=v@B#qELUTlO9OE?M8=w`njv-??gc*4|5hZ+_#vu6(2B&<(lYSJQt?`E_+t z%-uhU#j|WGwr=>6IP;>#^ksq9NVhzSl`e%)#vP( z|8v4DQ`NV>nsp-1t>60g#K~3;c?+YGh3*Ppp1f=>{mGLueMjQbMDDJ_!peCqZzj3c zD_jr0CI2V>(%Jj0v;KcoiTL^I`5Ar%1sN9wg}(m*y9EDzKd^u5>>Sfvc9GCC_C;^f z&vW{oZTcD&)wEw&ge$5;c#1~1Zdc&!(gVA4gu6>qrA}Uxd6#A5@Y`HyCcjZ+QqS&m zvD3*(Pkvf%Kf77xC`Zk^cJ+#+LuEUxuAex`BXeTsp859W_p0{qU;g*MjN7lz`xkQ+ zy*O)}dGL?f!o~igZF(PXCK;IL9ph2uW_`NPZ;r*|I1`PA<58tv-kaJiy1d1vHBUdh z`?-p#yW_XO8}0Km)C#3+pD&r`o1E#>dEd;m*zaWA zn9TCJ?8zm^2Q63K3YI@zY;^5|n~qUNO6y%Ao{fpYdE2;etZX&C@+rS>s=*P>gg0E1 zEd8&~c;wd|Y&>C2X0PS_3`?&)^*V9f+6ggU(LF^cUq|!`a%|=3*Pc01LXrK)C(DnkUd&GRH%$wf=CmrA zE$}+CwiUy_iIPQhiNDqViDH;zGBa4xi6O{+XZdFjzajDO|kphk&H0#N=~r zr^*jTdBi`918deQ=NcWE@*(N8)4Ex;4+X_1$Y}4+mzpN1&+1xz>SlD<9h-kK zDQEW@-#x3Hd*tt`gbNF&2plb>U8qrEe`4 zUXz>5mih7=qj6bzpJ4rm0|h4n*&32gcrT4(4p=v{qdqKZBMD_7$FeGwHyerr^*`rabD!g6-ihbzhpfj(LUb+3|gQ zrmkc8WhtF@2cY@Bgd>%E=j z-L}4n?OeyK3s)94JqinP{vF%h_bUI|ey>2`U&6IUH6CljgTE)|E_h{8|NHCBm*$J5 zA`Uw3*ktab{L?*g!`sCt1dQ&SQgPlPqJG2AY3_ql=CWJc+SW*JDfI6U<>$I5`rbT( zvvKFu3pd}kuYcO5`fq{NNpoxSqXy1fY&Nq5o)YnW8&sXU^GxTp9@%rVc3)5TpZ_ED zTEnm4u!XIgdLF$J7V%L$!h6P_UFG`1OA@WuxZ||@{uz8+oA}#e)>>b8yFm9r|0je z=GN_K%30wncO4GDn0p^ zVU=h@yz4}J+XAyc%8h-`mcOo!G^uyZnVG|C*s=e^shIaV{ue_8);Ovhn=M=ZXI9Zy zJ?*lS8&A2}e#{qVtg-3a`?#g!rv53V+c$3+HGKU(b>@24JSkb3Rq@Z3f1lH7v;SnY-knW8?>6<$s`PeT zcQUmy?atv@7eoB6DC|}jn#rm!xw`TG;hqYY=}Io^-ibeo-+K72X!P?HuA80HO~n

    xuegp`_XurDZF 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≷qx7j{9P$ez9AvEFOlgaK1r`~L<^$9vy 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

    pcGliX??YOdTmHF;!ZX!Wf)8>3 zSaA1B_<=c1{_~t!1X8?|U->Q9O*&^VJ-R65e>^8|3eHQ+GaC3K3?PS&o z#tHv@5{?G%cGkb0_I6)hM(?pl`KMXWKhElTelDP+TDGO!cu|=O|I4)E{e`c$Tzen1 z=*rTM^Uluw$>%p)uZ8#S-O4LI)y3ZPdN%i1OHFyXiphJ5%%=1I9rZ6bE)(#O?AY+_ z@bkr9@4mTruiWiv+!lB?TQFg|ZnBDhoi9&PQbJMzx1Y*EFMi&}xer{w1pH(OdnWKx z!M%2}gB!yYah^7=&K0>&>Tahvcgrr|-p;XT$C+{g>rK~IyN3tyo!uPtxSmf$IhaQ% zwR($?i}IZdoVxcNRt5AZi?MsD_s1n^Kd=4wd)vRie*ZpiGh&>%^wU34`7all7%%=a zw{HAj>;FGnX|B{1^>-U5_51clT`jQL>h`y2&(&;=lTT+ZULL@4>qzXxfKO?v8#6XL zrzFZ;p1bqZs{>u82Y4Es`TUiS=B-<2r?2hdFSKP!j-pwE+Kg^3Ka1HCH+nquv=nCq zW~}{xBQ^QX<*OGT+GtPScYbH-YvWIQN-wode%#D^WzXx@{Y=iUcO@4ZGvBTJ)Vw)Z zEbg}GgXhJsxi8!L?)H^Sx_rO5e8=0W#Fqc>9{p`&xK{gu{qLcLpQj$!RlxkEapC8w zj=yaaHq@FtG}`xivv<>j&V{<$KmYx7wD&*Py$@#>FaCQYyYR5!WmC)l7r8g>k#2g= zwdv~x?&VeAKQI5Cv*B}G$(Fsz|6CYKswHBKj&{yU*A1BL;bvw=xwbzsoP^%R5zsd$1urU z>AfQ>Xb^VjQp28z8Xb?%JA-Nxi_X;~)=u<1A#kLK|2P=E=GE zxtZm~uoS3>iS5wbJn5MFwv`3S?^c>ja5O5qFze$RBh8-Ao{WvhzMNR5r=*m(-pzLF z{G&lPV_HoX`nAO!xUy?j^&%VHAPw(q*#9%GJl-2 zbgx}#<3ue}zArZIW)BY@yK4E9*{k7|{E3C^8(r15TwfNYUSbrm>Fb@=GU-VZHwas% zu>9MQ$?g1k`J$LFTVgqspLS#x94|S$^M7kxkA&Gu+F>#hzLZ9jH@b+M}U z54#!u^DIg1Pv5fOhvBF6V6n^~c5yYiB^;Mqtd3tdS6Xt~L%Hp{!?cFTQmdTHTO#I5 zh#l-(+WhCq+;3_jwHj7$olXWs&$hVB8}LOv_b47VDz-R|U6Q_Az{6d2E$jujO^B`!@IVa|}=J^7`hn-!)ye!#Cku zaoZ`L$heiFU$60f*nH`nh|p4H|6R`CuB5A;)Qev^Swupo?nj z?mGc%KXjgE*!1vu^N+`IKFfNRX~o@(pIdt6r?QVrw{h+r!#m$wGN(u1OkQDpF0<1k z{hPtAEUl1aUmk^+rplNfPLD1t8ZBpPm=f-3ber8XxLPcwLT9o&*Ob_Iiw>EbKly3z zp6jz+s-!Y^w`kirNKfZ|m$4*o2K!Iz((;Q(7tJ}a!m4@0jvp$Xe|TC1Jg0@->r|F@ z=DR=d?aGKH5@j)Joi2Ma5?3+D3g!LZ@+ats^QjkGPENC#-+Xumn^i_|bEnGvulaj! z`n%3_P!g`*Z*-D}{e356ocVBoEnViwz!QYj3dK<%~ z$&9ws%W@?vHI3L-EPww|_I#S!)eqL29xjmb_FwlQWs10j_RGGVJ;^Wc^lzIt;q%9h z7p(TJ-lZ4*@%tl>P&;pCq0C9&c=sqyztq#>YrQkt+4xpxo;`1+-`=yUc`U!}+IGvC zeRI#$^SZpxLsNcrK923@`RTav{EeL~v;E2z$9D+MXbCr+#>xBDjZ^ALP-2sspUtPP z9}iMkd*{fsh^=1nR<2rU+oMg(CU@GTq+AV)mEL*8Hh9|O3)Z!>ENy;vs(2^~Ex*sJ z&hI|!@C>;FyVtdSx@~5@hV#Pm7h!X6Im%jJOVC}ay)dZz@$qF`Uh95HdYn}2Z|{|e zo04DZc!MuPsx-*?ocN|v4c({f=0sVuB}M(SZS+5>JB@4im6@A%+wWSL&sU!x^8R3c zz>f9;tzAV{$0yF)H}$@Q)%3MKk)PQ79POvBb1Bi-w;@;L#WRP~cWS&Ar}F1H*@td% za#)ZT@@4vsr$6>j!V$ z7k=TVE^U3lyyyO$bKX*=raRZIkX~!?;cN6~ecNR4F-|>JuH4 zuFTRnaq3f4*5Zygy$)Zi&l=CU$eFvo?R3de_t%RiJobt9dg!aUIWub6RbS2LIjK%?WugGfdR|v>>YjB}hVZVCcd7&?be3!%welp*9&3ydJ z+gDH5zL2g<>5{cxduo?ZvF6US8-|uInfWa(o%s$do*eRXF{j8T?wyt!lT*6`wwi}- zNcnS|HBV;m`Je206S(}{Nv zD1LtM6yRJxzQYm`dB1EW9vhHIq@uD;9R<>enZfUoF>}Cb zJ8()am!0jg*dv3#araF{(`n|xAy$buMGo9itm9?aFlpL(kBBegU9(oRNj645+mv)|7_O~;|26$r+wamT|L4hagy|Yw`E_;y$A7(b=R`zY8 z^(61;r`G4s+-hUhpHk|Srtrrv;+a6{`6+kQFLTJAWvM^Pdg;#6v;w(*Df27VrC)Q1 zvuNm1w+kIc*N^BXB_tk?RyiJR@+Uv7dVZ3}+|%sV^PP3~otLwYJ@xcgch06C z{pv7dmR#}86O6C7JYM#E37@@=HJln>#h43 zMR&}($h|%&baG;7i_z1+%7vbbzOBsXc55o@bjgc#_}Jd1-_d2?!+LbSR{h8Jx?G1lcj%RdLsPt9Uu2{e-;O z-He%6*Cbk`$u_Tk*|&&`ujWAWO`Ts&b1%&e+Ho)QNPNcU&CR=|d@irPzKf@063eVc zznNbqtvaX?f3~>1N70f~|D8oas)_vKMeL5Q5}&@Fzu_-1mvNb2(;WYrHU57c{A=&c z<@#CtAtd3(hq8T7no})c>a`Jmr7jUb*{Ix)*^=`1~ zrsYpRcg?R|u3Z;yG0Ub*;@zoFx%ZoG3%WOKIDB{~Q~eI16}5jOIGqK)ADURdqo=-j z+UuuF=bfAIXZ`)%=Iqt$zr0iVcKm!;)`@cEXJ#H2YYcw8wMf-WPOX1wC-Lf+T;}09 zfeo7#UcNGxGE~1gWBY#%{sk&*4`eD^x&O>=pM16AU$9Ti?aDK?cAA>5+Lg~Un$LLb zp1uCE^wHT|i`}%=PF7b<*_pEZ>A!cpp~f38TOYZ~eS5a(;xw(b#?@&L<~(u@ijH3P zUTVQz<;y20Z#-}%Ddhb_ZE_RzrV?W8XLh|gW` zy3X7=q*1+p)_Gl_zHO_1M|?_2tNY!+)w-?B;S%@pM|MqmXA&h>?mo-F*ZfgZq4v@A zM(dwuYiqVWR8%*Vm1F&}@y~)~z8Y_=6dy*eed2THUVpjF6?-vL&Vxs8GzBYsUl$Zk}mxwC2j8=40ijJdbR!`{8=5P4)zzIYV0Io)zLZ&rbRG>;$9XWrYQ< z)wU0Wul_Te`|{cGlUsU^M88@;eM)cOdwCPh%D9yme}1@jOhzOvtewk}BmedKuO^v= z&8yp_46ePFS$g(NO=y^ckG2lu?Q<4=*=K8XLp}1tf<#o$+n-Xa_eiMR&sfa)Y`^2$ zPrp7dn!e*gjYDm~jk#jY@6Yxm`REleedFeS`{a4F=UKa3T=|BN+GVGFFL$)I(z)Cu zRqBf6SK40IJbRqT64F>DC6Fm|HuBQe*XG; zai_12)k9DA%HD=Io7^?-AAA3)?Q6IzxBXT2-si6**DL+r+-+3BnYw?PF^9LrJMmdR z{uRwst90=1@Yj8}H>P##Rp*J)3Bg~so?7-fw`!5u;%_Yvex6@<(d$rB;if=mF^?0f zwVAo$e3zv!JhJkCb+16g+3ef8*)c31ZRa1f&=xqtrTXdO>KC`IZ@z5~vNRD>KGMp# zY0_2;^^S$YO+vaI%Kp3y*`3~>KNY^DK2x|pT;bnJ-xQt|?w1=G8Ep^z`@W=p^Z!*l z3m5!7|7Ys|wF1jMp8km!{<7cPbGeopSDnLo^=^@);#?;GT9yeOW8XYs!espqPqXBd z8@11@hz->dKk$p`;N#T$_t!V5Zs7IPo2_%UQ0AHJ{?fwC$oWD??nr((RkWk(@9R|c z(;t5R+Ec>Vv>}x@th4*q)AplpOyyfn7vIc36eiqzF|T_{aG_TJ%%(DpzKQp{WP9$X zb9UE?uM<0^o}?Wr-e(edt;On3$4#G(%k0;u9{%0Y&NvAnZORVf$ z+4J(r_1i0Zw;g)2WU2A#7aEw2(b7&`(BCG%aqD>Ix)GQTsmh@@A+8z=Wy|gD}8E5GrBLGd!Ei*HTRbR zx2`Df2k8%&oK}X%R&RKFd*P$sak`JS^__mQ{W+64d1iEroXtk2HGgt+o7|X=Zrmf4 zT@mGcxG191Ec@2Hzz=&K|J%`$WV`U_OYOc#Po?aZ?r61PzO%l!nY~(#pAA4T*r?a)s9XbZI>?Idb7bQ;h6F9 zozKdG9$9=elHB!R_pRE9t&#J-{__)5c%wDTaa*j?P7m>&{d=$O?|aK2?(kxNj)OQS z+w#qedn6lW|10T-x?Q*R7x!zi%~`!dd*VTZ`0kJArmXz&@c9;>v@A9E>iceo-}$;m z8|J+ePjK{_b5k>{C+4QAiHo0imd~dzn4z8Ugvs8F;s#7$NM8@9FmoDv6`8nB?Co$5LwczcQWk(e1^sPTh z^d8uDuiwuE}fxhs4sTGYx9N=#sBxb2%CAS-Flza%44ySYut8v@D--UTA9CSNDtIGXuS9r z|IeNt{S_K5-ws$lS^uga#d|$}?V&<9DMWR z(3}l-KhKEd3N_v}rK|6tlK7kIh+RzaRaJZv5p_Hlq}4vGoLsCGr;*CGp~hpkb9Pt4 zsxyaDWmkWdPcZ#?Ugg_D?S^bkkM%C?QOc)xd|qx9F;}a$Hg?_B^=6WV%pYGfOf`Qu z;nI|Sr>ZheRHdBI6~0(+X%}N@yCZ0?;`vzR`aIVsVFoY5EzaFk5jlDN+>sLLgQ;`N z%tae&AAb4mu_vZ_UY?xzPJs#cUU2TR-#s^Mr<#nxazoDZ$rp{p(^P7LCN&;t)LpLR z-OV%m;hhE@;VTb6D!rZkV#U79FX!Xc{~mbRmT4`}uw3isyZNpgpZq!YWZ&K;QJt6H zEnXCLa93H?C!_oGezuf7>vKtvvOFYV_b5`H{bZx`g2cwurxUsS95}mou6%t;uH)*e z-x7A8Jj+$;e}8xQyZ`bBd(K~dtUdK2kMz^re%Y(O*srhrTmCTn+yBA#NvSIno1X36 zTBKb%@#32Un~xnyxgMlB@np+Zzc|gU0(&~1n``VnzvS4Y+kxqmx1PJV_v?!-CiS8Z zu5!mkYO~(qTj0D##AE)_DXahQWxM-W`r2d8P6?~SzYp?vY6w(a-??XxPVV}q86P(N zuG#-^!drv42DSG-ef=?wvE*v?`tJ+0kNZn;`khT;2+p^!&d@#|&#Su7-LL$^)EEE# zM1E~{3-7h(KP54_?Vb3~d;I3F4OO`kWR$<13Y7li(lg09dg8u`|0W;&(|cygpX88r zM-K>?=skJZBp!Zd#@%SEbO#advNij7o_Z(bfBkpk@Y|O!A1!%$FXP6d#rrlc{k&d9 z@0ZHPNfWgTJrs>3jaQjQ=dNmg(3++kQq2+Y^`U0tM%5R~&!pTcesH?B+0gm(a!1cv zuV+(&*7F{o`fbtGq)CxaEnA&(ere#zn41~e|VGjjAxf) z-UFK@On0X;J^1>a|MqjqB{#2aS=6rT;HY==h>MGLG3(ih!eX|`2Ok<s^?aJ|3_%W&ZDZ@E_{`9!O zEBCjby*j5lQTf=LqpNoBkv}IUJIUwP6UF-ZR}w2*F8V~~#>sp*xumVAC{M|Mi{j#s zV(X^+Z2a-GaN)V%7iDEbWiQ5VElOQ`>X+8$V|NbM@3<{KX+Pu9T;Cfj0)jKw zB?bmAmsR0U<4*5UK9;`Ht?Too(8-tANb=lh-*K*=)4*Ky+sO|nmqa*iE@-n$+wZrw z_2=p-32O=!S{yR$?C-eGk2$@HZ+GJ_BO%vb#S;u)t8TPiDm%iK(ydx@X5#eoY}|J~ z#Z62JTg>U$ZT8e@@A``xhc-`&Km2G0(^W>ZZ{H3(PgI=6u_V<{s9mqHM&o|c*~y`* zffFJxzA2i%TIQa-Rk~wsW#FsTf4e>}DPG#jzSb-xa25OFSIdpFhVuQo4SIoWvSWcl3-%QfV4jwq!+j1l1MoFj4j z*x|j$MNX?^f7jSG<+*IUsF=z0h5Ibezs{N0wD0vJ|DSzI~4 zVZYt44>!L!vaS1fuXMH0ub$S{WnDLd1u2d+79(~p?W%2GJ!^18M|bjByZpA{P5PacfVFU zi@&lH)8e+QURtN3^6Kli9#N_MxgvGt_U`%8x7mFI{EuixL5fqd{Akk~ zR}a||0hV>qO@djr4@B!bvwF?vCyR^1{!y-{V`A^{sJlNNv`g?@<

    9Tgg^x!*2a)*umPTJ4AbCE0Oy{Dn|$>l0jzcNj* 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 i zwt7yCn6JD=dPj8IuDr}1$HuPkiTj*rTIz1(!>dNz0Vo1|{Yg7Yiv z{`dX(m+A1|L|142B==|cb(GqFefOGXHPd3pj2lujFKEuX5iKn-^Tv!DR@R+Sf8x^r zMF-}e{3rS>ciFXt9UdxAl+UP}FPEt2Ju|&O^a;PKsmg%}75<$rF4^}AUMk#l{=#

    -->EJu3vSBd8Oda3ojYtIvjWE{BgEpsR-Eq zX<_xEJAd6+7Da4NC_1?2>90#nUA1c+GbE#Am|w5deK?yhkWs6XBlueBj-#Hpn7exx z74P8Oy!F_%SCdU-ZZ%1Z5`AKJegIZfQWNtoX-xl%jFdO=o;f9ajXt-p3U&z!l!CSEn< zR7|GcFYO;an@kcXD)zAcU|OnKd$cZE->voF)DI_LvU{eaF$qlT+V-XY@5ZSOo>|+U z{+=7D#4NIT_p`p@J3{k+rR02k-E%(qY5Jqz3x#*e{hqY^kM#Mqhdmj0t*e9E5bIxFi z-+gS;iFKck+byu4@WfojtXAQGV(IfN&C~kgExI3BWH-K%4>Yu%bf3NZ%A>_c{;I`2 zS{Ej;FerQFxy4Vn?tdWLd)nP(se4b;_wDPoHy&UPu@9)1WdC(-^`F0WPr8?IPxyaD z+>rZ^P0o*or&DjHUrIi8a&>uY$?Kw@AIoj0*?0c%?@HPbXzu%8EnoY_e(`UA^1Hld z&bYz-_g`D%+K=@wB{X;P*0oGL-y<-$w(?U#Wvq0++m1v3L_P&Q`mo@SyJKSNk;OOl zU%wIEy13L!nJHa4-F1bTBA%!};@r-<|gVpquAVe*R;VN0i7B z^V@qT-0Ln4byH*t5lULG)}Zpby})*PYx2!ruW7RuD1TAUxv}8`ugVR5t>p`O_o<4^ zom2K&L+a_<4BZ>EIj8LqI3e#U&ZF`4s`eT=%_z;ky|Xtd>&-i6CV5IlUye6rpZ`I( z3-(i;bDOu9r)nSRk7_hM^(2HX$?&M1UnQ^7qdVO;yRUd&zhTOd>zBQ5t+oH7BH^w_ zdZv8B9#&6PJMCmzI?EQ{{BBjUx!80Kh<>JiR!nD=Gv})@k8PD`lQYvt&T?}o3fx4 zR-3Bi2|bOvzwQ@!pAB|jBVuZ(ma)(3=EUs_&g326?xJ>dm*PFwyl)?QZz&y-P{^$N zoWz#Mc!FIhOyZ=p0gWeU$H{gu4uv@}r9mGB7>* zZ@%W(m7~{Qyq|2NYR;XmT%7989IYN~?LPber`O)E%<@iUt=M;YZu{j++jc#=ptJGw zLX%C)dX6}6TvO8ArJ!OIvDxv-sni_Kpgy+an^xvJ{hQ_66l5|h^z}3@vC7`_Zzl%v z2+3Z`uk}q&&#BROw%lD}FOqNRmy&t;g*IRN>^1dAt;J02lueg2p@4vgT7T2%j&YC7$AlW&0TK~In(U!T0E(_7`WAX`uwM_eklF;mb_>Fv#2iPg$G$0`rAJGEPwMb zF1`7IUBkML^#X1jGd^yur6=VcpDI zuUw2TRnLw+Uc>XY`;E(mTl@9~-(RuVE_$8d{QQUaIF{$hb9skOU%8}5?$oO9hw|nq zuDoo%dFu-k+sobV72BSy;#j>&XX(?@r*$4@1r=^>PS3DO`FQ<;!N1Q%yI;JRQ){eq zE4cj1EUPb(>^`Q?&%NLhFi-t#@!an}*SWVx7~|*MU=)klCuo(PufyKAeNo1v()8?w zeHnZAik@2^G$B3fXy)GalSG(bbFI4)a@lC!#;p+>4(`3EHNng@M&^;+$;QP(6=#H$ z-2=aSeLPk@w`_$+h_&Nk_Xq2`lcV}OfBT0rusQtP|N5V6Rj^veRZf|%!xs)mWwWnx z555+DBvx?gnt9zvEifPoG`uNm-osD)r&k~5{r_#Hm*^OR!Y`# zo`3GIL#v`=+2gAJ62EKiM{D(MUGAj5%=ypp3G?PHZ@wV=Q(QjDDQMZIpe37jRp$8j z%u!&Fn(?QFO{7e=!p}jUf5P$LeFw~b)r9WIc~f}xEx!o&-F(CFKM7p36{pXvYw$65 zxp+hNjzRwg=e!9U79RfF6~zC>PH~4#-vU|Atk}f4yz4K#Y%@C{H)Z+x_sRghR4|p&hXq{|EhGs z+bhS+r~N9aFghxrd%E@s{~?d6IN_^1O0wAAinz?!=iO>68g!QP;MGEn?;WtCu=-Q^P~N1=H7^$EarVePa@j-+38|lp-U5$<6Uj_zI|a|Z*pq&MxEgXQ5@$Hh=zYj^Ru{gHzW#gT@OYMrd zL(Q5pnO>!FOj?-lA!_^I>ETJO&BC<~2{GL38NC@g&pzREPUC-b@u#ed`3i^nYL`0G z6?*AqO5xV^7q4wkwKsHd{>LDdz!U$RbLnyohNT%ZS6XFUY*(oAUT@~mIr;0oeg9r; zJFS+H0m|KsN`$-MLTU2A%>Fx~C_n|TL!)T!%rH(x(g8X{~N zb<1tlmD{ZuZu*D*wcPbG5_LXje2r_nLVxo@9TS;)pThEsp|ZJu1s)onYi~Sn?ArBn zp58%OgF@j~FZFu5zJFg|v$tsSL#dFLcFK_-=B|`n^CToI&Dndx9wtSSoiAvocu9A)!4PJbmvcBG)v>y%Z^o>*UsYDvY~+aVw3v8 zQp*jYpRVa}Zr{83$j!^V!8*UM82y%xy&~aL<#vl*)cgFzfaW9HnzVM^I{)g&<68>L z7nRysslLe*oE`S^v|GtsedTWdH&qH3A}rsX3^ZP)^ncZgFUwE;SpF~K|Is5GSeaN{ z7&uvue4hV;Uy}Lvf9IMM&Fqtk+zV<%7BAj8=yUQhx>}*@u^J_)RX5l)ch8#b;AyOJL+gn?DOShvbFUy#6zpq2#c^ z6}8Zk*Af>@A1bk#UwqtseKM;#pLfB@fWr*gz4e#P69i30I zQ={+BGHZPl_Wt0`Mdeqf*o%CfmAi0}kmH18*@;`uMTy?azj`y$IrGv2Pp5-5_txFi zNqnN5SQsrdi~alNj!8F|K3GLeTN7ibb=0#U`?5mpGX=@t9qoafpI09!S4_6;ao&3E zF>C3YXNF61vp5gTZtcwqdUVD=@_gu``j;0o-UQ3Otf<%%;uqF5b6%*@+02_7Pd9#C zHZ!&0%H{7Z!3lF0u6q1W>*}W1RB=PAXXP5sKg$|@*gcHRqJz&k2?V8Y>RGmNucKkt z-Sl1RTPL`*cx#=G-yZtgYf;PV!-nF2FV*ed8g{v-A4+rUp-N z&Xg@G)BY{Kdtm)b6$>?u&X`aKou!L6Pn>hb@zCu+#<2K(|HXgCW^Ihn&Yry%%f+Q(@mzG;iMpZ&B~eGYZ^xdhmp8ipJ~%m}PXC5vrNAkE#VIpv znNuXB8cm*C?=o$gvEHO%;&%qU6~BGwgwDUi{%uNTX&)X zDQbqI$u8Diyt^HjC}^121$DZsvHZB&Y&G*|&Lnp=Pb-bh5gL(?wru}UJpH=$T(@s8 zHvQnt=qg>z9M;9WWAChqYc)#xe0RFCL_1GUX$^g~xVkTV`D5*jda1koFYX3)o^9SN z>)mvuN8#8jW`~|VxqQ&BIqy!>6y+yS*)U z_vvl9w;^cVukV%V&&;2nsS$r)BR=z^i_1NmiP`J7DjR*{TUq(tx znc?NU6}7)sFBZnQ_(1%ZCl_UinqabYQPlT%&GPm)d62>dm)|1oP!|WO>(4 zWPGsMqyMJS(L!^@JylV6kEB!^Z*+ay&a?QG*3S!US6P>RQ7sbMy++z5#@Ls zHD0E-Cq3UfS@xFe8Mh~{x7-(HpS^!3>h1Y(hBYkfo-K4g7i288GdEZDbwh7Js>7JOnR`TU5S*MJD ze|r!Ac4>82b(D>WG6*Qryll$@)zzBa33g|5k! z>1yki%rG`Kx2&5tp=;mO_|`Y~Pu{fkdOG9Fq`wv#>Oz+j)Yj)5Ien`{Q~K-urF>u0 z(tN!_*~_J_yqKw!751@N<9oy3tIrNkWMmSuZnDcblP$TCf5BRD&g%tnD^*+7&-G1B zS8=W96hS&YD|$h1xDn?lyh#T0!P}#v1z>y^SlZd;dN% z*!sRZ!NK!Q>!}q9lP~Qz@~YarBKqL53)9R~D&n@CSe&}6rtDsZ!1KQ8Oy0GZHq7d~ zkTlQ0=2*s#geU3RO7fp-nDz7I?OJw(MF`Q|2 z`}?fw^eOiQkAyttaQg6~G}4Uw{X>?$`7;mNv=r-0#>5%No)OQs{C`kR>e-SA_V-tE z=D*@)xHjpnNPjld^zMsKwW7X>HpIUEF@3|{7_r{Q=>hi538truRPSrwww-jmb@iHO zf+w4N4s6lY(|XCgUEu$@{;gq#C;0c9$6s9b_k+ab7o2`)^P36-nH%nM^YElK2{YP% zUc+0!vuh!z@1aQ_8Q2AM`$gZ%9SS>;YIOD>o6Fh-mRIKgKF`~6zu{;4k(fFz`6FMm zn-6c(h`F%HIkHMLRPL(D?cWC6v+`_#Thh23mg#=mvmk@qWo zf~ACnebw~#)W$3m)W758vizaX9lbVj{{!leP3z>NHgD4i`Mc^Y%efmWrwgoRTL;Ss zM~T}BpWmZvFyl$P>>|F1S-dMgu9o*;^jc@X-un>C;q6K#J*~GB6AnMHYA9MTaghh_ z$`@Dl*_30lHm+a6zBw)ZDidFK*oL{BzVj3xr^!Fbo+m4IV}oo#>sz%IDm&(U=+Kio zYxVAaXh*En$F1u!_0l$dJ`jC)<`cO+zix^O3DvyIEj2046uYN6yIuC3$G?BO?9SaY zy=lf*^^@WKmiD`4OH1$`@{<$YBRvg}Gb?)DnW!D%23$E1faI9BCVz?|9fbw^Yq+A61ognRC7dPUm@cK-BQ^9m%*iUoX#)Nb=@BYtU$V zA?XgIgj=`B$wk3#e>2o%M2os+OqFu}&ziFL-=cz}Mve?da`Nl)QRTv%bo3itq0O%56J? zL^;D6!*X3)J#$0tk3F{7$nx>qlp43v8{$RD307=hcQgxC%~|dqeth9G*A<@~U-jN< zsWVvF6nZCfo3*#-%(#y#`Lpyab*vNTh^D2!jQ>y_T%hA)e`|g3j_+H1`oBl)KW_Ks zmuJ`&C!e&fk3S2QvaBg|*U4{s+90xb?w89#H_s_Q+z@l`h4Mqy`G=8SUdd?PQt)>0dY%8J ze#NJS(-)~KdOs4pa_54%BKw+`o?G~=WZyh`bK>I0ik3Bt*rsmqdOF$SYwo8M&!(-@ zpKOi1wtz8Bysq3@Jwo?!Q+UG`=HI1hi&8A3n|`*(*$X)v-uvcxf%g*2#!nX*-8nz} zyxIEXf6uI+i?}xRRxHl=z_G;kTj8?jKW6Tdlqu@GK4Isq7f&ZMDi-%%|JWJ1VV>Ym z!NNmlT(20G*{@ieHv(@=Qy9ZFT;& zTv6&|m8-bt&-2dL{w~}YdgBzAWLKFWSNVrWpC`x$H1{@Zh)&MBwQp1ArmOpy`hBYG zr-^soI68Src*>KnM#?@!Dk3F?JZS}cjt?gt5_5c~y73J*BZ_Ov% zYg;3|v(NL;yr(P=CbDX*xuVaS;hCY)vmk4{%lL(xqGtKtJAiuae3HOG0)af z`{0%}FE|$N%8R=Z`zL<4((OgnNAJaRTJ(M7Y}v8@aPrD^pN?0R-(>P=>ALiU?@vhqb z%Ren?vW<7(jQh6SX<{y$-|l*`YujpN>+hU;7U6&M_vvkKuURgcXkMo&Us+yrKl8y>?P;51bmbQ^2v1KhmF^9k85VTr zzTxH-U(eoBQ&0|Aav^p93|%wHDILPMO0VfyrqnF^qVa5(K+|jgOo>&M`c|5u+qONc zWy!p?XzsLiv%?*i7t6QH^OeqH%~cT<%rUxqzpwFH*Y)lvlQt)athy`OXFiktI&


    =qX1?}TiGF;327A;%LvHyLS_VmD8iP7zCv#rGz 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

    s2qDH+!4SoWG3z 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%0Dq?aw1GiZ4$zX>-@u$@ak` zn$L1dW8IRIR>f&wmCK*Qc%4XqofMav#H%J}o&@5Oio? zlv(n}8Ao#81l-A5v~1V(w9>SalO7YF-aMPI!r)#3OR{RXZK|xy!Z2Qg)7RwZEbg56 z{nM%GudXe=6g2&@1yhFI#qO`KBD(+o`ZQzqwKD&M`DM2{nJuJWc{%3hr8e9s@9T_s z8LAzzblS?#X`g!1(_&`L*d+hZc(v7aiwc=fQA!_|``@21b5UuKPiCx2#Z6A`_5!aP zF(NlME}d%2#1j?9c(-ki%Gb#b$`=-k9x-pf&~kFI=;@@(2d7-ly)#+1;Yr3~GuzkB z_acN}IR7-BV_THt`+n=p@Q+Qi;w&9+tNBeyc;mrlclC$U1koo2wm&(hhpvu)vCV46 z_WqvM)s=}M$8=`7?wHZa^`@XY@#xIgS+T1=hpA*b=4h2ms#u;pwT;i`i_pu@8J%$t zm}73FmsUMGaV*11xk51|WTGTj19RbJId1N)nc@#OZ8gw--O(B2{i|d- zVcC`LyB_9NY&p3^dXvf)=U@{xqvS?G;d>Fc^XFckc>m6!S(|%zNP2Pg)?M5_=lko# z{k%_Ene=K_uQ{_;_i74Tl8R7jOSo9n^QmWj+|S0WTh%Y$GmF2JFY-&(Je9|bPS%_G z&t4oW@kc7@eM^M=o54bbw8 zbM9Hg&wBOJx#kOrNlEutIb6(ATGsJozQnhJzBu>e$_`aWeX_PJ>nMpZRQvlZ$=)lz z;{YR=Z$ zgxMd~scp|&QYN0!{wd1)qs#5XTD^fUW*J^t_fkUqR`ssSQ&aBA8qWUp=L@%qZQhy- z^>1GFvIIWZmzHeo_I`4~ud6G~au)68zvlk0clJfq3n#@Tk9JH>IiXmzcT?@6XJ=+U zuQ2+(ae-B*hI5Lo)luHP$&=1ZH&D`Z3;D!5GpFv%@$_%g!tTku*>rxJmeZT|`~QMh zCcUzlq34>gN^jTXp6}lB>|NgL+m5zQKN!=0bk4ue$D8Ft+7HY)_-D<*IoBTat^e2} zuVksbZOT0+C9YT3b^hDU{CU9Z)8&Dt8eXxd;5=h{*A5quX*}MiF(QJ`icm}7xnopAOD}&G-GXZ z_w)bXmj9RHoV96X<;jIhZY`AweBL6nCFhF%w1cbCG=mOgY*Wiu*qU~G5wDX)%6?`m zHYvY{+$s}FjGr!xU3S{z`R6&icfES^+Gg@Rz31Qm{p-5leo3jw=8aEGW<|b^x~BF@ zV>WLd-x{?w?8>a0yRJCwUC*X6*K7mRC+@V_xdnP^j%Qca#>;$|WS02I#xB$-VEPuB zv&%zc1>YQQsC>U9bhpJcrMsyKM^{aM@J?`U>m371#38 zUH?rom}Mrv&}d=V^>0FnC%(Qtp#RDDnsN%J?6yKd+FqXXj_eXNvP=ocCPI zTar83>h1D=kJr0rG|t-VH0{w%*AIFTNlR56vu|v@y5somkb@sr^d&!HioAVZgM&%$ zK4;Zuff|#T*-B@H7o^P>T%Mrv?VybCagRS-=S!rDa^>fl=M)?X_0^xPcIFw^-%ZcI zHqW_xOZ4jfviWuCviCPMw%`9*?q0dYw0%Z&PsNwp+ILdA-kpv= zn_91a*8Zi+lDTICKDPh=*zngswr|tR_|$Lz>-CODv4-=W4v&lAIu$Q*z+rv}Q-ZhX zJEMdvfz1aeE@o>FT=#B5mSIVZY3lLTA2<4xO7?z#Rmc9UGC`f!rtgGfU4^K3e>xx_;&scA@j)#SJTR&#A|_UUI(E-Nq#`xk~uCWl4x* zL+p#FF2Tjp=2x6DY*#3AhCY6ENRA<4=VTe~)Bm^e@5?;7i)&}+$y-hLU%GiY?P6W{ zJ|Lg*eZir*8J-&dr%p6}m$7Pcy0&Y#?84~vujU{AYf@7EujiY{k!5##wq0ZSR&_1u zQ2UE{xqG7%%Qmfh7j!n0FC(|NW5VN-DJP0W(-OZ_nAKI;+Ml0P5!+%Q{-msWS+Q3F^kL`m+I!OuH6A zr|DJOCbgfNpt`u~8(EqT*D9ZO5+gs$H3 zW|Hw9!6!^S0oyaIW0zXg&Hc1>)tAEim$)o+GuJ;WQ#rh7^_~ASGYqF}*~znQa;kQ$ z{!7Kjw}LuvWytWZ5z_q}`YlQ!Tk){W>;sn*7R8Akh_&kb^~Lqp2>hA$EWn9_R7@6#rvG6XRg_N{L%h}FFv- zI^30STG+RMX2Y7T*K$tpuu0dkjZwJ~)z$y|hu1 z>5h-)$UI&Cfb*7B)i>u?&Y!H^@4R}c{HEvjt_v@Dw6_XOux3_cJ$xnGxK*I(vIpKJJXozvyNS^QagPgd}fRh*;p zz0Z%WIsV)c{=!~SxBg=0+EU?vwQuvA4@^7YZ+hqVvi8YllkPPpy}6S*KjLej$k!;r zTZXCYzlKkEeXBG0!O3G<7qTmK>lU31n4DepchTyN-R5(|PRHEltG|8!*~~KIe%W8P zSzGVfUE!W~aJLmJMA`xFll>+ZvCld$Fi@sapp4Z$NJv?pPKyBYxqCqSZ79w z_jh|64#qqCw--&*<)Mvid2_3O7>0h>QQ@mZU=*43bqyDoUC(e7WTK;^mFwe|hpU=7ujm7!}-zLi) z{GnWZOUKaF)O%i2(dq9e_C9}=nf%P)+WG6kS<)xiYWQy+ouP7ITCwvV6|eNRHsN57 z)gra>4^GH0SeI<*bxfh|Y~AZA^9(%Y-UWB@PpT@2UL36aa!%Je;koLQH!~$16F+p= z#o2jwQ`Vuri_r&Oha9z-cOm*<#w6Lad9%E(iGEYO^)1k#i zxt%fYsh77w{nicX8LKXQlG(Y(Y=_DLrAJHN9B>q0=reue-SjKM$7Zu)OMulL;Y z2eTbYU-f+T=h~LD_S~K?E(a>^p+u~>u9+bf<`4D%cIZhM*T);W*) z4$Bks`;+pu9(@&?)%zhv!(y+!W8NfA1Erf1?B^|5`cC$XNT0MhwRNwG#<%(VpKNEi z^5Vh2-t_J9(ZRYRJXhIyy|2fKoX&9Oe)(wiiTz@)jk=vHt{H7!fBnTS|KAZiY+cfx zC0e-6;@*;aXRci4=NS^Oq;wk}Ow63aIFE6Ki^rtzpFYoOGxmA5yxhb0^<~pV-@FZ< zM)kh5uV1$&Y1f17b0^nr^V=@NEnHiib>{G$0}hQ!|JP;T3NzWwcDry|gBrhh^YhQu z3GdQdBlobEKKZw^q%uy&&$(*(uGOyk>s{KI5_1?+-pwd~@BO6))^7dkYO$&Ck#CJH6#fUxu&htX!2%)2}Mk|D5;cQN&`N%d(3SHDC6) z1)ucuyrR5n@mkUQf{%~BYkKMW?v$(J^qr3u?7FJ4{GpM3MV`gO7cpTLkKcrzjR>sx zdj7G}$A#N`CalMy2#_&Ir=;E!FlbL*P7U5tEtuv=I(v1}TD zdxU+<)`Y~BC9lKgh1h>Tyds3lFm(5(YNw6s*0=U0v4_MRxc~Y7&#Y*_)Yoeb56n3o z^7dxQM&k?Dnzm*XyhtyC_%QlYr~-WxZ+o&LRR^T)7#@vrVan7W2NDd?-0-((JR z#@i>_f3WpCYHhDJPR-`_Keoy#X7L(_r{4uPzE5~LRb-{Il)|Dv3u<3DXn1Kw@kF!) z{?!dUr@uF#vFKGz(fg;DoTvCcNw;~&Fzan>Sa+mByAH5tH z*c%0srmU}gTUsY1`KN>bz1%BvDW*)rxA&alk;z`l(ANHUBGFw_z_!PI95AI*??qb+S)`ntfI)6Jvnn(Cze$ItWa)w|=E-2ais ze^TXbk$fS+IOa3V|BkmOZGRhhspmSwMP2^cq8{NdmoK(XmSoY-l(ul0bw{wEG&V5c zbp6LvQK@UIT1qC1uAV=={@IDPgCE^F)-9ZrD4Tz@_G9Ha^9Qp|ysA%E^RHNCy&+FX z;7E*e-4q^6G5;x(`}*(YPPA=3Q=9yJheA)iwC%gad+L|#)u!yMjklllPDNsi@uYkU zISZzo6MHHruKPUaw7cB*sdHPeY`UU!Q(MmM+vTn<);Hy<499Yw+f==~buxF-Y?n7h zW@g!Ud^bfT>^UkGWvRaX(Y@$gr*$P<&$L%LhfKdY>!8@SGk@-hmc5v7aqr(N^S`?% z{SSV8(B5<3-^`xx3mO_!{ww$X4_7=DANchDTVvmif0Z}5NSW48eyX(Mmm>>P-@n-` zyqedW!$(tjtXXZc_A-r8qWH{sFaS4FQb z-8=Jl;=|1M8dv33@Exq1z?o^`>W@$|o+o-n-s#>m&e67yt%WNR~Ty06Xj@b{hm1D_H7${OzEC;-_w`Lv3yjV^_DW)ta?R>ctz5j)r_HbEclpFQ^Y*@2$E}&R z#&6DDHTNfzvJX9f=_@@wk~o33x?Xt)*F zymVr#d@PSn*@WhpA6{_ERZ3i!M-7N5CZO?)pUd*#)InmOj_N8bOl>JPp1yU2?Fa+w5E{QbRo5!s99 zd)2y3Tyk1)=d)|4xsTfHbDjCJ>$2Jdeus$N6}QV@P3g>Befikyg9nO#oVa>-FWdd! z3peFmtD3d#WAfV?$@PNQRVC|a2S!$=N5A`x zyXxOR`DK4ZE9`QZL#WfQDeZSN9J&_^2IpL|X4GGNYl{Fg+j{qOQ-|1=9NP;=B5oVJ zR;f?>61U{fuf`c^g3}Tn{(bAlbbHQ5scX|rgf5;wb2g_f*}MJk+c)Q97l;&|@KF~! zm7sK~_R9e+mHo0?T_yEnAKfrN)Olu6&vZ-uLbsm{b8D9?^|z`g-FGlJP{F%SeP{TI zlIa_cL~318RrOt2ogQF2J9O&g#ACgW`eQD?KiuweYB!IQ=Ej}Dd`upGR~AK<+?i{6 z;p7z=f4Mi#?6O^sGw%yRqp76eC(W-UrYgf3>zR2w8 zGJ}i1yZ4HC%F^gpp%Ob!HOV{gk_cnVvhs7B{ae2^TuOrP%j0x+8{?&-XKr*qSuu6e zq?XTCx7$AvsXh?EZ6+% zP~n_kmmw6@xp4Xt?c}nmymZx4H`|Jdi*`&N5bs@aNw(p{<(p7Gz zo|uJ?91kx$E6T1PX?D+L%B@X$!MBz9miHV!9QO76q?0cUa@U@8U$!7}y3KS)BX2>L zSF36wtJ@ATFPPJ~ra5s3V}bqtUCBqxrQKy-){7J+eKDNK(5-Y>il?wkSvt8k>%W_B z*fRgn$<~{u8M5;3c)I0LXw>QHDN8TUV6xoZ$Q)aDzNXjme5z2SJm2BEvyWb`*_0P> z&Y9)@?s7X`zOPd^?A_mVP|({#|IFD2mAZM~zaL%v<)>r%eqX-xoxjE67DsQNlFqlY zGSolgA*<&cp}hLg2ZygQ?K-M=El0v!`Abbt_zkXWj%$4*nzwLoTWrlyE6ox*fA-{z zW#$L^cvT)fjjg)XZ1QjNqQxP*PZ~c_nO`~e+)N(3Ru;*dFVeo&$1Gm2OI z9FI;pD$1mLYo@TFZnCDq{PpbDLigtwn{UdPSAVX^es)RCD(&*$+6;;;9~XB2SMUC- zxMta;Xn#9-Hcg$=pHg}?6Hi9Onk#i1Ps~|TJB>H9RF*%_Hu1SYW3IuzqZfSK$FM#I->7+Yk%fB6LdJ}z^$K*6HK4#PTctZ z=?wMnMv4#V8gG)8)qbDO#iR3{O-(2NB2KtnDEZ# zbor6ZTYnwfymkA%((jdNd_LFXwHHacYX0e&5}aD*y7!d#e9v14TqmF8DAVOueX>^M zq4v>r@t5zvP&{v!wN#=qrD{6Q67lC}I36C54wGIaF)OR|@7i`H;i)&I>$TrK54*JG zN|w0iGr<>|t*&foFY4c3=EC0_uF0YPZ-R=5cOlaP?&K9Zr)NJr-sK^c`tORu*DSFw zdgtGE=l$NvduifT)A`%$c=T1(Pvo-Nz&D{HI2Bt8;a z7;$XXr|qQ|bz5%*t;x&O*6FqX??1)p`3EgahI{kOm%pqNUAJa~lbQxcXU(@`J5Dn- z)LHL3D))6)m5^TEPK~NPnWmFJOj#Ug{mZ!X*Fh22J6gtZd57k{-*K^5=vGap%eA$6 zLfx`Ui)SewZqzD#rWR`@JFD!Eabu!LU+BzZA;o|09jN!d^@%0*v98Fs(x<@+OksD7 zyynIS`7|%^4Y)0GQ{C%kVoPw<^_7mc&KK7O$3^gcVDp=_D`Ht(uWlljU&Jxbhg_;j z386Zw{~LaN_~U8zTu*dcc=vO4Kc)ny6=!60T^1cyzV||-LpVgUj7OID(flbk@urQ7 zbwf|p%d-?UugX$>J>Al8)$4>0kL?am4p@40VPM0u)elQ#uDjfsHp7eQ;xqeW-vr;d z8TO~8ITdYxxcvFOH~B$l3$AD_Hem1g_*ZAoPRD9b8^*G8qFcnA{bYBV1t|U1TzmV< z+3Zset+!QoPf(4hS(g0rv#pInV#efZHO<1dqWD{)cX+qQp10h-4{vd{@&{}Drp5YyN_10Oe)XRa_p5`#PwVEM zI3oX!?^jNzs)2>|51EiBEuzvT&aMe_{EK%^tu*p{8Mb={rHv6r%wq2tfBjPHPaOJ{Vx0EH4`-7*({W#U)AS~?cCN(c% z+Qkn)9Ih=mzqWAU&PfT(sV3)qPnk%Z=;Ld)TKGPMCcD*mIlkE$45k-(Sy{ys=g8(#3hX z+djTixE8b5+VG29J;y0KZ-JMR>s+G#b7eCB`r53v=+vBxYL^P-54=~^-S=8IcF!Y; zwZG;by{eq4=oWR$F28aAj+OF{mv4C~n%T1L(2jFeyS_dA`rhcwmX$-J~lMD$NkiqwQN9;?O5T`fKIBh;RFEPF6P=I4QF zc8>GH*YO;+x#V8jlFU|d;BmS4;)sa*As6m>Z8*<9!{7Lae#YwG((A5@^{%oG(_Xwg z)Z{^GR=w4)5W$LF?+;b|d$@YT51-C@o395o`%|l0;;J4@4QYAzdu7b_TR-%#danIB zJGHXRUUd668y5e=v9U!brl*_5p9zlNonj|vw?E%d|J*e@!&jOMqr)fe>H1-{@BORE z&d=VR#W9Mgo_szDx^guY^m&3L~x3`^U{p78+IjdC4XkCT0dL$V#SHO?Qvgc7P6gMySVr4 z^b?yc1&#!5TXr;&YnhSt8u6Iyo^K8b&K8w?_b$u2i5S0}UgW#{x!SWJ%ZOFaUMM{b zlDx6DteNNVofR{94;oI}ubBB%;I)qJqPd*g7O@5j%kA3WtN(CbqQBO!7UTQ2lWi}n z-LcZ$B6O%ZR{hU~piIZT*^l2`aGEoUCxU90JH*2nL{9(28ht}p7vs2c%YJM$oe=8Z3lF?&7 z)h_4oqAgXIZfz-^+V-IQ=w7MxJ1bX&HXmqZoL!T!)$_TP&Qpynk(V1v54{O#RNk^& zW%iQYtf_74SDyDBuV<}QsR}GizW3SC=FB>qLvbIjXfHKAW&GmmnXd5L8BVXx=^vcF zq3HMNNuu#NQnSBu`DaYxKJw|%yJ_Efjtl?Y?6UIY=Dw<#p*wu~`V3|Z#a~(bcV>HP zXanc3Y>%(9W>sBtSZ`bWmNYC9x$|;$*(Z&oyF8By&e?xtx7x-xCokyNOsivkw@3EN zcfk`|bB^~H3Y2FpV0^LnTxjFtCAa(gR5}al9KWqtQZmnYb4K$t4wH3UT4{%0#7fjJ z-nc1t62l6P)kh2FXoeiV^2h1&gc*E0vIHK!-D}qAxW;nXq$m5fI5}_VxY(t0)AhM% z$LagW_scS_Hnexw>wnDoa9{tnY1&M0oGYWFo_qQ4?y69}wcj$!C+mBnzvc0+%Aok& zg#{D)&Rxtr@M(?5)msJb_FXIs<|}t~`bar~&?_(Do?h5NR4*Q$R~KT4d- z%#2*$-MfDJTB*0wzrD_jxa_(8+KZ0JSpDpomwq$$?el(=?v=(d;Zqr7|k z*2lhnzp*~V@bRszxzSTQZU?Wst#B!^D7kp!!MgOzr?&iARlIWL!*6%D{+Lv3TBB9_ zcUSxjFT*?Pb3XrIQQo{dsQUk>@3$7Gu-Craqkb!>mh01%X>wxe4!5Vw;99WwhO&{h z#j%K2$IL8FU9pqzOspLV~%W|<$|=ia8LDP0y|j8U02S#V0a@9rMYO_^SI^o`#Y z3r5P-ZQiPvcS4x$#Iv-xYaMTd-!GZI?8s!Lsi9FvHl5Q{jFx=cwPW|BL&5S_3lx}m zs-n;ATq)@vx$c&neT(fA?vnxGg};wWtv;M^UpDQgFn8&<-{zHjZtqyHE4w?&x+7NM zVJutMnsdUUC+wLP@7>mS;oMoTw%13K`F+I%)vtdD*ydNsxIw!>W_sHT1`&tX`-@fY z3GF+*=3KJawhe)`9P_wRSNOy>L3WY*!PD;IFixw+tTGl%hwSgkTC znf2Up+n;s6`^ELJ`<0N%^hsBX-w53BdX3@cr|$0Y^=EzlRDbwz zeuL6h>F%rSG8`|2zS-;k__12!XT5r2$=g8H3qQUkt=6+RxnY5buvC*nl7sBR#>A#c z4PG$|7w~?v*qg0)D7SZ=k=!LGr|NkEv$eE-d|q1nDR7eN;(|k`llZINOU~XEX*ECc z)Fg%U>z8luP5W_2-(1e9`tP3yya66fyDle`C-8O8p2(D>)hd;Btla9ul)1Mi{C?sm zlTm+V(>i5=huq1ok7A;>Jmh1z>R_R9#-_1KK(D+l|Ur8%V%LJCZt2f^TcF%}8cAuwp>7k7Rulhf}%d%_}SiPwIg8Gc3SB$Ps?EG`$ zNs)cxld^fCbC-8-;5j&dJNNACZLb?c`xAH0cb)$D`f}6!&yq6US=w1y0`{JUM{IuV zEtJ=bv45Cgdb!|vL`DkJ>DiZU60IV)E^uzn5v{j-xA4h^wkeCGZM8Y|p6V@axv}YZ z{9V&IpI2Ih_er1oBz#oZG-lPEk0*FOm3UN7cXElB%Kq9A7UPq%U8CIb*hQ7nu-Uz> zlPnTtl=W8XUGnL#(YrqJy7ht;nc6RNEck6-O$nEe6yc7a?i1g-&(*1Eaq-awO1;c+ zD+R0C1m@qlsyc0MVDv)XmJCM&b)nr;zLxrIljLpjp7^Wo;5rBHd3&#QwrpitxR zmd#&3_bqdCoABfLB=wxSNm0poCBFH0GnL)?P*F+AQ;SsH+VJPG)#Yd1t}NcB z*r;>px?j?9X70(#_rnfpzf=_d(#L!G)dsn%E4950+cFbMG;FPBb*D_1`~L0f?_TE` zv7F=5w|35LT_3ZFZHq!l`_+Kn%Sh_im{fyT7meMWa{4ql5Zxcz0q&o?(Mo2MR@ z-?lWFZFf1N`lJ09-SZ_@UkZ71?1s!aQ~4zfJGr>B&aIf;UX8|tO zl>UnM+g}O@-R!$vw!rPeWiOo#Wxh_jchi1!Z)M|%E$0wr{ko)}ps;Yy0nrcUPnEYA zNn|FP$>fT@x4s}I#IWa!+TAZ|D|lA_TGYNY=ET(I8Re$TEjw-{ahZvo{QY68ip!V1 z1=Wr{Z+x3)TrfS7u|uSFWuW!XXUA^|&H14|_1I*^0()=vO&v=*pJ@FTcooSx$FFt1>-2AJWx8wlPw&UAB_DIlY!2;B&a*gO z+G_asVhz*X=4a3By-)uY@wZ9gembG{X_qwfiK;0DJ%VdozrA?!STJW_w3*Y0}0gX3sLZ+b=V@gL__Xc`Fbzs%o0-tq zGPL*~BkHqFqb=#_CH=Od3g)>y`Y&!U|edbl}IkU{KZ@gU6^8UjIkuPaW zE~$C!^s8X~o8t9K|LQ8a13kVQ78Y(PTfk5j%XID^x6JjU6W$BW+cW3;f#0tG{pbGQ zJ?nq)^V%POo17gR8zv?GyZn0b|LvE4)W?gyw)!vP{&@4VpJMB~w9kmBYq+Ym&d+3E z@RaiER-LWnt>Ttb%qhuXBBUyr$+;paE9uL|J5|D!b7y-NS&MxX{t~Qfs&2k@>P=ab zzh?2pJ71RG{5NItpRb=nZgcyjuaK5%-ra6`>p^Vm(IqpaW}jT!|N4pD&Gge%x2IX` zI=Gro?(ogxg;$H&bhD3NU&Wrmc6U=uqPk`Gi)uF0{H=A3XBMV=-3wip`aIxxVdB?$ zwzX$6uS+lev3GV+*~XZs!8ddEF>TPkTm1P_D}rA<>;JmkgKy>gSYe4v{}0`Iwyvk^!PQCUdsbF$`l)-g>)Fl8O^3HWa8j#o z&;MCj;*<8+x_Z~eRsS#5`#fGVRk32ku{3 zz2w=Ud0aN43k$^C?LYpW(>B*OXybz`iE)!kMH=sjv{$HvH5J<}>xs91pBvl7;#0Au z^IY4;|J{>?V=5p0`R@H+RKj{K=V_4_&$F`9Gft$3%O|g!ye&sL+sN|tp%pzrj2hjg z&;Rm96}7n*<(!W7pv@{_^4E^F~FRE^FVAv(q>DM6rkcJd?FD zx@VJw+Nzb&^JX1j*eI}nm3+R!Uiljt`kURl^AqeGOFTEP@C`lp!fLTe-J$o&MG{Z` ztdmuE@w@AA(DdNq3rqPV)4L0oNlta#(;RW(?TSJdMaR%pzn0j$zm%QCx@1Sm3H~*W zcUQbme#Iy8f@e)%F2l_iS!bR##_oJHukN&0-zjoZ**D<5!-vv?AP}?ij5-Z;vdeQkIT>seRsJ-HUO8N|6d~Ztc{`b-O z-~slF4%bzgCDNp(AMuKd3VmpqR^PaXf6hUE;|14t*i~ILd!&40S!R}{G|O|z8w(%I z-on2=`v1Dc(&ra$pTR0~+;)1*{2h`H`7Ym=@SM$(biZDTG2yg+q+EObnGKs}UVOg! z#KG(nGU2=_$1YBMWb|&YqW>1pbrTIl)Q`I_zc)eZckT3p_kK=D7g@M-b@w69d8t>t zc10~dr8-aN^~?VD+p=}fduIo?w0-AWF51}UA9iM;KL4c%tvqha*Y&ZVeoy{d|NNVM zWWKY?Rt{z+mMyH`-m513zsd6Rd&tH8_x_YKg{6M#e<9b|@0^u?WU4{uUJ1kF>ATmS zEReI^qqyEPGDPI^^E-91&#d1D9@ovN(D$ftjc0gdcAme$seaAYU#cdTIG7LH@44$M z*1dE4f$N`*OXS&hdrwNvWcXzDPvQQrQ@j^c`mCZwjl=$BK7Wz>ao;+Y%Tv1laIc+L zef#C5S^rBLT@&h<7l*T?>|^;UEB>=2VOzzMmn|_nPtFOHIxTxHh-ccDTdJG0f9+J+ z8F#_`tSQr}kDfhSKL^ebFWwX&8#OIu9qYb%fmPfu*X9-myly=#w(OPj)qCIb@*4LZ z|FFq)_dV@dcUIYI%-d009URGWVRCwuzvXFzr6mbh1J>o$NuGbE9}qh0{wd2>LH7e* zdy4lo`KiVQJG506 z`6)Xd|5dQ{l;FE#FXv6wziex|@TH)=TkIY6*dSeI6;r7TJ1>5&M zJLWa|FtVtWz1XaL>C?OeTV6@5e3gCr)tk#*CO1#HUwGs2$}-??@kjM5Qk#o9(jTiD zecT@H*LEyv%X*Rd^%HoiRC8yYkqzkm-gB%|yZGOUL;V7xQ>vKj|CTie_HWyE>{Kp` z)2f^N{@?k&ssH=ex2gWo`}X&5A6lpi2+Y+N5V*a+(SG9p?~nCa{)yjMws+y)(CO3W z-M-7e+&EP;A^K!_2nizEu*7OXT(b+t~-0pEV$M(zRXJA_x)*AhyS~Nt@^Ul>Q2GF zsJTz8qn^L4+L!6d@OJahEyte7PSStHZIhq+p>DeQ`_k{{--&gWhM)BR_d)%Gw$Klu zUeO;rkAMGLTk)g#QLxR2&C5P|ny-uh_hZh4#4{a1mhy6&F0Oy59q*u!|Al)g|E8LC z?}K%&-Tit|u2}x3#qXFWySFD?sD81!=D2=makBROO>UxWTAPe`Sn`V5&Urk)?pXNi zoTQnL$(3IZOBG%Ie4Hz3GCN7hL{78n%)g*19Oc)&w?~JaS$S9ZT_n5Wx|>P~YkwPV zk4|Cx*Rt3$*~ISSx%4$MGqd7WXBaNb&i6TVG4M+HhMY5t7=`MdrJQNn@p^V(=)Zzi zK_12%AC#viKYJo@=I0?3rluTy)g|i`jJ1k*8uz4Ld++)Am~7|fO8?+h0oS9xXBOpd zK0WWP@#en2ho3ukZvHF7w36k;_f);VcPu~IoBHjMl&KVPnjceBoYr@4&tGN9@6&gD z{r>%?#H~#Y2Jhc(+PhHQDBNn^!M!UxS92*Qe>wVIEHGWcq2$Tmtd1>q%8gh2ch9(( zUG`L>N-4{GTA@Mpi^AKbHLVi>#7r54%r^!hbK9TCGtzV4CeI3;FB9U_%fX#>?MA~ixBOlH`N^f%ZTvWeUwu8(J^SxYd! zNw`_`Bo}1M)e1jOKIRa1a$<`MEBlrxkNs;!t`{ylw5lod_jdpPMa~>GYC%&c$2shu zH7DlNT<4Be^}Vw<_BV<9FIak`NQ&#!Hc@LM^Iof4QS2x6#P|ibq;6UG@9x1R+x0m5 z{97jQcgVTS+R0d5>?b#IasHmC@9+CacCd!}uGcJFcFSF{$hCjp?=x(F1eRPCX*T^J zc4`|p#}3Z36CW?IusPw~ZJ$<|c>U^^bDk3-H*f8_(!*fI=CkIE*wwIzrnXlJPo@XC z1~q#b{HACCOJJ9E9DT3-I!KPjKW3^gx2<=7e9 zbV;IWpH7Dh9g0)rcHNW+dTi6u8WHO7l$atEB2Yxx7 z^EvzGnjf#Ek6LWLyxeEPbsLV*1q$;vwO&)Xdeq_il(lot&ODcR&?RBzyvZjQ)+}r- zKl}{|NGbFfGro zzsM^@FREv=-6Z#C>vw%pP!#XDpRBq_k5B518AH>d^alNRY=sK0{c4^p{-;)l{*82x z-BfI~!&g1|{Jc()1up6OafVadMfn8|XL<5)oclOw&!K-D6Z`)O@NG~xF|qiC{@E|AUxa%-3wO=V5Be{k`dmci)}}SDx8?4x-j@44=k~T-D0-H&`+d~! zd&Nm_i{sw)t>_30{2KQ0X?&!qmhs0uRui{uRqZ#d`@?X(VTt$+<(AJe+yVR=yH5+T zn!RtDvaQ^JeUWJ2_XivPw%*8zG-i1#f9`~-Xkn z+`4!F#q%lM0^DV`pJ7!raqFi zNjs`3d7}Mksf381qhq zeddL*wrkmml4%X%uv zf6ojOH=o|T?NqtoO)-sQjfrO5ZG_gci!-(Q7iOqsHsA$pZ7 zW2DWNCc}m0wdpMvXE@9fc={)zb$8R!6`h`mTUM{i@!T=-eWc%l>D$=eZMtKlu~X8? z=w#223`V_s$&y}<5}D_^IbP1WeA%aJ9$Imi!8%q>l@JsK5H2XCvJB zw}&B<=lG7qefGswUybT`X6;zGxofGF>-{Y`OY}txI?^hXD_(z=606^8^I*n=b*28{ zTr=AuR$QFWV$=IIi^W%~VJXXv4&T3ZucB7E1qGNMmU@0OP@^dQQAsl6)@9#KOWKz$ zmr&|Xdp7+WQ=?S4r?8=oVt z{Vwp{tL{^qof63XubAztP}&X2!_Ta%7ppKcU(T<&8I)2ZT)JYbPN&s{_){sdU)wfp zak~9`w)7LiPE8Ixa{SQJoPBPRT+>wI^HkEL z_8S|nPSL+&c0)B~!Get}(Z%_*4hPgckqv5|xNdfV+oU;v^5=*hyVdsg4@*LWPkx$_ zmB8b}6&kNxtFBi}^IV~5XqxgmO41_Q)8;DYdDD}xFD7&8maOGZ*>=fNbYlFEO{WCI z_pD0K;(aailQ~-83(q-E+jia`7hN~U&dHg#vAvdSslUcmuJt748kB6Vq(d>M#@AV~~{r#JS^%3vb@TT zU(>#^>wIgOJAaSLvWH(A>ziKhuxohFy!mI_!-Mu0E+#*i%;pi|SHv4%t$F#I{mToN z8XkRma+~vtVdmAZua!8?&JwS|<^z{zOqb?Ogpf#y!zj?8A;#JFF(|-E8~& z$R)2^>%4ZAR=xNqlK#1Mk!R+*?|1fHdNp(IJ6Zjg5$uN^#m-3RH0G3a$-j_rS){{v z+o7imO_!b5pMTBOBJc2Vel58<=R_rW^5$-iPA^sD6*1qLSDTw!%X290s8^bAjfm*k z<5G8yF}PK;-MnCP`th{hMJCm3s(QcI*gZb^$BA|8%acdX3!goE#Qv5l*R3NuQej-T zez|BofBk3X&(iY_Z1>lj-eL&&lwdXOqV?SL^6ibX8S#=6<_8BGColfWDH{4v^}({v zeF~x*J}is>z;f)4U`qOD-?QN#0x}*8AH6qoQEy#E)J7$p&t0z%)>duOuF<&ls<*v< zt8+)<)!TxTPa3D}{*re7Tl4eV_Py@E9vR!;wSK)j{Zg$eA6t}vTR|e1jiTe0n~$3h zyyVvGcsg6Jz~=d??J)^L8BH4f*Y`Q4e)j!2dHzr4#&nPWm##cIu_w1P>2dVe3AeYc z`@eU^|6hi!8#~|ZyS>%org+@c+xzq^JyK>FJ+4kZR31|Olk@a5&e@y4Ow0Vd=EvXb zFZOx9ZC=;d6ZI`BP1AYSH&c^aGm5PlyQ-v2(jR6NmpR|^EBykq;Em#Ys~1kJaa<7p)zR_7Y)!@D=bJ19vUsN7T*jy0rueOL^-sZh zU(EXb7u|W}us2^zY7PIBSIZT>GvD>x+z^wNYp9vDFIei7H2WR1lEifp0RsD3nT_~- z_RUBaR9dy`Q%vd8*-4>CmvcRSWzhb3fd}LJPU)M~Dq(5S9J61_T{Zu(Z*HT4LfO)s`xG;q5$|MaOX4ie7AR|HL2pB-m9(GX%` zFsEwyCxt0Z>jG<5&zS%9z>_N`7Ru_&v(_wZvHoCnP_8s@aZ^R&$K(D=tK>B`9``B5 z&b3$jaxK}`nGJ9Lr;*>~s4%4^z+9C$?v%1$@%wn2~w>X|~w=8L#H< zUZ=F>)2=F6*GDzNlWU6;=Uv%%an3TmV&SA3CXute;dVRSDjqF#_-c7$_jQAH5j)ur zY>kw3nXx2_xm)#vc+6+-PvSc2%MYq|&YRwD)wO^7y7HqFf{#zE|Nl#=e0Elp!($dj?}-VH}@y1?Ow`Tsd~@;{hzhzH{CYB7Yo(lY}5HCaeF~b z)6zTMO_wTWJ^nw@%Z-=0_}5F0L_Nnz^I{BJzf5NMA?mW-;Q!{+-t%>Xbi8gEss5_g zJai~%51-W{tq|Xq39l^PPfAv(K5}&Xq93=L)YP0#=kSGFSsSeWm5}|n`^9%dCZS}9 zq=uF`{Lc)rh$r z>hpzDCT+}75;=83-P3c%Nk->u)0#O$N>?tKu~9_xVf8lVkMg^|?0Dd)XwG7z(BSUq z<<;zE@GZ5+ep1Q(Q;ORZw_WaI$nMOpE?*Hh$9Zv6`KdVB4Geh}wu;*|rc83t*kJs^ zhT;6uy6r2HSlc!>pJ3D7R-Jga+|}Z%5NqE&!zQ60*>Zo)e}2^KPF@|9b-Ub?MQ&H{ z%5CiO&*twfh}PM)Fy7;IgVX5;50;3o`o?wfzDR0Q)voFF9~jnLJzo1}TF^&_O}{gb zvpEZ~HtqHd+Hd|))9%-FTYZOyF4rR)J^bS;Z+$B``8VdX`eHQif zNer7q+V805pT2Bg*M8w_x#aU*QDoMO1N%-h{qXvhq#2jbx#M;4L%Yu7&%Rj}RNHYZ zeYB+_dFzJ{mBIOKTWS`?rLr=p-fI4)-4U8THLzE!YoXSW!cy5QUBLY4l!A< zV8aoQBAF+T*iIQUF0*4lEZ*YJ@hdUmQ0T|?VV}x>e>lG*E%9d0)_hITdBvZaGN1nu z;X149aJEWmkM|klEqnNZ(si#ifToD})^~FN=C*;zfo=6J0_vx-& zvgEBjv5S|n*FQ01IJ$YSf#@3ZcLls=hoio2`}6pg@yX{-^ER$O#=lfElvDRe7VC|> zU7FdumY!eDx-}_wr=G90*f%ck+zo0!UUn7dE=V=_d1|q4igZ$O>@B{X!k69lmo6wd z8+GV7Poce<&8rQ2#ks@m2Y!n{$_k`w0lV<6}<=D-$?6>xeYd z=k06fUbrm$HtfVxhPp!j>hl)Qz3P}G|H{te=h)t)_ozx|^~86&XG;|V{@v+Idas+Y zX7#Th`>MN}(|f*)70$_PN?cd9Z}$xQqUwL#>rQt)cg^;`nZ0M0UEt5D{5u8r#B2CV zytVy1W#YO3TX})2QCV`2mMyKyZHYDb-Kn#aql`uSjk#$?JI@kfy(^OZr)2b%e1D6E z|NC9uVD35d+MGA}VVp%J59{oVR?XeG)#QHda)Gt)Ii~v;JPuqVSNP;~(%OaWE}uTQ zyqv}IQswpHvM(L)MEA>VwVTh#$8bjL$D~~jzjE?3F0jwg{ClBtPt3y_nfmA2JZn2; zjy8T_I303G$6&So*JT#Mm)0zA?QLTGdTW83EU$@2aN3Cr8pc^Cf`!VIkCtez@V}8C zm6*Wp6PwSm;^&|E(=!^nzRFoXO6io@QnT#i)*lPQwmsePDn_8|TB+&_zSyI_<||&W zUQ}Z_C;VbU_x^<*>)dXJr#_AQ>G0CdU}2xX;gYhSs&^L}Uwbi$W7i4gxNje?8!^mi zQ$E6UC80imVfvxux*zZU1Uh8AI5_Qz*1$FvuBFBj!jno#XhJ7 z{%u(KnJw`7m#$w^I)nZ#lCTT9DcvC<`AvXN@-B=1yC?akJsXou`qj&F&fZ?|ertck zM*oP9X&?SAU1EL2rr*LUSu4M=Y-w95gJa?OQ%9KQpNK!<`Oi)5sOUGh73nt;*%%9c zFbE6TnOVGoPWQRD)a53+1qH+u7qk|MT2X@mbtKv+%OvOO1!7 zho-oxoo9Er79RTH){!i(zWK^~j|AKM9qE4j`<~eECl@!}%T#eJ%X{-wHYn*6$6m2yjk6wBIhL*slTW^w*LqIWiI4r_-H?Ctj9=sirI@Xo?e1y6a0$a4Gt(^n zB#nMKBkj*j-|Au+elI>=Ew{KuKfU5p-igKfS1R9c3)Cvyz*>LVyw&Mz{Ay*dH@2?D zdl}s3#>&`ns}=a!dc2<}RM&m!qOZU`(D>iSM|y6nqW;bHy&o6+$6DX!bY{1#cI@=v z$8V1oteHQ3YGLA)#+K$ev(C2Vna{Zp!|A@KK-M{C;p7&k&^wHtcLHzKizW)roRh=- z@Zt0=!G@{rO;&4rpIo`W*C<+BRg;VD+2iR>#kz}nCNDo!thdqCedAH~$voEU+{G95 zn3{*x?&ev+yt&6vE&rj_xG0; z`!(4mLTRFHJ@e)GR<<4uI`nwUw^^3*MO=5BayCys9Wz-=Bw}giU+&)ClE1P!KX1RB zSJ2dI{ng4(aRqnNDz|69c*TBQ77<~)*VW`v_+j?V_S5C_+0ICCTTEKD_17;Z=3u^g z`bQ35(O>KFeb%J<_K0LxQ`PU%xmFw3Z&C`6Fn#qjdUMeA^uvBp)=hKFZh1d;4Xasn zuO=$l;2hhETYt~I63$w4FymnB-UVhFtrxC5POxY>o-(!jjEjq;sgUsX#Ywxit7J}? z7$s%3`ihBFox8uDLqJI3gmBAM?DlD%+APUpoEeuy6=kfp_XXT+?f#t{rWtTa{29~L z<67MN*XPdsDiiY3_=v&9vp3Fjh#5_aKeA9lJdQ)rG?-gKGCN8rFiS}-|M;{>PVJom zr?0D~!_3~~ibi{)%Th2!eKGIodw zy>)8eRP`~wwyeMF#hv3fS@b^M5H9{WJ!wwpy;IAw^kV`guDSiZz251w`}d}z;GbWg ziB$L&$*P(5+*fj4?-?$k-_bV5>B0%4GS($}f-@f(E)22Ln#pq|Uz_P9)2-d^t83PJ zOn=wr_x1Y6%s0;VXHN*PO|fmW{~_g^X{=tb<7r5xzAeY{*|&sTgq}Ws@AheP%EjqQ zyj|%PD(8#Vr-e*0X>nmZ*|0=Y=}>3M*Y1EqPwPYbehVvl*UgP8*~_(->-FK+j`+SiR-sByi{j-b9rjz`_y~y)n(pn{=Zyi!!?bn08d9l?T21z zYt~J%ueY8VUvorZYWyCrm<3YaUVDT}Zcj?FF3n?2x-PSR+X}HbSBYQz6OTR1aBDOU zTOQ*%p^|gOt>D^XR~^gdIeeWlzDhfDYYrayETg(Gl)69L?7;1a-Zkp#;^w^9nQC=Jd{6pM!HAERNeomS6N+!*_70TH+s#x#IEzarAA^@FnF|8SWMp=~4w2xPIUs+ds&@#Co?`(EM z&88VstG?P#F-u=|Kz!*8?(24)_cTNmt`_Eh4C%e6A>4K8^Wrtar=uHm`$Lm{DxP(@ zcI^twv$<=y)_f0GE2N)yaMLf#w~N~>HuwLP%;RNFGW*~*d#$tQMi;k>Z8O<*pSOFd zCEg4Fo^Dk#i`#oknt0)v+a}l7F&MZPk;Ap;(om(J(ii%_(H3n z>5f9CN000wA@s|Pp`L_BRyR0*R(nFs@G^|$RyRZe`heB=%>B1V$0gu!e=c^ z7T*_eKdGMP6Jn8HG3VL|h3&->=68b5Ol&ifZ%gVck(FLmpP1@f{y2LJ(dRg}1vR~ez_x=#GRK)Z7q~^`b zxVH3>^x@TVOEQih4ZGzi|M zx3H{W$?c~0_ttS8i@E1L|2}2=&w~dl!4^^FVP^Lz}B+T`gYUF>RWfBoQR z>snr}>-Y0kO9*^h>fl`WN^K!;iQS^9zfWD5YV(=-*aGds*-ORFqSocD zMF!o4HrXfU#Lw)z-E+ivZc*KZZKiiuvD|x{CzM;zw^2jB++|vu&qt$zUsrcT#Pe3} zS@&jg#(|$Kc`i;XvRj^Ph;IM$a-%$N%k?7L_cM>O{<}BtH1}IKxwWhT0(Z{@&ilSl zzg}w37S@K1nilKADkmI~3e38i#D9ENV^yYF$YH5XSqGEuKae_+WBGJ@Olm?5x6j#A zNA1#07o1(>6=!g|A@lR5*f(4p;hT%*<}Hu;VAkZ47y4pBkEMU0%6iNGGq+Uq%M?vM zm}gf#o#=2>@noRvqF=jy={uzchsSgD`Rk{x;55H?adw3t?umh%7#WG3T?dY0*Og&EJ)W%l!B`&@;J`cQ1xclq2$Y0yb zwmp{Xne1(5gA3PPzFb&0@3@^o(4@k3xnjH$4f_mZlNVQSdUQ)7O;!5z&iu;OxVz1- zk900!VJ*3}lR?{Q>1nZhpH*jk6941n{>7{psuN=AEhg zm)oRN`>bE)l6GCpt-wCeqBQSxEcb%`fJK`=?Fqa+@8)^4u-~gI87`aO_%bQ#!u#2E zFVk%o?>WCwwSJ~lM8%gP?`J*_ze=*6TjRhfF1a+;UGk9olD(#P8*7!b5+*$iiV>W2 zjNd5e>7rCM@upW2>+fndzmGO~^Lg9UGZAL7QL?s*#~H8Qt7f@3|D5>|jxrl&*_ju4 z8)7C;I{&hzCqLk=?rRq1*!G}v>29Kh{$GFCsyvMq+-T%K`G&~_#(0-wpY7TgmMB{9 z^A(jo*%I@Wt?;wYmz2g6>(X|J?s#yDPxs!jsqchN-xE6d>(lcZ_rmh_qWZ>N`-AV= zZ#&gCweQ%}S2m0L^tp_iwoZS$Bfb3a_8vLz1EsSzTTF3Zb$OR@#4E42MmoE_VxNBr zy7%$Izf8Gex%b{%zb=pV&8m{*U0Ru!r~Sy$<{@K|&7sY&WOh}ROkPv9H0?(DvNw}B z<68IR{z-jM^e=q<95dF!PG8M?JIwm)mtXo}c7KD3U+cVIe-^#Ixw!Gd%LccTSt|lC94; zkLQ1GIx*wvwdbXsWj&kzFP&mxvDcip>*RtjZ_dc4UP(D~@YH<8WwYvT?5nt=^XbKG zxsrliVZ8ShIkyDF#+{Zis`q91vQmnvb@d6Q8=VW*T)d(;A@v$?NmGUwIwmH(k7H?&&pC+jePtK7MeoruGTJ}c1B8A zZ_k&E{F^V+7f4Rtx+!~#)H%MghY#iFF8w zC!58SU+CMY=KowTr)2$gv-qCY+mg!`-FE?* zr~JOfx4XvHrOanTDppN%h^lu<^v!!Mbu%D4N-*r@wHF@Q1yiLOW!P`+wAr(K|LYao zx4l?!gHNsNt<&uYmWRw+^Z(8*2v6LzGC(iH*yG2l;(o8A>K$R}9XA%#G>KNPu6;C< zaq)-1^LyX_s`x%j>}7q{nI8}0W*g4i7~fd6;@P%5<^$iqE`PQzZhvQ$(*GLAFL#ub zir*aGdvV#lOXgQk7HQV}*H->vAJ6jdceLYXF6Yw;3JeXF7yj>WDNs9S*7o20^P1TU zH{QM9+!VI0?;PL%_nleWE-mBPWYbla`OR-BqXx&S2{x{BJUd;5*ZddCwl_X~jO|3; ziG5NsGMBfA9r+#iUb}+P#`8|3`oBiaW8S-XwzXGC7yqhSnVR?g)UKy*Le{O%&}aC% z&~n0`EBZ$+I`Zs!_{&0(hkJ&{M@Em{j@oL8$Q}V1=@&1Jj{6>&Vm@C#B;kDK?xMY4 zW}GUK&Q;6X^E2-0`+55PDtk9XUF~|7*7?V<>g=@D6S&00-k&+u_sq{TNaV%=@2KiN z&+dO#b8ZUvwfyDxi{|`h*E9K8u#@EqQIn8dt`{y>*X3r;zN+@}fQ4de+RB&eTqn0T zpZq;z+NDnd!q-%{`K(*0;@ju9Q*P?YR~Ec!RxAHX{aSF$?YY3pudRiTUg#{!tTX+6 z?ZH8dbx-=8E_X{M>vjJMOi)>qJ^8)v>SIxJ*G$V@xFY&^?(qWcNoQ|&XlpH6Iq7oe z`|qu)=YCqGlxncw?ws5!x=wnlpbguOBS8t>%-?f6bksK7WU4tAtKGYtvGr8G`zpDO zeujKs)AG&+2OY|M^EpkKacWZA0GzgyRT5aqv&Dw> zoa6TyQAffu@84$K@qOuh26>~8$x`_J>di-!TvmNPTk}`@+q?NO|E)i|^6~d*)t^1_&-C!$`2y>oJjl^`o{*E0 zx8nVm_#N8+#NTn>5ODEY5X+j)_uN_G;n$N@xlTb{C$&88#TYD-=(*YA)1C5uhn?bw z`j7J_eyh63`Cm5G{%s1It5*K88$XIncP2*e{_(+JcNKSmlD@0VV^+4#NfXS9#a}py z?ei;Q5;{~nXXA#2A<3tH#{6vI`r+>7pTBpWd->ztOEjB<{(a8;uWA;$QEc-vQM5SGt+GsHh+=&{yLX+eVo!Ik>H(a zp+-j8p;NC`1&XV_5wQ}^5GXbA*E)FMUQ^`bgP~Dn`SbJZreCeP5bC|{n(3zgMSnNE z`(|mzZ!i8+@r?VTn`ag47k=<{mpQdfSN`YT`)$Yfy3I;>dcx+xf>obhSU!|(bTrRh3<;vDGN~eR^(j;e34_S2Zj+4%U zYd1A^G7EfpndJ4_uygzWhWE}ZLs$M?vHhGy$HAEihjg6-Wp14QS7?%$qPpO%^%4$? z!xv_4=r57IxVlnL@%^6W!t=))B$Hkp;8R*3mQ_11(de~AB&Us1xSY`*HDyx)x&I0R zZyzny{beUou^^EBUa6jhGR?Xwtmn)dd-rBc^OZ{VZEmH=0{Aw1lX%&Brs*y zq)S~XEq{Oi&%eo+>YrbKt+0)OMS_8W@6mt#WiR&s6utQW_v?T6C%PW{FB`l>@3;7o z`(`f`H8XrQ50yQ=;m4G~ks~Fl(DL+Y6}OPH^TOv}Od7jis?BM0uBo27@9)04hY2U0 z+B+ZaTfDCQ<#XR6sr@S-$mUl_OY6E=<>XBCal+_HKu{#J=N~KPoM`Q{=H$cw)hEHLY1XK?{V7 zE-YMdq<*!x_)G^qL%9b+tHO3lO8m-z9kuwt2dsXK09>D3bXq; z`FG{@_dN=h+7|Qc#Nkh3k6d3B=T|sfS*^gfYE{707yjId;^{_WK1!mOJ1!iqQI{~h zeL^7DCx7|;{L&lJ?<_vQ3Kjp8@+321g}jv=yUk1&bo*n2pF`%U&yNdq$WJOlKj8z z-S>6feVbeMAN;>#vsBg1+iJdS>UmXuDsP|m(YFp#D&G)L~tj&909+#6{Rc_6byw_Mjs&D&lXYPER4+~yu zP01GjQukzv@f5eFbI!${FAf&Dh1Jaax!?8V|ICR0i#MdJi>&<{f9%DF`FWB?=fcAN zXP@3N%~8zZVdR#F#=;H^E_U;pZ(4|)F@KXsCr<8W@zyt_X?O<$X8nELwHw;v6c51To4FSh7JueN}f_{Aeuz#z?Qk946pVma&eEp$#@tmdhIf5!Tw@gf#?h#V1zW?FFiac6!SM zr*4703Dz&2aw~&2hQ*#cFmKKVSz|um^)FxSo3X+={nNzFH?-EzTw?e<=0e)R<*Qw{ z<$Uy-q%UTeGqcFvf5*KG;pzeE%Uf$go_3~)o|n-3pX|2gD#x4sKb4>Ceivf~{|4s>_R?u&=SiDCRcjJpI}<&$w+$5$7+rJfB-}d0J#$TH4Ot zN4EW0yfkHZ`L+p3)rwO3uX9=ySdOSXn{u=)?15~?kLNCB!tV^!Hm`1IQt?xH5_UgB z?n~1Bh&F|7hRtsUmTvrg=0n?(@FlSy)V;(Q_s2FCexEZ(J0kF(7(@M`h+|W4q|IPidi~_pXAi_5bBG_asA*#= z+vFl}{1V%$hesvNb7k|xb+enZp5JiWIFoatT2k$?CD%J-S9T@+_;j^3hdXDR?xsdz zmcxyEc3u0{%xNn4AW;9|Z1Eo*nKw)ePO|dyUR)*H&$i|Lej%s-!Vl`*tM!94_CD2r zVZ4BWVaGq=Evz|r{Sq%Rieu27P6^)Z<&tJCs@OZKYJ zVpYA9S_+)gWv@<(SY+t)H0cgYJ=+RChhl*j3TKXPnt52VYae6HfojJ8KN@?FsmzM_ zXJy!Jv7`3Iy{DFUcir82_2wIIEAe!X+@tjO+;spoQjzjM&=;oWd&f!W6e zJDg^o-F7n7^;Agg_D%n8+!_?zO=BV3>*&M_kUfv**W#2QL*!tBHI7N*DFmk&SLEJ{cxeiu*|*X!ou34oaMLA zZM)eU#%%pm#(mMQgDXVS4OVYm-JGxb`7`5s!&k16tM}`2#d)q=zcDp0bkQTxhmA$Y z60|pLe#DU7xN%vL&-?B7dOwI%hFp&BPEPwY!`y%VHpj2*OqX?P{$;gs{<(dpLn$Yz zDkf`%-E8g^rxt9=oW1m6@2{1X)lu~cjsL78`_wBtqm4qZ8?WeLWLjFErS{IY$acw*~qvZ{V$Yb(kJRYT9z0U@JhP8;K z;y!tg_v>4>Eqw0D!+7MDRbaN`qJ(F!4O3{TZG*k|V>UwY%nS$&4+V>)jhn)Pn0TU_{+M@Q=;pM}5R+%CEDESnmy=F9`) zXLg94vk*5EoWb4pu}?r{67Sr%ZjtBYBJ1n<7p< z-upS(r<|4hp6cdwh4h_yYp?Do;9lG;Rnxs`-elXdXl9NT^~+w?2^PHH+N66VvhC=8 zr6Xcnyakiu7^Lg}pLYN8yz0+yFHYZxD4S*mh6M-ywri_qEX&VJ&iS(c&Zn%avB&pw zufD0WBgbg=bNgoT--?U2bjY)KPg^6x$(^_N72h6FFN~e7uxjQvwyPIZS@ReU4J>z z1;!Ft-y0l1E?l!>L(-{!|3vSzW?@~j^^JTxfA1HIT%6@^J;$uNcXnchWy~eZ`jsq> z^HW4u@oVR=5^wwdRddY_iy7h1=dO1%y?G_<{Bgr)n=F?;a^;&B%y#Sd{1wJCXWi~G zZaC6lc(XcDb$P8T__lo0g7j}}Ys6J|yUA{txyN2B{zk@)`9||g zw%^Fendq1lD3QOuH!FQ&QQW@F@bcFSAMf2#@xS$+%z^LDCyz|K6ua4W`vW`Mz?fN4 z-8P@KLbit)vb843I32T&*>yx>VnXGn88iMoU0)YjDE+7;(bF|4sOYidHJcpwUlQw= zr`mq0yqo>~vG$JAiDz?^OkaNCR!Pacv3_oNS;Fl}Jd@sAnlG6Ya_Q<*R2q%kR;!R*+!sUFg-Xl(H$;;gqt3 zc8@{C{rT*-9QWiSW}3=;GuacF7#FoxHMm!lvv=8!?LuAV zN%t@CtdMz7xPs5E`f+Me2osyn(Soz~?9MH9hs-2uW&W=5*|I|4Zt9yC`pNv~{lel4 zxt@e3`Yjc`cvm8>YRaUrylVv~#XG|}-()^m)AB8%aM~g(*RNu4<5+)em~s7AX~=d% zt>8=Fa_p`0nM2cD=l}dDZGL;or^Of9?w*-?w1;yS>-BGar}|!hSMRyH^0B_GV*!tv zoz=n3O%mH?noHiE>mj&4U^9Q1tx z`^MtZV(Yvg!rLA%O!FxJsWQ2D*XQ{hpE>LnOkUr* z<(ylPKUbx<<%4#Eqvfv~%mIpyj2Y!T{XsqVqdM6C2={z%UcW!K?%{sLqsy+TNOLOg zJYN>nvN>kT;aNTr3ubvYOp|*OKFM?XbIl^_vu1J59Z?%=et$l>Q7fe9`MI4}{{Imy zQjRBysmrxnzxI8d2uzrdS%4%Zo6jWr1!JF zO|7}|O5eD_@`-HcHNW{Q1bwc_{aw$f&D|0A^RxKDfeY5?=&f|Kk>?TGmz4I|3-m0r*=JurN96}u>Ek&!^Gv;kHEIy$vwd|?+ zyx*rhD&{b}7QLl$KE&h3u0>~E(skIA+3tidzGiKH`;FKI@g*1D&5VxSsOapY(Q{$$ zjYmQ|9_SwC7Aq-MK9l#4yJO9R<5%~uGWsKYq29f`V!iv4XX|J3Zul<{>#ELPEFCOb ztDXM%|665^$p5|T&Y!*MW}Ya)62ed^VP>SNUTl*QCGIJuAvAl&mF3K>g_DGPEyXWg zmz16GWx`FyKe12Gub6#Styg_=p#96z->0V~pJV?1^4jIBce?TqF3KkJRPuSwlUr|} zA^C)DeUa?X(C`M$5WcGt%s%ez3+FCgxB6Pb>0)l_V^U=&wtrs6+~52Ac-YmSe;zK+ zE^fxx+)FM6-zJxwh(5S=(xme)n-_ljG}U#}p$Iq6-s%eQ!wJE_HQ zNu{52<0i=@JUqx6-ktg&w~PIO%e&j{$yamqMfq1*?7AZF)F}C8%HOPC$CH-vOE@N; zJyg7#$0fCbYvbHswQf^pX_+r|dlor;tyP_W?83la`ck@?<$dMi8!b}V{$&f>H9{}WHrN+)%zV>?A~cBa2&W%eMIQj9cK9i=*;I{e6 zT_I-&366NSXL?l}{+TlJk>x^vm=6nk_upN>y?5WQBdc~Ly1BgWnZWhsCV$I|?%)f) zX{zgI8ow0YBXZbG{>$mo{5b{U$%<9(&kpzem)rAT+O!Me8!q!$Gcg&RnDMXV^Q-us zoBn08{m)adUvi;SvVLZ-`JeiVlWKXN_PG`m-@nzYq;_r_uZ%uyru(|&|cUu1}@pl)P_PWiOP-ncO^upV4 zmOE2E?_)o;mNB2@Uf7J7#q-RgzOG@qeeS{WZ!--Nr!XE{QYU)kF;`c@Cza5aJ&QJP z{q5TtFRknJtfrW)^{Hn|7_aEN-|O-_kAGjiRLqf8_Zdr`v1b~~{%$_$)y>UDZ?|n? z&fM-~_i075mFup6)NdufJCp)y9NhoyI9Yb@W#xkBC)abhA3b_J`l*LtF4r11(X&@y za4>VM)PCWrJky|XU;1=g?cbFa@(bTQ@f5p#d`sW#A9sY-FLo?(zbp7Trtri|hfYUk49FTF2KnV`Agk9N_cr*GHqFFEh_=9;q+>zdgz`zCp>v1?HJ znr6OEC~R)S`K$k|pHHq=yLn^Qj;&`^%~puyeqM8Ac1p8S_=RVa3vQo|QaJ9WHuHJ) z^rACi|E?CTOQ<@2P1JO+)sv8=&r7#&{d;Enb=JqFtG_8^ZkW9C+M=fBXL&aYAI`0g z`{1&B=9zQu9f}n8=6JG?kl}!Jta`^;>D1f^D7qptX??llDyx} zBG+G+&aDz`UeX?K>SW+7zl5Xg#;WFj(+{<;I_A9Tw@1$Q<$sKuZ!Rga5_bsF=6U=2 z@Z7LfD=Pk7ZkT>uwy1wov1Flf!b8{U1J|e6?AxXFX12kW<7Sqw$*telR3FX0WGGnM zyd-WPpYGktR?ep$o7c1)DLSJ6OW7#y>!+(L7fm`-D0b;n^W(O1Ve6UCY^TS$ zN>%Q?Ww;GM+?T{3wYx*wQx=&F9N`ye%MPO)kG zw%>1d3fl;jzl>98G5GmmQNFVI^46HT2BDxO$6s7~Ep<%mmJHK7=OYU{{!UKfvx}76 zp18w3^YVPfY@fu_wzX>*_qy#nloz+?1n-&6#a|^K8*Xdu>r`)vW!}zm^Ph;&J7=Ct z`5ymvGe0@|IN^%b5}EAY6Kgh1)8p)AP`;zpWO|DEtWfck!!jbu%^k}>aIdisY_<>C zlJG`VzkK&c=DE@P{;axjezK=l^8J((XN9cRUOV5op=jkj>0dSKuO`b*Ymb`rI{9B- zaLXK~9kZER-fvjUvG{)Q8kd*h8LThsGv@f5jN;gny7%=V@x7)&_lyGHi{H9ty-ZW= zy_@dMweIVquPfTdvZbAhkdoan`%b=DRleDS+w&E}D_QLh@Xg%P(`dQ)2jAIii+zeZ zjP?nSREs}|0=G{5`*)yNAEcBv*d zZJ2+l{NwtLHCasAOT1S7vRv)G`JKf69ItbCQ#ANKx|hw-TBDwHu{z?Focsp9efJvw zX|%;pj=8k0aoH}uf43aAzw*9*%|FC`&adnH_ttCO-JhLs>e0{bG8zmH@;VF$-v2+b zf9uw5m;Z;)JMh0y(|XOWzu$Eaoi{sK+G)4N)G{NmAfjgCkF*)`b(b%^-_y#fAolvt z!&}+HgTslf<%l8?GyhR2uxRnNs}e#?0#%!arP}b@oTitxwl_R_~+byxg`1VyS?Xs&fWce=hv{etG*`NHY z67%27L=;aFSn{p?yUo+GxlitW{Ic^*kG%cYzyDecm;7K&v{vF^V`A*%PIi)XkuW>q zxtn|I;r6@wa)+&|`Oeq>ICO(Ex#^`shp={8)q9p6E+@YvOQlZFkAM99Ht-fF9KYYL z)gr}q&sVwQkcV1EAIr;C$Dd5fTqWu{?SHY^JXha#Pv0YlHeH-_;+4WFt;Xql?eqoa z&HO5nw|Zg@xBc3kfj>PT#oj12;a}WWDCoYFC-!_GxlJ$mu9CXgsP$s97t4y70k7M5+Oxg4cXq`&3odZoOmG+-@p!@81@=J)f4i z++O&#$+nB}q(OqF-TWK7=lYoSO$|FK(~)92l}})+Qq1iQZ$Iwm4zrVzyFc$X6T@uv zPQAvWUx%hHK5zWNP+2Qr@{!)C89B@4^mw%TC(Eq=EiC{0{}uJD_g5o=9y3aO`Z=|4 z-pBR&A$-SQtDZPGVT)k%B4hn&O9Na!hNVxRBDZ*NX_9``39Z|=`z{CR%gsH_8+_YD zTCFxcVBzh)2-a7YTJK+6t=}ChwcFsLdo1TBv%OQ#2hHEf=#w9jADm`-?)u%Zuc96P zd3&EbH@+4uH*=BRxq$hbl=sIQA;lIu*Hy2coO^m!)YYuEGwMMf#U51N@NSEFzJA}` z11Gef+orv^#&@Pnb&{3hwYy>g@2YPuI>)N!eqy)N@_OwX{(TWMMCbCX*uK6YL9nLB zPvriumH&L#tlVz2(ATf`Vb?OR=oJkM9xTjojGAV*dP_m`OYL4A(UThW8go(u#alBq zS2acRuXWvEuN{BW%Q{$3C(LP{lgl!%JFiI)(b_E$Wd+HhTz! zm_1CGaM3(;Z{?knc|V0xSMD@+h@84hb-~u%S^GS<=)aKtaW&)cM%_hkE>ud)4^KNT z%KlURbQZ@Y{$-_$LtoAS#B6t@zFN%=Kz=%DxvvD}2vC6bkn# z4)xyc%USwr`Wbhlr|od0`gI$6LSiW5m&KO6{-gc-Q_sl+|Lm*ff7N^^GH+f{J3l-kyczR6y+U7#--Gmm6e|GVOqDVY$HRpDB}b>7q`e8z@dSz+bxm#p+Ux9MV^ z?W*K?N4j#h`6*}Z`ZYyIeIv6%KF_x&al5O}P0%ihNz03~Jg;(2WP{9~Yh}6rFIIhQ zcszUh)zFM9FCPb=p0xj}RMoQNQwIt~1>bD$ls8@UcEjt%any2_J1-#{oJykXv%9?M|^_b+R z@o$0O&3CWljz2hAr`T#VeXUWY(Y`giw?!9!kEv?CVA~ z>U1`FACU`CZ2mOo^_!1LCnnCjvnHg->}#6+FPCVw4|`uMKa&!d#;dUMp52Lqx&IXN zPJTZSxY1$l{U417OE(`->he=7OI_fwr1Q$z+@kquhipB4;M}z?n`?Tf9bfC$>dnA1c{%vC5^%?v#*~{w#|EJ zUaWELVZ}RxlE)`+$e!M#xxu@;<)QQZMdeo(9lvPX`7-_MrRfip-KX3%t@XWpW6#$$ zUR-Lo>-3Jcv@AblAf?eN+_R|4ZaPDkUyC94EWXTZUxF7Yh}u}y+_W%yryG+}9&=gl z6Ibf7n7p&@Z`NB~ex$1ZoKt`4W^ToYMU0KLYdfl%epnP9Qv7}4>H@{Oj}eRCtewFY zaV4HPK)QvEzh~{6$G`F=_HT&S;dPZ0oXr?`|HLjk!+5cSHJQ^U_li&MyqUA6Yh~N% zl{2O*AL8?s^5_3_HDL=kkM)=P2d=9%i`uSmR(vj#I{8OBck?Z-o(eDCr1y+I^1Elc zcm4CStPE>EYV32eBGj!hMD~1+4PTbhliKi)vM0`zcj|i_HfOH0P&qClsQ>XLM?-=SMLVWSSN<+;x8M8!z1=_m_u-o5r)K<0e#R!n;qfQFV*l#RSO35M+2vMm zGb=)JB#>6F9x_W`OJOHKv!dbX9a!d2^;6o+z^I^^Zm`%iZU1>9FdS zJ4$s`Zr{bK8Xlq1soKi$?w{OW&O__I3-?XA9<%vhxTenT++7nB_n*~MQJ#~mtJ!<` zU*x8z^UjwXe_eY{ixW|uWrq*m zzG&o=y{r=?l~rYx7u*a& zPtR>WxKijc*SZJ60jCZg&kK8ncQBT#oL=&z4XzvXxSZ} zUjpv^=1?rVts<`!V)HOltWVea(G|0ez7{%C&S!%ENL^%evtT^b`F1J8ocmkMO~3v$ zcy6$A#-B;tS3)@U-Pu1&O@F0SN@U5>_IAl=$#*w&f9|dN;&6A`n>~lDc$AYju0L{f zrB39-9#!^kgNa*=dv?6hd1RBaoA>LL*WBNiB(1rnyzt@4NjEpKui0Vv@O9bM2di~7 zZJ)XXyv|8GYH(TX&@b8i)-znumFBE5nO+tf4-16GnBM=Qx?RWcQ3`9bc#;3v$ir$1 z^DZqjYq2;Tv3#pWgyJ<@7ylIAdAvpbtIEGJ$fztfsLp-+_TS}ovO#mBOJ=BYonoqM zp2a)mb>^A}5yio6^9-*(=smL}%XWLjne|_eawT_OpJN)s+_bmQ?Q;&R(qX@wEpfeS zVvDX{e3i0PP{*Ps-ymBiZ|w$s_60Ys|7567kv}ufv47f?-}6d4GhW`EA9BVfIl9LF z{`MdJ_dEM)1NAIV_PPh%ay;m+ro46?x#&)|GIpRw8@G$+>C zo1`x9|EHDzM^^YhONYZp;a#R20s(d^0uw&{7j;NEvnS+C%>O^XC0W>H(a)_h~E+roGjt0e|m~a(DrG|RxLVaFZuM$t)+Q0vrkspE{GDn^_E?G!sPnp zHV2|a=ReJVkZO~d_o~=%{xPe#pKmuX$L!5-b;|Wmyg5&$G>D3yAPGF*tT*} ziqywvi_a}wo+EPK`_rp!$BT9edS8mQyt>pp{n^SVmoDGxzj4ozaeKkbRncn3|CetQ zzn=I#%0a#&H1^NJ*VgCG6kU`_mi%#q!JyeJ#zA)R+Mfp;7st$aI!T`S*~U_>&fWfg zuT0CfM^18mU-)dtloBr$?Xc zmbX0T8nrd!;fagvCtNqqIT~29tXH>gext=3x!1~(r~mkcz46L@&EaqNL)C-f@`* z1B%^NUA-iDpJSG8%h%OU-R8%2r^{VwWFY|)t!%s6_*zCS{=;i{sE2qz~ zbY6EnF=fU(l{#*fdk0z;XI=5v>O4Qs>XopZ{VU~?K1Ab<;nmJkAe2fB2l^)1-n`O_a*D zy}Tx>F&sR+y z`1hLgqQNR|H{B5TAIzui4OJie-MAe5T&2)d)b{O$Ukl!S*zo8;gN>WQi^i4N)Arr? zwjdEw< ztmVmKF!)o~BjYr=c3tmd-t#NGHfX;KTazR#CY|x_SGdQ=@83V}zw~I*HY1?~2M7Op z7HO;h;rU)SPux57X8nst{w9A)Kl@wc{M~rzfS~g)k?Y$o?T8JppU-wzp-4^6U8K9U zt!(;H)q|E34ul_bJ!qbFGWP7MYb#=!ejdHV9(3~MCh_&Bjsuu(G{oJ=O1(?XEz@I|CjLrLrR^ml_pj9h==Ob2Un5S=GE1 zndG(jiS&}T)Ws^d9M0#7Z@eyb_;Ah9Csk*+hvrrXFTQ4NeEZ9aU(0kSPrW(m^6KZ7 z57Q=kO*wJN%RF@BEZ-@44r<$X9WyBu7H-xqI&{2d4Qob4(M^+}D+_w>b?AjI-=8cu z=fb?()3z&4zI}7^tIYS8GUq8w^rt+uJ0kM`r^BP4*i)@Yp2(C{=3*89)+g|wB+vnZ+rfCN@mIDO_Xjo%G_Bux*WU@KQ&c|H7()`(Nm8x|xxf!IQG-`1{<7Pe+!%_wp;yDcZuWyJ_Ri_gu}7 zzk6@FVP~HtvO&*|Wn2GE)|qc_I@VljdpwbSwqdrUxo%?cmgq|#Ef#SJhOe41cO6Fx z%f*%m(^cU+d1tii{rnrSZZfmT+ztLA?|W6+T`K|^j92a37<%Q{9MvQBEO&YOE-7bT z`N3|ISgdAjad=mf_2ZfQGOa$n<5Ev?der9e?ZDjCf13N^nZi2Htevs)waHKRgp&LW zmFCutoL~>Ta)pMPd&looY~Ns7_Hx?syESue3T||Izx|s0>EG5;HFtw6{B>XKd!lR> zZ{WYOdY{@!*`}lSpU9njvWxLc%B|S2&_`$et{u-%TC_%wC#T`)ivH;g%=OY|!b87_ zRQzI{G)?EP--F*Ak}U6ce_NI78yPm?Oo6xI{sV&i-rEJ7F1bwVnr*V;k)X?xoO2VN z_{1e%k1k1MOiX5b^4{r*Mq=3h3H?hsTb8m~O>TUc(PY?Zr_ng^;W66=+dGYO=X9R+ zjY$07J9(Oy)m5&y!Jqz4j!5TNZ@j%+IC)a?oDBi*9lNLHOgK9EMtSzhpFyE*7Eg5Q zUfoLHd`!k_9`jwL_SOP64&nWq1>ScoaeEOvy>R=L>#P0Ccj?VLecYFS^8bcMmmf)& zKRmE%g~M05t5sKeLoZjSysmOT@LIWUuiK&5+Ly&YU9P{S(k*&es;~T*{wxmOW~qy6 z$F_6|h?q^O$$5YH!b$NpU+*3Hv9h}HNNJy#G)w=n=4R(?wY-Cfi0Iky>YaDYW@$!Nu*>Ui&-NMBSa= z@;Gd}cVX;|mf(m^u`nr#u*;tOYu@;!?D(6{T(*hTq)(z;W4=KB(jEWZ*4BUG39@%& z|J*OBf1`f7(og%(Z|pUG`+wiq!`vsOcHb+{BA#vaUnh>03MN4l4hobMzK{>R6e2p& z+HddVDbwaP{g9l&T6reJvvci&8|MuwqMakA=tLbmPkM61<;xq@w8OS~Z)*0PRufsitHE<`SL!~KIl1pPNiCL6TVrh? z*1a{PPx6?}jsr`)+&pi*yj19RwCc8X{$!)qe#U=iwJ6`LQ#(J4(ROD10@o$Wb+-Jl zPG4knW$xj=+>3UxB{B=y*^M=|x4U1uzdxK$%O@(HBjxm>?fV`)y;ZU5@>-XJ&s>&; zUQYdaV0kW+-R=i|H6M!gUtNrU^SX$1)?W>#Jv<9rF0bq8c)%uSl6g(@D!1YC)0GFk zcChP-%vj#Xq~ zmXF;npM6pO$g??Al=)tvguCX$Q&o<0A9Uz{vOMi9RnKmBNTa>F+adpxxzd@a$ral* z=ht`Xe<{4W|LsZb1G{R2ZC-UT*ceXyJ%3YzrG)bdzPZIG)%uJo)Lm zpL*I@+FSRcvc{f|>1*!tv)Iz4SlKe40Ozr0juQG8tUdDGcB zM*NFK1oPwEe)hb{ZCc~-c*z?+Kh-x&uj*NTiI3e~pMK6hbBcP_q>DU^EG`X9EGpms zUw-9v?!-s?t>&_#CcI1hi`N{VAO7=e;M`xouidq8Zd%fN(Sx(~#JAuBj%(E=1sRt2 zDm@eP>Rxhf^5I>Rr>6vEZSS1Gw!Lkt!m49g`?#mRe_|5kpY7KF`^myfSwH63&E={r zjjiQQHNLLSRvUld=LfcjUj-&!yCI-7>!M4eR@OX~gcr>&hP&4Vi1n>C;Ojjc^W*k! zCv~@z9}0e4E^kXLZuChsGBAAjwc!3LiFLBVhc3Q)vY^XVsb^~W+Xhu8!`M1kJ~?xC z&$`Cnp4J|7=gwr3dY0h*Ju36m$JfGZw=LV@-Mpx+=UJ$AbmZ%Abw45}F7e4+WfFcY zz^Qa6`=t5DUZtG4dSK1|n}KUYwdVA1SueSM(V|_&-Csf%?7b45r~kfq`MR^8Q>`B6 zS{{p?khJ`n(4@kHJF}x0^+F}DuP?L|Ju$z_d#(!eb>B~?!Y<2|u6d_(w^uwiFiuz9 zXK${n$b<7q?b4@1b{_fm-IM!L^_noFAKaoV(&L}66+5@&oKeyehC1UP{!5Q6JEoT8 zH-p==ob~3scOn(*zD{KAzdT*_@>Gj??q8Q2fB(Ce>C~gc->wPlihesOJndHRB^`w? z-uK;Rvj54wdh^WA4JP~E-f!!*SRQg#E;ukdV)@d_yRL zm#DKG8#nqr5SaIB*OgUIgEFOxr^U&-KQQppEEG^_o3J20>ay<6z0-S7tzYbs9>=;b zCZm&6xY}k(R(b>9@~fg^Dp#cbcuaJLEJ^+}8Osc>4hN;ZS(zy^8!KT0jKZr^YqvG5 z8*j~tdk3Fcvds9uLjC=-S+C9Gt<~n2X z=e7Qpo_SfMEcJltr&Vb`YNRTCE@w&X;&zz5`RP*o04w_t-tB9C-1yVhZM&;(O+S0; z;{Ugn@6Z3HdEe`X);u+aON=JR4X;NEz0h30@}uT=(YE##cZ%%DIEO z9?IPh;;qwS>X}zm=6M}YJ3235>E{Ff3`;a~wtBsvc{wM`JXm{&*n+F?OTOs|)=#%nC;bE7>yk{5lh=CGFU=g<*-cSGLw^{!QOZp9QvzUDeBknSvXe{$*4Z_h3&ygz!V zDc|kvmq|6K?mO`7LPGykwFypKs$LH*B35r->C3gZMeH!o z)ESJ5t=gCNp6jwYekc5P=V76!2V9(f>#G{F-NSd=uQq<`lDR`6Ue)^VED5~@s-L^} z^Y7C<%5;1B>;p^BsVF!FDr;Cgi@!73<`A#b85M(X!C$*0CS^O#3M%@&OzlDK#w)$= zCqysUW#if*9e&bi_x}lpg7!^cGi%`-S&;*hVdo_)w)n5=7s=_=D(W(;=<+$_sZ}3v zPEzKO=i(&)AP-l~0+lbvRi6sXdRr1b^X!%>Oy{`1|GKW)yVibbA}p4(8F7BSz0Biej9&%w3s z%-V-PDYM6)_+)#|@>W`gs@_ClvALp2%$7)|JUTlau~}QOfKnC zoFx0Rh~@GHgXIz13SxhquksY^Q7JG@KA-a8kJ6qwDTQr|r+Z!6HO=sKLHkl=SvA$0 zk~2CkIxktvzIfJ)FD;C}_qHtC6K}Wg+>M%Z>n=Y|U3%Mf=@Tyd8>#!2@N0L>>H8%T zXngw2)jeyXKO3JmZu%FX_N28#L&|%})K7<^M7OP-AL6${-MOT;^KG);vTglh8DE96 zEY`-&{c)r^r*i81%U}M9W!CCFto3b>)pcxs9TP=4p9KNfjm{YK4enZLX2dR!7&Zojs_gI!D%+^|POnk{!K`qgZ z%lo!P$v(^VN?l-HHo>%1;mmxy4~Jt{{QGzCL3FO>tx$`Kde-!SiT`S(C$98M4VSr{ zTls8L?NqncXsJ_My9AQ1&h1Y-H~DdCPyez9Ta0VA9ews7X+qDplfky%ZzLu`c(Ur+H>XnsWH-S4^?#>PaF&Fd37mJdc#H41&69fYX&E8oaBFZpl!^Q(mKall+cP8{aEF_K%MbRywxvY+UiRr|*{Oux~KBoF>2V%Y(@u#H^PZ zS^VDAAJx%3caHTpCT-bCORWDq@vHZj6XWDr{$bVkMSJdwhV~eVDCL~9{}m{Ez|%at zx^Lp!BSEPX-nH#G=(KI4PWr;R*T22}cRkL;^X0`Sk*gOx*HPZn`fS}ppN^ZJi?#_Q ze9EzD^F5&Gtn>L?_j`uTmDcG(?mbG)RlYnMY~DXLKVVV3k?m}6_fKnf*;QM1&8iFg z@g($W*Z#C-C+}$!?w(llbMGyg<-a)ozpZz9W#uQ=RcYIs6Sf)Nd~~S2<`!4j?45dxAAfi@Z}r5F z&ut8P5x8Hm-YPI<=p`*?i^a0a&y_<^^a9gp1U0S zR#0p58k?>qT|QgBd3qj{e==Q5uU+#~hT(gmx$zfXUR|O!ciz!ASzi{N7CCWGmrGMQ z*3b8;GzVYgq?n}7!b`7eXkVJ*nH#vHxb;))Qb$vs8Lvc_A3pjmj_2#vR5??|H zuh{Ex`1%@~MP4riH+!Glb@_IK>A7xS-)rL|uE_^Qi`zu9)$d_KK^=ikf~KTmsG{cx3O!k(3Bv)Pg= zs+9PH+Rt8l+pO9A&X&Xn17bH>KXh&!EK1~#p2yG~i3jgU^}JIQ2! z#YAfHrMyLpR=C-0np#xX6g1t4*DA_ZVAk~ey6gBGj@JG7zBnOla&1F<=ry4&vYn;Q zivPnFJ8oo|Cm%QLaLb1ud<{SIl*WXLPEvJKK+8~FEFV?+GuEsp!|)V$kQxK+@r z>H6WrF;DYDC-#{?yYuB#p}^bklLJ3By=9-&C~NyD^v35u2OQfZg19C3ZE(3fW9dD) zPi0NVCDqENiv+su7rJ`%UucY`zQs0``uQe)QHKqGd;j{h?Mc^;MWdE~HNQrqh5RoOYEpWPwk)7H7t?$#g9FDm$aEui_w38vx;o;F2^3#583_h-wC zPn-Mb<-E8B!A8@f7IC$0j&))5ys+|a;BlivOXk&{*Df{x)TwuHUquO@{!xBc&g=gc z3Z9=iDPKU^Id{=(xz#Cq7ymI|AmCis9rus9?zh;cK(_ZE`BJytnZ&hWyX%67A3N_q zy);3+*xI(sZu^YsFBZJH=b)|3lPO=>)Z!3xK;_3Y&PSmWwJrv;7iQ*{Y}m!7V^a20 z`s?!S_1F7$P5HEK&WuDqlp z#ywo~I?8sP*jRbQ@nBTM$|v^|%!N-YXs+e3Z(ZGy&aDx?`tjr?6Dxui$Z6g+n0kJu z*J(@d$nUqFCr2#Fj5xVy){@c<4Ld(El^p#4=j^l}Hz!+c`TZl}_o*{AUrpXwa_nG# z9bx%C=ExskrG`L7<7;mURvr$WnG*ll^OdlXyk=h8u6Z`4tL{YV7pcv=euL?`iNeHK zy&1K=K8B4VeJPT>d<;Pq({7h{9XejnGjr*s8GE1W>lo*q*i=)@;=gv9_CW`=Ze9N+ zTNtxDgxnV~o;d$_8jsi8CGU5NDsR}GuEORKKPg0fqxthRja8@nBHB!sos8=|vF_;3 z*-!m%d9|!Nsy8$Lg@?^zzD+;Y9P(P8f2QSS$lI+3{O=F)NM{<%{TO4bs+hj-!s4&4 zcH3&ZUQXqH-J9w0=EKb?@fBsByYDt{Zz;_S>8i9iz4K8>r|sLcc}3xz-Wprn_bESI zelPH@{~G7>aX%hZ{(obvvCL}eyO}W_{IySi1dILGtNTCYXbo>lP`~{n?;r^Ug=zKL z-J9I*#npQ~tj}I>tBtEq>fLgiYFo|B1|^|0lajnUc*=ZPdPJkzRTsxhRhqP&`%ByE z;7O9z)5?Cuw3#0KE5h3Ne*FyQSua1$3DwyjZ}@K_&))N^y~O3-c}{B4aqM?d-)>XO z(0@;s|J%Or?aZtTCeFUM!q{m;?g}Rxv8-ZQw;q8e>x4IRQ@Gm29t9Mvd$(5O+RH-I z!j{R(?h6y;1Z+0ymW7G0-S)y@>$fjHB`OgUY}aVHUVpY=*(;t+^EOWnU~84yKkfHA zhJ0Iw@+^MY@iB+`fp4`=&UA3QNxaNMB2#A@q zO<3!~-28WXo7yab&Hmb^*(t?*6h5?~yWe?=#O7|+?|)-?jWc#yBz^03dHs6>-@XU7 zHqW0)ac&ZiDpim33EjQAM_7U{|JCu#6+4Rl)E%GJrf7GJCo|U5ed@Px1H01>o0D1( z)z?@rKJ?6yTiRlY-_bd%uI;_;G=1j{x2J#9mb(>quG@M$vwX>-|G6t0XQ^G`IKm&d zL+A|8@n@GVhAre{*4J*?Hksk3%b}TOna^UlH`pw@r1aLpeebfT+hy-}teE(8)!rVt z#_)?SN2GHKpRCwYt??oFY2C3`J1pCuy-@5p+Pv&k;vK_+Xeoz3i)_R@-MlYGXfrx* zo1imQt4M1dgX?2SbH>ukS37li!owyuYc*!(*G=r)Kev<9vGS?3*%9wMm$ukjJLU+kXnK6=W~h4lVIpxsa$)UT_ zUYmWnDVUjHTz%52*Z9Gc*;%<8rkqmGSyg`HY8?M(6X84&XO$;Xs|rGAc==q4oKR=D zca`sis!ctSmHo4mJEn!GwDhh0xBH87``TK=pB<8`7kn?=H$m6%RimMuhl$G3wv@FN z(iM|-F0Z|)_IZnNK>pWrLMN>EtT+90$=wc2+b`EonVcT-hHUgycCU&jpR zb)0z39xgZGE4#aCd2QqEC1x6F`C2Jggo`VdD_a!%UpTomEy0q1%H&lOF0(J5ogdPa zskZl!$rsmKfm6JmF`Az$IhS0<_4b(Os&{|mMV=@IPJHO`uSxJ>dp7&_v?uB!KaU)g zzB|)ev$1{JPs2A4B0~PYT;lp^p_5cqrHi6*w6x*8M!Q=~=|?g{LnPt^Uuv8@*ehh2 zbz+{_!9C?|mhQ$@DUT~}vc+4}7rlM|<(K+(sXKdFQym)`KKy%Xo?YhF$D_5*ZC#k! zp*%ISwE8mRfA!Gil}^5d=Dn)dr|ZrP)KE<5_U2+R88k5WZGslTsv zDcG=S;;Evv`%-gQci;cc{YPX*K~h8b#v1QumFUTMF*Jzd(r)_u&`{?=?- z#`CXdo2xhLvdT+Oy`}SJpZMg(Pj)@NC%)*#n&O1xZ*NZg^yQXbWcXf_Lt8ahudFwT z;7aNG^y|~d>hoc&?x~XnymZsGV%iH^ZwJi(d}!X^GryJO4Ws-t53P?ma4{ls=V=2j zLGATNOB1=aZ@N=taH!zTsiemxwpC3AcYn?6xNLN}bxYK?pOcz++>=&!?s@CdJmCWK zio*;0KKA_Lckr8d>ymiPM!{uECb)%*yDWWn=<5Ohj_9219lNajGA-JjR6ehoBIj@T zei=)y;^aviR?E!dUnZY5rQGvE!LccecQXon^K?t^TybxGjZ6B@0*e#d+h)CNY;CF( z`A|^aCTVzWLY?z(LDBG!d5vco+8f7puGI ztzE{W?EBVzPP6CFH~h-pr)s;jBdYEND)V0Qop(2R>!+UchL`pp-*xnt!CT!=-kR#S zU4w3apPZ?|bJ=f;rThY`HMWl~WrlBebL`yQzVxuvx87Nf9}dplxJ8I@(np~S+K`^AD5oyF1%%F=tKu=q}JI=JQ+hT~mD2KKtzsy;eQHI20x+ z*|cIM$4dK<`FGCm^b|;4$!xpMt<$v9v*SudrF&=5jd@2ee|)h1MAS!)7&hye`Inwc zmA!kZE;#4-vH8z!|K8Z0&|NcSv*j~Cp;`M%pYyI!R1&>eC4Ssqr&-@)$J!GOiGK}z zpV+%jXFpk<_*LY*MBwtssV;^Yf6nUrCDkvDPAILq8FHPi?VWA9$@Yj((-f3z9<6gb zaQt2PiW89`JM7-qc+I~Q=Ck3BW@=bYTJ88GlMVp-8Po@ zA}I-rSmtz3Tex+(>jkx?GQcmI_W42;S6haC2#4HJ96`#hwY;Gi8^Q@tv*>bWbw7 zsruu`s!dzh>K~b%q2}`8dH>Z@a)zq&3qr2nx{>FcTyru_)Ng0Uls3I-TXiSsS`|fa z{dwiro7-!RLWFdyVMwNGMXxl?ntY{X@`SvHER(!%Wp0YTmwfWp zk$DUZ%daetND_V7wWRLH>3Gel`)5D0?=>-Es~3CQf6-AzLE&G0=8~*$WqixRo`uyv z3;93@16Cy{pS8zX?E4s zY1?X-aqhD-R+L>h??CBAnd5?j-uHFgCo?nL7yrJPX;sPm{mq~LrwB8Amff7evw>-u zkigPEc9}b5$`}5)C^v)E>7L#`IrihXR<{Y}r_J1W;*IXy#U&-z&cv)WJtW<;^N3ZC zCbz~~kM`4ni_@g~F7+v0diiGl)}?%l^_+W+R=r6%e#qENrSZ4moy>K2GyKY4XvJ?l zTFNc(FV=br`|-y<^*uj1)ZQ69d*qW9SjeXORJP||Ybx)@2{s0&qcUwDdY%tzewiX4 z^I+Mk2BuwM`Nwr*%X(t@a(oaq~mh>$)GhNqQW5doWuQ_|JGzP8eO78!`bWyBvajf>`v+Fm7 z{AOOeEofrXrrMjjtP4*&O+7s4NMvkWd~-yX{z`|XGc?<6PHp|Y!y%|9s%Ek!hv&U} zr&Sw^3<|PT3eG(DFg@k*czFzWdwSdZQ>u#I#qO$$v-yKK4dX?3>B<-e@3HC5{$zP* z``T?H+5Ue1Q~a{sV$}CuUXr>`ck=2#-K!5Ly;jlQ81&Sg!~Yn!#im7)OIL?|IJNA_ zDzmQ{tBh~xNhBOMno=7#Z)&VgmaEdVD_O6v@w}fFdb#w%q|Ns#?{D;7JoQ3*#=>9K z4-WpA+_$Aps+willo+o9&R@aS{i+fMcNc1NtcohGvefexH~J&IN|lG-Iw0Q6*LD57 z*{j)p8>`Nfu(-JZKSkBN*LCH4o{_^*DKtMT+4E_o>>k$JYNZC`5C_iPGWZ>&@^ zue7~o*KDT8uY*ED+_l+CxU0+qPwih`xWp;h&v{$jJL}j3rRp1&^0B|+W%#AJch&@z z*fT4plp9^mxG(4G{`$LhHc#U5c(23>TfddOOT8L?Vc9p^fI~&AmK>hJzVgWCrq1MnZ{0tw zxeF6Z=kv#MEqni^Ztt?XIkoBDS9txR`6A~1&D{}v;$95D`Qj|jy}a{w?0Nldm+HB{ zlUEkMC@h=3Kl(*>M#I1B1!AkKXNhoVACVMnus;%JEVTcU{pY6o zZboy@p+m>LdH(GA_vS!(pu+r#drN+7JLg`mZsjQbAur&XlF0JxD!udU4wZe|K1^%A zAy9s8uiBPv@3fjS&meu_^(-g&-W4(2p7cJ1f2&%}0`n8LxBoN; zui(F~*YrhvhiaS88r}-u>2DZ>pM6Vc=$x#7Z}~B=Gn+zo)SpbX|Fh!9woSPaADeRz5Gxm+G7RGuV{QlXaZc*eF#0lN3vCf>35!et=%L zwM~f<+efa$_Z$|x&d;0LxxPX7sqnLfT|ZpcXY0J#Qnl;&&4cgP@0VN?m1M5SI{PNwE?4d$SDo;OZ)Be29 z)hR+OZ0pA!{lrDT9!2YmB`?*Esb*e0d*;-8iMxa+kUAe{cDP`9mSzbVKd}Lb*hC~xy0k@do|!Mn_%KFt?PR&O0~gQyPzz%2Ero&s~ywsdL@5K^^uR`I(YKQ@e_Wtdw>1jB9i=foBG+eNhc-CHHAOl zFzvAMSZHbI7W3G1*|I}Rl!C2hnu!&O$NZCN=lJj1$<%U){q9BOSF-8T8jKHac{tH| z#qa9CRQ>8mrK~vZpohH zT`9LKGVI&Z)Aw?uZkJ?jE3#fQr|9TZ=M1i_%?I-h?i8oEW&N#~oz+(;wDZ`azc+RU zB~O{PI8m|af!d7B>%0EmcRSE+Y&kpkY0&cc##db?b*~mJYi_BX$jaK&&F%Gc{`$Fl znwOsF?weg!;#+;JpA>$PvEO7{ zw2C$QXWjztkXf~-rK9q1S)P|#VOPxj=G4oX^*cQcCUEA3c`Y#9bFBL1+rtyBY}2MG z8!dVg-?+D}U@m`PX8pxo?^G|nOT8p@^o_KjoARUUY|ttYNbxNe$$ zDAcVgQ0$Ahm6ug$pY6gW@&A>!em|rjes)3I1eL#MChPzBq22qVy#4ob?V<^V!IvAD z8EX~)?Oyi6KKA2&udMoCkN)5JtGjZA;nIyOyS}B0eQ?t8X7%%BxSW;A$hg2|b)pFK zwS%WQnlu+~PDy5LHu6o8Qjh6*EzNyaSE%N|-6~;?_NN=}=agIR_-NwMBB#Ezt8n-2 zZ`HTzs$PFA{5kii;)lZRtsEh{#eHABJt3H}Uvu;M{d=P9Wxs7H(RzA3z1_zhv#)%F*tW))($DNke=iJy63FmP?b=vX!4Mr8`|0V*WS7EYS)uL^8J(tJabDb3CrhckmqG{rVD@$MZv6UtAW-C0J z;nQ<-j`1>`*9FUN-86DRVJ*y&OcgvMoZV_EEe$JhI-?kaWpSsrP_Pl-Wm6LDg zDN051o#4z7+4wa!`5$Xx8}n*+9V4Y}Hy*ii*8lu;(^D_PD)P+5*78ZA%By5|`bhn= znf$GW?F7HzV_Xm?(wy&yMb~BS<$NK$0Zny}=zI!tJmzhr16uA6PoT(o-oNh6U<%~^SC*RGzIde-d3jPo#OQg=C(gCRo{x@=neuM^o4dtx9$uTW)_di$ z{gaM=xNA4Z_Li%E-j!H|>XgTg@j-WQeF^x=d~b(>Yc1zl^|!CKO?au(U?%-$;mZ|q zd3j%^7`{7Me5|Z*=bic8hY!8aJTBrXxi?#0;U}ZG_;HgW2eD%F+4fl#wdW68>@#Ql z+om42JS;R*u2FgMG%okGf~rAhWh}BD&t$%TBzwPkYv$SC6}+zN#j<*wx{wRc{)Z7KWetc?mS?N<8lK9zQ=EPJpxTy~Y|ri3Tu)8(d}tk#Ua z`_Me9A^zi{S#5tGUEkXfS*6r_B0ZpP`OB>z`of%RqK<^s@o9GYM=8D%D$4oAvGjG_ zdgWWutJr2opHewibaqiK^Xc@@wKJCf+_QAHri)sG*K3pB^`ey}KU)GFm|A&1yPpxR zQ44=|a2B)BbPWaGgK32yPw)AtW}0`Zb}dKu$`vQ}wYsdH=+afF5wPUvZ=nm`;=T?X zs}wrI&RA`Dre|_a?YnYLVYtZU+gf#x=6D!Kzl)X$Qd(yx^YWgStQN;U*&E@Lua>3+ zf4DBBy*zHoZ_$IV^scs^?XX}J+$V7I0bgyzr-VNY2Z|$HJ67pv{M{7nxI8^XIor!jaB>TWdeuo_s&_cfL65x;^ICBD^&?CujaF-v0IDR=KIacqdlP zQ7h?p`=V|vRsZ?g%k>AmIX=Hx9pStD!>{%?ZR?DCT?=nrRo_@(yLiXVmrYFv``$}z zd)TqI`GJkauebZ0AKGM`daL)cqhxkWd7y8np68N#0;_K(*_`|&a*~5%@uZyIjc;4i zzbA30he+p665`tsS>1lFhFMl^-J2s~mrveL-22P*W&F$QOrDzrnLi|2A9=$nC;Zjp z;}54C;hQbKzblT{|Gne-uBTMX!$8{LXx7_nZ-sx)_0)bX8!jVwwqV=x;8~Mz$s8%Z zBb%yt{DG{&@2^QFUs(UC&-{Pxe*L7Ie18wtJmXJucly7Z>HPeZX(mM*|8yV!|Ffsq zxz<@GS9?Zdq=f@Zv~-JxU15gky{MZ;#a}sCr!q4x>gn`+U374RR=nxf+gH7ItnWzJ zSAOEz!Ub8+lox&%+;%zoPxRuoi+73aTmAE6O5S--Gx5`l4_<$+p3)FiUS#|4oYoA@ z#kwKFS5vf-V>qUM$$G`BCMh;m|0LrVmxq(HtmI6rO2p?(b(uW-uhQ*fGI!_B2oF=3 zFR9jC_OkJ_Q}5{qOkMR;H-|p_`8&bpZRX2R-O~cb2XxOApSvZc$61^Gabxw)1Ao5H z^)Oh^RW&uB_}dIoz2^r*4~r&SS~bMq)b3WEw)W@>*WD3oj-3#)>#beCYf@gc?fH)` zm!G}5W_x{w@%v3T@(+DJ9bx)K`T1Y#`1v)Tde?|aC|`A8l#r_U5xVZt=ExZtEA_mB z7hmkHRB6{+U?QYyvUE{({DI7qM}1lDvTv2Sti|-buC4IXJ@z*5O13}SI^HI~*>KH? z^`z=zhX9T9LdK!1_Gv%nnD%H@e2(jsnO_TQBiA4MZK)-fryB9jru43F@A|i!nsZZc zZr0*va@e%Nyo}JFhF9&^(nx+q!&Z&8CwvrNU zVl2*kBe6hjO4yTG?T)q;Pm<1jZ@9FMJ6<%=MWj^ZcFILZwuF;Ta#0vF|;+?H``TW;}E+>I6R`XDiBskfKQGt~pH%gz|Eoe=zy z(AgX2wSU44anajPKN)w&tV)+zZ1Q90N5LOlvv}sr++p@(Z<1`I;@W%0;#;OxY1)Rp zs(bvwMw+$C_|@N(^-?-sYu1V$RQy}%ay4U5#Delm>TjH8_TFgwI?3W}pR41Q6US9* zt{f9s`LB3}_T;PQ`x;Gj_HtgWw_3_uo3wd>=^63#8ol!z?=~K6dZL+kM)bFC$v&my z72h7#c`Qiaa&O6cHsx4&0rPUEk~xR`9~Jm&UrH!hak%NtN66kK1^^>ya70U2%V|Y&K1oe(C1K z=Q{bnROVV%=6J7ey?vzyxf8b3PAq@T-zZ)M2_=t>-nw$FL0S=&=|x+`n8)A5wQ5xrt7 zt2ka8Uuxk?^>yyi-h4#YN_or1D$nq1J$+9!S@aHvL~k@~K4ibX-*0oYcjS5#=J{`r zX?~vjS5Q{!ZJMX>$@I;35y7vLG~X?W{j?@3mSyj@?GNAF^u82*%PniteCGV~pH(gx z+@I-x@$287l8H3hSIY*j3xa zl^RwiDk|=l7cTH*+6zS^PPeE3DmYm`yPYd!W7=_8Xwn(aATHwz0c~D+Ti?x{_~z)p zdu)%UF?hHrTtBh8^q$hrNwY*)`9xiW6CShMIF(JB|4K@gr_WN=cmD0d-aTg(mhmSq zF@JX2TGf4G`$UFg9*mC}D;GJmvF>!{=03Y)?{#YhO`gq60os?2aqMDHXgcX>&&(}! z@R7xXdp6JRP2plc-D7_{^h*8LS$2_EYggCoY(2dyBt`7=p9PvqD@`t23#T+%JO5|D z@Q-hKJ-bw@epmkU`1olD|7~uJtk?heC!hUq{Pv~)#ZUY*<=tj`ODbF<^@+Lt{tIav znhcx*=1MY0*s9tzO$lc=oqgwN)y1hd)~;c)V_r1n_FE5@KimIoc|4jONt%amQ zi=7>1pEqSke{>7pRVv+8a>&)}fAq4hg`cN>yd>HGUZ;5zq9XR$E$ge;@A$Rl_g=M2c3(g1-(Zb(oAo~JCl~u=meiL;5~{1$ zn4I-I<`_5Yq261@OT}vYuHHR#piKCyZ|Siu-0h#Hl;tR^?Pt<^%v<=Q_~l;}Pp20v z9h85SsjfPDb}DDsy~;fHU2>aj0?qi2`^Vf-THgCR18jIr|!5G`*zXx zN%{Ky)er1gT5Z-Py__>w&AhMX+l`dOE1#MkZ(qxNM>6SaZro<=?FL=5E{J!_d@kSl zPCc9LUHP3|sjjT=qBAN#-_T<&&Y#wlW@)3UJTXn{+X7v$)?&%#xep~JKJ|ozZ0b46 z=5Qh8<}V?pa-YkEojV?Q@>s8!+Iaiuq+`FFy`Hen$>uEHarsU~kaxGly5-eH%UfDD zIdW*6dhNVfQQ>#%rW*HEsa&oStSd|66unmNVVZs=+%1aLKj6?}OAgJNrb1f|kBuAd z9zOSY_p*lfMbg=2ey3mbSnr%Tb?2$=cYlg}3R-cuMbCg~+t(DQTYLJmyLU@&ytXvd zXS(&pxD6evq&wJE^^*j1+mEQYvtRgm`*7C6w-wJ>1-jGQ`e*LwZ#|T;#lUHcTzCpdhuvt(1|#iAP;k;P466T*nM1J%fn)SKL2q2F6WmM-)r`^ZCyHHou=$b zo?XtT(&o>6fAV3v+4=M)riDtoQ#SvY%(^|%%08HOzGsSOS&YA zjwx+n$>eq08SO2U;QZ8R+3{&-H*Dc`-N@T~!5~{?o90xP>tAmCOf&rW>zc&hyS=GX z3ge9Lok?oiFZ=HD-4H*==Cm}<_!vbl4eqUJ;Wr*CuG!ePL(3~PsjN!eUZ17VsyJx> zmtB?2ERlZ_9paAdxqj!J^Utz(j!mg1Y?Egfo%7t3ZSNAK?JoZ-BOzgV(@(AUe-|d0 zhFkKh?7iI)ec-T2&Rm}(6IQE|5>yimM>YiXt#}jmB)&tviIV1cgR~yM)L&7i(c7a{CkqQJ;yNy5w#=UiHjPX zdLG>3agu&0+osBSu1k2$g6gdbS2ySO@I8$UbNIO4oGUfGJ55@r)9&4@qnsvb?Q51c z{|Q-QSjH!|X+xPQDEEACzcP|T{!+iPt$34+SSG@ZC4#cQ+q-}QI zf11bb+^rA4Zj|~M+H_u+$UbX+dvW=vy{gS&?i(pS|K*}O5vv0Y z=f}Q3|Kz$$di7OXp>u9NR|+NpL< z9p`cHrPZ7Fh^+pi^<(lrt(wXEwCYrpw{TT`u+?AF_3Xjxrvl$TaV^f~TeLGFf6c>3 zSMNfv;Of!bK%J`yuKS+x=)_*opn(3bK8w`KMy-j%DVPk$dfsF z{%O|^27?kdkw2?0=UiFa(pqv z?ccY*iT@Z@aJaB8cH66e%q|tt>Syy>Z`ka&JF9hQ&nl_i&un+>+GKStcR&04Lhf}h z?baNXbASJ>lTKKE}vUF#p)z4e~=;)ne=wB#Rs_BkUTrDHFx{DwcD zcZue+yANMz9hN@(FnxM-Y=?j7g83_#rX)!ET3F6b>@97ND?Vv8{mIi(1;2}**d@DX zel?2ty4bCH+X01V>FXN2E53B!5O^L~xJ!R)XxzT2{2d*C^jmDU&enc<`p&=29olOX zj~YF8uX1jB#^q&q%Q@I^?!&g#hvg?##~(VGKV7lyw87tN%MUY(O*4|*`?KU%>?IDB z{0BGZUb5f#|CHySxm*6vJvTA`{FSo@85u$X{%x*2`CsSGjNOvbnzO1Uv~O8i{I#`Q z`08Evnx1#gX=f{+rYLZRx+bs%CB`u}ab?BMw7H*~9h#!pxFWRZT8DPpCjZM8Pu6BV z?>qPH#on(?ue?>$|8ErByt?Z2*IyfEZZve8q;~!E^MtBBFJ}}V`Z(!rM$!I>hre?! zc9*q17WZrSeq)9w5udNL)mzv*TsX@wHt!TK)4oK0LE~kS3(imAJYOau>D5`SV|_d! zfl*E2#+PZwE_!^~yl4IMYu|ooySu*d`yT#0Wkc4hsYYpM zXUzV#!RATm7T#@b{Z8EP7$&b?+3m8%*NCZX@0AmirmQ~HvfO>~8}|OkjQ?iZJ&|3e zSbxqW>_qa?!sEY{*S6K{pWPhV-#uqZb?KZpw?CJgJ$Bi)Wv78|v}b3t*S+^4%U4cb z?&G=mWvXi3t0Y102L2#1i?6NU4x}AxbPfNmaBA(Fn~$m&Z;&YM`_W}#%)jMfg2GWN zqooH9yez!bu~0erP2Co!qKW)PoA?WiYfnB63A;A6ZR7N9$1kg2n(jCG<)ep_(p_8D zvm8qMe{*H@U&(aW1>e5>O!yp@u;k^ew%ILi|6iZ6-55GQJ8*Za?3WVL+N_O2=eqdn zR~C0ZckNr)Q5USRdR6>%$47sWrdVIw|6hJe$SozsOaDe zKDojNChQyJQsn!6lpVb-X7GM=VO!}@@+OdTV$P$a!U@?orv|%9P1+Qi$WX9caH=CKXK#9vx&!UZCO{hKSlhf?rZ786?9T6dmEgGCy-uV69YYw|2-^csfm$KHLHuXuFU$g(`>FaD&S}(UsO5T^; zvtIRKkk`eJ$F9B+E`1mCMk*>}URo%l>CId1PhJOpVmNbuwaS!~o1*Twq@T_Hd*R{t zlQOT8)WT#c*D^R}YV8x^DOhdOVHBv6Qh)4aSA@}iH`xsd2W;j3&+>T`BJTZI{mMl3 zZZGD$Z*~~9DEdBSo@@X>9OeJT1CUU<)0VSgq!|&Dv(&cnT_v?#QnG_@85oK z+?^U}>m>Ac-jto!O5@&o*>AY~a^ba7W}!G+oj++MRi<-4KcCQkFja&9y!3=rn>5>R zJzc?~^S`W|uifdIASO3^%ELW<0q^<6ynWX(7P;4CO6720=$8M;wsroy8(SL7jL!Pi zy_|k~+uj{>&vBKl<%<`b5Fhg;`M!X)L-;c_cDCbMk7w{+omwO55d53jMfam$yxbp0 z&W5vK+KzxN=O*#pOwZMvZFL$4&R22~ODgx4BrCQ@EuyB_~tz z#?iU&pUf%*Rttt%jRFY$UaBks-!YFNVVn5^uF`AmxcQ3XX|g=cYogc zoVo>Z8OkD8mA^Ioa4uaq*J_2qY@V$e%)xJdu77j!ReM|3X}u)}PhHzKW9_xw7yrpR zG&#OJ)pt_CtaZ{Q*_WJKo?RE6nH{F{QcLoz)vBXi>~byI8$)OFxrVR)?6+styvJH6 zQ}_3*DArim8e(Ln@Vy=%(yHB;9MHY+`! z({x(jpdxg23&Sc)1+4fsy z8^vPuw^~bFdU84Dft;@9>=hx8w$0KxvFYiqQ-?~K`d@yz+LSJGKXC%9&-EU&;yO)N zXMWzP41J#~JeiVvZpS?DI?ogLvFCp5%$`3{yS)CJX?)vpIWkFgr)yXH7p{)){Y-|5 zCtj&eW(bpj*Sn#JTd%k1?fmPsn&bC%0L*W;W0Tva~YuI1yRRjG4W#jh8y z$yMn5+Nb7{RXV@z{FdH*e(ztp8SFkT`p(Q^;eOjE8R=>Zeq5`)GWFZjS-+#UJSv*0 zmA`#&^{2+3+wJ^Q+h53>b(}6bs%~q@InLC!>&YSpiMV!Ku-kM`)v_Ah^>1@1VR;1!b$%7nw+?M|}Fz)~L=uT;L z#Mjz>$4B*ZnEuwk&zZmB zr@MPN)AGHoA|-JPnC6)?HCj9}<5JX?-0rlKt0U@h?SX3wdYPu@*rw?m63;Ndp|9F( z_aXY{1?~?EZmj8D>8p1=Tkdl9yf53gck@>;_?j=ibE0o!6}RmT?sKn=H($OcxpUXL zIM=riw1xM%9OSs@8*_s5#zf|}3md=Z?N+(?KIPiu9qQ~XuMFQVo7iko*5AoAlk;z6 z|6U8*t=|6i=4L)W9NsxUkXfWQKe&DF-pZ5d<(95VRl=sb!|aai&Rg<>%W~Nj{yL_` zGli>X1+SlWRbfqQ)ScpEwX739*nYM%IrEwIy^mr%f4TdiDQ-V>W{Pai2|3ut`+dEC zz1fUwB^$qO?PzF7-n+@`f4HKvZ}+qB6a62F>D$a$HQm0=f#oY7@1abUSzPZ|IUAql zwUNBN<&EmT((qTS`=7qb`+3Lu{l1-t|GX)@y4v3(^!b_XhMYnt<~&WQ*qO?D>}TMy z9g+qyFIr5PMfvqF8K<3X@`(AQer{*`g#1T#*Y%UG{%)NjaOrx!OpCp`>*w4+kZD)3plJBUfp~ArO=k=OYUjk%oFVUZ^`iUJ=^#DMm-9vAMC4_ zT*-2!eqQ3A{k|XN{r_*jA9OA3j)3FCmD`Ojd1BY;GzR3H@{o7^PO(wh|*^CQ0*b^ZLb=wz}Juk(^8 zwQM^-ADOhuMrgb4qMt7W`7MnXz4*eIEWGTEkW1fcYl8z48zoLJwq5rB(yVn|aRK*l zF5DY8)hYDF!KUr~7yfGm7qVR}R^C7Pz=?8Bhwrzf-9N7>fy)1_tOho#{|qY5MT|+Qqw{UrqmR z-LkH*!Beg5dbeZ9w^K=9j&)y+P7U1h!1!F3`O9AlE2m$ybKiU=t-eMg)R^1%+ajfv zTaq42_lMuUU9@Ri!Ogh&wJ+&_4yv?(0b|R7ajC{$3Ho4S<`v3Bd=7LcRIG8u3+4KAo18^F|mXF5`GgGo|k@C7rcMn z4gW6-w4X5^k&ri8q_q9sk2MUlcd1=FWZiRe@)CvDTQXFieEe20{ZYLC{9lvVOnxl= ze7|<;Klhefj{4~@FZ#J&e*Tj6s>!)ql~)}vc>6Nd7+1B5KY9N7*^ADrFRm!R-Ba{d zOJwq$E7KDkw{T@${A-r*m#<}Sl}JWWv#QD?o~J5@9TK0s(thyDa>G{>wLlMfnRSk$ zr|t+$*Idgq&-1>H;u7J)wN3Lh^$wmFT$}&@jp9G+UH@gjAG?uas#b5<#3aFR;QjxH zwg>C8RsC*loIBlF@@3{v6K&~Rr**b2dK9u~f`_yL_Y%*`F5K3wd@?cc^-bF*Kzp0- zg~XiqTT(ynyJzw5RQ2sW$M=8sWJ-8z@b^MXVeN@#j$f)TOdjPP^f+8K^Y4>wRZEu% zKkO>@KfG+}fz;Z)*Z8Mv>YsPXdYq9ZHhuq-lg1kp|F3d4SUK_3lZKv&uIDBfum6+0 zd*9IwD+?Fi-x88LIpj~}t=GzTHLmHVOU)9qy%MUPqnp09_k3ao7qRRB{ z?@Lu>%B((iNgC4&ZBNG>U2K_|^k#hr3sbjf|I#U)3lxoFWbPb@+jRUa%jSvc+V9Rr zmdx;s&Tpxdz4Dkj`RC!2H$!JUH;n7{WLf_2oomsn8|xh`)lKpRv{i1Wi^rb~_7{p@ z_nA|*&%a`R80W+sv8@g2Y0} z=U0l0M1$A+<@qJBJiW&=qu{iJk&>UdwLp0J)msr;_m0NkJcG_^n1Z}Ke`{~E-r~h{QzHT(%qrt$$ki+=*`S(r# zcKdqYl#2Q{-BtU;38s(A71fU(qy)FLwW%+D`Bsu=->>UO`PiCFzMi`@zhPnQ|C>i- z>(;KEvgjwvAGHZKJD!-YTXK5Gmy~UH_f1K>^z`s~#tRX-osZ+W__X;CwZ3aG)V!j| zx-Y?Mjo+G^+j*wFN>b5qde#@bW671f^Io26J}5s+cT$#f`upR&Q>}}=lPyZVaY?(^C%Ep+nT%w=U8lW{ z+J=>U25=E8^Gyq)htzDdZR=hWvYc4iKhz8YhiGX1HNut@pc z_51#IZ@t0U$bRPZ%bCX9`Jay%e|i2meIEruW@K5t!+NdA5J$k>t{7y#4IOFYC1rA52McDmvOuBbH+SsM!{$9pkyF=#acV^6A z&3HTdthxDG#+3HyEs9-&uI=vXZr!^*^z*Xz&0%>V`Gxs{-_{dTZda}MpUL=Y;iY}j z*Zk|2d)Imy*2MQH`ETe9V7h3{{7k5 zxkBv-li8V!#4iH-x9Hk$W#q zlimDUBSOMD`gn=eu}P+jbgFi`hRBvgT$=Fr!M%wSze!!XcKX=O@}2CKYBI&M**thf zmrLGOwmTrppDcO(YADmrB`qPUN2mW&FshJvSW%lC9cXN6`*)rF%rpG@*N*Q$n{}J* zSksz{HLokKo8HPSh_G}%FwO8?z~>0T<-(cD^CrXze)EfpIR7E(v#PX*it!Amn-99` zA0Fvme_eV`tyuMMOKJZzyC-)}UXZcA;_Gt#4#RH+y%~{pJGY)>66n{p`qCTS`zUDY z%GBqFymc0|9Om1xaK^9TBA2Z5qKiX%Cf~faFgDphJ=$I-{@}LE&cNht6Mt<=Y3hDc zsLxz%TsQ03o~K#YKJEM7Vv(I#xp|9I_LuWFuc}WiDS4inAhhn`Y=;LQg@X2k?9JP} zB?B<&M{#73rrk;&F6mWFu?YpTq6~RfH))}r9Um}?Kc4}6(rNYeb zm*2&?CJLy%{*jl|61LPO`B29?2ft~LAM1(ENLs0*qUYjz^|nja1Pd+Z75jZSw`^Mc zGHB*ztyK@)_eAfwuqY?leFEpZnNRaYuK5UMwcbxYD|#s=ms`HvK=+5SzNuPKqC>C3 z@`YhON0K(mtrvduOvL9{-7>Gni*jpnJ%4;$a$o7`$N8~hJnXYCK6H5B%`&5{MWa(7 zNlRps<61eLc?(j~9n4k=?pWp$DUfu*tJuR?o_lu2i#@+ZH>~OOdojiDvz2bU{VTU{-5Wtcy?q@Nt1<>qItViLFa{+joZWKJc`?NNXbloy-xk} zzMLt_FXf-ScT9}aT+`^5D_xxsJH^M#=KK+_ts=HDDjR%bUvHX{?$suk=N}R}*^YVL z=`iuxMKksYzMqsOEPp^HvT9e6`5E=w7aLankhr<5S2KBGxVM0GSiH$?L5&1s&5q^w z>Le#e7n$>BcTVumjOUx>>2t{;du`m**D-;I0~5PDYp!MA6XD>Ox^~+}wRDwB^em2( z^1HvzK0K9E=JMn8i66XY&AF2Jo-0u*K4Ag3tl$wpPA9SBs^>-T&fS{6n01rgjkK~D zkud3lr*<>P#7P_1ceSb4iZ6HnZedmMfjv$jGe{+Tgujr`>unNN3ko>dZ8u{zpYo+T)twHZ+Qxr+lQcI7EwT1hV!63MZBo_5 z^(vtzYg)x2zw7(7yqDKV z>*ukgs4o_-x{&{5A zp}iBrQkcq5JKw0b+P$g7&Exu#RHMoz!J?+7-JU`Hd(ZjwFZ8YBjD5P{@8-@>!vx9r zL!75eN@j12QGXG%^HVtc;Yr?2shK>YU30g5&OF)mMo;XwxvsH|_TC4s4|z&55A4+0 zd@Nz9uV8iH-b061Y~OK3ICqBU1iti7%TIhfEo&sad!?k;+7&kS&$wiSa-*`JFX`5p z{M4+<^>OZ{WmB}PUWvAN=1+OJj$s|!ajSh>rCRnI9N>&<3^7{6zxPjH%G`>Lr`*{$ z8MQJ#6hGl{ZlTCGzXsj4GLfGfj7vLs&w3ute<>ySWlmY4l4r|YU7u%N*W+JVE|t*F zn%LC7`}e%>1#9Oy#OzL=P{15Bkuj`8^-9O7l+qtHOpK?;2)#1e(j!>r`6Ahf)CrjP6`D(m1=U$XR6bw!g?uX4UWln&TQ_CRXRm43 zo^oD$+V#lW_}h%;3ZHe;1g5>Y#QLG@4@b2*!_Sk?pOkOep#MO(Qbl6z30G;JDS<+X z9(p#Ow*SssFE5*Dt;KC9k+4O1r9}P~_dTqWGZywOa(FbUeagwjk2GXt_Abgc>a=$J z9G0rvXTC$kIkF&?Gc1*pr_p}~*Ato6$BQqv9Z)ykdf?ZD#-IEP&Q`K1csgX?-d9)h zZgcfLYY}sKlNk;-z8!Ve@44=2bnW9=uXFn=60&S`Mfnxx$$nk!{Y-ZDy^p^Fe*C;} z^z-?tn^(uQh&|QJ3!GAWNx%40k-tGt+6-Omzh~|$9OUnDe0NAxXR)UH!A}aseP;x9 zDRiO>OBim*e+^&?BUQ8&sq#m6^|OaNJBf<8j|{?a!Ob&aChc zIeK8G)`t_;0baE(@zq;=q!c2(R)$Pzui6;6sbVdE-;NuByxzZ7x%wXL=g-QKx}o)a z*_N{7GnnT5Y;`s~^vSPbof6-kWvhi7Mb-44H`^y=(7xHf3*fcvPx#p|a(c(-d zC+i)D>XP$CxQ?q@%vxHlG&x}20++UFds~&RHRTy5-P@(XxZin0x{fMytB(GvCKKM< z-xaSnSu#DFmCt;MVG+xNBa0YMTsY9dHG$Pa=fc|8Z^aaC zAv4qOYU}Lp2T0x*lC%rGv~NYa{Hgc)*O^u@tJk**>s4k2J~x@ZU&tx`#){1suiR_f zXy_uL)pq#aqDa1i$v#$-*9xt>Vd1vpP+QD|(Ecl%+k3Y~WyT3gm0#?8UU2rDV)p6f zC3`Mz6no-5!RW@vl4t9Va*1UeD$#S+o09iz)2mt2OZBAmr~lO5pD^j+K2w`Lrrn38 zZm<%bIdjU2SK=H(b^GI&btGS9Y?PW%^)z|==JU46``3J)c3rIGtAF&wAm03gnZfZ@ zE1wAG`pjZeobf^K$BQc$^H!~poX+tuPhnGu#Lk&DB4>YSw}g7Oi+Zl-o|N=x@8h{U zGR=-{`(tg{>S5jXk{WG7j7NMA+B# zR<8}P*>QXO2@4a|+{z{2EVPrfmKz<-PyMy^sQ>O(mq~IDgbZJ=G3RSh;#>57(d=ta z)7*L`72Mwx6wIG@CqAv6hiBhk(KXMrvsq8wFkaQ-`6%I9&!1OPo!^d2zf1g>_UKTe z-GqC)CmTFX`}Sdn%RK{=XJtB!l6q5YA00jVIlL zt_O%XBp+!Bt9e}RRiV$7Tyd7AOxAqn;nd|Sv$OjZqlz|cs>nzRY_HnVuXak|?ja-b zZHpi6v76ZTPI%SHBbIg3bey+|B!{lk%!_%~RhyKom8taU*`7CfuP;opx_W%>Hp#~> zpO}u`d8U=TSMG1vrJSwbKJ0rT60No9nC;sSTuDM+^S;efRydv;d+@XSE_>~OT{brl z`JUGLaO*&y@%d8^ze{)qAB)-8%>4Rd{5k6r5_e-NQ}=w}iU0qxCbvU-WcM{k!=NKiAnAK8unlxt2La z__AzYpvJ=M1`(MpQ_RkLi7Z8 z!YNlTw58hdo>J;+Grqic!`f?e9!90^nY5?xtxe!kJ>6e=`rnsyMbF#ytN3qi&4*8N zbxX5qjAHITySz2v{-)M`+mM6YtHhy59J?bkjqH zb;tJ#PJBCa>2K{y)*}yY*4F?2Hd#m4NabwRal1uw)9t@%{xVd0`p{SD4ZnT5=$(d; z{)5*a-Mpf=%|A_$^QlYz(PxLBzUQBwHA(zaT3D3z_xlY0)(LxOT0QmMQ!2D=={CiR zO`rF1{kBlpF#F8BWLG8GSGwvuWUjP5Sbx*gJLrz%k(7d8tDAr2zj5SFc(Z}^-rALU z1zjm$7iYftH|2otf~y8{P6}KPZm?{;$5rT{nef`>V*Z|A4lfe+*6Orx$zWfi#`G^l z{y~Myg!untExqw+#=CinnPNrjR{FQxW&T!fW7HRZ+PJ^l*vbFQ{6MB1FJI_7 zA4#6Qmw(}eRKX)VI^Ih*3TzPFXwUHSZP)sM_wt)NBmZh{e$jOD$g(~49NEfRW(Jc! zrPcn8vvqft>Q!awDohX+Pk$(yFlXcG=hGkkWHzb!bE3vWE!FVCj}Fh;Us3Ua?rgc% zg|+S*q`TWrCvD|=YI^UBSo`Zg4J90RPTMf+1bfbP&RaI~#Ev9ZGv}Xd+<(6xwQ0F^ zqA!Jii_~(H$9qI%OVln_a>}pEb=p$@&*LwLW{p|vk+m$61^juG!=ZYjN^!Ae zqGmjE6X)+l9t2K_X`|$Ds5HK`mtPQr}gvW!4<27Soh7{ zvej^QRfmtw%&OzF*T0>uA9ru=M4j)8wMt|sL~WS&qUMHx`ug~X3!04ae&V&ZUz`o&HmB0f?zuIL+mwpy zj(D%nxEspeFylve`HmgdfxqJ{J}MUr+=BAW|T1t-oJtyW{pRgN>-#mTT!mw)}5ReOc!q!*r3TO|0P=-O6+#A_2vb-GvWxv+hSmig-9 zwbHIj-%V3B+ST-Ki*HO?_~eeRNwE_m{++oMuV_}gOigp$EnoTbNB3DbY@5;I9rAhB zJjH`wOFv&Toe*$wVT$Ye6*-R=Jf0sD#42_4gpT%RZ@r);^LG^SmHa9Wm-FD%l-v!i+oC0bNZG~_y612>33+iQ{S!ZlJ{qgW?fQ}c@@h0 zc@pogy6tba)ofOp;obc%S@Vidru+tu<=N$?@}HC58gK?1J~tQHICIS>gU04Fug^HC z%WI^~pAjRuWc4<&wL%q{&gMZ9+s$`hlD@bq^ZvXtwRj`f{8t8XyP2j1=4|wo(BEP6 z^|D;+=@Sbql{>sP1u3hV$Fx@b<4kH>rFLZ1ouezngjx@Z2et-Yz1}v{P@rY!ipTf4 z5B&Mipcfr-v*Y{CZ`-2h=E!D$*)+RH=U_$N+ef>~x++UQug^HswKLJm;JEXvS&~T% zMV!_NQ;aymkI7bKEafqKukv7v>48}$(f;$?QV%^jrE&1MPs8M39_i)(T2uQ@qzf;; zmMGm?tKMiXwDstu8Hta>X3iAdn_hH$d;6*loTnq6szi!yaIMSkI4!#>6wMkM9s>Ljxto=2#{pw_B!izL}hb2*VhK?khO2mxo)3f zT*Q61(>USZNs%?Xp9{5AePlS~*W;zOl-Y`<_KWYrrQafU^Y1=bAGUdSOQLbX(HoL` zl74VaI#p+Q)@u8Mfrke2G_yI`yNDu z{u7khx|H+X&v%KxQjV1A8VjvG_WERS@Qt*B3XyA}`wrC7P^E+d# z`{be*ge_S1bKkb?<*BF5ozt#AK0Wzm;OtB{K^s{GeevUJ75_5r9~+*!oddk18PjgtpW;c1J~V4Xe>tPahu^(o2mHeReEFBL z>((x})5?~7b6-|J*U!DmpSwrsYQuxj-LFC>ESKmm-H>--&LY?Q!NxW@Ueb|uQRXe* ze+YTMIUl>o>1fZUUz5ajj$g6(v*XDH4LQzhjE@%VpBcb-&87Z&{y7zmCqeadYMCD$ zztu3eS(8N~k zwmS?Bcil|>{Z8rW77I(=+M=dJe?4xcoA1QEwtum)3C_RwbLF<6xpS^ezsqu_t^Gsx zm%hXQrJQ~lbp@PV%~n6@;nTS>N_=;xUVreRen+nEirap-nAg8GZr2kp63v;MtF-g| ztVwei&0oLsbx^ePjqE%A(c$#r*yU4aSx$W3UB&T1X=}vX?+3E}vwFNvYYkhy;;8ZB zso&1X7`}fhvEQn7afHSxiE|kjx1KpxSvD!*`;(t-N_)7Qk3_z-*>YFt&{N5B|IfVt zjue(GJ1J}WX8W#P51ULCSDTx0&$M)2y7Qb!*d9LLH2)J59ouGHj-UTv!tIdKRWh4m ztiGBg%0?xBcbWQJcUiSKagVI@14i{rz?=zb10y^XqEKLJn@5O7RwsfCUWGXGsJxPx#Pdw)v!L zK+}R_vvP{}nI7_;B>&dcwTJ2X%UfyLYa)+Gan^P{c(${Sy)b<_!@2F(7jEu*_Q{fj3Axx)F%x*jdn58_haZlD%) zO7ORZfbSU=Rr$HjfBEKDEm8UOk>4s;<%oZq;{Oj5e!pxL?wfkFwn4b`jO^RAqp|)v zfs*TEn(tnf*8Xb1$sDVaJnKy3!Sz>aXC7R;p^PU;zyIQ#1rlX*N+y2v(oe0Muq46g zN?r1*6J19#*$$+!>ph|~KvVy1GWj@!-roVl^-%kyVI=Jj) z%-ZJ3AAhd*u9mxcvM9Aq?oIZ038vRQOPaPzOygT3{LNkEqQl+jWT#A?|tO1*zCN|%u+ek^41i6-xpzCdscT| zn(O_X-6xybAj5m@*W1?TnW~ph+L34IYdta8A~uyV$VvaQV#tj3KcZH@|7ZE)+xv;n z_a9#pEf$w`sor(9=!5_FlP~@6a^YRm^S|0BYUvWqZk_%Qx{GhdrLcBYNc%XN^6MV& z4{DipJw@@ZxRc1Wxmr7>S)}ybTNHVqx@t3b-@@0e3bnI)CVoD8d2U)bQ zDN?6cN+%UfxtQ7M`Z>koUdqwTMZw#P*L4$p<)|@M1o%#CbdgIeu|GBGw*4U@~ z*`ruRK>$eow$IP+BO;mx}9 z%<~Ulz8`)-Sn1o231@cbA7f$Pc1dH(q-pQ2MY*MmS6|;$6shrW{YB25wr?a}x%-~d z?QwFL@%J_7oSdbB`# z9Mrz(xv!wsZs)m0IiEwj-_CmLSt2a%YP&rt@nq=RTg7JSF2(G2p)*cAIn}>&)u9@r z)W!AddXtK@n3xVZK3bXcZPwvH7q{nG4gtPz7k`~!>)up(akYnD>zXfL-OYY8CNST4 zqdcv0{fl)AMPk-$(-QSMby@hvokdOjird<{JDVi_e`r6H&1~@KiG5?ixkfgAo2tW4 zlKLCcM1y8`K5{=EpIBn6+Omf&_y0>JvG%jcOIJR6;chT>?(wp3;TzBYUt4g~=ahSh zwvJ-ExR}3=I>W~XM}@a@QkOFxyKHdKg;D4HRZk}2^YZfBEwZ?n-fa7LTk_^ymcnII z#r5mUZUwxFx^iy+Mg328M>m!Amwp!0t~4;IzrSL^JH47e|1;lOJy`kf-jA(2%hI$| zlsY{!(%m8>T?56#*A?o2k24C&^se?=YP%#g$uWwQkCm`=5>9+wT7zz32b= z{ktmWzOOu2d9HX~?WDQS=a;PM=!rYE@mqNPJL`QFdsaP~*4pdMlj82R{#5M`yEQL< zzgxU&UOBhu%&g@5+EzDKOG)p0wNvZEn#n#LuVlHOt(+Kj`&j+boe{fC&c0eaXUnH~ zp=qggOCw9m<_mOBaVWL?e@c6G(SE(CqTL0V&XrU9k3T)l`zorG&yRV2`q^iZk$JUO z>vw-T@piq69BWMd`@FeRiqEZ>|8f7b6ybx(S~U&RyL7AO@YZc&{BvaDBgSuuYDPP4 zuDrbaRQ%2D!|~P2p3f}(+>;b(tJTDoW2_rHVaMvML$7x4K6+-0xb?Yr^M0Muxn~jZ zu<+yKQ@;=YTcJDKbk^awo16c;>`S?^WuEG0t>sVp=a|_Bm_43)Wx=H|JyX>V)eiEDt~W0w|l+L+ADKIng2KI zJ;hlGPkY*HHp{vvwX?;i7xT@yDE@PKx=!7cSr*-B2URY_8b!ocg z;yp}IF%bM|M z^Y>d{cNbsPDn0*Oj<>7g*qjeKKl{rLwTLrI%gakRZI+($wf$?}`_@&*?Os2hAz$_S zQMQR@`uoD^_A{Hy_eA}!>WuCGB4_=p!=C?si0Q)jS9zcJ8Fp9w`BQn?CO-M$19_>t zO8e?|Jx$wM@PFoculMIV^JneKIk)27wWrtAZPI3bf3r+6yxjJApX1qIhOf4}<<5>y zw5>e9cIo`zo-d!Rk$D_=;Yd>L525n9fBRSLzs9+1kMUC0uQxAe^T`Fg=|ITxD$6x=SF@H8O?v7t?cr7}=`pmOi%|@4Bz0l3hS)aS+ zonoSRslgkM{@`O>-}yvz4a-gHqqFzyUKRiB>a8trE`HX@J$(bFk3tn~gY}Nl2r8~2-pV+jW&pl<4Sv29fVcgFtkFP%o4mYd!sh#u(;{%n?_u|Hm|TK#{s|BFAGTB}W+oS#L1_m4jp6c88k;pF}; zn)l)!SH$j{{%CPi?);Y#n8w5tzVUJN6M~^zVp7d^@$ww)7h<+YK2jz!KJ}7``YF1_r-}D6@6Ut z+q7inhR&|=uqQjdmqff=n{xBR%&V7A7k3`yczv|S`j?OB@8?4K*VXpw?pm;C#gpZS zAD!4-*j*O)^ZM=QuJZTQj)q@U++WupwIbR6Rp%$`*Gs3d=UVU?eVI4wDr?>8{$*=_ zZ>=~`aFl;(`A%;B{r7%eOZ^bs9)9Zh`D(RF z&a3qO7H_71em3jO*VF&I&emMm>tgxf{WZV`p!yc zd$D&yb!pMtBdq-K<~6#uM(YxG-R|6+Rwb-wGWTZ5od*kJFLkI^ZAw$Sb#h?DuZ#LjLh=hFPY6HK{=qQ8Cn^JL=rZIyfVx85-f->s7D zopaydFyq}C^?efhlAnA(EqEPry(;d_w6l@!aZCE51f*3~3YV;1aOcHR?`PJ_%r*y} z`*riqkuT=?cHuGmUw_kzxO2|ubC4>Yhsv ztBYKp8++sZ)I+l$K7TU*==ao}vyYr#9l7E2h4-IB=dYcASI20>+{iF-Q$OW5#W!c` zmcJ?r_d9n}MOa1lsFmTTYFPhnjzqAy|o z_0-<0n%rS_5x*}T^g90c(VIN3Qz(+i69a zo{N%7_B~%6|8@|3 zo9}_8$zqc?nWg5&?)ma>d*$+DQG2^j*genvx%6dl{p2~nTl>v3U+}K8+N$-e^YzoJ zt)}1nOW8st@6RZ#D?GZi_p|!#4W_HRf_SgJzWFP{_N;LHzOY;_1)w_g~nnyGgqIP;c;9>^|AW?+)!Wk`4is% zE!$fv(0(|&=xwFLnZ7%-_k5bN+}&x*p=|}-^N*VM8m`c-*|zFNuK(06jd$!_?I%lq zHt|~?zq_O;|BUC#+1#p6jIQ0^{Kv>s{p9zC&+i?p!+4h_Yw9>&z$qt^bbtgtyQ&4 zOeQ)uApZA)pkEIi9w)guKf1*($~7ySD{GBP(7ivmt8{)m_}skxyvM!5?H7F_lfN7| z|D*BY?%(w)wG}o0HziI|Tz{|pw)lNpW23ABkH_10&tD>6_iKl_WqRbd&5hFTJZnqu z+<#zocAH|}o2gg0m!6K@{yZSZtTj=dZb8uWn>pvCe<@WzPM#Pc8}fHNVdNJo{gcyyW9g z*EfH^zjOD#yr1RkkAJ*tv z@a#%|yX5tDn@7`+q@CPswC~bd=Si}>UlxBB%a^q;J+E_or8#@V=}bLN&lvalhO>7T z_C2bcy>I)@#W~MvOCsjKcetNwSFrBP)!pKLciwIM9=&Fbd;V9^tKW5&=-)NB`}Ta^ zPno+6wUMrEs~)f0D}JQ*-3*tf?04^PyJcti`P1Tk!r|863k!pSPbJ)%8Furo)W(EI zdQ$_p=kfmzygWPoS=Iji(WxFDd#^ga^wz&^T+@A z-|Ke#-II1dYueit=1aYU*2X>kQu93Q*T&m6XC)^wPkWO;iFcjpuOFw&+V0)WHq857 z5$5du@7(F%=82mx?^rhZbNqj!yW0(){nRd8%RV`Nc3aWewa>CL=HA)yqdae0;!oDc zpYAPtYVDMCuJCgxdr0s1qL;Tn|32}lw)$9P8m@0# zSF~Y!*|apr-s>A@Pi=nk&rN3C)+`OL*}9uA%)^J&rePkY^5qC0&SocL&@-x}I=IV0@B^H*E?{=fBc z|M#un+h+L(&t4`yOnm?H*`qhF)89S3WW+SrZSqpneuWR-COg0RYi&9IjZKJ2nd9Fq z>o3`poc2FcyST{z(ciW`7xG=aIWiYi>|dewr8`^2W!1VSW}P;+3*u4_HoahMDT&{6 z@fTOGnxdyoR1K4HW2beR{X)az6C@@dXIZ@I@Cu&YJx4YOa=zJ+);s^t27V77>Fy8* zg-pFC?Qb<*lLQ|nMbs=xU=ZD!fpz`otuQ@HGWaiV0dKTFpmR zthrW{SM%#^%dxYnhU*smXMWEVDkinlFYEzRZ>oyX%^mx56uzAPRkR|WZL>-K%%wY5 ztmczDAC|Fa<&tCBf6E&>qyzTetrm$?to>pvQMP!7!h2<}>7$FX7MyPi(sm^O{_fKJ=f&BG3I?8E%zq>mST+SWOB^w5JM8@+Dd*_d%SQ`U z6W(oacxM`s@#62SBhKdLIUK#2kqXY*7X|Dl&D&X-z{xV0P)-@bOnJcc8VKV*KWJo&C9C(qMu{N4Dq z-LkNTjfW2Wap&l@O*df;y)5`=%0WKa4~Qd*oSF#NBxMJsqaV?|vdG z^k9Zxd*`Nk4yme^IZ8|BRc~(RVRP|ilXGoA;$p4}oFyrFZ^ zq2)4q?+SO+7GLYnI$+rmq_by(b&}?RABB=RaV+i9r;oJno+VbSDiW}iIpwi|;tu;l zkq2*XK4ejUbp5QLoLs{?$Dj|NVxI$4j@nuHb?H4M{FIG-#oSuKIM2mert8;>= z;S8tO&u=L>TrHXMVU_PfH&Mlqe|H?a*Dzk0d~I5mY{2nLE8c`;XRrRqd17aGg5gdU z>FMiC(pvZr*ebKGK9sn5P+8t*P|_B%&={AA4*1q&>(iAgn#IP*Qop!U~k4Ted3kFM2uaX3xsyw$0LZ*JDA zithNq;>N=m@-X*2<8g*7HkK8dN3WOpMN{{zgug< zddJMzB%$_}(d?F!M`pAw*0!tD`>e;^^Orqlj-6BT>70cRcyg_e$^K2eCD;3KtLBtoyb7PNhf4=qq-EVAr3QpUI++Gv2`@WzITkz6p?`mW(@7(*m zepX+`gZcS+nbR2`>}0qR$x(5VQR_gAp0Z@+oh__ew)!d@ySDrNTv^_Cs-8=ZuM>E( z_K@F&Ta8^4tQt>ubSJl!@7c_?SbxvPqg&)}{5YAwR_FBMxL;ZAQrE4oTGBWCesU!J zqQj4yjgmd$vm9UCTz7uK%=;|T+YWvRJkvP&K4XRZg1_z@2Y1K+sP~_jDE(VF&O!Cx zUw);xujgG%v|jk6C_K{1WYMLPl|M61s`2RKvbJ&ku zNLiS9fvGz3aYw4L?wII{RYAI;Vz}Q$-k9OY{=6 zTo=DunVvDdA-mjQN11Kw()-n12M?JU-M-V6JWKl>XU2mJ|3G zC?uxkyXi?l&E%Vj6Jz*hPrbyG%u(CBGR0`!n%mPjEAqQyyv4iuo|se?oyh&e9>C!j zKCgPq4G)KhR;&`;>wPM9qvt6ciV3{caq7?S2GvWU3DsWVb7jJgyE-tGZu|bm^u6Hb zXtrsm588GtyfvAPWvA?ax41tKUsi-3nEd?32K5&!^jID2#V%f5zdiNioswl#Q~p`w0|BPTbN9&d%sAx6m{#j5JV_!~=EYft__mD_9yJFAesafu zaqH9Sm1mt+XgHxM&*{Yav%9)_Hm}%O_PzPpmt_|tCMW9qZVMGpFnpA{wg24dCfPY^ z*FPP|WRGZ*H;gFOa&JF&sxNP26w9q^3$`d+jmZXm=7bglx z%@&=1VbjqE+DTXX{oC$EFsigPCV5wX;JeaqbE^B?W8s*f?-n|@oE;wXWJbvC^L-CXJGr})ow7~MNaKlPF{e^p;_0b_)N55ax)ce7X5yy#;ZoD>c?B@`;xDlbZ4t@ zyZ@RmD!_mLjn0>+#Zi{KpJl%Y>WLmT9hO5p+4tj<>{}z-zm$!>--y~NT7|O=A z)o@Q~rRb9jcWVC_X6~%eSZOGh6T4SrPlnaiCvM`ezT{cjfe#C!E9>mFzx zxE5L}Yv|;CY3_p7TXQ7UrMynhxt_waz~||M*H03K4W}4eD~d&GeGolY8Wi_-yU58- z=azW|kD^}4C-KA|d3t5qtk$DEU7wXE={4ByY&+Ha_@8Q$(UEmhTM?&L=iF=EwGn|s{t%;l}}{dlx_ znp?wumd(B?`ytz0^2W5C*XBz7T=YI5-tI@bl)cd5U-d#|ACz`5Et&d2L3;7^|Bdes zJP`aLpOd=1zKEe`Z9Yf5%kJL+vmJl`RglUE_|kj1pK*R@Q|mkx7L$8TG7}c$uktlD z6#42~)Ad|p`leS0`et89Ox<>&>yFEer@1}s zS)cO3aEAn^&548GYFdpu|7K{H3U;L`&bheFdr@F=HdEC;rWNNt8LYZv`6aLZ*~Oe)e-r!$X>aBX042n_SMlghBs_`f=X{hSIeq;zb8*+?E!!`YN)C zXza||>Am;%enlz0ef|dmr2=GCb{*7;E7j<{d~2RVPjSNG@Hw}8mVDpsaY&?cQ-|V& ztIi1)He&LL;Ya?q<;bWVRihc0zQltUf>n6eH73qI`e4t#1tm!mDxreK!KZ%h zo$*1|;E-VLjh4Bl?G-P+Z9Qb^Wq-yk;ww}37VfEg|0*;~EL?j+uyDt=s8b!8f(MfP zj-OZ*dEY*b;X$6Jrp33D5w|QYa@KSk`JH~sn3?rygWvyR%gQy|E~~uZSFrH;oSeU` zrMY(T$^+qN-dw%1aITPqVeXS{|GMiB+gg~HOb*Qc*!V$Ic-q~ap?N1m568TEck@%8 zGvk8oOft@YCSLxTtGc8({^z4O=U2wC zQr6tlbB?y3-n%8PUc%ycUe|{txk|@c!{Y^#g%f`?{96C=>dy!7E>3LWmw%j_F0qWa z*Ws9GSpMpH3O9?2Io>B8tJd1EmUZ_JlWz$oUdm~wO+${{d|aHK;o_dovBFj<)i_6K z#sU4z8J#6rD|`-!Z^-7Ed_M8<4kd>9KAv|2c;_`I}Jl+|6D4 zI}K}QI56iJJ}=mw6`u6A%kqItPk2MN3Hx6~w@gkZ4vWUZB!*6TKG!Qs?J=Bu<}W(E zC%6b*$tYZ~E&YR?mU5xL=MAYDiq1T&S2rYoJn&+>*sZ-+8ZW)!a{smeWFU(mZ^GZ| z>(dH0{PaKi(2g%BHi_YkkNMRrcB-GFCWp4}js5$jvptu8V#1Yg-%s9{wUR}xCS1s_ z<`Y}Ubh*V2yC1pyv(I%nARlt3vQ1Hw>4SgEs?O{Ri5Yu0%B-1oRZ@_@|IP;8&EL}s ze(JpW@n<9N!uothE)hvmS>;-lhFJ1^--;h^3~aa4n;{! zC(j>oeRTEbS{*iz$Epd-A24updF)#&Um^QW#5vwfS?ckY{8#0b_LmBiCrQYBoSEXu zc(q+p{4huIF{7I`^RyKV*-o<_OZsxziRC|QNZ z*cm--lmtSv~{=Pl-x*6}|AFndkzvIjZn$T)`hK)VR zX2pJ{nPx1PW?sL%WrC1R{@ zDd##?^8?nd>h>1$6YAXg*4cG^P@3nZzKY+l=Gygb8ZivJ9`Ke%96$eYsR8el%QF^m zxT^Xpf8xKvVd}c$%8SGV^%dfJ3^|>g!qOpoGJZe3JT-I6j(-~*Wh|DSj&3O2y62l+ zi_43w7aMjyJn{0^I&P7Fi7VY^eSg1Bo7s!u(r%rg45s51vGW-MU&>!wv(A6V^8)TO zr{cu&vMv_?`oBjfA~+%I%Is%MeJ0@zsqr~nt(pomIp0o=-(kApa>YF5bf(4rvCQiZ zM_H^sZ6bUl@yqufTfYwWV6kI<@fSFA4hC)CW@YcwnH-aoT*j6#v*Vy>spu zK0WVrmymOmo5!IrMf=IC-ep?`m>jFUw`pbc!Hrx&?fRRKdwbrwmfKp|WNNW?rvIXk z({9K8ox>)!F-&HgnBAJC3AzbuZv2_M?7QTHq!~?JzOhmMHdZllZUK*!?LS3@GCer1 zTq2QkHLWP2>1G~Fg7n|?HJ`$lUR*Zoz%}c7X-k8LlN@*^KKp%hACJs?Ijs!~vjaW& zmMZs32p?It>3BoclAS`bW_J$zO<)%6So?5&RO36oZHf=rB~>G~?yH#fODyq_#rJvJ z)5I5e_=xEheB9%aTYT%K;)K>!^Y;HxOjxWmHF5UT%2t`A&GY5E7nuH$J`LzLNe?Dea-LQA9vPn2@W=H z1pnkm(Te-$wyR!Y-W9KXaBW16T^XyC$99geNf%g7sGNBJr^M>5+1jPeb2fNbe4P5n z^3a|gukW2X+sXWCtq-qX%>NI)6%|3Dd5api&(n(OT(V8UZ25+o9lx7ZK1k@LTiFXq zCvCoSGm^ETbD8F0^U7E8Lbv87s4{G*A9F{1{|nmAuWI zS98Ne;pWfYlAE4fc=#k!=d#ML=L}W~7hMFm1*e~!$n5lOwX)IGdFR?>%j5r6g`SN+ zp!u+C!`xrdoiZua7y4zVA1LohX>)bvyz)cnpkM9o?Y0YU21xER3%+{NcR}op-L1wq zYsBm&KikOdf1GE>@L`Rk`3(z$i;C@6tE?YO{JU4H=l=6m!^h(X-QVx9v+PN8X20`) zhJffb^<&vx+f~+c?yj&r+@W}gMXGf7hDkFXp8ccr;F;*bIgc5#0t2r$MQrd?O#5Ih zwcpL7?917*^5T+jUrNoMtAAv5Hz+^x&0}_zfrVtpq1D0<*WP=sc=P7D+l6x?J}xFF&!eWiw$sHf9tQxn~ z9N^rsk?&TE!rDUBz?ZRcHe3$6Gmo(NB^|xJvp!Bq(JN$TSCkU#nrUt85`Fww0<#Z2 z)>$pfz+buAX~z#!o0&}W7I*ON?2A!J>X&@MB@_DPA*;jNWjyoSzDQ2d%*~7SjxgKx zep1#6!36sp*RR)hn71=MY4Hf-5#IjyrER_aV%~&M*(Hhfac7yh9Nzv_?X=D)leaFi z6xdsJYD4tHaJH#Odk&~(C%oE{e}HXKtjpT_+fzjX_Hg_*)3&~;rT8#cG(>Ic)2yTg zWxKcf&UzrdF3HGHwXI>*-Ax4#y-ryr8RYzxUoZ9c`(5wSXoli7ZkZByH)$qWZTN9H z(nf8YYTSA@1i$%!~V_IHBmp>JMT z-_Uq^=^4EVhx0bSb?KM?v$j2vGs59=OuV{))9qjhv|)qmK!#WcLbbo9kJ4-zwFNtG?4e_3Hfz zq2C-HeGPB>+hQ*5(PSJn>2`OHYje&Go7wwW8;)E`TzTxbYp$?0SJy;;3%CEu;>X@^ zKA`b$CI9Y&&o3{rO8(N_7C7I0$v%$Gw;l)j{@SP(85GpJ`DomaeI@vsVfGd6Lurpq zMY949<%)dxd04aH%8j+3Orq>-Z#>hxuClW)mvjA$DY9Gk&tA--u{xyX=}BSctSN%- zA)D=H*}E^=St5EP|j)yLT38SPC>{y%q11e6PQ?j8(vl=f$@a z#+D;Vr>Azl_5S_ICC^EdVMcpZS=JO`!-U&ERRvn7A3472{Z-aON`i6QBGM-*{1Dsm zx>b0p$L$+hl{-$@8qPVg>7m$mrNof9?C(*BeosE;5&4;$`>=(q zz0_L%`XB430Hs&_^R|2Ue@x*ZadECSu8V=t*Qq;61xXDG!5Bb94JQU3IyY#8rHHk$K32J;D_e7dki} zaNjJMw2i&8{j;tXuhxI&)JIY4WonMBpJUh@%20baaO;WfcBQGmT^5^G_RT9`oztS0 z8j-TA{xy#jU%XfN+jWj|2j!NteNK&1E}iIfM#J#>JMBESbO)KKr)PYhF0|NS=EWA( z6ZTap(|ps}4CH1sZu~qsGlQJ&cP za>)-1Fk<^7>Y= zaHrH=yJlv1`rw^5??clfYvdpO-1_X|qm`Wtg{rH6Fl#R9;_@=;>0pey#Ag-bY;pB) zUGwB``&ifPb&&F_y#Cs~Y0|c|Vl#aXP@(6GMcAxzi3m+A zuZ4D*emsqJv!@wof-zSaA)Oln@h1xS5{PN9NKlWD81-L zK_H{r%%3|ys>&2RS`_&An%(Y+F&DPgWph-X^>dw5mo2%h>TV4~s(*mv{@0IB987dS z!XfqW&ZIrb{CsYDudX(Kjl1$~vvQED-kpk9N8fKuYDibtIP_|LKfh&)g}12vs~sr~ zzi+y2m>V6CDJrf$;jpuDAK9wT|f@ZmnTov*?ii z?Ylt@7KtYhunLEE?_#=sFM<1ZhUJ&q)f-hTQgtjXKL33m(O@ARpymRB}z2#|~F zTKP>iv>oM4Y=$>~Z=H}NGmBNWu44Cw1_|!< zohp`7Q#QmMjOTBVSK!{ws?%S}EAPKHR`F!jHA* zl#<+qA6FmLGf-7ij^of5iC(+^o@tEDY=gSXmElhw>~j%KZ=E*Lz4cK~?(FV|7r%wg zIO{s+xmLm4tb2dYIV=62boSlr?`QAl3Mg3l$=!RTD?0b_vug_s9j$LH_v7brXO3Z8 z_5aNcudFHCe~5EDURy48&b9N}-}=4F*3~Ciw64iqvnDV>|9mvVOdXa76!aBD?!ENveN2nX zYSjlF3G<9ZFH95CF#1^d+fLiwH{)w4*KG6MAuAQQ%rcd3s&Bb{dfx1F%rA^8e{7qx z&apQlgf3@DcTW*QeOX3$!nzJp({9?*1kUN zc;>EXg2a(}9U1N-DG!^R?Ba|wwi|2@t&ih!tLw=+IxEf7#%iLs;f%>a(;3`OFE}{W zWMXrNySUAZMaTCS-cJ&JH0R->Td}k;#nWvP&MEo+ z;$k<1dGs!AGqrBo;-x#Sh5y@zg(44*8O|*1lbJJbcDC#%{W4}1)r`Z8n}0k!V)2&I z`2I_sx(JoTigzdHJ5D=)VCM^6=HpRWb2Jt(x+%A8^7;7p5&M!yq9GCK9onobp7}_p zS>#PzReW?~>hy_ri#`?D>^RxXG^N&ur*X@43F8Ail?K+aT<5mFeC^D5V)9{kA?=P? z?RozMw(>Qs^ggU7m07RFeIiqH`mwisQ7<>!lu8|#)vDxEro_7D+pE-=4R5!s|Jd~) zVy&xf(tnc`!YzVDkCyiPF;8!Hz2b1Sjnz-_Shl`yUUo<0L*9bMZ(g#@|l$&Ze8oJ7yf4={iq6=b+$;DNVTy-=CbjkfHHK)b88a zcR~Mr6efwUJT(2l{*XyGJdW*E{*fQ?CR0|V+s%5lb;^1nhu5q5;&aQNPfEL5cHhSA z99Q#d-rbCC`%HDF#Tu`a`_Y5Cv!8xO|5Rb|xPAiPb8SuymQ1t0JH@}fkK z`bzhZX?+LFR_)?-QwqpEB6y!eWrI4m^pE1Qpz9N5CGQl7%@#cTNPV|avcc7q>uY{` z&1cv@-|49t>wDFOU$?t97}ofxwjTfYkNNsX@7jpB_b0pCR2>(W{Z7i{Chgav{!NxW z&bBU}{^)#^iHd%-CH}!8!%Jtff~%P4N%mIBeLY{vWz+n1Sy}A)#~wTH3)RkOlAPY* z-oClmCD|b5`Nv&~Tn4XrPjYWRndmSx`bSf3bpKTDJqH*szhYDGvb?9vu72gEOt+Tz z+Vb?}Oso1l4>~r=_n$nNaBW6X?zI(*-}ip^-m>MkK%QaIW6jc;tOxcyirO2d@-+O$ z)HzRl4(PtKP5AxDUG*bN)FcPl$U7TaB-pOEiXJ@Z$=o|P`H@C!7c5=@^{?=;>o z?bz-W%y-S`m{}0Rr$<5$EOLTm-uLgQ3P_vuOP}jj?dw|)+yC%zy?kkQ;&tq$4Ku$y z;Ahoglvm@sv1WVnaRvQ4jZ2v(%LF1O&CpSl*s8WvCI0iJO}ZB+GG6|9QFvc6zsFzy z;6qaiO{WX{?_>GiH`C_MlJW&yt~rhWJlptq@lDM?EBctQ-{84NoUllw1w|z6%l$jS9bZ5x#E_mzZWI0 zf3f?fVqLq|m8bs;Ej(}Zok`1iCFS>D!(B^pn#4g>@2P!94D=inHs0R7t;5Y=-Mt&H znF4h0FKXi7H}43?56dY#gC_Mj6s-UDmeu|5qrIKS#RBG9PxEppFY`z^ny{-Pn|Yp= zQqDxb_Op7=9lS0ySxHS?d0@UoRCkD1Zb)OOY5N1c%i2<(ruucAvp&$Ce>Ksnyd|(n z7@ork&(9m=6OZEMSQA_TpXswF&jEPDw{K(BAW*P0f zhVhPY_olgiOM;z6-nq9f4qg*3v94o`UMvvXeeQ23j}k(C*L?8khjDxYRH zo%Bk{SPPZ6@ed}fp1seqR`7vpvgD1BJKHBonWPox*Z4+d_D7S~sH`PvK zy4OLqq6KgDM2%*yUEixbH;iG&;}w^dIYys2_;8!#k;KK?=bx+ZV!A29{G*~v;8Vxj zClmG_T(QPwS#gjI_sh(#1>4;>Mr`!4@2kG;KigLE-W-WAiDM~8#BOKaW1lRk&u@Kt z*IPAn$w$kkmMHJOS1jwy={h&d4?%wbT{y+9)nLK*3MW7`-u$=pG%JPb>Pa7Wmd>ZyoW^X8eWeD3; zzqHb}N0}) zAarGEo#KPP?wdA5zbwp5uaI9Kavh$vrGumDi z+$cPn`^rlvP)I0zWm$#F4j%o5Yd%bApBovdus^E4XLjy{tj}jcIX^sSQ;k^6Q{$Ce zczbIJ)3wU7Pv=vPtXty{T4z)DbN|Yy8NYJY<~^N|(2&=w^|SutvTh@G<+*dN_WzeE zcyD02BlvM6|NqHV?tVhDc11=)oqoL&+7=gB&HvwDs-C<*##F~<U3r#-qYN8<~R z%C*it&v!1%(%Te#X@iY~f^Q;|QuNGibq6j+InNE<{G`#QLXnrf=FC%#1?Ky8yI-G_ zRA$_JVcoq=A4(5}zCE*Qn{K9eorv0-H^&*h zYa7n3y(wJw=R`&cqnPvdDz$6#87 zy(Fjj^+O=nhVtT0P0N5C>6~i(HGY4CLRcyeNQvJ6lj_%Nm$YeFYWkmTj26G{K2W}M zxJzc514qY>QXKO#?Jw`#krd-q`oHE%s3QXc_UcqneW_^h5KSyYMun# zwf(Pf>9L>Gw(9&JWqlRuZ1W$=T%NN{U+UBG=~ov|ShmBE>x1fV%Lo4>^8YNoHuK2r zZ!7{leD+V?+&1g{6*M{eiF=ZmmHR}27BQV4``RWP7x|cFHt*B6t?#yr1_>#)6~(@G zDS2y=C@pb1Zco=0=9(I*s|n{-cNIt9uF*_l4zsBg+`_^jwTNd&QQ7qlm1L)a`|2@~ z+!dMYM07;8cOH2WV94uMl~(uESu**^Y9-F)N9_F;bR~9|8ms5cy<*GGu*dai_)O0u z3bLy8x@+a%?u=pU+_y7bCuG@IR&8^^(7CgxxUpWDd$=?E+)_2BH>uwa@)*{?eVP#J zP^l++;MuE~Ca#;Fv(J8SWc78Ly0~3u0n^jNIn#2EY>ACtb#NA+Sa3LFSlMLbl?-eX zUw+g2di?-bfc(oIR1lCxJVaH^d3W5K3*&S`tu zXPC1pCE7W-#)o^vy<0_y-O07U+q~ga^TO7mi)QrRz&TK z7241)w5p@{2RE0;TE6&0r`C5(F8N&HAR+F0W1$vTflAj`E#tXnGOR7Bi=!^-)j2bs zoacMxQ%KMC+S{H68N;}%ifi+N{4B2O7oT7Uva?jN8-e9Zwlnq>?fU`*?0QSbnWvy6t>dlO;nWqe*SD6Pilyob&M3uik9G`#S&+~x07F+8BBmKWb z@0V!JaaQ6}Uf6$jh4ml7-g`e;GMT(jl;{6xo6WG5Ewy&4x6tCG=Pw=|edG2v=Sl}t z&gM`yzxh`uz2-{mZf*F}T>n}1rcYG&2}ao|G6KObxa`_wems{l&f`hA>E>#2;&S{( z?Sey@FI47887XS3XEt}LoIWh`&3mi1@WJoTatgU_2e7cT#F<-EYdL@ZuPA@{(Y28N zRks)y{9bkFOzfR*2`TGJN&Vu=*DRrjUnWfCeOYkOd#0kNkIIUE*~usUeI$Eb_Eaxy zc{i`_2*V^(ZM2(Xx_AbmN=k)1A%Ke@E!)Z!R%n~lb6CjXQ(f{yZYN(XN609EgWRSYUb?m z_>>a8Ox*F*m#3*-@!bsbcbq!x7{8YD|M5(971N)G7R#7!SbjZ#^UAx)R=by{RJ?3` zqC7LQ;lsv~ihOyta4J1Nb?r&n|7d*>xo*ySaa7NY2H_ zISo4*zkXSF$|-BcTDf4Q1D2DoyZN!0Pi|$?s+)CFQ|af0;N+l7CkoUasXeNjpRr|? zX@YR(f5rfBc8?~)Z$`YLp?(ay{yEdHPy^hQcq9I4ZF21_x85jkXzfdb8m0cdb?&z?(MYHw54@- z-`(E-df&gr_jdoiFPWVDX74o{!EE<4rr~djpDb-?P-HxC@E~J?N@7aPy>IlRYgXV@BW%SQU;6^}^!=G*$a9OQIzZz|84czS^>x8l*_8MA!c(r!L(jN}wE{B=q= z;lNV<>+_`FY;bBj<@?~?%!jj;eN~*Ku4`w9tz2~I+9uHji_RW>Ua~|amuqUl!reYs zB(oz!b~1c7m0!Z9!*Jne;}$l`QAX?Y<2`BEi!-;_ueFt5_s@z4SYiyS+qo zZ`Fom*5D>AQ*`HK$}iM9sqoq6@MkJgJt8c%hP%YEB^_ZV|WZn?&k z{?J0*Qn$>!Js~11R#soHOAyohv-wJTX5;f~KF2z4@^n-yOzAw@$h>#Tk%=@72Z5H}P05 zTF}9x$onn6j=@fep?LYi>znGcxEW8?m4z=it~%QIK<}s0MTWD_d5*s2wmH7Z;+xLZ zS0&{g7IK?eo_^bFwlDkJ=H$77=0W$JvM;_0Fa4FvcV#oD^)F6U4s-UO!V>$kWDe`> zxFHD6j)|%B@7fzgYTtgwCC$~y}ozeW&+r2tm zjb{D!I-Sd>vqB~{ry{GMqG6?E4%3yV$2awx*v^&8DbYW@UBWwm8*h?(ulI{e*;Q9o z|8D!u+92W+|K;9`HM1^NKj1L1&vpK4z2sP2z0+6sS20Iq8;;4`$xPf9Ql}La^6E;B zNaiim?fL~%A51#?>WfCu)Kz2lucD-b%o%H!aam&nl%L6(4E}EXd8ogTk;&FlRrVWX4 zS=0V>+_0Fe{n0x2b>qKTdMW$FwsW5^Rqy?`)FIt*n$wjfXGMkkbB=r5KIXKall3m! zliL$(K5m*CwYIr_*=&zAv?yD~_d;*RI{r7|iw>%a9%V0h?svB7@Ku(J zOo3X~w?(uh!v7oTUgy4$^>0c5IRrqT=+iUv2;wBtEaGB%8 zo~9#vrnj!;=ehLbiO>R@^TwSD%9RUO8oE_}+sM6dleEkO`Nw?|8ms1nCC;@IS@AyM zQ&7T#{h#{&)EfvfSRAM~5IUeQ-w`kQa{t+ee+S>F^EIq(ewnYc;NO-D+b^4&82{^4 zycEyNo4a;xZmvvyA;Uj*_Ba2xA3nc$Zu7>+?`=H)buOQ~uX*3psT;56D{%bhY}q_{ z=hgSK9RB$K;XV5$*Qd9>-QkzNz!zDbvu9#^Wb4`;zv?GTSVrIe%hvHOp3SK2^7d_; zf90On_@8RP|M|Y@tN7y=%QyVk{vhIo^&htOXYt1hP09?nef+WA#=_aU_;$Vb{W*2F z&AavszP^88!vD>gAD?%=&2KmTdf#E=r-Xn1J3g=X$lG6?@c+%t|6D1*ekcAt|LoTK z05-mDeqqn{GcNvXonU|a=#TtYi>J14{rCU)hCiaO$`jN7Mf)Zt7nf|?yt%aC7q8Oa z`wo9HlTLd0|Ie3Rxo*E>(jRFLw_|Eyzx0A2af4;F_ z3ra3+H@sAC@Qd}m{8m1h1Nu?NqyDRZ{da7}hkB|1IoxmSx3zw&Up1}%OZu)GrrQlei#C=1`1v*LS6^SK*0rn%r5AHK8?OjtH!hg)fO*!nYmc6AP2)bf;+mN4 ziE&S$*IdNH-awmy&73dx+6yA!v6UrA4Yxu4~% zSvJQ${H&_Gb?i--BG;j$6EZUr{I|)!-j@)*H&6EKrTcx~UVq5m{(irn)ZL(}xP_) zd(sMtnTFc8GL6C>+Nb9jKFj*$mT~-)aOC%?Z2P|YZ0*>8uIKc^x;)!d_e1$u7c9C%ppx-E3-p z74dUV;a9zEx36=uE+6dRz8)l7e$+?DC#3B2ri|4Gi?9Dx`f7gb9N*OEa^l>N*S5Pv zTn>y=(FxVudPzy^IpdXp4W&tvKNahj1SI{^i8Y^^v@9t0XxFn~{&jD&(bL#nXbsPrEZqHw#al0^!Bh-iS z>b>Y{kC39nCR-vU4#}KX|26&2iI?0fVy@QL2o-2}l}*YCW-@ZSR3-JsU60N3PF5hJ zi`GW3H|yr4EY%8hrfAL-rUooRO#*5!&S=iIUz3+qUpB-17Fy-sEPwt8v+>fqqUhlW& zRC-=9r(w(u-;EzE;$EBIm44nct?%_Vj(L`fXR@ZQtxfnWaASFJeDEB-9W6pr?2fOJ zQh5I9VnS-fZNaEp(d$wUxHVpRG9hKpLYH$V*qG9ljSb80ar7Nj?m73i@E7+%XP(5M z^B$E!{`I@n!xQH>CbrdBwynFR-fqj+EOAAq>HF;fjl&1NH0IV&IVtF*2!KP_OtacOCM4VT=(x5^JMPHqcZ z5a_WqwxP7eWa2jSS+h)lbbj0`&uvLKJC?PetybawpGzW@F7 z{)T-n^VfarIoEJ_g6ps2z2^7UuHGH}{mn}2S8KP6N82`}My$$+eOdRzuIX0z(Rs3E z%1;=DU9&dUiJzQjd*a2XD;bM2oPS@ObHVq-_kX9wO6MC6QsNQ$G5L<6%q$O?o}P(|Z;KmF{-EHjbj0cZf%mf4xNk}GseTuePOIE1-SM++ z?QYwjjfXuFbXT5itmMj0b>ml!*EfS`hrCo%lB#O`8-az zSL%Ig`brr!ZJu<8v;&RR$5-YAZLgejW_j7c@7`6{$tN8TYrjNkwHT6}w**4W@>{In}!aqFkOM^kS85j-Q&BXalL@>!QAr}uM8u3grX zGcEGUtZmN4O4;is7wm0dTPL)3@;q**Fx7?r31^<$ZakPjf3BtB;?~2FM!ypiZ%JyE zPl!F?ts8XlNBY&1pI*Ja%ezlpOX9|MRr}?O8SUp>34RyPt!)~zBDUy@4Cn2)*&^v) zHgAkezIm*<)1kjF_oBx>_r;SYb#~6|;CpoO4gWPa;m`$&TC-&D+zgT1^C7`oVNL(X zBeCUKiv1PWPUa;=#C^>8@nO@Ps7|)|3*(a9xed>pUpDus(Y2^Hsm!qF6D^qT-cz67 z`id)Z)|`zKR)2KJ+*&t3b@sH^OFB&!K3eiT{-CJ<}@f4cdV>B*_zdt%~0{^7W>@7o-Q!lIPlsTaE~({}Al zO`KRit*(+?C6dQ7?VG1f;V!+?;^|N4Oh?Ad(T@^o_DxP^L?+z zLfv1#=k7VarFKGmv7)Zx%D`z+|5p`HVE6qtMcrzB?5pY@h5SyNLU&ZI;&lCTW}H ze$BEmt&X|;OL4KwjGkaG+pt(2opWZ+n`6ZpQeO4WR;uuLLTV`|I!L6WW zI&Y=dE%S&u6Spzyw!cxTo7eAk%_7<)^_PeH9GgeBXJ7AL(<67ZCQr^H`sU8$)h5bI zqtn(L*%#d4b%NvMwvS8o92eX=@iQpr`^-@O+XW`KPc6&UeIFPVZtT3}b-~`%Znu&W+oXzVlFUnGU~6U(eom7p#Td%nuhhibqW-&f6*FU+z=; zWJ;>2cW>p@@crkGSuEfDHoYL(!r}XB83|Yh5R|jDt*bOMVDVi3tnaadg9W->Rlyw;y9R( zO=92t?-SQ~z6V#VD}@wq%-Snfv^jM`x4&X=!nWt4st=~AcPp8?-*d}8ZF1MZ&${pD z`WVH>8Hf5+f@529_w~r``*z@7V2ZhcUtGkd<-1mdRmIPm@HsPL(TBx+R)^-up6Wj` z;~_`jfnT#`F)zBlEV}>QtbMh8uU6!j)vyG=zr2V4{Ka`Py&LLhZ&O`x^T)*F41)as z6_=PF*(-VZU&`H0Uz9Rf{~oe>alG)=T@9Zz3OUXmzszi=3ZDp=Z1#omi~F@drsn@l zvxS)U-k9>|%(Q5G^Lh1}+5aXPO`Y>)?ity+XLx1*8&^iT8#{cvw3z*6WQ4g|i`oQV zeuu-4o;{L(f2#Pi`!i8<505>&H#Q&4eg4(@reclEmpwZk*3Q|xlTq(Ezj2R&#B#k> z?{&5(c3lq(Y@61Jzqod3`-jZrX(2Li`u^T=l3{h{ND`10^6YuK zvH!cfOWoV=@vkS9b)4V9XfNt^)4z4$4}Yak{Mp@y?8}+{S9-o!e)s&UvnMA;c)Iww zxr9afM>@wn+218BdE7EIMQ&HcBvBU5j{&NB(<2XFRaa=%)2J?F*4|L+7xssR$3mm> z$&L%5>=&Q>;(jT#?~vupXXjV%y?Zxa|D)fRKE>#DCTbne&*^69<=>ItZL{3!sm;Cf z-;CrKS8cDoAek?ywSDqoSxs?HXWmUl4D#0(Cu`~im0u}e*^~Hc?edwgDR)!msp!*NyAD*b>hKC^UV4Ryp8%{HDPm#VW| z&2&@Dt?w}wdbY83aSu1ndGzB}W^(YREtXSFdU&){h3eEdm$-K8PEO`pm-Mk=hd}!3 zHcqVx%imn=ouA_AWKkf+@N)Zxpzg+h%X+S{>=a1ii9FeUv!&uf?$-xmpI4Mja-SwN zQNAd6-}YN8Uhn)S`}u;ZQ)uMEkG6sHy^r2zG2d$X^T{WHs?&wFhfgQZoV-JeM<0X661he9m4hbZWxq)m{Zsm-cZz6^+}ZRTOry(neY@%qTx z%xbkA-wtlAcK8`?EOzde82hCu_uTUM#h3ZAd%c||@1;}Q%Nky&o3%Y z;Z<_e@;j{Ni{APmC4XUkzz5^R7lL-iW!sr#3eRwfGE926FRGR8pu82+*NtEOmF`VC z+q73f@ZrPH6L{-H!(CrA$!T=9-d$@buueqPR$@EPlc)B36s2yZ8dV86tV>>AT`FW= z#Glu%>&h)}=CtahY1j9s-?#aj_Plw)@qN3Cd_mvhNl(tEIqX(%I(u^|?{!bX`$qpZ zw$}X-TCOD_5jc5yP<`s}%?@wZbDH{kcv^bYKAly+XtMc^y{8p_?hE_G%iOECCVb(y zrY%2Kn_M_@XY1LVH%dAkTMl`#eiYZVeRIMk>4cmOODGfDHS-*j~vG7U{p5nd;`gs8@9j+$WGcWq$dtx*)at`+XSe^(wUg z7GC(1ys&A;!}GJ8BHj2r8D}nU^NcgLIQE~xdr6V#x(nQg9te9RC~_4S8tig=b#iaR zjTt7w!Y4OAyJUU9T0uuIkbgp1U6YZE`<1*Q)D1tNRtEeAf8) zu^4W?J4-)m%-FeJ>B_6uzSU1%*}of^X@8U4##gO%$7FA@l1;G3p&r+WT%X$OPj2ZX zZ|*zi6_~De=h=yen^tet%`IFw^~>RMwUa()Ow2=p`+4pbRibwxWe7(^1=A+yEz{&|5(-xn$ zz8boa?^OK4Ee0=dSi0N1QU2s%ZPCAJ`Ga`Bjm$v;?p#Mz`N9oX-^pDjskXu}@hr1& zm139Rl(3bih8LwCpE%K!aM=IkYx~(d&+EF`O2ohG4_~C}a7*CnM{brM-Cn^O$!V%O|l%)J1=T|dAEXXrDHhn!B0i?{1?toPvLx~uV=fe zK1Yz%D5E#+RmJS43u*g`A9YL)NmW{*zw7(`z~#6Q;Tj?ZGRi3-+YxgRZ(wLE*;!bX8Tt~Ik5*Ba`dZkwmbFZrZNQ^tHx)-%Ivtq$jI zZfltKNo)NL;}o;FEN+8b>D)Lceg7J6yKSpuFYa1#Xh)Cm$A}5J&kO@61^@7lI~D%& zTF0x;i*^-1Yp#>EO}oSxA>LYc{F8`{$bogXvFm^GKK8l9y{l#2BcESdE31!ep4_Vt zo_pisRwtJfnF-C7v$i{l%d@V_H{N2A`>;*rU>oz*(w~2_mdY3kHZ>ku7`*Gu70WZP zcS%Vmtv|5XG<=Wwj`NTIel^UUp0j*UT+yaotW`G(-~UuGWI=rq3FJ zzZf!J>!0DAF0}r?qIccg^m^Yz`sZF}0; z=(nbLQhM*zeUJKUUSEAQ<0Tu{>n}-^Rm3FeABWy#YN{&W^PLH zTK@jN>c#H|*8DvhBY$2$Tt*-gmnO8g|Iedkzao>T-Z?Q-tC!DG`{IWb)9L#k z>P^~e;Js>t*T#0nmxm@EX63S2lDKz=Vs6{9{EpybLiYSi4|;~KD_G>-aI$R8>(8FS z*GiUNR{EvGJN@6x3GMtJdDgCW+OOnVH@Ds3noUQmUwTBE(YzfsPBL=;q#k#?+A{Td z5%Xfx&In_VoyVmzGbI;vM4_>=xP4TSh zjcO8nw=%y^DiUb?cwW}5*Zp{yI(vRW++?F{^*5&9CGR%Bs+B*e)q6Bsk-tmj@%xE9 zJF{QE^^MyURg_^;E25H{79UZ(J|;M7ZK&DOz-M7%*Z23>%*p?4IjcNx@#Jp`DOc=y zgwxc7{O)<(E&6(uqjdTciy-%zD%W@(Kk+N534C^X?&hmYLIVp9RC74q)pWV`c=F`T z1+tFJ(UYxCZYezbB6v;K|5;C)^jsFMe*1mtD}~7)RXS(rO<4GU;k$D=t1i15uI=!) z*0;0WxFF-yQJI#v*Nz=HlM?hWiql1Rs&s{%GV@>IyK(D3_(_~LnVXVo>>HKz=wslr z-~7+Ep7C5NzgecZ+iDM6kx`~nNNB~GBfP6j7zC4C-yLwTlYO0ZWS#n^?#EB^d>YS| z=`^l*zTsEG%ci^wF;1r)+du4ZPH{TTcNmw#>7r5vY2Zx8l^hTYtVft=kwE zYA?SxlzaCikB4VoPE1xyUw*ag%NoHo4h`zwGVi@Br&!=`Y>(&Bd>V%zC+Cy+wUnKc*pzZ-@~7-@^Ame z9bY-&E`v<-y01)mdzvL)9{ROtp-=Xi7c=hvnZ|vzbd{)x!0Q4Zv1>PlLRao}@ZP8! z==Ey%!bi`0&E4&l^RMT)Un!G2psC{Pnqtt}Yn7>WX5*E}T{FF|{Y#z9ZoE-^fAX^D zK5WJxr8uWO_fLrs-}xk_tyMZyT5a+p&7U2)Yrf6jX_D#fvww4k_yN{u?@S{aS7|>g z+U&y?KWF|n`A^$U)ycgGy?jfKFhMXW zhHV~tUb9R;ZswnTt0ePB$CF+mvUR8Qy&7ryHv_#CF z%~jZbt(vztK(_W&f3aDw+0w$0aMoIrDsu&m2N|>Hd&ve0uM~OlDnNG6n+JA(CazyU zpF*P;A-+M|zxVI1EQ8DWdp6_bA z#I>J!mZ&Q&<9}}$WT4~3cw<@X=Z#_P0(rh}wOw!6S6)qED!Xcy7ASY>sJLe5s#Ds> z`q#T|3ZBPnC-B4U@3yA36B*v#%})Lz9J_qUznez`=5;srTjlMZ-g#Di?`)l4@(cU- zuD-rG;NDx=X?q{uc;a&JZCvb}s;bDdrhDh`uUK=bNj&q=x!^ZVy*h2L_No-T<+);! z6jT{VILsc@=YZE38=PWTAEKa#x#k`RR8uf2NrIvAW@Z4W1hrmLbu;i|)N+wrD;z>3{PE z_d~C2dTP#}<+VySKjFrH)>>a6@46?~l(eS4RZd)s<@8=50~f zzu=!mhoOMLvS;3PnhLxZ8zc6x9d(%}g`Qp2s_X|#)yYuPR;w8>&KfElq;hFXKbMLF=Z)T3mxDoEx{j)Cr`jlr^kH0-P&G(nF`*8uD znjg-0dZkuhe!+Lc`<*~%)^{V(Y5tQhzheqMkhyJ-hG^M_$^Pe7rIt>S<2})LOQxwr zNdH}?hSMoa(WpQl-ImvBVq(6UTUwX;8#~)Ce4w?bK5L%leYbB@Co+7@3wyEKEZgly zU(KB;HT$RBdxV(umOUso4lQQ?^ft}x%1459H03fpQLI1-gnOWe9ZI7(fG8}Az#Yfvy4|tVsp|Wje}Qy zC|;Yi{7)E)Z? z_T_T(7YR-lo2(a7BsY2ftkBzBa;r-wGAP#_>nI75+P7-O%8B~s%U&z?`>8YKlsdZX zUh%5>@%Bw!-1k`6c-npzc=xOQy2ELLVkgwA5xyUAnZ|`jfS6?dbc4UtSkBJPWkm8F=|ratrB?lUhyDi+Oy(uW5K;Wcc_~q>{~Yi{I?EfvRYTaD)&HT*Pn!jE~*ZEi|)9k?n44_k?ur!IQGG(mLnt@#px zo8zV}JCt$4W79U_>tTVKN%@L3%3n5};CQz5LG&Dr^$B4wc~rdjtvR#HGfejOV^03V z_j>H_ie1Xs_UZ1UIhw!IUQAfZy6cfev(V`ste0|jSmow?O2c0Oiy1y`+d026 zS`{B$`A4p!HTc8r_IUf6Out?o?fLBt^IJ?V+pczA+!gO9xU1Zk?}m+&^3x|tOZlyS z%GR}>-{H7r-_1$>%g=si6OLZ%y?v#`w6Di)J>s6cem7&~>z6ZD-tv^%tNwcl&z|Sf zLXoW3RG;|ep4wExl&mCt%Hrs;o!T3pbXrX`&SvQf@Vy!76d0R&Xy26Ps6y7aEgj6v z4~4vrKMt_jD|`CI>??CW=LFB&_mJoM*(;ZLW~@6>+Ui{vFPmxk zCo)^Oqo1WHO2qQ5yQ`OWPd#>(_Vyl&+FSB9s=*=aetC;hTlzH&va!dUENjm3xv>!-S;bzw@o!l(_lsJC5XF&ud)o{rA29a(6-E zu@i!9&DGJ#%r$2`e@|Ol8h!wfF zJDC4=%A!xP42-)^9^28{KDYV6UX^UiZ7kNutjYp!A9Kx^<$0vF#ewm>#*X>t_PFHU zTKB3>rr$+F<#_6J&m;BwLXY#t_o#{6q|JV)+Qaa8?QZcy+gq5HiZ2(^Nw#>`-0$aF zvC%orW5dzzdx`QEYaDj@TPKCSP8Ppeq?WaTaY|D{e^ORK=VE8;C1PtQ?dwsmwmIga z|NhzPey@H1c|IwvQogoqaq6}}$uN7-6MDOZeUF@im->kMil*=pP3)YguP9g zGUK=Z(JPBI)h`6E&Gg}`QHoCt@AbI+;xC7IOGJ_HE5+kmLv_Ay=Y6ht`%FdSr>Y;@ z?lNrOCVO-CvfWh@7LjLvotYXZa5nOANcr!-7TSv~wq{aD)!W_sY9Cl4;ktSQ&~q-J29`g*%^N4S9bwT*qdQ|}dD z*w|%e*j=*pRstvcwP$%Ot@}d@AMV*SL+#=Xm6HpctH{P^$f*SUVb`1~Fn`}KeB(xl}njFJ!7_y1(o zRrwfrm+65X%ZD9?5hX_!NpG@R@x3&wankRXXD)qX?b<7km}u2G8}{0! zED?R3`|v44i2v~u{5RWQwJC9?-HWv2x9*v}Vfo6-PItKF=ii=g?mav9YsqBpdne_# zmQFb9@7u*%H?9B7suLFH&O}Oe&*_kG@7>ogE+Z*$e9w$WPW~yI+7c#T&=*^y=d*sQ ze8Ghq@ix+bZ)tR#G-^M(YSq5X>#a$ChJ~CLWjy>gYg7q;kWK49Z+dj2X&+m)^|g1o zuY*e`>I!Nl`|Yq>z4DZv(dos>nu_)l_`9{2tx|crtIYFG#DYmOYPUl5qEGFaTQuqR zrW-e0r^;P;wei!zV;ZN}56B<Sn%}`o zs+P4ZZThoOFk5BGzFBqL{poiX=q-`p63V-K{E2&J-}=68t$MNbcdfIJq&-f``!`|X z_hsQHHS=|TZPU&DHLKC~NrrX?n}yw(8D;l=Rh%pSV)ydr$A35WeC4cKF1ug%Tnx+G zf~j`PF4=or)t2ySxYgkF=Z-`R*CcU0c~xEp@lCv&<%pMu}fd$v?gdxl=-ng|6WzTH~SniYxmin(@M48LQ7qRQh0xE3grIG67BM z(RH7m?dK@nA8(SUtd$7f=(S?0q3`Dda_)PLl0z!i6}Ct%{d;7^SI+BImG)D^Ij&vF zYpH+QviJE7i<>H$R*Nc{(gbcQxa?VPG<$M-n%v2p;`e4s53T!FA;+g!}HbtISieYJRakS*M&->0Ysc6h(*11=^+BhM5ozaB3 zDrq4`$J;6v?IcR3?oA%6a3vZuV)WX7THCf}#-MK%GWi3^Vo0VQ>Grf6g zcjB>&J3n0OSiPq%>dTQWpI1F)D7QCDFI6&&wz{gMTHGzUJnPG~IVU_9d$mf|XS@`) zVLElG74M?kuri8Y`BXuby(_`KPK2F`Z_=q#pz{d;ALa(s=u#!~JGz-oacUNrn{+%Tkp(esV36jq%WjxFnc~h!-K>Jl>-Xu4?ENlv+NjF#!nVYVN#7k-zbmuY^YinA#Ns5;H(ZN8 zXGkZ^V=+9WuCDob{;&SiArH4X*0(frg@-u&@S4uErT+X)zG{B=)@uG5870-3s}~x` z3uQ0#Xqs2LR%mfeTT{*NM;DmxPp`R{swP$QHkBb4BJ5+nau=Y1&Iqs(y{=x$rvnxaffdmr42ewXfwg z+~c{>>)n3C6WshaAq^3(J$8>utHKzA@nlK5@pZem{)$Q_@p$7L{&E?8w`L%?e z{dM%b?*!qgD;|7s&3E4vw`iLBg{CiYXTH@u7kj8F7O5Vu^>oPr>l6PyTe^`$M&moD6` z;c5>N7Za5DQ2XfW9Ix!$_>)od1F~!G-F{+qN^aBKJ*U3y*>vb>c7+Io#?5&Q>5T1JB%jTs!Y|spRaqps)d1Tw@gRFq^NF1kk#{1eE2D-Pvo~;}y$$vNh3dv)>JQsiKoF5_i=d{C+@mA(vZ+ zN`||X-jsQ%oMi&b?M0@|Y3MGs6!oxeIK8u1<2^L)NbOLzYk>)&Ujvn$v(7%ac9c&@zd+3E`>5xp-t zE-R**u$5o#6`g#$;<-e6NQdEE-!+f5rvE9#}t5GuRYSK%ow`)tE$;~?JA0*m!bMmT9 z@@b1MZ0ze23z_cy|H_HIt2U^-jFSFYD!9${i`l*70Y5h62rJp1*dV-X(eYN^h_iEl zRd{hqZMu9v*t9&gWBW8S+itNBz$+- z{A8c$Edf@q&r@w`uAHhXajI~cvS5dY0>^1f!$f!4bxT@5OQ&QOxL)h6y(GZS^KeGb zvmTdxqeYVanU5CTS+Gr!eO2wV>)od|M-|@a={UMrOkxX<(%e?{d#YcATP+tZ-8@UM zx<|;ock;nFt{WFh>d)RZ>k2x>ocp+Z_P^%8Gafxz9&v2a883B>(;GIu|1$aL&fHn& zc-Ktf)7;X^EjmA}I74#Ep2^?y#FO2>oyj!snx*tT_O$Y(SqqZPQdPZIHGf^8b+zaF z*_<$=t;MfIG%qimrS|FlucxUS&8KiZ)`?Aa|N8R!l23Pj?KH{a$uWL>wM*lB*`dd4 zWTM_&u)TC#N&1Yp(nj6qX2JW-lQw$#v98f+SkRh(#5*YE-XYuHb7xh$x(Zr*8 z_lzskUG+D3^H$zk?!J5TYo5xR3vQkD^$`ftzm-p)7HD_J(i*4rn zbmt!tdTQX@C3a?R_U3Old~V-5_H^gVJ3BR4#rq%eEas7XKYMUBOlV zt&iF4ZOvp4Zad&>X=B}(C41zJ61(Wntucmq$C5n7iW%naDe5|La@&G3uf=Dkoz`|O zjQ-f{bNJ@>8G66>JqbCv@!MRBnCvxCcUDVGQfbRK)vTQN+%6=tJt%dF%A1?9=Qh>d zO-(zb;4O2{^i)~uy!<%rl8yJyKF?VE{(^S#n%n$AZk8MKyJU*aE$0vUT|P->-_hq; z%CSlJr`}{by=;RVZ{*@L8$a#epSwx$;f}Mbcg|toU8-G}^5N>#rqZruuihmk&nr>< zx2D{Bcl6cHf;j;j&i`cJ_nST7)K-q!)erra@wj!QGpw}uzWbT*qVm>=$`1#8OH}Wd z3;SMbNNqQ9di1=K>68B|rmU6&p3D|&PP6^`tbfdZi{Yo`S%-^WI|?K-AJ=By_UZ7S zLZ?}Zy^ZzmLflH7^Hmz+6*~LF-Yw^OwOseWs%d{#_Q`*+6c3DHt()=md9RUus(}6a zl+{^Q3!HQhgnfBXJ?%oomPso6OY6^EW@CFfRc{BYx6Y!nR_h=AKi^)P#dJrE$48n` zPFm`KsMo?%?&^Ya9V~@YUM9TT_bKCgw?jyx|E4|XxH8VR6p3!v3oG0^g=N#xFOn?r z8NTLg;+g{MV)*r6n7xoyn(f3r!CP>ax8f6bXTO*tk7-O5+yVA)YJQyH|Kh-(mSHpb zOy%kIvb!$1o)4V#UW{>lpvd{RhlH!HeQ`0|D9n1Sr}Wcy%~jj8(#x}QME2o*OPxQhZT!wEy*uw7f34Kw znsp7kYje8)w;g!&`-1RI#Y4XwXA7{ae|)F#v+mX3KF_KG*80a?{}eQAX9gEUIDc?0 zwG01vqhgotyz^Hc{{52oYdP=~7sT}>M}f(l)X9&3A+yf9}KidS85eS^u#@@t!( z^PKsZ*m-2f`yL6YDd*pwkkt4ygYl1ANL`riu_-?SnSQ8pYb*}GISUzo%NIzG> z>?Dy#dux>WEUrR=Dv8)b>k7)ms?pp-ze7Ugez_6SMgC~-ywKy`L(ha5mSG>+w4;3 zTmMf@Ygu&hv>PdZBIFVluXd_Sh*R8_ZyzmVSpQwH=Z1pgcA2Cd6`ENuU$ctGnoOPf zVaHj$hHFh-n!V53&b3ILSbFuk-}@cg79Trmd1U|QYfJPcC(T|ff1=rM+Vp=jZ@+(S zG>6Zuez&wzqzmU>iSjFV7%m&Wn&LR)cFKWG46j)~>}(I;qM`o0cXznIgIMMEH)bzH zFYSD>IpzAIo=1`|_&-@&D)=>?l}nS@`}6gpv^MkXhxcy(;+~xCt>3HHKKr!lmF3PZ z22-vbUsHNgDqUx`NKUTe$~o54gTK63t*xC``(pLk1@7uMwN4(mXH#ixaF00pl z+dN;pWmR3*)#LM}f8W=8yHxex>u_Pui9r+g{`qi7G+$+r?G0PUY0kkMhnPOy%KP^% zY&*;3!@O$N#<%hq3RE^-Kd{P6>&%Jp{CBYoS9lhFP&)4Mk@fAoTFIYmO|q-6sk&a( z`Nivdl&|Y_Sn%1`kuFCX9m_K}XIG7J7GlBuE;p;=Y)^sO&KT==xBL0HWBGxlyUNJYAvzc=G5^XuYZR=d?WyqC(;UCAz z^|Jr7Jv%v@Wi^+(%)f#K_ZX(7kxbZO;eW!2P2c zJ>SBgyS&Bx=X5>XwXR&*etqkn`bzztbydIhv~!+|$Q-(H{B`72&)r{>3#Xp`{x(&E zz2VvfRe@0HW#()P19#86=k&puWubVj!OLov8m`z$v-x~yuK1FEwEI!zu~jKLOzRbR zR#Y9(IIenIS5s=IuI5h86#+c^A8n}FnpGD2xKVJc(oV*Z4_=~XVal9;&U`;A`uj(Y z?#rZ@ROORhQXF5yW-YWa-GJsgQ)j<%8vZ;OrWD^A~9ktuI>Y?9j* zy)*spMNT@~&Y1{4e-rMsAUvRj|3FK5=^g#gQRbT3?2F|VeHP32$tYi`UVNy>L84t> z==spDeO+&gTCs)h zWP+rOi;v$Y2?1AG=dF?1oEuo<_VRCe+|TA__iR?=@wyj9aeR?ccbON>y?1Z_VZD}? z2h+Ij7qxskwc_-2gR=)pIMnm^JuQDf<8rFxU$N)6<{W!-Xit6G^s5=~)xwYKKP-MS zQL^~PnZ2LxEld>;`*F-}zMtFm3B|1U9!=^_y1TJ*B8RL;Aos?5G4paeH=9K&Pjr0! z=( zl-us< zo3?P1nH4<8f28LAT`$yO&J%oa<6Vuw@(Uh^9?iP%A$-cuIq=p8<={TS8g7AxOS0xa z7rzksb%M?LX_uGy`uhi-Pdi_*zkSb9m0!C#=WYu(*xce)d;0oL0oFY~Z=Fs*s{Lq} z&hz+ZeBLcTS}s3Xe!k_zx%Ee~zRGF%$yD>qWIQ%+i-CZVV%Wc5Uw2kqns;+!@TO*s z3B^~`H*LF7XL$4he|A>&|Uc5(JXx z%evgOYgulzZ~cWOK0>8uPj337If489#k6foT{G0S#To}HRV&V)6T0sFDeW_<&lvkQ zZ2zt>YlXn)FUzLnCi~|)T{Bztu0Tkmc+w@sjh|Q+D|O%8@%MM_yT^rVXC#y5|JL|WYd}$DnuPI?*zMXPEN~yJUrb+LO3cK{}X;BN+`40bH z$G%>pnz`g&z0d;f$?2+}wLWM4{e5e3%(>;&&Q}#Vmm3!@GA;DISr9Yl++)kXbGIev z_{UH?^JTg2)P8&Tm$Tv)`}C+#zT7mEtELlT zI=B~Du9~>$g>r9#V3+M-4vVsYhSq0V-w(~#?Qv~*I#1QKEqassu_Zg+ev93ENl7*F z?d8h5%M_QD%sDK+ujlS$^$D#WHD#velVqHfH$6Ok^R?2NLn&HcW(2#>yBK%=-o&~y zhjn~baPB&g+q3?8ruLH05ii_AyOv#(ytI0T+G*ygXN9@0voA7Cp2=6%sK_L`_4;e? zubZbYE3e{D4_VZ!u%w$&a)UtT%$x0(l%BWfeLT28@at`7*;NyAkFsyMF{^ud`@?s7 zE@4f_R-~^rd+B&8+S&7Re8rn1>34P~z6weFWHE7;*ra1#Zxy9>Ccc>c--DUM?$5>3 z486P0sJVEkOnbe$eK$X+jegdS1pck=*Vim&y1wG;C3nu9$9vD5dBr6ivtq}tzTo>i11wZr*mdeBBj?wv?Xk8I#UjS6QPh zX%MrpewT~iswtO_TRAM68-GYs_;ZWE{R06JB?i`W*?c~Gnl(mytaq>xQ@eiSBG=13 zr|c&$S#wB;Ynke;jT;Ix@9>H9F7Q|sIqR{G$?C~3IGQG}v1_)iJ2ZQK!P|G2J<5E& zuX$%M@=u!?eZ?}XdF3>V^RqTAd=^&z)+*!4-o1}LvLDg8UE+L0F?P?A1&2J}Jwh6ouah2+0ET*{^g75o2i?s z-0s<%{#ftz`}->9MO&BivJ0^+5&HLk&ZeLBI!B(o@%{I`@KaW)tSArf6n&Llox5g) znX2+!Psq`EbN@|Mf`K68ie1J6J)9Pvt7kXsjbSt?>)1uV7fm{zh2rd&sL4zw<+(FF&85#W>|gRi&sUAz=J{;HFNR0$3mSjt zxR~iY+GZuIG~x626xG?&7EfL(+$m|v`7~6k#71|id*_xvJd%|~Z4RQjF>m3`o`Uupiu z-=UxRgL6%fU*$-OxLBh&D`7(d>!Bt4G*-Ulw2kqb>6-j@$(Hr@$KLCm;hDc<%Hq#= zq_n&v9Dk*YE%LHf`_gc5zlFQ6X3ty(xw&UfRf}zSmBHlXHupk~_*Pwpzn}iDte&Eq zAnvFBV&YGe%FSL|Ws2RrPg}E^d^J>RpV!S{n8JO~%}MjdHh+(-4>DfYna{J|DPg+K z9OIn**zC8!xo4`ps*=+*w3+tn_6cv)7O_92z1qO?g6!j&jr@PAwkv)3X%_I?*>L`y zzUvotyJk#mzg?xf@ow^~g(?9pr_~xg;^NQXlXI0szZ~D0PYWJ_cMKRZ2?F^9F;O=YmO;>R0aW-c?G2Nu`()UZm)RQYyrs*xUV6RYS>Zsax&+P*B9fKcYgOfsjK3?v^1AT zIX{o>w+!dyFNcMSPI5~u;r5-!b$Y|zBp2HoK?nbRDrecW^G=#ot@e`aIVMF*_rGjg zT_iS*H#Gk!|C#Wud+t^jn(TA6^ZojhFMoHbvheKH@0y!;tKOUcBq*@4{&x|piNW$8 zxoQm0BsN%HJCyIT<@khy#T&OPbSq zm?&H9VbOZs$u=kQZ*lU2%q=JH)?S+N;m7p#>!ZqF9DK&_vZMC!s<~z^OBen!$kI+; z9h0oCk(V;Hw&&){Ln?noHc4Hn-nrNR!uJJl6ep^sq%U8y+kc_v?plHRSHflP*#*(Z@;XAEnJ?&YtKITgZLfDe+!6&)Mcv#Sd)Dwv`_%G&skn zQMqzW!K6Elb2i%_P^$Yi`HI9ljt?;_uL$+BeS9G9edXrLs5seDw@Y!?&K89Ke7Z;I zjJD>z=-ONVFE{o}v_{IF zOOqyV>8W@!?MGWe*vw}Sf?jNz^ix1=)3k}t9`6#r7P@MZOOVKC`H%65b=#iVC{BA; zes;}#FU#<%iROau|MnY(heu8S6Fs}v|Mq?P?H;v7t3Jd$yz=1l1a_Zg)eBxfoOkoE zl=vT=?JxgsYAocP7!|;^N%-r&$A6!RxbG-=sXueN%CCFDi#sQ_C%iJ>*mxtrB;k>f zcipZH#}<6G|2Jdxy}Ur)Etehk6>1-gyc-r-$r5%TIpKA`;Jj@M{CCeT7Zq0vYPRA& zcIbili|hqeyTVAJQ%0?!`TJ9aR4tL6TQSDqhP zo4#~{ruD~XN{>aqu*SPy@VK(zy<3~C_2~`&!op4W>@Pm@*;#pZsDN*8dVN`(Yj(8S z{eP3RZO&FPC4X5m>t_GTwptI_HyU43=6L%>N1tDG(eLD|o1b~o?bpiw&Yr{jaxRO6 z>;7F<`6AcXsA^w(XEecZ#=)rvYfRQ!vuOCsS~am_!W4cCIE%&fe>%*p%p)DA!SV25K*rsT5j*kjwg zGh^$ES}zu#Q&Z;e49z&Ps{8P)b(^p7cTHa9e(T+Eo%r!wBGEYd?V)^; z_>HZ?_l((c*FTt|u#HLb_{T4922XdV+_)ZoeNKExjfTv#X(?wKe|}=U#;5GSMne!S!qyW8NF++Syd9dl}HR9fy|oOk?6s)GErVi}f@a#tQ{9pQ@`iYKsj z>}F}1|GA=r|3l^TH<@2g)zA9Q!*#yG=RBv7^qI~SHjYWHTLs>$Z`;utX}9(zZ}7Ua zXHBMioLzrPA^wnKPmg8)LDK-Q+yB2PFXgc>ue7?GxX2=NR`Z0=w4dHHFEWVeOnMPp z@0eeoW4o|!m(%RMc9Hy{Nx_0|c-cS8_$|sy`nZ5ow|3sleG^-SWy}-!Sl=JHDKT&5 zUbahf=AP8qQxv;W#^JuAcmAKL%XV`bE6+FjTjTSa>ypxsCKKzsDnkDG7GXM1U1rtZ z@K?3k@YTs;M|R7uO*3BIDY+vg@o~>Ht+(E16-GzryqPJ?T~91WgyY8Sv;@r_0j`hSFbrL6d}JvblWb+nCaF>ZW*>r zdc5wS?xn;-e-~c4Yj{C7&4y=!seH2g7rEUFSG#-7I%{6FbYpVq!eWW+7n7AwZqL%Y zQ@-K;qYo#m-9JpN=zG5FtlO>WYYY@6q@hHEdQl)uIA*V(7Ouzvo2Il`}@k-TI(2hZ*zXCewyAN zPEGYgrx$BwR~nt_wG#cCevxt76t)9)i2|E;|9UHQXz?4df(p0wtveN7{E6Lc_wQ=i zuZ$f>Ccb?Yz5jY#xBH228{VZ=eL5vqCVJv^(A+2Mk8qV*>6(|vnkrxBDzi3TBO$!Q zEyimqcSMMw*wzWQVmx*&&qMbZKkMDVDE2hr!=h<>THd}C`Q?%DVvdNP#GA)HPqkI1 zO;b?W_)llv$!DAb|4(YUMEBdimA@iTE9CcZzUjr;(`2jbf47Gov75*XKRPxkK=+vE5t>D2Wp557jsx#iw0YVTs(_$a#??_feMb{AHW399^&?#SL)r)}+e<-I-YMDV-k`Paff{L0wT%=KU;T5 zmOowF^{!Z@uDU<2Ap6O$$F23R%if#6`}S9E)4ldd(c+K$m@XdA+7o>J+=uT!xXm6< zKQ!sVe8XCg`I7^u^`Ct4mu-IIgCG5y7=N_wKlEjZxeh1WOofM;H|zX3tu~xHl``eT zyk(x3mFk)zzDGS)nXR;%w@JvBy&!_EMNE-xUc#dSizoJ9>RH*&H1!?`NHkday|A&1 zb9%-#)3S|Emoa?0yu_EK<(G@&*}eXpVV1{I`lM}6-&~{_@~>;gtBW?`iMRgCE@fk` zn9AF6=5UPXCDjcXhs{{uZFngm>hagITeQSoe{Exyi9wm*JrZ@hHlg)igsVAGZ1GLE`m z6RibPmKZ+zttg*3dG`TFpPOlIYmdrUSDuPs_xi$_SuLrhUbejcPK?Gv@2#i&=lwFy zIvK2-qx1L+&&+F;`}Q1}wPxuLA>AbRYl&CSoG$3p4x3>klXc+_vr6$w-dcW>TO};;;*w)=IhP5(POTcdCKiz+nS$u_pemu z%T!hUm+UXNS+kJ$6$_(DMfWQvajD)XX`Avl%8Bloma}dL%aq2vC3l&%cbe|sI?cD{ zt7&CiX(sE$6r7SzeX4Z?-!BTfy;Q*{)uxkK(sPK0T9LJ2_(W`Kp4o=l=iv{AkLi zl-YI%Ef2k4usnhLyJ^{#uWY z@`Fd)7y2&tEuMLLfn~MU%GA3jL+3cR?uyM_+!evCeo=Jxr<|`OGTH6K}sJWE8UImmXUUe{!Kp zQY^E1`t?QGfs+=`v~_tZ;@|bm=~HRrpOBfmX6im(a`Jje(jWD(#~e({nk=uUh_Bo1 zGx?3+v7J3Pe*M#%&Ema-`*mThi>>t8%?FS5wpF*LFf%cDL46si~{aOb_8# zmfdG0R@koe^VzbJWt)$Ds%uE;cyA@=lv$wkSg>XFwhcWm6}m+viM9e?IAx7%;d zp7fB}Uv@^xeSTfO`uls8%exQ7zW?j+@#aLs*`f3ApL$mm%Vu#8 zEj>XOQnqZnx$)I`y@~$vUpMpH_pCj?Vbi}&9F3am^`zKer$qcX(Ubq>!)__S~{t?O6-&F&(n_cZ9{nea;!W$dD)6NVYfWP zmo(hDWyt<>OH#j$=fq^s`TGJT6u&cN>9TpAtuU+zagvDq`$dG8HRyQrWxJx89dGREq<$9CS-wXTBOIBTsYo^<)wb?e|Vey1sOe`faG ztWU4_Bt6Yy)*Hna8C;F~!+jb#Lt|BM##+zZ*!L>-Mo5mpIqtoyb3f5~OEt~p5toD9Gece9>&2L#u$j{TbcupP`V*(Z zs~;3pxH_jyemjA4O~WtY_eg%lJHV zRc~zOt=p)3x;A^l_s(OX5)T?*&pKIjY*{IrbK}#RVzqQ;MfbZ(f4E$iJL<@}iM%JutNpC^dA7jamfS=d{@!9mk`;_AMo#s|ffzWk|saZJW}5MH~IXIUQPDUmb@qBr)FsA+d11#S-nhtYj{MU>8B6pC%Q3h*s=Vs zR`}|rKW-~c;Vm+EIWEb%Zidr`<`mYS<)<#WM^qn~xnE{O|FPD3wW}8w-gEHN|Fg+l zbo!|mE7!H}oTzzYrDPc>n7`uCm$;;6b&sl)jH!* z{G;K@<;c)9p3{!i-z4|O?AM)etnjE^$T3#w$q(x$%{EtG$LD+ay8X;Uif-SIKmYwh zh?(z+-q9lk`}v>r1fFY?|DxvCmYRQ9@37XQ<45${R_}T@xp2qDJzp83f*!ITXqxfa zcFslVU(?o?HqE|QD^j2F`R@HqfA7T{`B&=~`>|VpO}6=sPp(J!X3B5b8ozOOU;O(O zZ}~c77fIMB9TlG3mzPtwZ{G=7+5TmxlC=vtK3VNeQDK;v9ALc4hO^U6vg*@`FHwre zO?>;FcHRq|Zj-;v{*knl{n0I3_D#5bM<7x3Z_`!>YqurgOtO2oipZSq*=#E}DZlIB z4xO8GPNfIkK4>g(;g`vdx9N3Hv8naICoL978CRe{= zj>hua&&t~-Tz{>$)L3Py?kekp(kn~n^ZN+RDcNshBhU2g*OHrW-n~0BM`X(FHHVIh zLhrq(FY66Gm2Y|Hb*B66u0CSexi>r8V(axOlBs@E%@bzxwnxr2 zKl8Ukx+g30`;_0i%ym?%b2RRJjt+P#SULAnw8f*|x@nFJje{3F_uIODNn;6DB7^Xs z*$R#4MYh!{Tv3cV$ED&OY-A+V-*ZHD`GskA2Rr{xX>+~n;`4Np$jZhyyvxOv-Y#k| zvCdfhW|?T1VnE>8GeL5X_GwR0eX>Eky*{01)5fg07_S4oBKHs58#fmU*N7eXJYSCO z=&WSEN|t&?o^l_lziD1+`d2MpRR-)0vU+tgWBdB@ls~UOoWFW~)|t7rg8XYYyl-z> zv-BfFqdk+!z1-V>PRplM{kt7re42Slvim-H4W_LB$!dF?^BFDY&;7G`ZGK5*kbAzK zRF>@Pznqg7XX~ulmMLES)~$DOw&|K}sn?~l+SJZoySi=7`kjJ5|C~scnYVxUTm3fM zO_JNDuliF~@H03(_TAnBM@_>z!|A;7=HW(Vx7#h04^Qmva`?r*yqJB-T1^wlEIa8r zs{cX`rtUJSk5tqRt~uLqS-SDppQLD?-Tdo9a=&wyJ`t>H^f}+0-Y#rD zF`;}GX{r-2QxTUJP@3$32{o%q1Y&#lF*J;Iwlus|3ZzUreyYYtc zi^L$eG?|c+ElXebbM#2t1X-+YHRDzg&Q$%9zG)4^yMH}=E7MO|%ne(5fP3At61^X? zd^4(L^(H>q_}Q7`Q-AWk&qc1nZ!hm!eqHE^=uh7%ebL0d~ubYO$Ifj*r@>1NH+h~SzIpc?ClzZPy?kNg@{N^xts8%x|Js><^n>ifhf|j9 zaPe3D_H^#8UoW;ydm6t)e$Q>m>$0K6^Q_sm)(5woSY|h?`BlQ*;JDbo)4mt^|K8fQ zX|MY&`5&8FZ@1oj?R+UNa^L!U+@JT@y^cOy5qILo<|BPq?tYBO*K&WPd5mF}Hk+wm z#;%zYecj&_zm<^N$CUZs{u?*vrsXGUXT-ec zs94BRel>Ug!st83jc(iC`EM5fVLolkJ?~3`y>I>AneD&%CF_ve-TJjgyZfs|7~7)O zN@_Z-TETi$yHrtfTlSv#9g9~99lSJUPC1{%LhJWSUfl3MA$9A5!J3a6YbK;T-+cO6 z$>naF*COw^kG}V{ZqhN2;S34LtnQxKuFjrQvrJm-#2=PapKaWg2GeEvD=t?&lCI40 z=s)~&-{-e1H65%o|4eV~lYaE9N1t

    HAat%oc`{e&T-YPp~>*@y~k`XZ~qKUkY$)8*b(U-ee(K8 zmDz$G`xRWXwta5j%9cBWS!jWsA@4!K9haSaXL5bga^L+x>CH})WsweD0w?~+`YTr* zHS+xu_cJ$l@wrEff-U`LeQWb65yqv63BUGj6B>YHEf*_ifR=1k_(XAEn{;~yv&L_CGpk#>D%}0U0QqX`=O@arB15~ z96x(C?cGz%8Dt*FCT=(V(&fEMW7>`F3s&paAOE5BRQ+3V zY2N3Lm25k>Cl|;abdpK6J1eN%ko$Dg?z1IdSGp9R)7+sL`#W2z#{b51F@p)*K9~5u zTU$k}e{F5_V(|@D$6FUvA`|RccAslKd3@#Vl{-~$i!`u2Xt_7z;pBLUZF$Q&v;AKl z+7=b6b&CJ3DE}57lN*O*<{aI$>4(m?q|Hp-%J2O$?zXLIkKB3uR_}tHuV*|zxOmCi zIO!$*%O^}ps5rrKK*n0;yrJLx07j(~3@3D#rTwvUPWkSAX03(x(S3?v>clvdPPp&b z^qJ+gcw^$#4#6OmtYa}*>RSEBa`j5>g)0^(=C09Lw7+Dg(7C{M+>Y&`EC**jwqi8k z&NpEA;jCo#plqU@*xxTT#ys{*ESEUx&rA5#eM@7p#T`lGnUmbMsJtFbZzqo=8zUBpA(B168!E{5njiJvVNkncov7G#u5FwHCYv?XBEw%XkSV&UydwlR%|?<`$#$*!?0FhRzv=a!0(+xiE2|=8W%>+Ke&*At*LQMUO8{5)raNZV^^~CXFtQZ{G-Su2aanEzxb&-fp$xs?xDiW%=os_L&>pIJe%5A*Yc!nTg*Jc}J-@Gaw%vW=zKg?-aL;V(4_1+i4nhZ?$-X+ZHQRnx! zdJuK^|BIhlRTo@~)}NW?9Q;dms%+fLHkodt(~T055)8}blnwnAC$}!m@RDrQjGe-M zXG89qgONSo&N6Hzm{d+VzXH4s+Vt4GKZyCa~$6p&P5{gLfhYeJboxh*Y>q^ z_Y8Ocy!$7b>u#Lxd%llzr&q+?l{KeV3iAifvgS>ky*jOBW5RErZSk>x*G*jby23of zX!j}4>|0w4O1>VPDE=$t`VsStqdse-Lk#D6C49KIyew6pZ(4sb&qL*}mOKHGEw7gx zTJd>S%`S$Xi#_bm`6G|@zpWE)4}N^_@$J2~Z|=Ez_NVQeaNJzXZqLiWQ#maC$GfD3 zr~WZ{+A!s#rI7m`z3W?K*2?-_@0h;0>qX;5QPX>~+J4=ayZJ*l`pd5#rfHV~bA=RC zvNDBd9+p@xwd?$~1IK0+`?OE(U^(0Wx8?Tv%fa6>pIpse@yPChlXU1@mlyW3Yd>dO zGl!OW>=4d>?s|1i)`pKQ;vz@0l5Xwl{pIq*_;bvu$k32gGEuABbXKdlh#RlA%%1o6 zD^JgRYZsT`)pO$}OC0C_#&CE2F5R5Py_;11gjAbv^fqN3m-BOdWe{hVXTMEI`i;O3=~cyyR}<J_0pPWgmbjRldb({F&GtcA6Sy(#BJj6r-f$@&rGvYT>th~kFecc zG3SCJY2RBf--f5oU!^C1M=q_6Z}+1Es&AJbdl!(tamtmgC;F|;L@qQa?ww+oCY8BG zj5BPmZF%*Mg;U+`{F=Dyz_ts8N;4b2JQUl(`OJCZ=6ieh&M;2DyQbl|to>b!L*;YB z3jRhs@>YGxUR=C4!mTrlui@%4jaye2&e*6Vc{JsjasI`{HFKq!4nN`NX4Xw#xqnvf z_e)~C4MQ`X&KUCU&iu1ydC}qnfI@^|9u;>tzD{9Ay(w;vrnfpt7VfOw)wVctUc!U$usBYk&=d4YqJ0C{h|1! z^J4H3jWFd&7WZebSny(l`soA8413m#TsF&?dGg46%Vz5Xr(d--$g*oB*Us~wzbv@o z+%g&eZ}K0%aOFxiD&MmIq$P6cr2W2a>nfH>eQdpLZkDEZDdz8%KYnX+^FR5tZ{DFl>vhfFit5f4*r(rg zS+VT8yO5%Xz&h`e;|a+zG1DKIZrv!hJ^BIvCd1S6x$d0@kG_p~y7c;c_IC%i{+-&q zwz;un=@AbderMSWzQ2s~?NzMguFY7RRB^;iBkj+s0BwzBFI2HNP>k9S?Z{M=1@c7oBt55K1Sp1Pm><@^iH*0VO<%!~{j z%?u0|{)=BM{*}GDE9{T|oiG1dUfG+iois%ySL}ztzKD$IMaC6J8n_sbYcFG(CVY`& z#@RY8N2f`L+c-G;qh*&!xk)tSzqu)U<3`uJ@9c`|OrL+f`f~ik*RV(5#ASYm<*rR# zT3dEM*6q`;J^P)$9kSHU{vfO`ZgmhogFG^d< z{=-RepWR&jZRhN^-`#uc*pw5t5f`s-`*>?+?$q5j-^~|nZP?G6bD4Qv!r8Ts>uWuQ zm6uO-&far~ZTGZFuAR26U&Lc(6vcd=D-m(nBmZWXK(CGXqY{z%4gYSn&D80L%}U$S zTzjH#ud$imGO_ii)}HyS|NZ!}q?Ou_ea(Qs+UGTj`BiwF zfA4z!J^W&Jk=mvkP0#oZV{-~S(>Pxl*_M1eo4Db1tUuwQzS_0YKg|7o(kDN9nz)}q+_O$iWp78R^J59EnZLJn zT+(NsV0z9eY{F4#zM$gE|9VdDPX@^{5e@rfr-tUjZZ*LRG) z`9V3Wp}*8Yt2r_~yKndORhE{0C}vod`}ylZvpahHuhohoS9xujeP^$jgyAH0!P>rC z>bw4|Y5mKWu-5SK%<=`D>sq(2OJ(}I^I#XxyboGerB9Uo(oq=hqX7f>dcwzFmsftn(M#O3IaqQfqL1 zpZj7%;^w69&*Yi^EGv!L8F*`blABbwbmm_Lmc0{hto06W+NsbY{+(Cg`N`A$DUBvG z3T|{8r*3g)Ur_(mn1`oU-Z-Fks;&Mb=OQl&J<+gb%6=leH-%Tv?i4uQslwrrZJN?8 zs&%{dP>s?hR}bl9jP{CBM<=b)DCi6m+nu)k*gN5SoGspbZWAu6^vImE4Li+wG@&o; zD@zHlVECOx!#}SMzv9wj*%9&AFmYD&&VS$ZU;eCq^l#>+!gsqn;}RGeEDabK7XDB3 z>gCaqnX@LO=grxkyZ=1C{eNEMH1Sa%^ClxU^X&G>zY)gsS+DGwW3}I8b%gT#`{EO- zEI1?9dL4Ww1k_A)XA_zdy7tc3jGo=_sFPPm1v#i@Ids* z*}Nv+FlXV9kJ#AOzOYS}@X|Ok>s16-zVN*$_S{8Nq{7av|04T)_1821ZYD00)t>)4 z_4KUQs$n6j|Mp(`e#^KokN536X}(@<$;_tL$179TUV0&&+CD??adzqv%MFh=)JAb> zPF~-2S&eVSf=w0w-}!Fh)3{jhcI~=Wqt(~6Zk^WPy83|Q#>7`oPN!UAkN!Dbnt%0z zZbdP5b%1xvzIjIhzu?-BGNf|IV~^f(rtTP5*JORQBo3 ziaZu_{+s)5#;tp>BK zJ)M?(IW%8$RqLiR-0KeL=x)MX|+; zYM-B}_1d$t>s8I^y~~PxuEzWFNZxy`U7=^=X=Sc!;hHM?wR@FGY|4i3$8Vl+;4PT+ z^62juOCNd95;^53^iH|=#nr&X8G?NblWdE5m&?Uh&1kz-IJ2<*%JuS=e^!O(g0*K{ zwu-e|a`HLr|Ii?boJY@%%G#e7f9O*b&{?W+#l?KCs36y}7$<&?Np9i)m?N#;xw|Qf zeO)mj>rwUc8>JDu_@cdberjD6AhJ>?>5A&zOP^m~E7%;nZ1zIcI$4*c?n@(HKjQkT z{-kk=^3PQ(p52S!ImZ63;QGA@O{q z^4o4rHh!c1(fGr9j}J3#Pljx=E?mFxzP3jHhHJle=xq$5R^`rA#hNl;hr_u*}r{!2h70 z{jU$%izXKyp1I?D|FnSrl1qQ(Yql+#__)5Ke#)V?Gsoila~mFb^ad->aVzX&b9*pf zsa;U3eVTfxov?z_j&++uCB$4Ft~=Oz>fNn3PE86A&mZIPDf+-E-%x&RwuS#@W3z&N z`|rduf4ijPeOSii$Hhq+duF|U?AW~UV9>?GOGGA$IdHC9zge;`Zr|Z=7h}6m*2P%Q z6`po)>+^m!xsr@W_dd_9x4NKcF4^~LQ}ubXT}w*>UYAx(m#KJSn*WjYS+1*yQ|#3C zZ_2E5T5X>cM4nT%)|;*?GdpKhPSl#;bE4mNinvyGhsMmBFy|_Fi|c)%Y3iqyPV9f~ zyZqFm1^M>X=PP4t&8 z{aw4xqAt6l_*qeh8?PQ#VJJQjl=xrjvh&u4ojYD$;NbgxO`{^$S}pHWe@o=PIY z4&KkVCB9lFv&u9{+&^SS`P7xXDh1OkC(k(@{$;M)+eDGZV+(G4yDGI(^!rbnZ=z;v zdZ+B){@p36*?h@T{%x1-SvP8#?1+03CLzgnQ18sFTg%e~&IY(nl#7&>W4&du=OSy- zxizyx=YCFG;ivd)YN+15i>YgVJ`LY}?bhMC^TvB(oqmZM{hRl{UTN{--KO2&&vV#c zsDJzMV}43Ugq7tCty!}qBc-}#ME+ZunL1bI|NY6GHS>=!$TwYgE4;C(@^Vl`nQDdP zt(5pirlh<40{xec=Ve}Pt2oY>yl8#OrF{&4VlQrB+sxJRcj1DqCSkLmuVh%CAFiJe z{a?GQF!=k`?cD>NnYZKqnB7vj7x?l^&mPPAOOphYHVCt33OK%taNW%k z)NC{Re$G)Nmm(I!MYARes$Wue;$d4W(0Nxs?=f@I`br^>Gr`l0d>8ZVS;KQ#{@zTr z;*yUoH~ZbDHO7~|tepCdd2@dBj3)QXcU4O-`entw3pn)5e*L>N&Ye?kJ#bJIK4n)K zT4?St^QPBJqy6F$Z0mln&*hQ*vGw6@`%jA}>^Zcv^Q8{cn&2l%Ifq}_itS~v&4@`} zclP-~H_8rVIP9?LRZa zuJc_>H1`shbQR43nD@z|+axpmg72~%}X%$n@m;`(ah;cl5u zvF|by_2+5NzkfF^%kPV6rb+Mq^~u^{bo zXG`|4I;Yq9OsZwc+8-UZmf>dwZ4af&y7y)Hy}G%_`l3ehk-KqdvI4`tUivZbkj^Q}&hrPc1r;^ZR*x<%a*a z_`l9KU9w=_(#FY4=RN+vt834sgJP}^^DeymGf7LgS><@T*!hU7$Fv&%`U*x!Sa+L> zOLPQHi$6C-D&^;Ex4%iN|IGO$X!wmc#ea*2MTqO6=qGamZ)B-W5`A~v>ir~^$EVAt zALiYC^6T;UQ>CLE&f2l=Xt=EpN}B%=<(0tK=7vdW~?y?X0K&{7I}T`MWdgyrB8Q-ZEa+#aoIN$?TaWU3DDKK1@} z^vU7L*wQ)2>h^oP{mFYJ59d1P{I=x!skb~$Q6{F|_510w%DN{jjk^v>JI+)!u5sH~ zW4ZtPR_Dyt=?8covHcbEXA0@`+r#-v)U$ohk{y>M44$rAWB&Sfv#7^}5UoYu%hnw1 ze7m_nq2BPNW2Bo)V^P4NO)py5uD2dt5wN5t_T=q*XO+GRNPQNV8R+MDS%>rJyIX6- z)OYAwzh{kl$h_b&_lo=0S@QGO&EDm)`}*XcnUc|d)u*j*U3@)fZ;-m~Zuz96iC4_D z4c;uA=x(pnxW0Po=!U>_11fi`$vIw791K!QH`CxvbSDW(1X;wbFU}*&YH+v99p2h7mym)Skv7XGG zVtQTd=_1~6smWblVti|^MlEi-(|bYo^to6w=_#=mzq}l>_fMNvR$hL_j(5i1<5A-N zs~+9vVxPJ^<0Id`L;bQJeh4P1EirIyF;!ZB{b$9uGs(XcrcDa@bN9%-+^YRz$L}+3 znet@I_RPy~zyGhQ`S9N7pZf8M;;h9V|DBOnJMe$2=<)iHTCuck|L5KMAO7ZC(1gC3 z)14o-wR1I9y;y9muFQ3U^H;3Z9MSb|&%-UGI%6DDJ>DN^*`%_$raya#3WK`ciw+%c)4)%%L)JL3N{rn7wo++(-T}PV*aM()G2}8&BwM_ zddR9SSDmxe{K>lR>6d4`JyEFYHS5pr!d2l~75Cq}&G?r(|M*guw!^tsu371~Hr$+Y z&tS3q&%Shr9j{drt%2cId6Ui#)|tj2;jo=@p}rTT%zebyG2XQrmhZ4EB& ztzB}1GRc3NsIZRzh80`+gP9_gc8Zh#hiLTKX>mvwTkTBV0oTC_!r^5$NfWFjIGmg-kN<>slQGnRI3 znVqSmzN3;c@Xym7=^rLZaKE~~fn|Y#=-+3%`x#x0zhuofUBE8OcKW)OV2Z2}udwse z5YhZ+yWg$JQxD(+wY_eigzj|LNeM=m)3cxEiq zvn||lj^7QqUYGv6B(&n+)s3-FXNR}7UHZtdfBFhr^*t>bZ>lcFZ4A_THho&jzeA7i z3x4<4S@rZ+dchyZ4EZ&nM`P9de_v_^40eDhP|#wlyX~m zlyY0RIra%`45;?gTfcf^r=-sF&9Z5CmdV@f{{LrN>EC&gyBH$mI{rPp&c1QK*Mqk_ zZr^wF?(Baily|vL{I%r-zE=5Uhnriz^%0Ve1FnM2XWJC4goWl15=O5b00et zTFoHk9li2eNGZ?cX|)c^`cK}=X4&3&oh^3KUd8Y1?eE$O<<_%$wQT&;Ag5vSLpANQ z!^OL?O9iEb*@V~nO}(d(7q!>s(6Wb7pPU@upR3y3cfYDHhwX~to~q(#XC*V+E$$&Q zQ&(92V73fA&UbVDU(=YSI={Mt?yBB>cf)ws!xcxbY~Aru__xQUuh#XZTF+f%yn4M^ zeoi-dEA~G$xJl-Xn@kY*>t(Gewq6}>dy2bzGoL%8A2&XCRA^uG-MDxjQLX%f4wIUg zr1qz7$1-~+{Nk_v{x+)l(2ML{iECdiT*YwFgL&eFCDKNoGp9S9dK@QQb@kA@*GO6MX-&W9j0smx zuJ#lPE4zL2;**d`a%&4eU7C~boBMoi?;@=@+3G3(+qaZ+UCueZ&Gj(!tOQxfZMo8t z+l+E%I`kTEeD}r{HddK}cwTYwYO~%HS1}6~dlxu;FM#ger7#A2)9UHsE$pUbMZ+MRuz^VHSb zH5b_#UT#v_Rm6VYYQN*gi|3x0T>U52$)l&syFDmZw3IJ-UEW1o%Y&M+pG`bUc0M-^ z%zC`W_@rC^q~?hW{Flaia5o)U64JP~KYHE9vv!M?w9AVI)O5viZEj92&<&7g`tEV^ z!u0i}H}^KpdCJ}rpY&uysY9?Cv&s96cjYnb-K|8@KUM8Duzt~d`rDLSKb)?-p6x&B z-TtGq7f9!P-D|L4=2O+o$BG#hi=DiEYdU3Y>iP?Hl&)(F81AS&_QmB-!LE7xl$_rz z7hmQ%p-f!vP&Hrb0r`eRd6gdqk)r&^HF?V(H}2fLxtLvKqr0qQAO&tU`c(L-t+M3 zrYv=(J$)C1a?E4*G#Nhp+a2@s;r66^8}~iwb9l1+sr74#dX?#N5j<=kIUm(td$nSF z;}ny;S9AYygtdnDdU1-}GSQ#9DtFN|wi}t7ru9!UdAgEezrj=abE>wlec2b`n-V))k`t!yeQp)iwe(x> z)1&$Za+{v1_m`SYJ(?ZM8$4hbvR3^Y2>w=F$)G z4*q@dpU!z+J~`p(cZKCU?e8p$wf4N}`T2G#iw$=W+ne9~>l7{11305|l1mu>o(@W% zc+NC)$xV-0Y&}cFC%&zgj(#byVE6OD%jxd>&74g9`KJ6VVymcW`?=ZA;&0OFvboCJ zIv$qKQCR63CGwl^z7C(+Mw_44_*LJlZCk5xJYDT=P-_JvE9Ym`-XGul>>HOa{Jbow zM7w(CWyKqtTx+GD1hHKdEj_)!C#F+{ul!8s+|9qN*g`VdBG>;8*k1W%uhD}!E*uNg z&&Y8(XbZ-de@KgKLNu$#M6PXB%Q-9PEC_t)3Bp4jg6Cr$5z`km#X zzrHouUwvHp_`E;&_vu?Ex4z%de^O=beA%1gs~=ps@U5+7+hogt-cuppE;t@E@48ZT zY?X(Aipadly?qf&Z$F$=-@w@ubk(~oWU}}9JN?JZZcDFBKWH&eZsqcWKb-!%C;ZC( z@v}Oi>%GRGA79m7qy7tT+wtEyA?Sy2`<=IQeWv)x#_G=X@%@*3?gPL5CigU#4_jxO zUku6GR>`ijaH;l2))|jgB~*CW*>v=D&VLuaX}|Yf$Bfl)zrApq`A=ohYDULfE^k^> z-ppZg$tm9P_2I`m=MMe(F=OUM_B$f_-3CY7BOk8y`xY&A!D@4TF7r*fFHUL4ZOS(J zOk|jCFK4fNORIS&i|mA%mUmnBFexvxDfzgpe(&r@|77NV)yOOAI_&cJ*V%pZnHysS zwuxWRV7-5ni|_LkX-BJs#rZea#n~A3i&qNB%+L34X>n2d*A{qpra@olcbR5suNE71 z!C49`*SNgTPManDEm*~zpZj;(BGV;}C*RN1H(Y#TZLmswh_>Ur)C6(+z434M&DBc% znZ3r*a%$(Z?>BNcHmUULmONf{@ReqY@0rG^lwBt8q-xxRl4G{a7TP|4;+q|1(H%J} zmd8JRrs1VilGn3p_qDA3wB5T?~sKNtVtrh@7OP#RzG*? zKyw$-D)m`A344JXduJ@c05mWI;fg4;jazPJ89_VY>i{r|$38g_hJEaxdG{AWA! z!Y~spcF&6(Ha2(Mcek7QY`-W~X<4Ws9=c-p6y`H0CO9i{T>UM;WVAy$!SYGvM=diZ z-ju(KwlIfGkoP<|S`2TnlXb% zKW)v_$m9=omhpRTi7YG#n*07^q<5}~a#Pe|QD4W7!ZxnZOC>DJx3a1W&5pbsk~XdE z$HlPBnc0h1OnCI3&*sEyF-h5!Wy{q}d{(NzPCS_QZ{wVgQIe83pMMJ2_4MT>-kFzO z+w>Zm#4fzucEwdvY3kD6@*@8&H_lv$vEepZAHK8L^VY1OS%&F-!3sIeCc7g;kFPE0 z%?i|(+tsvceb4tI!&yuf*@nB;wO;z#8g#5w`laQwy%FNuFD5ZXMxOQRciXZc;ihE5 ztL(QQ)WU6Dmh|P<-S27 z17ZEfS2(xYemHn!d4czd(A+s;~SJjq$O4@j~5B~zo4kh-nhc-gRRYvd2?R=)Xcw^ zvDwJFo3FEX+3MqOjpi*YTYe1Z@0Ztf2JPny=cI`vhI=(&+-*^;u}}8O$pb{ z=UQ!{>y*`Nv$xew|Ks{gCY1{{FRDFTr)~MR)n%UWG?Qt(8h(b?TAH`_m6+>u-b^+Q zm;RX0YBp8!&My9)*On*nN8A$e*|hiCs*f*U^XP2(S|+*SoWOfkY15a-R%}SlKa(u& z=XohZ?3sC+;i;ub*N;tEsnELhYq_`0ZO%zcmO0##-|)fyz4n*mWewiKr!$wYzBTt- zK)kAyp~dvMryX3o>+gJ@DDwT`w#tdxc1ii$F2(JB#8Y`#aBJlzZjY<`&;C8Ze^6YD zE9=~=R*n+)k|!_Q_D=hvpgu=%v(Umf?!j5}b}2P1>8g|R(fPmjOu?69C;HylEIf1I z+{C_E`){u|%?LBOZLVN)UwTFQ*+r8VWO#er{=isz?KpFo*;n)U=`pObTdG4Qn0Lqt zZpie0yPnTesMT#axy5F@mS8?hab-I1uXM8{54bQ?ZLgf1rN#@pF6SX=9TL%CQD7P zN4@C_N#UBaF~%!Uxy$*+rPY}eym=HuUKCi{?h`Nn!mX{vylsYdveAM28i9Q`gDTk; zHkTUo9oBM9ENWeGV6~%y%lyRY%q;&*JZDeZ&$7W{v-9ycj%+#4I)mrle8#3YW47}P znTgy6JM#|~ygq36YO>BR%U;LuB(9`W6MD{`J-vL|ldSD#+D=i4f4Y~nZGM#I+531= z^1+E%KXL!n1^bn6@3g&e)!TCKs&ao-H`&-5lkU!z z(OQ4*D@%H~U6#$lh>1~q)>Ooo?VcZ3Z5Gt+u%>dN>7ItQg>|8kpLc2dsQeNrVp$Np z+;SOrPUDNjPU}7=->W@KWRG_=x)eT})%TpE`BxU_;mdNStNK@5X1BM|YmAdCUB|QF ze!vC8i%S#T0{hUxx^3I&)1mubRzSx&OM+{fXPd`gFSP{vWMJs!V>s}6|Fl!}oCzL} z&&H;5ey_gVa`NB5eT+;j;fj|!zB;RZWnaRSsL-*2LEy+Lk-AA1lR1Tpr>h%D{Z30+ z$o4fWX@`jEB(KSg3lm)*{QC3hSHS6$%6&Ca_pIxKy*uLjYqdB#ovY;2^UAKbzwf?( z`uMeN{nxK2NjSW`$1`2@kdy5a>3G#gr{2BPbv)?Y`K3WpFRc4$ma3th@|!m9Q+bR6 z{#z`r=(5IL>X6R4!+KQzNj1N!&CiX@-iNJY4~8CRTRd@(k4LdwZ+c0YD`=)JMn-kJO5!lsXk+a5SxU){B#lDmCH<2tc-E51zdk4?0X zuvg`>$<+@sx^eD4P79_X!%)|D}7jXV<;-*mw&?vPfQo(a!g>57%Y z$EJU=iMrI|`8L-#A$sy(nI2aDtJgo5dQWqk$F|{1$>K%%cl%d3>sde3;Sj%NRT?VY zt7x6OCg_UrmG#P7B~H0@B)rrr*fI50-eT8Ay?ype%I;(a*{m%{nB5`AYPnufuQJ3u zEBU)lsK>;sz26Pibsr16m=rYGVROHy#wMkM2~X}B6}rnPGzMD)X!LFT;B)oI$pfeF zuAD7C@ejNI>a?v*kvh6-Oy;s?JD=UPM1N_~omqR9YaTtPu>G9C>GL;B3x7}gJlEf4 zj?eY@60^R^Y|0*Ij{DT}oO4W2;O1V}c>7hzRHm#K%a+<--7!;FdFO_8?=}haYEGW@ z$>kbz`9VI(oxjg5lFysBYPp92Ho)B&!{c%RSHJ4p1PtW>#mY(ikU@Rv8d94}WW!>+0{+-Sac)^oXYH#;O zJ!MAQ>>1WJBANv%YxCaAhzNi7Ezj7zXd!Q8-mID8`@iJWZ2FmBvp1Ema;<^7I@}HTq*+fQX+c)n%-!WG_ zGhO1(q4wC_s=FVqk-BxGyXV=@1#3;*Px~LVY@Pkrs`AT)znxOOp%S_;eb4KDoNZ=s zY#QtI#uFh;lWt9#cDnjW;H7ihri!goy8Gl4%UQQPDTz?Av|Sl)xo>AZ71*x!Jo46+ zkch&Nf13^WJ$YqhoBgzIhTyL{OMk|BkJ2{zIUUvPJ?YU>w5MbDE~%+!G=Al9>+MnR z6L`0qKXE62(3GUk1t!zxvMp+NnCTrmcKgltU;Fj_^Cw`YBThb zEq=fHBAA$(y*b3;-_50kRfV5yeTw~gPiZaG4AOVke;(X>?n{}E#K-2;=ALamb8W*I zc&1cd`1Z6qs^FPzkX*+1>a!DNHojJ7zxC?!hEt!sA7&nRwh2GlZ7#L&R)6CH1IZa} zJu9zSdoDN`Z&j;kD>!#?(btyC>XN0~Tok!7R^43qY}2wo->1H>-qTrqC5R!=s?O8% z<&3&TVztrN=XGSTwM@C*GQIk;%c~@I0UsUC>Kl^|ul+LRSospQcA;aR9xsk&zUvTI z-aW0|{`{eBwHqAPu1w;L{&=*=Ezd%^<(_2vr#ll}7H+$B&MOeZndk< z*}-5+()Lx(23tIy%I(n(+A5pU5nu1|>Q9X67W=nlFLtT_e6zoW&57@wUi3L9?aFLF zJ$3e}T|4SOy9Sf-rTJ4Mc4c+S80%jH((`g_vbk}bV_ynNTx+|<50d&%sm zO0#ok;_GUoJj4^<`Re*Sw={cPT|VKMeyOIH{FWt~_H(Y(yt!@i&&t<-U;f;^R`O3q z=chB@uX4}x@qL*4xU_4@8kUGXUtRU*W?tUrbtlt#d)eXcgH|>fUzlHQcdt|3^K#OU zW#wJRS8fzxnBCv(q!PPHv3R2R*IxT=xAYXx_ZuAfr^Jz*r@}vHN34fprSrEt54*26 zDD($BKI+ytVNTA{JIvkHa{B~#`3L-peX*|Kf9<8k@nx!Qg(1ztQx)!cOZ7jE+&)ou zgM9Z6xmCf=*QR#JuR8H(fB3h$Io~<;c<&zRDfklqEj#*Q{_30WAMH}(e`8cO^`xc< z-@O+LOQQ1FCcDLZM9I9@kk$G(W$(G(=H*rRQfJ zv0PbY@!ZYd(A>5)h`;D*rp=Rpla?}s zGMTvU1ly!r+tzqFPSO%$S$Wek=W@jdj`WVbzIo=!H`u}sdkl^VZ+jb5vbD!{s6c z8@HF9J{$CTt<4>W4@@=F@@i^SP91nYt!k}BfRUmE|@Ci|pcvEDxI^}@J5nW-}mhFq_B#O*fko|i!6?xf#m zEEM&Ua@E$fSWf>meSzIWw>zhH794e+?i4TqV!y4SbllZyXD*6mLF;P`F%q&JiKLu(5Hj;5}2Ta)Pc_S+%DBl1@?mdNqU zEwXqN`Du}k%_*(PR!>ZhcnWmfTl%lr%;o3+JfcOV7W;e#Ptl_s=G! z&-dMZDpOO`aAbD9!{dx=3zB6fuhjUdHsukc?ajNcweROI{klKv@%^tNFEx)f@<=f- z$bGe+e(k@ne<+Wv&;R|s#!}bnf7mU%|2c(C{WC*iL5-sU=Vkp4Lv|l)15XAg2Vw4} z6!wg6+sVm7XTF@wNOwHALVbx>Xm0e8DNajYNn9;bbaHf6uHGAWeO6!j1HSd!Z$|Am zF7Q2D`B^&cSx>0c+b7T3#O>bS6TZLae(c&acJuS4Up1IGE63Q1Gn>k7zVM}@lbP91 zPO0F4pG-=kdAeM8qVo2AKYmnX-ubkCyGq?p_QVPs_d_#wu6*+6bNR6s-G4T070>@y zW&5IXJq}EX-OU^*H>n_X-Tdyv zIWjGYXZ+-575w2YpSZE|9?x=SyV$AhFDhb>9}@UMlUxo-*xV}m^Jpi7JKUcH8gzlm}t14N4$3P-Ww0H zR^E&_cqi|QalxfDFNxDVJEkO`%RRGi{(*+&NMYqCo860kNcv`N*~W6DXDi=)IkS}x&77|5uH+@poAq;D?^C|iL~FM|<$Ou^ zDBs)vQr++FEtPy76LzBeWW@p7r%H#*58caIEdO@h-f7yOg{)@wR9@4VlJMyK|LmB} z3`UQAoccwH`ic zDVsc(&I?CVO05%*nN}xrvgGgW`14F<=94OuTJa{Sol(n#V%JVj@f7?0^2+BM8k#y8 z-769Wo67xnu4?Cubls|6JZH0ktlWOTjp32gg@dF1+-ozbjNvd{=6K&aJZSgnge2i9 zUGfW=XNBB;Y@^ezniuhTvs9v-@QqD{0SDY-_cLr3^C|trAeO#0Ba|W9bkou6KV#22 zhBJK0_Bz1O9%z?0Z8hKNoFk$E%C8!gKg*b1Inj8_-{of ztQOqm^~Caw=}XZaOJq`&+f@%lhlDtMHDX$DPD}YCW1H3K@|BEh`F$G7Jirie^X$&mV5 zxlr%IMRRZN+`V6S+B`0?Kkj~K$HTMISE^QDK0nLGQYckoYV*A-Tn;;|9+(Q{EU{(E z3|13Aq48~%zW0h-2216&ug>XI4gIcN5c@;&sF32vGna)}qgS7ldUNSfo7)x}$KcGY z6Bi$ub!0vB-+q7j-rj2}A6EaVTpwmOPhW1H{(|}Xi{|Nj)$Ml===`14FLOOdXZP;b zqU|wxIp({|ZpU<7v5#CW>TI{HZvTRd%cVSGqZ~Hmdq3Ix{g8=F+=YOv?B4S}-}ut^ zJlCwWE#hl+_UdV-6IMBaj2~XX_#UHEha7XF>il4r7 zEqnI)FXdQnwc%e#<%E^@man|L>(;DyskOy%Wy!g3iqaNKB)s0;{P=d0`t<)Fznv~V zz_{ehspKP)MOObAI-j0popkOtr;WO<{2uGv>7Ualzg1*6i(B*Mo!w5uXB!2@!Ym3c zu0J`r#ea=S(#r*>*(7eqU8|hteO`49hoh{9p8q74xlUI$EH9cX5%%zo<@~4li*nvN z$i%J)U9icw{kOZCyn5~~wn-k$Ac`w6Z^THB?v%C*Z^1QTCBwPE`G+5UfR>}Mw2dOIh9d$nziXJ@T{@m2misvqyltiQAVRF(Zk zzY|Gzc2^R={`elYY~r=T1J7Fa&3bkFdh0vp0=9L6aqBw2mVa~j*d@+BY3I>nM_wy5 zBp!3S^zxBd-;?*nr_!AH{Mcu>mpdkvn^xA%xubLy#MWcK{Ipj&yx%aXGiY6{ zgj|0vcj&HXk5X2;MeM3RepEC!Cu3v$o}fn$B+4%phWM)cF~r5M5#BIG@@-B`7+Zb% z?(O1Le+0Ca)-oyWHhyv>bVX`(${A-{#<&Z%dPXn%O84EUHL{=YcISel_pOdi8{Y?a z@;03e`2OdmPVs?t0wPm;LU*j3+mo!e)Y+_X@dwwZFM0QWmDJzK-!qM?ewtXhlzP9B zp<&gkrzsb1Oid`xJu%ax+5heXVcA%3nMyIs=UPr3nZFlb<#g@1dDYckcd>tQV)^tG z%abLohq|6Ja2sw-{Iu-s@zZI`&RC>wdhI%K6VI>G8CJ8*RVP*6nlJFR`pPYPq0ga_ zMUkp*bsV1$xCOT*CeJL2PO7k&@Gxy1(+ngT zuKHh^&)a=w;+~MLn{rf}y1rFDS9A@Ut@5G!_%ekoZ?Q*bx$|RZ?Yj3}_-r+IM7Yq~ zx|8lgf4sWh`6jzRI}n!lAar)ozpmTgF1@PMT2VApa?it4FZg49e0#5NtnCC9vc(zdnK);H;7x@seTDa8)Gmf7H|#V>(&{c^5@mAa-xMOF8LJbJrx zHn02TOUt=kn9c<6|J)***nL*&(W>d&9Dho+Csg8yZ#4cWidHe%g4G`L59x3vHR}Y%SBco>;dX+wCmrv!CIZ;Zp_i?a59P z*YCW=tLoNbSd@Ezr<9^W;$&qbyRaL7x9IlVfBDQ)KjXoo*?y5`TaSFq>bxNT?a0lr z2i!96k8pi{bMRExy@<`rxz1icetx-;)AYm(eyVfUmDJwu*rakPW9_WIwQug6*jY4d zu1rMbRGzA=HEf=Sv!tFZHB6~h-*8~LLgdGm$$z;cHRhINn6>_0Ww+(PTITh%b)qWZ|hU<)jxj{u>I7k=k+@(7$4N{EC2ET>62x0ZQJkp^t&ktWN++H8fpKx2CvBGKMpNy@a)nuPsoYeX7)TUGVa-v}s zMUI;vPJ6m?>$b>g@yZ8H`7R!w82RejO0nyEdq011UnaNTRpVIdPLp#rNmKhD@pvYS zr?l=nTlz-mYSPT##XEPsO5G}dMdZc4m5*Z9On)Wt;?AW#z4<0bXC(`D@aFr@j{bAT zD}BM;bNlVX>#9q3aBZobvm=>nj!?rcr>6NqA6G9i(m8Rps;PT^(4tJi$1)QF{$J-f z760*%^`)ijM1H-fFIvRm!NBnEKlhTE|EB&~k-IXvdr{5lZw*T?J(@m+C(Mp=Hu#D2nO>7t__8qJyX2bp#XS}VY@1~lbX4D=O6Qx!?j}5+l_wy8)gsE|Sr7!GwP6n>A4cq?hb{T)*83W#W)wu`G8F!y2=$wq7C2c2H^@sjp>Yo+N8yc~^h2!l?vtF%>MpJVa%UwIAz?t2%)hDby z*0aXqWxx5%Q_JIX3nL6(ALPX9lv!gqlUvt)vxFQZqF!PetP#AcU!)dXBV(s^B` z?%uD?pihUVNFKk|P&W12M@8$)QktpNl?=?xLHDk9<}6rn+HS9??XpXno~wLKrkRKx zpR&T`yT!F5OoGWRnXeLM&P;xnb-L7Ihh~q)!n#!t9WI{@{5W;Xn)iB2VRnf}1zl%w zp9xH9*?7w_eWzW~GZE(SyNaprr|Rji`gyWcKZxVzM#q|#(Bm@BzTImVr9I5^aW9>E zStOf9%>4a=kSEq39Hhi^ENvM0W=g4@@Ty;{m!+fn@sQi93EW!ueYTe!Q zH@nTA?t1sSsA!h8rrRaa_zPSSk7`d9@W!#l*R_~ezdrHT&{rxbo~ivL+v;VmeJ>eo zmCsCwNIom^H8457e=dur_0*8^)2n!&%<%tu?ekHoU3oul$y62nnRkqB#gc=``9He+ zuP$9Q!B6Y`q)Se$mt2l)W?i%JYruI0r&kjdq+%u>df}xy#q8AQC86aPD@+rLPu`m5 z?&GgoU>7{6p+4VK^uXk9sBegjet?LjoMKb`mvsdvwS$Zo z33;5KusHO_Bg6RcEmjKINqf5bk`r`#S`HWn8qB@s_N07^L*kl4c2x$;;vaCEP5gD@ z=ezZDcdAcVyMyUgl_>Yz;<$q|r&t&F-nbCs+^x6ce#3FEYB7G)gAlsEB}GorVqhOzPsLOUa6;N({f*C^|wu# zyH!@ECT;6fWBgWUP_m^*)wsi5T3y)Rm`|NSWa_NvNtI_OZkdx=bMko0D$5N1@aw0a z$lDw`uc6`QTpnfqox|(S6<}ml=&v8gU7z;9o&VSB?9Fx;0bexW((g0im3*Zvhj(>^|`_*}vNW&b-lvpbBBUYY!!@a9}! zv{J>o%csk;nfDxAxAFAMOB2_J23~66HrTRF6bDabN#k z;Njg$j|yCcE5EGEpQ~`YRP4{YdZC5KzCJk^QEr%UJY(Z8zpaYlJC5&tbvtdvIkQAJ z&U1HfefHk7V#UM-CmF@WCG{V+Ms9g?s83h1?4iVt@Rmc*ylmndk1Xt8R&q%%JjeLF z`JKlnT_&H*D`Q}8bvt}GVy&@3pJ8T+#Ni2_rr$oWuZ2(g&z7J&dxEp-gn0c-N^&bT z`LDd&w&loy#rer%W!GoVp1EIccf^!gVZ~3)uA8b)U|H?ZrQBcqb<$4rgpTDtl}}is zVl-y*duiQxnLcY(Z@gBiPp$c@vX+3&$CZQr_3hCyHuSmB#dt?gXeXCqCU^NY2G>by z)7Ge*OgS6#!karzAmh)WGXm8OWrzNoeVTeKAx< z^0A0Qm3_Ch>{2h8>|L(kc-M@d_cx&Wq&3FG^B>(&0*V<8KA#rQw zA8GENzw_qG{N&V3aBO)M;r>-r@Ikr9p5wJL0&)FEtP~k%l>7>wd1mE>t)|Y#Pg4K3 z*O#Qfx!rN+DEr!FbHjhF+*8vNlkk5-UzpKC9^O2WQ!3lf7~N-{+i97zb20z9u2~Y1 z?)^vhYAn1E8opJOZ}zmdjyKo5kM0w`^U3^f#&a>R+^d%Y<@UKrdd{%SkJ}l3K&hoN zV%>G#_g8muhn{o$VWqk#bpEt}8wclo`#&RY-noEJ9}V-LdR|}fZSzBhMxHQ}|D2l@ zRjQqA*>^v8ntN%E=Hv738-9Mh!07bBg8LWC%UZ2_&FdxAB4f`~Y-Se_S+|oz@R;IN zh5!5q{&T&)&$xZj$458*DRU`q_&-(ohke85zud8+xs@r7Q`TS7-OhCPa73BNk%MBg zCKoh1oK)RT?X7Nzzwn8B+0Q`f=(H~@_UXS{zr1$>o7=@dwfEUvs($ZfGA`KMTziOn zQ{M5LbJXqBWBC2IbH89XCb#;bj8C=COM4}52PaA4`XgG4wynxpWyp6t+&biGY1i3M z=a#<4zMQkwX$jq838zD4*1g)g^lzfX`>!*_(|0})Y<3ttao=tlnongMYz2d3hmbH$jTJqASC~W<5%ll=2ZdpzJ^73?i=`e!{c8?_xxDCyens0HdDn&Dag=eJ%hi(4yLD~F*kn9krrB) zx99@r>>tb6*4WPLnfkVIL+X|4wrPu=C0<@!owZD>YZJHh&0d8W??jwenq!>n(|w{-d}E=y5+zjuNiZBr@7Q7PBgqC^{F-W zn}Eip5_7%f>6dzMU8pNJx^m28+PbTcFUV*cpIJRY@^@af-zpow)k>y5`tc5BqSHJ~ z-bAWB`INfm%*w0Yn-*N!*k|Xic;VqD*T|9_tEO{h1WvH$oL$@3hS>m?%Z{$H^EP5m54%bEX{ zuGiTY$2UVz?TY*uy=_zIX@ z?+M?k?m72l>cSxTHTv1lOcm{4M;e7y^1ji}y_mXA=*$GMCASak5cuMqT`2^!M zVV3tZufLw~`j6*Qy|;ne&PT7YeKcv&Co|dW#}&WZh3oOI$xy%bY@77S#npF8E3>XQ zg~!J%KHu}>=l6M^rF@)%%RD@4=#tT!B)e$xs`&pm4Znql z{Lh_u-nskjNqNtZW@ZMD|NS4oZ7Nw1{^Ppcw)(Znmp7IC5I^_-YC-?K!F_v7 zOz#*xv0fH6hfJ62GduKz(M$G*@{N)d7Iv?IBSIpbt6Z`YZA+h&Ep6!0 zoZa$7_?vCR1jW=Dv*JR}d$}20REpm6{1$tXR(hiKRjJIUvy)d=KJm{I4Yv9{U+&`b z=O5-?+T^WJ#tB+qh>!)w%MIqmY7e>N$4OJYNsZBxax;HK#YkvK z^Ik&ub*@!Twkh}L1TSDbQ5@2uRMNS)`ggpa{KLCTy9}aLZV5e*TJ#~=bKRDHuMcgX zSc~so4SLGx-&v}em7~A#=khyD+zr2-qpJJnw$LEt{mlYikY~6n!#q<4wb%yXNL}&Ii6;-?DteyD0^IRHJ{_l zBGb>;F5f*AW-fK#SJvr(NYVBnaf{1|;R}v3XLoh(W7WTSd5xXz|1atFTNmxWEuO{1 z@!61vp~322{k|tp-hW$q@YJDGtMp$zO#0O>J!3`0tyxyP|9mX^ze$(ZLw<_tnfLd$ zuFMopb8-?o;KEYMI^!G*gVVvq6+)BP#2kbiB$^xBc!XZ8(GCBu#CWUL@n_maZO7ZQ zQXlXtW@vbdTwL9tzWUiUspz=3T3csHMPH5BKi5-uyW5$fR`$np*G+#Xy??I#{N2}g z@>eV<+G4)jHJL4E)oT^^y80itqZulGRJZ@wu)()I*7=*}p1r0Olh6N%|KsP%@h6X+ zqr&}e<@W6o9}4-mAH4WvM)j1c`6tW&9qvt?C$})Ml7IV!in{cq4Rx9e_NTvF(ex*S z|Hj)*$*hjm{drPv?H*R$RrYZ4`y-BjzZd%j?Ea;9A#gWa`K5r}zw&=d>;C0U z{Mz@e?o>^R+xm)ojgIwcuA9w|oqM}NHO%Qd+akkU?Yo-{_m?GE-#;j-DF1nOjTV2o zQSHQI<=3y?=9DuzP|M7k;&Zlg$7-PkjyBON{%zW@J>B!p*5xZzU4wW(tWYjr=`cBb zW2^M45N^X&59fX^$P)Y@+{MLw%Q@GnSHwG2ZT)nG3|f{pGTBgxVvcGIqucRjxD$rben% z1XF%~M6q*{nTRNBlg*@;&6(=^ZyB)|rMbmzlD9=h|?~ z{YNwQC>`(LSagblR>EhFOJq|aw7)0(mJj?M|!tEz{YZ+{Hf z%iz!WIw0^n1IHDOtgA=!?d?jwF4KC&9vC)cfkR zNc*hr?$1AKr)bICb^O`%%a9|tIPjjvQog7T#R;ZmyPg!)Su#HP=jAk^w`QBzY{qq4 z4lhdz+`e+-9kVmNCylIb>78F&v1PAP)H#g>CI%9`2Ml$8t~wPlcPK?%ez!WwKhBPsOp$xsIdo(Fd5$Kwf+_CJtTCVTGU1mHrUw0;C2yD)g_t{z{lQs2~vvb(iu5AUy+5G0m za-UiT++5fn8r3TPUsh(-*B;G>RE=otEUg@YMCDnTji@%*nBjaL-geRXtk}2Rd-*SwYyN|Y}x63 zZV@IHr)3XR%gVj`^+mH!{5`9H_lL!v7BMdmrmp?M*{`SAxs$8;#C8>@=nhlvQ+t?u ziyoxM8uOPfa+S)f@ZLIEN#o@@FXg3ovh=TLF4pKxD9K0?_Ii5gQ1R5PyORvI<tS1=zGte&)L*O9-)`8q zTlntN>XQ=9*F)w7?O!GL@L$AQtyP*cwHedY#WXf4864pK(<7>q?)hoOls#{l=AUnk zTpzXJgyUvk;lB$6ziheB_9Wu`&2ObU{y7#4?+KXSwd~|sfs^6dIVU%KYZf}ome8A~ z+4$z=+@+5kmnFR}WKL-P7*O%W#6jYNNq@3L_r~)=98NFA4DJ7!-TNYulUQVbFlXW3F8E-?8kFE8=1ebTF}qDS)P`%|Jn zD^(gc?V5ZrUL^>kGwtnSC)@OhCwjL7Ma-!~%Rqp4XIWvmh?Z_05DP4Xp zLfu2&W(JRQKcBm--4f53rIw3cvM%_4=km)*&bG~a>rV$gyrU=c_3WpgU0bcE2yTm+ zaN_6}>p1O~Cq9=Po^wd@%d*tj^Vj^iz-^K6LhH?`d2FAXHf!EhT+X>#?Z|^LW8UuN z>eV`r0=^1c&we)bpn&{Y!SbtbnOngvN zy(#N6sV&jiLOC{wzqTjt@5}SgguZW$to6?PFLNtTIq|-!Vy9 zBTCd_-{hwrIM7n zYVYw)3-7(qHZ+*EwBeR*uBc_0u(8%*qOGjU z@(&-^a-|iw^_yNSaFOh4wM<&+&XL@aywYT^)6{dPW_~Jf{G>S9kHaDF**9bbF=pDeBzL6nLvye-*X}RY# zS&K-atIK?@7aq-w480|I=)TwFhwpV}E!T}%^|Nbg+Rv5KpXasTN*9?U=P&Nb7q7T~ zszr1B=7QsP%Y5zKyeFQz7H-0Mn(vieo=b_J?2jd`(%)~{e_-0#bp76^Lnhs)CRch* zzq565UTjpRY_9jQbLHQEIGj12SY*vmm$KrbI7A1$un3US5}SarL8IiPvrAAJS`=ML&7BE4L_x@qx<3>Xa`Yzmk-s zJ{^p7JiMbvq!*ylV%USMYRkwfWTC&x|_^8M_aKpNVGkbiO#5eLHr|C`#u)|MVyJA2uvG#o*lVvR*an ztk$+q+*}cRmMsfUIuQ|I_IpF3ETd0hwe*uRlbf@|PUjv;?q~K2`@w9Q5`B1r?fVJ+ zI~NNzi|O1u|LDffxLF>a+b_tr&$**-seYT^COp=5U!D8~wiDSNN=ukCl^YLUxG=Fz zsnD%$(qX>LCo405GY0l3b}S1#b8m^tqzw@%3(|{%x+_3BIz|R=&RYLHgI3 zHx(8i*B^d=>%clIX`j5wuE%80E;*_l9Tn4eAnS=2&xc8-yMsg8!Ve0peLHtCyUMLg{7j!XqNeNvm0$^g}uouHlu-X4$tFj@Snp z*i3xEyD3hgBr5KUQU0;z|oNgiV^;{RX&W_Pn6ShC-%Xv^=RsXE7@`H4L&-0FfS2#ZH2)C@O{ktf2 z1+)7G&KHYI0|d?m7s>h^>}|XencVXIY0-gaNtT|Lb|=p@XzY3RK_X5gdFLGdu()%< z|6e-Aid3eg%t=wMci!Bxpzi(Ib4xr9`%Y{soV4}ck=1byr^IIt(@W2 zc~1Ri1$XvUrArsxLiC=3QUH*J$gU`p>s6~Q%swbZ@sQZ+3mest@dr@QPQnl`92|dmEQOo*RSBrT@ zmiyfmTRHRCxq`U2sd-GyHv`y9;*}q+m|fB$n;aee*W9J<(+1m#^KVPs?VSH9YCXsI zKijHX+s(ICt9X`jH+N0bop*koP2AFk@AuVf{LR$oR(O2Qc-!=NO--um z-Loy?S2XM{_^4{kRubxOWSueFqu65JmP<_g7TaEp;Gd|sg7OuCL z+P$*!p7XP--{M71oH6}CJX!Ja-KiX zy;{ZnY=v8lzaY%V)?RW19xcm{WXng#c^kD==&{%tXO5?k7&9e+gh zLwiq&>I?C$KHpaQU&}Mi;pc4PxWD1H>GuSF;3s)xYbvfss-~4aqI*V1U@Ba$7Z}YfY{p0VB~}kH`MKl&b-Z^U=W-s{yiT)Gs;h48hOS4kJyGk=T@O5KGqF@Jww!zS zp7d4hcaoX>?ytDAIsa>QOz?jGsO9{A?;ofYrRrupopvMKtSbHbH{rym*It)v{MUP> z{^^wL&v2glpC&QRo-bZde%VE@5`LTmbs>m2UAlRd~ib${sgm4{EH2K&b)A7%;J{yg%tijmXXOXd@$l;3hb&_2A5 z|7f-6#d$)1-kJBTQc({HKU1gres$<`Y-oVPOGN*&W)-mDH&2-iRlr3E?%peJdb{`xG3kptui&s{`1`fQ}%QJ^0X|- z+$mwPx2)o+YkvN;58rlGvhLY=T)8c~?@i|)xf<<`opQXjrr)PDs2E@M__Jb7wArDh z{$Cwet$WKAXjk^aEA;Q5eT>^zE|t^CER~cDx7n$a>SU+9`p31)As_wB)}(#0E4cLM z@~*3nxo?cwJL8T`n^}7B`==LqU%l2;%ka$5{_$=$uj&!=+^{#BEnlQx)^;zKSh!bk zPTCHMjIw37b@G(hJ{HI-|6Q}v$DE`6L0Yh0^v{R)zjytga<|^A^z*W~tAc;@GykdP zcm8h;xoi8!|50nRGWWdx zeRTS?iw6AfiRYjQYOT>tFWAPkYOI^sUJW?wB+NzI9R> z(-!?+yr%o`Pv+e_r?E}Yn`Ex6=lo^W(G@wJi;tPUm%4N(o^{uil*gu>At?f}nQEq7 z>+G5B4mdn{^2vu^IcC}ti+gOxQ!CfrcFkDOyz_;i2e+`}HQt)*hB_Z)=FT&<*y(GS zZZc(~?QhR}lO|c7z4-C|I?Htp>X%-*$q#IvhIOwfQhw2NP$(|2 z=xs5lwprNe&7}uDeFXMrygFr+dSdFeH4}U5(iF2pc5Gr(Ha9hln`hS-BY1w5l|s3k zX6zj!?QWyvN_%>;HoVZ@;nXP-d)oh%#icnC&qHQe>6V<>`!L&a?bM6GfxlGe`|L09 z(YJlra_eYO@MM|IF zop(*(^g)-q3eR4cu@za(GMu$vq3L>LjhOtWmp_-<81D0K@5)Ku78|&5a@f(S$Kv?c z@y-iAeN@q0^6J*}hKc*nSDjpS<23K4iL>`}JDu0RneXZ%cTh!Z=D~%N>!yoe7SLO9 z_|=L_g5D`R*LSyfe*IPJ`g+4^%^fmjk3ajJem%>$;H2v|rI#lr|NMETe!1bag>AgT z4FB&ca{k$1HQQbx#!KG!z|_X&k9)Qp*%;z-H}u`2Frk-=WB*M})3z5(C_Y_%uAIYR z!H<`He~m-?*xMy$Utmw_N~-#!vN+SwqIS~h#MP0zrWBvFZTtV0>tzVTiGsD?jdgBZ zd4JD{Kk=~bhN?ZL!ms2E&wLer_ikFX;2RZzNftMc&PuEE+WLa|`xb^gL?n=rn>56NXhiOP$#e^fdADq$%r&fYQc&ZkZ0n^w$E{mhdyF-j|3;nktb zNfGiZANbz8Zf()st?*Q+(Nq1&ntOK{Efxf`J011g5j)Q!VrJC6UmT~eYJ_H}{$pPz z^M}hXPxt97v4g73{Xz$(wK2?k*6voa>}L8EpLd<#mx(Q^@^!ad?^N{f1WU7ppx-)w z+a0cZUo1MKpf*WeV14kCmFrGSJ)wI4u}IEL@e7R6$1+>@Wm_e@URe~Zx9hv}lf(Ak zg|@%4+mhw~rzAt=&<3rW4U)AG41Q%^q&6k&-?<$E z0eN%%)=lq zXz!?4yL|Heu=*`J=g%k#37?#$D;KSiY5c8vPh{!c&C6eipMQK~V#&t5?2`v&qPMWs zDO5bXV)62Qw^(b)_b0Nx%SB5y&8Ilrw<%hu(qk~!LFel`9h-)pjcpIY0dP9{T;hx!C{r40H;fep!}FtX9t!Gd&;Y8~HXbJ7n2+d->((yezZZHmUcOpTq-`?7W;CdLf!--$RqH zhL}XlG5=a-s%U?>fHQ8*QH#Wq>ML&XB`R%+IqO32`YYf2I8ixGFX>RpM3yLrH z<+pa@f?Hl`KQc=%y4l*wh$(vozq?m|JFtss!cE=&i+QWf+72C)e_`Hfe&o^3hhq0? z*iMQX7T2xL^k3D`b1+kr%=Zk%8;oxrWtR1e)jbFg@sx@#2`JWZ7I~MtNpZ_s zpH1hlDDN-}3tR7_B|lvtSSfJT`KK!nvr5$!TP*oHqt4m$_l#HD{JE#A+?W3RH)3VS znh$KAUVD6=&O9xAV5Knsao6W^-z@5~{_Ai3zr5)G@>_@9C%z5-yW9Esf0x*g_mB7d z7rm@uadUUntUvcxM7c)3WMtf;Q=0sk`K#B*tZ#qTnVpD8NfC7P+In#%@0=^!9&Mbk za?*9)dEpoQkJe^J-2TeZI{o+ClX+#&IOFB*^CxUO`0K{Bh!)#RVw!s5uYaEHVrolY z#F^>iXZ-X)c7>t(BSqfL1Z_{Fwuj9dJ2!LP^=nu~)jhzi!*P>fZtV^3!i#Pmu31=RGm~g9JZ+&<)wM*L&8s z`riI=t1fD5@fB~m^6k-`Z1yR&ZVS(DQTx7RU&yAY%1v_pOXoa@@!hblME>^5rYGwT ztmEQTShI9VMCie{Z?3FV?duN9&ArPUV-;{PHh1sIS7`}6-14#WZmqeoIezIBF_+hz zChp5~D{_n3blBob?g>7Au9>o(d*ze$%}df_LcH>GmL9O_WWAF8c3s}$V&-cc2Loi? zyKE0%+!=jfwN{?i>u=XZx;3n?B>axOzV7;yBa=6OHhW-y_?Drz-&fBCTyxi?uUi%r zoE>;&U47`UTgA6|pP85Fy{P&BZt9GNv#a=C>e!kY=d&_fd*7{3IInWF={>K`L(42% zhZ{o2lb=_a?N;5eRWc_tB=>98eHC^4zlUBH+v*1U+Is%pbJJ{l{L{3XFaDpC=rX<4 zq1vdLyzn8X%>f00xnieoGD{oytxo1x-n8_SJN85?h$yxcxb{La#!jOva1-Tt!%pKyHZ zU?{%JVvU2uzWS=XQ_}>r)Li5L92D5OE#lY%Yaw&uyXjuCft(eDH?E{?-TH2HPW-`7R4gi1s*fUH)fp#t#o0-Oddk*#A3RQ;&OM zyT)(QKfAZmzshWW-`nB;Vei-cU-R}|s(yQRNtoyM9oha%PujkDCAe>n;&Y`7(epC@ zTyEHKe8<6We7D*&zO_GFFH0r=_!wy;8FBVFQ6*#?EIpN7!&aEk1UiQLa6{emdj7 z%ZvVBzV`iNqn&C;V}s7mhK48q>bHEYkN=n9D7`|)^z+;=CbQH}G;FB$Ts!Gdoq^=q zMcd9C({%WIf_q|0*K1|hr4FpxQQKBUymRngdd|5seYMzLfu^XS-xpTq7n3Z?Y zD>i=JhPB6RzgfOa^l!PhKV!{Q`OmXop8R`m*TSFgsv?#a+@2^FS#kDh@vg&)SLSZH z_i0^6>*d`7a~~wF_qA>F(L?d3U*^jAhJi?JXO37vGRMp?1UWezr;N=G-0S zOXpi13_qn5c`9#*|J_gPI;VbG5%y9|?o+_0u-*y-TQ>C_eio6MRzgl!?C*3x`CD@F zj_bl#YP-Cq7Wwcm^|y7L|9{Ha^42oVb8GgR&snKscgRsLTQ@7XdcCJf7H_Sj>xV~Q z-*Ii-zqeQIhMna$XPvnor+DuDUcANAm?h`uMWNfq2ehATHZnMH*w{Yc#9`$x_nZUo za(#W`+^X<2qVt-TWmAUHhL5YAEB;z#&hO)5tQNQ&8nwsl%aO&o#R?PK({mecZYgSb z@av(N}+%U37Pn*P%7&dSycuS59@+m&Y7*X>`v!q=W@(}`F`r7KVLw%mwa z(qvz$b8T}@s>-)Kw-$@As`O<)*k+w7e;={`vG1gsCGm~vA2wV&B~{iE70n@E&%aR9 zpy#Hb?L=wyOK$v@(>Bgn>&a5?#$L;7*?#h|UF@?pi)UvRN}e^75}0%H!Rgr+?Wwtw z7PiUf&TdX?J#k9R>!8-MwXqr9_4&fTyQP)xEIJjDso?e~Ine0mbN}LF-@bO0nr?qk z#rbei#_7-R%{Yta{j5Azlr&}kzXxio%#xPa$FJ3@cPH$|T*bnswvtDQ@YZNdq42g|AGd=X*$wfNXJ8~0doz|*K zWib?+vvEW z`&+~}#9mo-Ei0|vfazyfX41#Q2`5FeIorD}Pqj-koJ!PqtmL+NLDz2XXTAHcSHuPE zEaX;kjb6FEC0%r4apyXS|g-g_q{Jj zyuEl?qxic`QcvW!+EnWl7I5U4@VS_1oj!Q%-2c^!R&BU-BViNgjTf>Vf?MR21y)Th z<(;zqeneEVl*Ziy=kG*BJuT4RliB-dNkRQo?_SP7)=`n%>N^x(zq@g8hUDRQAY3)ruX(DpESL@cz zLlf;TFn&%G)D?1XeD}z065G|&S+|aI-L_7BW_!aY=2cboy!#$CcawR!%sjL9e_p!p ztLeed37k=lPV3jzU15!EjB^W@?wT+)@3g^zjG~7eq5@sjg%j@oQoem;gZFFk;G%P@ zFRo&|eM_HZv;MjK#|vG4ZqM3c88(aY_5ovwt|<*yg&&G4-Bu6h|H}8tf6JS#6;9Ll z*|p3!VPZWJ|2Fy4qxVZKCVbe?RLF7R=q+}+NL95Nc{jbJ&z>|adXXPc-5R@1nrrgH zKMDP%rQepn3T!dmZlgJI?YVr*18fNy->rW=HhQ!DNJNOX?98tzeoqXu|8VALTFzR1 z@3qC<>lur-avv{@VqW&BVC#dN88PpV$?Gw3_fK5AeZ`a$o6nT^`*>b|k+nruv#{MO z;C_baw=271A8D0u@Yjr);xWs&t5N)M#D7B}pG6mY^8dPV_4H2J;kQL$(QlO}A2X&f zcI-*F%<9qob8_Zu3BzsYY>w_itjT;@$NmwU+H z#m@I(a_UBzIZK`76T?4#4Uy71yF_g1`R6lOQj2)(4Aknr+&j~Fs^^pSzNIx0A8MDs zKe2VsyOS3eT`CSPRl7Tf{ji*rz_Gm3d&+7OzJ2vQDf;hed1zMcs<*c%KKfOb_R3Nv z-~RlY-+rg7>oyhtHjrw)bp2G@oSrpDzrIk}Wp}_%&E>p+?}ruZvb1-n-=4!8I^|Qa zn)2c2+pC^th6tZtujt9iw(EKO3IANJy$AGPav1yEoO5~d+}+Z*+@dG)|@`^%va$2Yc__vtGrLVOO6EOPLs0-hQDnIsM?mYYXK$-n?+hn<7{iRAJNV zV=+-r_tGb&oE^Uou2NFES+KXL z{QCO1r-`@E;ePt^KXUR$_L@H`Go9^cB+r+(P}s5LdY<2f7jkp7FX&9Q2s`hket?(F zM^?mOhe`YYKTKb*F5dIid2cpfPGBe(j0{a$zi;)Wq=zN#r2sa-gdtm)Cb(XTyQ z_~Mn4TelZ)FXlGVK3prmSV4F;+vBS9?w4ZboiYlHc-?t!OUvvAS=;BQCV9z4UQgoq zZ5bTecq-}V>bDb)9&PoWuQu=a<3CRt6%%W|a5mnJy6uvjkgWS``>zECCueA+B^|uD znA?xx=#pJ=l@c%RoH_5^rL%3$mzD*WzpIAlO%U5Hw{`ktOL6YcUtje<-;?*PDE?k? z*(KF#LHXLHdUuweY5B~5RPJ0+`~vmruBG!7{41B*&s{HX8LYkKJiq*T{>u6~{hxWW zKmL~daC`f+U2D%3#Ls3NMdT98mULSNT;?#W`UAg_X*0Bt*o`7|v}-Et$Lg{UnQE%#7fou3zp5^erZJaZ2!I5Qpvo}wE zdi(Or^lM9!qfQ7ue1BoWEzW8Dr@G%c_P1U9P_4FteL0JX(V4579@ZWkUJGg+YTdN& zXS#P&rFz?U!=MkD>?Mv`7P(=u@ftk=%gUd59L+O{-tBI4Yn#kQ*@s)ZU)SsjE-HH_ z-KOlbXVL*r#U&SvBjl(3efO_9am$}mx6Rx>#P1NkzK5xHh3OhUw!c$6mgyU;na3x( z`1y&TAD)-0S^O*}e0AI0<iv-MZZMuStL1+nW5rJm))TAJNGSFCxF>7KpqnVS!y zqngXOHceRJceT>t@eaPzJEj$wosH0y%{c#7VV&H8>Dx6{TYHzz6=ypa$M#E}?UsDo zr@UIteSzOyRtGL;3sKX%lTdHLuv_D4iie)(zM@ZJu@y&uRlb_`d}U=pXpW<0g8N>{ zQ|YfNBcrYz_-=S(7YiSY${YSE-`u&_HykxFKr`rCFvpYR-Mz3Zyt z=eAvXzw~FFZ5GqCZAUJisE(h_z97_o#Y^^-tPN`tn_XV)339YZQ_^te)-$_ieB-#5 z-MVREXWJvUlv(~STkzy!&IHfRm3;oT5t$oY9`D;)bSt~y+qyu$wa){1e{Ov7aoVqd z+f}m@kDm?Wz7^TgU859t_QZ_f$*WUWWd1jju>bo{Rz_Tf?-j!jkqI@Ir`M?2>K0uJ zo4G{fO~>ZtV3< z5a5}!>9P=`Gqe0RbIFf3{7#n*mv29}(dFE_3u{W!Ca-n;Zj#qVEeY|q!M4OafLOYh^E8Ncwu(hjy=)WX1k3%wk;gL;ugcLR{*5X#mcUh(e{&&M*|RXbfz9A5D|BXGgBpq6zWKhLOE z^)u(Qi2qWIu8K}eZ&B4M^Lu<_yN__jBU3ZYlFIn`@xIGAqjilxpFR|w_Eu=W!bI5_ zF0+!BIhYm1&fM{4Pa}&#pL?lJE04uo{po&7Z!_`l*m64H5LdC|(uXUwPs@mXNPnj@ zpS58%F=tq z&y^^)+3ECDw|gu%r8$myE<352< z-B;cnF#b7Fu4Gp-|Ifn@8g^WXynEmCy7C(FHq)Ow&uyt!x}rNTYnF?SR`>$Lxr=Wu z;MnY@zZ_$#ixktBuuH5P1_dq26i=y~qQ@*tApLdH3i~at}r|MKM!(kpN z;I>?k|L6@Z$Bx)f3QihjG0F#B3I!I0r%!6!wMk1ktup6Zm(ksAs;#TF4_$e7`9&xH zUp|A~w#l8T^Zj$VXWWxj(+xdqo6~gryTG*F$+vq-J16J`-CL8ix!+IX&_m68Yf8>Z zzlwi)d&Ux8$B>%s!VVWrj5~Vugs#kU{A)4gZfO!*{^5JEqC#KQ{L4N$6;^v>6#MC< z%=CJk&iV3OPxXY-evc)YGi}U|TrBbRzPRhm^c^SO?|mO#|98i`tqb+}dekqSe##fI z+RkQ^uhjEpK65x1?9zNRQ}nDfr;3E7qPnzfQ(L#@%Z)9~nKBBoGh!rICn=l$d+~(7 z{LJ6n%MG&83cK|a(r@-M?23)NZMDQP?aCE-iDn|Cbf6%4nQ2}&F zHcC1NPX2v+X@-|VGQU&6)8do~S354Isy@v0nfsQvJv zWJh;4V|j2#QLNM6xzQncTA$;b`nGNSc63SF=2;I#+7J88d-oT< zgKnm_f)(Fb4?D#8GRS#s?+{{JQ`l3Zn1B9Z%&4| z%OTB)7VU*MBE>o^+9y48_MY+nlV(ieCC{t>7co@s`?ySf(%;0!pRzH`@0d^NKPZ#_ zqVY!BZG-eHj~B9UZXb`2vHE`Wv+UNr)k#3n$Oy*5^IXTJmniLNB$-f?$KEo?BY4#Td#QocHYA zwa$nyb2+E~X^e;nl~^rzZQZ^lvsB{Kf`2_yUU&0I+o@TX-mgA*JV`BIw_|zCo#SWp z|Ia`7LqeJ9zAu|-y6s1!pYF!RI#*4Ft*yE5t6ME>Q$6h-^OZ^T?4=eZ-McooTIx%5UY!?U%=PhYa`Ib^z-E0DLE%Zwv+{r9WoarZDTd;nA(X60+rjVmG|3vFzlonQ}>C&7FX*U>A!8C%^xmW+0qK; zLvKX?87gE6=bt^cWV7wpY!ijL_i{~}G@s=wvI{b=8oa$RT`urO zPv0Wu+t)2LwI3?2`zd|&u<;|wE!vr^7ccCU%BwiFLu=Dx&$_zxT!kGw&rU49GbOh_ z=Aqh_&-d~r^r9_-{+{z+VB=cFqkENe-Kor<$|sr6O)~xFVRvrf-`*=*Z+UEzG}&&; zoi}rdTvzq-kfVq7-x*ch*eExDY4_pTr#G{`jGh^JAx-7MzLT9vHHl8si`p)&-O%;# zX^7Kmz3ui36!-&q!+r+#eS69hv@`f+a@NM~*6gGET=+Js+`W_|b3^m;rgxK;-fKJ2 z{{8$Jhy3ZAK2Mue9VlaQY44@lH)|xs7W*+(9pY}fCUs6>%B6!Dl`K;;HaT&WZtPuk zLtlGdhH1#@`;tnX-fEJns$6d+gC=(Ch-Pt5J1N<8%{#ea0*~j9t~GVqJn~mhwq?^Mt(W3y%!k^!nXi=;{t#qipVP0$abH@;c(3DugoKqR${Ri(ekRt*>B!vj z%cSu3{nwYDmUFqNS4>;Zx2@vWJ?GW;AB%R^UWr=V*ie`B>;CV6svTFmV_Vx5`W)4& z)lHb+UT$n{(&nlDH^qys{MOXZi@3~YBs*jsQ8Z3gm0ne3v&j2aaaAF|hrxecgJWx_ zmv?xtR}h{5vLvQx&T)Ac);YV?6~aEQ+U>n&Rmf?%+=NtxqYBa;iyoi(x~G#pJdGi6 zdIGDQ;^7{tfCZeNveS&byZh6groWkYxVw7R{%0Q-IC7aCKIC2bR7IdrX&dtcM~>P{ zqGux0HoIq@YP)%7#zNyMD=m!Nl2*&jyOuN8q5H?-wL27T7vH;k#plUS-P5mC*L_O= zdQRm`p<6Xm``wrwg}f1l{Kk8uqpiNn27Gz>BXGW~@uTQze78;Be7v0OKjRUDGi&Iq zzaL#>Hn03~C`C_9CL}XH?A-KCm#-NpbTfUbyQFr{+;r|tGv2UI63e!QOj{}_Z@%x! z8a>+s?UkR5cIk7?np5O*W&=y?H|@U!V$K!* zFIEqnUd9^BBI*&^Rb+Lfi~C%vs`h4g)sO$C?tbEGP+OW%TYA!1TdCryhgRXOhNxVL z+R{KH?VL!}ze;bqcs74ptk$?RQY7?cr>ex-L#a!h);-Cb%6&>|=b>XujU9Nx1?C>Q zyx6XP-F zz8c?EJ((~1)>uf~Y`v>l(~rS#m*PkJ7oE?%TRbICcK(7W*Qoc0`gD$Ln!i5Bf7A6sy|*^MO&u+nHuLE_gv)pf_|1$9TsK&g&$2> za{Rni4o`Z%^l*WHX3wX3wbN6Q3hVXGxvZYIoUhnc)c5zheyPoxR~9_p-k6X-No!00 zp`<&rG%9kslF||Z*fDgwOg-P8qL=-&B_%Lnm+1bFFXX~) zVk(0>!^KZt_Y{1WZ%}pg(ZrnG$!nIhewx*L=q_*bx}(?D`~S9bJy=j5uu-P}T*vR} z=Xv|@K3=rLexZbW%KwRpQuREoN9H6+?3*r_m^eR4$XeI>47>R1&WV>U8#P4-$OzBx z2s`K>wyERZ?NGLwom(pY%_>;=NbtQ>j)(@^wmCbuOWyvJzx0EH26Ipa<7`HMwtY|D z)(RM~ek|Pmd0$HN;YX6Kq7CgXFK0TPpL}z#@M_7N#Ru7I1E)L|Kk4gf_1`zs!tmX% zs44w2)mlAwh3|ZLTed-Ms?nOiXAe|2l^>D61yTC`|KC2ihOMO zuXm5jFFs)|v#;DG$M4LwnNfFqf*z+=u=$d6hZeQ(-12?q>891E4{*&}AQHQ*)8FN@ z_l^Z!ue^6iyS6djZ(O*6xxam}c)_}Pxif`cd&HcZvbIo0G@@^7C!5E5#%KId-*R3l zxW8D}AZVo1_457WiL7-^zdt$&uQf0}{xM~4-~;VDJH9APTt0nzjb7GLm-QN-)sJme z5}hh=Vq-$UuGQC8+TRoJpL~7mpqgjx5s90P zr+2-oyy0ncw;)h^=AMAI_pKf+$^qw`zcpy?&T((syrf7-VSDFPk*cu5rzZchWxGy? z2;Sauc%4e4X2ePn`}uF%Ps}KbdXQ3jhj|A3zK>JXTQ*I&E>WxV<@7dBf7AZ5^U2@( zGeY!FpSl0zc8Rm0*L3Sk>XpZCmx*^W7lqsnv{ARpchEoC6zsg@!l|uYlJkB@#;uT) zU!kM_>`GQ00LhJ1#;{;Y+&Fkp@_rPqg!VRr^XB2HtCcmv^n05c}{LkA~|MW6r zDzkdXt?mM3+8ukF|o zdPy>~B1+4BdQQYG0hioW^D8v-ww|?`Q@SrdWfMcg!?)V5>QZ~B*9RRAOySxau}c2z zGR_@oJnV)S>Uo+zaa_4X<)YW_dZ&$zg+0DiThBi4?A;hr$gZ=Q_qm~mQty!$>muIi28*)pS=4&& z<}TKE4U_(DG~5;H&iyj& z%d`u}mFleIb8Mf+zpspZx~L}V!DYMp!#Do@E9J6mIj6YXJz(DAghCe83?WeyX~!!q zOrgDL5z?k|wbxB%sy#5$S(K_D%#e8I$=&5bjavh@O;JnlJ3B|<%pw1f5M9kDEsw>ZD7PgoKxyY^?Pm{HKB>z-?(sI1?bOVisH7QOCwqi#ye_jWpO~e_Ym%^QM{URv ztzW)J=c)OJ@!Vn6uDm#9nTOS^HxsuBxH+*mT@jC5v}%blSNrJ|TKxjy@vmf$T+~0f z=yky-<(yw~%<~#i=CqtQ zj*Z3tzsoIO^L_q=HPJFk+{)F}@BFXrdA!v}F-f3aX1Q*aZNVq)6Q@@^)O*X!9`?}e zrlb6X(`ynW%Y+zAg+9Nvay3$0bI4HlNS|-4uANA7ooA%q`G2dPOtY^u@cFPmYG2@; z&|jU>>5ado-fwGai%#!MOkaKD#vi8)!InEG_z$(8Yx#ZAHNd>=!jc(=HzwRN{_)xC zKYzEQn=JqJKJF|N)$Efuc#E4&{vA?OI~VzJOX`7-rmOB77&kuIZJ*v|B^X_E(nkA< zaZ31~!x!WKt?+g7FMEFcw$zs<^IqjI7w7N4ed3?+%1`s}Dqoya>DcVh(9m`8U-~7# z>Gh7OFI(TnzG0YF_U!-rLz8os@>+(tn%up_dOetJOHHq`@x}YTr`QZqdl(C)8dY5% zFA!K`vq||tl629TJu2@H#4~=`cd+A$)QXn%4u688<6^EZl2_}r?A6bf4?U|L!_Tg+ zf6hTXcWGNjl7WTb{!AUyHsvFajxRYZKIPk0`Khn9ds0}lb_YGRyOqD>T*LwPY?e7< zIo5NQ@b36ho3ndXYS@f;hieIZyX8M>zZSKeaOln6tdC6Zw9FVR1ujam|LG0Wi+LG3 zPj}Uy(t9iUm-Cc-nytInQB=KUW|lDTrwZ=#79X}|ACGmv6RvwhXzlHswXu~U(Z|al zBpqY6{e8*bzGcG|qm z$QKenRWA1Zh&jw4Yq(W0wx*Q*s$hlGa+NFF^6jl(oOGYdv}h4?t(5Wkg@t=%|1=aG zPE>y2ANjypr&9AMi}IW`sV`OT2`H8{yL#PMU{kGq!msFUab?-0q7^MJjS|c}Zk}hS z^-Amzs%LwoZBWGfPF07&x95534m+s4?ylt~5GtaK?EVv$1;Wn(g5k zj~{YAb5!4YT>i0xzrZxl*AP0u%oIS5Fn+Tw-oI(QvCV zd&HmEt^fU(s*4sG8XK1iv2grbZGWr&?4R!Q*UnvecArBp)VDe&bj$i#S5|OKPC4>I z?9yEkj@g%7Bj4JH-QJM1Eo)JMcgU0$D~90mTFrkwY@0v+62E1=$;)4xUvv z(Uj=_pVy$pd!l4_p_qu5!7bUtop(9EbD#D5efTc#Lj4 z)xS|L9o&2NPTl>bzu4?T!``wx5B)agE^k-f9Le2rf}!ihccsRV)92o4tymE-XXU-N z_DS6)H)p!+v?!Ypw)@L=hdCWm*)JInhxT{=a#+Ri@QZHL=a2&BH0!__$2HGN$abfG zTNEZd`|2{*f0KJA=t-CN-0D5^%Vx9rgbOEDYTh*da^N4!)hmBie(AC8tL%x)6!U*J zZEruzfm5A+xop;c9chmg7rdU;tuGe$Z?AM(Mw;8|t5-t$vNiqJdVYTx(P#JV6ninp z>gOK9GcIrC+wU+#@G)Btr_VJXt4w2;TYOsSxpwlqWiGP1c1G<#To!X?!Q5LS;%TlQ zO(z>Gq_3EMuue+cPIBdCDLQPs7iT@HW7_vS{aA!=O;YRnsV{!_Hr+9Px?;Ui z_C686-TsFHHZ(joX9;c2cpbUx@+Lu!d(yv!wc>(!ynSTZUGL17Y{*>Cz3-2ms2%6E zOR^tLdN`+R9CkQzT>6_(k1odn&%T^%6CQ5RDKK@Z)Vk^x&AYES-1PF&#akz|Ic}bJ zTjed|7^r^o(qFD|?C*Py1Q?O>|j)V#XbUsKK~GaX>~%pLYjE%cw^ zjTFnZ8aB!Nlhc>^?#TWr^{AuC%iHg3pR>WOU*Z)HOa6s_X}cB1cx|6V$dt^(tr-om z#=U#*Rx>dzxy{OJkh@sU_tUGTj-HpU-I+GOJNxnvO~*4I)_TTUp0y3{TlS67?cA<^ z?-F)>SZue+n&Xr5=L3;%4)H9Q5_m3qqU3{_OUwk#+M7*ty{9}7Ez4qUSliBHEva^9 z_k+`7J9CAkCVmjz9j>?QDbG&U{-5@9_9j;>&EBjlb9>H4(8&k4w_V=&Hs#ox8L}YO zMMw79Yro&^J-_{$rTsU%`|~ZIf4%eno#n9=tDditI(kSWudPAZ=JTnSzh$PLKFs}u zJABEs6sv1<_iI+FJFdR?c;DuCoj)=^9MS)mbo;ur+brN1^b;G z8zRodc^$pSSpHtZEn)xB_AeERXQXF)3LF&$(22`d&2I;u7#ku=GdlROXG3{4a_KlwZ5G+d;VXAK#g@h+Ddz7p@myUcC5< z=&C8dj!D;@SY6Sw>%UKe@V^&-F7Spf{l4eM$G?$hT@J5LVqSFB{juxl>_t zPF+{r#cJHRw)(OcOAQZe{ksPt6;n3qaqiikrrfO2^iUxB)>57j&8Q3e-}?Sr*Z#kK zujdN6V~^swPO@_`DgCey@(PqM@BTky>Cfxy>#fR`Yj4zO+PvV2CeNpe*2NbjJe#|Y z9oe*P z?0&)fo;~V(?f2JLoQM>DSGZ^PYhlNEDfjahZ{U9TB*H?CVq=6-fk-uHSN*%&U5p&UY7rPyttm}zQOO^*C+O!d7&&WG?i`V{@k-WPS+JT z9?M+Pzi*Af+dEvfZx)Z@JwGyLt4E zN&1^46N{aP=hQf@2tKDhd2*)m71sz6zWE=u(0z37aZY-WO!NeoH_B{W;@1;+zm|mWIsNr(zuW9tCf_|>S+xvI438M> zH9CLG(lp37;`N7nUZJ6}#XmPsPg3Q%;l>kbony9h`Pthc2{z9yZMcnv-aM~bE!J@A zz4(%Mca~g!#OR;Afm5q0RwPR0j6drU;m_Mv&l8eU+2*PlF1YeuP&qHFLcPH!o*Efl zy`t$G9mJcLRlC&g1qGKRZ!Fd?e|qe~jn%pZ zKVpydJSt-8k?&hFfpL-B`d1SRtF`9d`H;}{xu|s0s_UO#t@tGF&Y#6=8EbEpQF;28 z&xc13WD>r*FO-W=j?^$Nid^_k_>gEp#_cmdRbAawzXV4#J&e?i%;;Oda+Y!5$4|mn z7Ny;ZQer(m*Z1fyuN$oPdsC08$2kTGPD+k?%q8Jxx$$AuG0SB^jk#BSmswnuZ1pjn zaJTV+1=Fh29WCsfnikTZKL$pZt+3d$DP!+RwZEBa7sVL5Pc+YH{4OJVtmON`!`_x% z(w?c}OyTUzt99NlOft?^bXJVt#$EB!W$r@#ewlUOpI&;dHEH@(vAM73#j~DSblSlq z?pe^`1(~XIrY`B8aQj8zoqc{n7oDzpo(eNoKXN#kb))^PPbV2VjJ`VGVZO8KVsfc{ zoUdm1o`jyYEfb2wc@k`o-L~zot}!`ZWH;N@zsNexFXBOd__h0Q_CG&q&YeDY+Oep_ zz`MyA@A8k_(JpwGZxrY)Khyh;a6tcLS%{Kt;*%P-jYD z3B!feSCn5*J8?!me`C|qS=%(HZB2eMtz3H1irb1gOIIH})W^O>pt8RB2_tjn^lcHT z9-fLqE6yzsS)lrQ-jmMvM|SnsZ9d7-D4D3MQO35N(V#=y{TD~#mw5%uu`}1SzISvx z8E|89$@Eoncg#&baI&~+{m?!$vBct6DCaZd#?;MQ3KD(XU{3&aSE=xXr zA9E$pMpO2=6#E**pG)={tZVN0^>9j^#ERJ*^Y>^R%GP{1z256mc=M9x#m3@~bJMF2 zI%c|W;+)avT4cTE{@phV^{N!U%zRR9C9C^OYtxZnH)X4}R(qOnhaHHP%4;}~W}c!g zwNsz*JFE1Qx!;ZDdN_ZsjqkEO!W5Fi^sM6XsY#MkxwdOo*S&iDP3i>a-D{IBP21cT z&%L9q+g&IyCM{W6wU2H2#Z1*_Yu?t|+3q~N;Cx-}`>P%~d-q=crV_G!!>@BE#E(fh z?=0hcw&SDT*XQ>)ht`XquRpbF_2)Sr#v&XYd`ui2H~t5N>Avytd8?ZuBdQ}aC#LqF z=&XMe7fsLHXZW7@~g?B|8c~19T zHYn44oO$%-oi{>Uin_g(YZf|s^*Cy%=rvmDOJ(1l>(YJedxMWt(%HS+i{H<^722s* zVmkNy_n?B;|HF^X`)wH}c!hWG`^Edq^tqRpEOAU&Dpk6}Degl2B75t~J6#7=j-T>o zjj_JPw_o(bK4H1yqqEn};BTzAIJ5L)d%2Xop5`V0&ZD0F6(6P;_!O_7>a*rx3o#$qH8zaWvw+U+@JYr=FDfG-uorK3Rz?I;iQFC=#AC4b$)xi4th~0lX#Z> zQQj@9cQ)2*Ccb!AQ`oh@I9DY`Sa+eoS0io{-u(|NmfAnty>;eO>s8qo?_VohC3oWY zIir;2!8)e$pHq(RjjfX6x%+v|#kuF6ym+zAo4Hi;j@9)a**sh8;`Vs@lumqh?98`} zia!UUAAQ=s`A*^S^@3Yt3=V#Izu=kBnP|U5!cQXS%*(y=as8{3<94<`_V{J&oqqO| z^j@`&w^v^#l}53yUUzH9k`)X0?0vE}yzTzx$IBwDmYzO;)bDuu%;dGZ9OPf|Eu2wm zUOc1H!{dkF?g@6Ygm-FhSZ>z6L#y0TYxlE;ld<{MkDf{f)Dy{P29Q^A@k(q{KQiCF3UT(|eJ?qtcZV*>6wChfg{Uhv1^ zH3EMN7YGWR`L*s@0fQ!YY^UK&r%jOu%};fCbKuGgX8=2>qIV~n}GOpGsN zy57u}EG`wnO>x)S%MX7j_Uif}sW9U~e}k!L-`_gEr;5AhOIe=5EETVB_tS&x-$V$)*14m+An-f8`)PuEdRZJS<)e1-hm z9Y^Ad|21>Nzjd}Y_iM||+$gJWCyKO1&IcQ-xamYLyt(!3xx*e`UUKOio^m6~ zHtA=<()QjxkH2cn2ohPm(fV-l=ba2nNfB2BdwHExe^k?uYKOuMbST!8=3yZ}6vUj$isW9Ttyqb_km7V6x!u z=Lt8z^X072*LtI5U&8QV!;X{9ZL^t=dvZ+tEo}a8sqcTyt!EcLowX(D=d+A^u3IG1 zk1?AZmyqv^ym-^;&XbpBw^UgJ7IJ6wcHH)1mfX@dvw4dh6KmJ~2@~J{QZF!6rL&_#jt)A8^?n(hpjii>*Bq?}Ba|Mxs|qy48Azwn#M z8!x9N3mE^|KRw??Zc0XYrM!NQFPC3M_mR_E#FQ+;es5#nJ>yLIzKIiKg0>qdsme{` z+^%tOf>D3x=EFwiu001AzPwTQee3<_U6XFjb$ZcRD{AIhy!zRhG>y5|=Qb4dmuTzqr#%7ytdLQcslTex;fTz1e1+QK>GOJ8`Yht#JD58{m79ff;XxPQHf-5|5s zv(d44OWxm}z&(@(s%g(3ee7TX{%c>>7l|Mp<2dk^$HWegaUGM{G|cK!z2H^;CGUl%Xi(P965v5RR;^mWs1!RGl>{wO`}l@*zM zcZzrJo!I;ckEzv#EJkmyyh*xm@cbRqijueQ_B<7^?Urd|3W?i)`qYc1`_$J7s(yX# zYhQ0I?HiNNIcM9S)^m|@GdAr`{nr`tRW$vpkEOXuxm}9M`b*3IEt~LUZel5mu(!=6 zlayTx^`s};#e^-{dszSAm)sW7r^3pn%l{Z(d$`KNq#=QSS*lo6dCwx*nG@PKp68o7 z+rXx7PFLYwd$T9$>~*)!aLe%NEq^w1(ggmvx^LITjI$r7vdDkB-X_?^7ghGiw(b7U z?Mc^mip;aNUs3*HZndVyeWz94OQ*d()ce%Fd8<=)p?WkoziRS)s&gz?>url zv8_;VlgGI~YweXfjtVm#;`rX@&9P_x_iK@Lf2QhNnby92_}uQ!r+D}kAMKyU z&?|N62v_?KGq*eMljiPRwQ@nivZ-0d&J*ve`)v`->8se5|K`Y-WkJslFo^td>`>dQ zyE{YR>c#DKe(AgSe%&?KC*JhUTh_)*{@+R|YRAQebvdV;^Voc0YxyA?Mz+mCzO2a# z){?2xhHe~I<&VGfDlQW^@Otjk#$2Bt*}A1s`Jx=(HXikJ&iz$+45P1ryUKSc|_AD zakoajF@tEohq?F}CBcNSjcd$R{s&zB%p{Oh&nS`5WZf~-Cw*h3lA7=#uIIh#*B|Z+ zPYgL56#nUQS)%6TOm4d~l`mYHrgF46B(KO86pwIjTEkBu$G<}y@^OEJ)WsUY#kN%vN{ugOF!zsw-*7L?5Cu!4p zK4)Kl+5cASzu&z2OI^&x|6I9bSe`uAzhwBoeDS_|)fr)8c|J-1|NUFPHj2&fMUVtj z8n6AkrAvxix(&rze}58rx8cDhhf@N#kCbURYEIIWn{v}!DCpF@{G57^dy#vcK52(9 zTy<%y)m2^L%!19aZM!nuYYy&EM0rj2Ry5eAu$=n6K60i?4EH zc#@=}th?NISX4(#drlQSTdfsj@+(V0Cp>@I0`c|gz0b>1d|R*W)|@)k^+L-9E2|A| ze_uWJx-I=>=DIpwG1H2KD=hDpns2+$rMdf!GHXqZeQBV z&2(?w{uHRW+3x?ouqltL8G@CW_dJQwj@j;bWKHciZOcPnBtE{Z{vp~esMK}y#yJK3 zezC3BWvoh`ZM$eQbNl3(lDVCsOXBykw@fLl^vj7{xVGYMl!j+^zq= zNmSw9+*TBB{O{u#34`?ia{}UdGh)9SWUBh~=tp7mBgIFW70dP-f8SBM?XKmjwTwsN z`rD3k+Kd1D^6iV&{@f-{&bj*wJPTVT?|J;X@Q`2p#Ja7^wwPYq9FpFcJ@bCTyFRhp zzYhO(gNk-&EmINnWm&p#T}*nHYUpIs7kx8Nt+jeIz4g@|=@%T^u58$`_xIw3&(+(f z<(1SQnQwb3Za({K)9vh#Mt{bKL9Kz01nXyfV~_h4SM=Tb(CmPJ96P?{h+44i z^Df{Fn=RS+QSqC4i}w@eXki9EhmZTOyt$yTb zq5ow(7O7Tjzn`gHkk>7DJTPEM;BpDOiq`0<8}jlv8D?$mlH;CgdSt6z^0FVluhnq1 zhNTs;&*R#5J+|oNhI4mbt~+@^_VS6_A7@qExo0?!|8aQS>`y-bPpj96{rArOG|@(m zO+0G;LK~mDRbJg|4y8>E?v<6!QEusdmwNBsU;Z86wdQzu@qUXu5>m$glDYe+`|s7w zf1Tf3dwW0UD3PoAU6G-G%|KgRY*U|gaaF$7ws4d6wa<4azTfRKr}2W+g2|2N_doym z-|uMsq!7ERTw~rh_G(}MNBiHbpAd5PQ0&!1XAj@I`_}&DtWBTS|1kfSesbgQ>Rj&R z44(~dg>Ig@E4i$Ec)a{WCzVND{JVfNKKhO6<70m3w7=$Wh<*R)#feiHPihV4?9_H^ zTfXw4{GFQRmv2^A_P6%GFYa_x=u@*woM>xkx+CN9i8Ka}*^`ZCu_RyEdg)wM@YD{@ z$JUXYU(Nn~bDOH{+H2DJPo?ek@o%}+8s}wy^&Z&YG_fw4SE$IZvGCg0U5S6#^X;yO zbco*fvSQEg@-^h$T0X-gHblIqg5@NCwB7mli#@+w-oEBaMW5i`o0``HuTM+!y63gN z?dOt7!fWp_&aBJzcX!P={jHUKp78!vnyueVMK>93TVpLW;Cx_@|&l6UFJ&$_;oWo9U5 z*Bq)Fgd}d%Y#C_rBHkC`t8g+?Zj1-Ei)y8DG~a^t-OMNOJGU`7&px zj>PTR5??xmLl7)@5HH~v|YFpXD7ewOx*-)U)IEIqnmkG@UcS(%Bq=4fi}f3kOus+78)ugyiP)$!?bG_SplQ@lQRYK!hM zjhi1tJC&ClTFCG^&8_vNZYS^89lf*5%Q_WQ|Hruf6X#UEb%=e7x8~GSJ0tpU%oaD1 zI%m1MCBCb4$$~8`nG2FXE;@Nv?{te6_tN~GzGuz^S7_>U8g0>dTwI|k&na)QvEYyf z^R1a|dySN*nU->V`tjoZ75780*h6lzo4%82U!S)5Lh{`U$?0-E+BesnvH5w|r|ag4 z={NmP)F=Lb&+%XVTX{X-?T-JYi@sj(y!K!F+f>~c-MKNc|Ms6Ptv6o$(mK*nPtINCv2n3uJ&(?<#V{8 zu=wE833eQ<{Ej}=i(I=M7dK~@7v!b?m9y22Z@YCn-|>rk@FPQ!sUC}KKRnoZ@$VXm zPqXHhvnwuao51)rdy(`zyP0)7?EBP2Uj%47v%{9Y?s!*s_3P5# zKPxz<9ho=7`DLy9EsxB9o6=8nIhAYkO{`M>E|fXPXp+dkCk;ir9Ug_=|8qhmMScNO z?6!9|{~D*JJ!qd`w)sYj)KtoL6WgmS zvQx=yrIW{!C)@w*FJ+%so4dM1*lv1IW?csN{WtFEGtwHJqa7BfZ>_PvtzPS}>3Duo zpPd9p)&YsG=(|gLUf+v7u5@L`t+(3I9`)X4-)f4!USa!Zw6HkeZno)xYROm|y^k_{ z5w};Yu~urRsW}y_y{Vbu{JR5{R^9I%%)$@2YHfcObfb0kVdMRE2Y&x6@Q|2(^7YK( zLw(2OT z&dqJ`yJmkX#YRiAXU6tF9?5ozmU`hzd!qhHdq>6{{C|I0UVZy(`$nIR54;k;u5&() z|D^ZX{$6C-yN3_XsQkNr{6Fu5|9b^L>=&DTP4dMS?fU!eA%Xt4O~nJ%dldCWV|Ct& zH}92Ax|^^^b9U*JkLmxIT*H4HcwMQwOoT;b(|vE(=&cVuFBqiWh@SVvbiUn_|DktO z#KgWeX7KATaxr2)dW?mmApgxKkzXvVtl^&cYKq(OuH20)P>RI3)C#1biegK-ut`e zHOFN6dmizdYB+B0yT6iQk|n3loV&ZfdPe`t77@OcbKiPb`>BTYk0Q06pJ6y+`)1i} z_OzadRYzF3Pfu93)Z~ay&*iE1Pv5Es@r&^tabK0FDA&NWWWL}(+hdQ{F6m>c{{3@l z<5^|(Ca2#|gBhc5&$hlX>s1YpmchhboY(uOnqF0F6+8X$NA}iaA$P4KGcPQ%T@<!4~K;3%vq$xxh`jhpx~LZX6H{{8w7r|d$ynJcqh<$ z;nt)A&cZ#9R|rHoI)2#n%djx}uGJrbdrdEvO+CNGM>*W7FXB?r+i!|~YBfK^b%Lkp z_9cjJ2xsw4Ui-A-cHf;nL4T)lyGY+P|1SNcHgfk9wJ)*@1pC}rLJKyZ+WTZdyT-oX z(p4&wWt*?hJfgZ$TlervyT)H-b_=f69SBq8pKf^iSLzP-V#WqWRZ+oUhK%4y`32pd zwyxRluerh9Q(5sP_pA0dGp7HPP`1lGk?1tZLB{irM&Yeyx%YCfenSt@*pZch4%OAdY_VCS{ zC$I7n*JVG}$xM9o?qSx){n}NZ{?~knXUhAaFUG->xiwlOdvO={aWPww%f}^py*p2- zUEZeg!tj2lTb#2)?%OkW5?njj?P*Ipg-fiN1l_?*Q6A?r@WrLW|71L zPRqaSJ^mk-#%(T~crak*WfR_}YkZuy;}7ZXs{a^v(dOr3r-Z#R+&?(f*QnWFtqO>& z7LTdZe!1v};@MC8I#M-yCH3Xj3g5hzl^>|a<2kd_ReZPV_J>jP+?I2?3%ElMxU3UA65mgrp0ktp8B|4Q@R zxB4k7FPTqT#5q5tPixktDc4l2{7gl^guYbEm{_|j&eZXd`0l+?7#C&Jtm!tW|hR)e5uu{De!~ zIb_DyuXoD6rOf+xqW+GN(60sqHp4|x9EFn|6;?}pS5)ZsToTjK@?6$;rhnP1=@+J( zK5g1v@T6a1X~EQIyVo?d@@;6`nYgO_KcfS&$^O73V3YU*ec_B`?OwB(l_zh z>8=x*1Z&#&KAzodwYh8J-s4|Rm|eR(w@afSq%vZj)wXL|zWsUm!Tl-9w-4w4`@V3Z z`-E(_%>`bOC2PuJQ!}I_^#551Sh4RcSXM6q(o53{e8wOhX~J^1ZuTs*^`u(cm9SYBVOu(bKo`-eZp zekryF#~j;KwrbMlij5ZYgg(BPn{ssCD~=k;oib4mT^^s=X?jl3;m^leN1t&>?R1Uc z%QpXM|Ln@;yY9^!mrb*iyL{Fs(xznUD?T?K-P461qBHz&Ufs7PV*?NPpQ`Si{O}X@Q zcKWooe`}t>BNnsMA#|njoyk&N*P4_a4(^?^b)Th(W6kY^`|>HpZu6#9y_v10lp@>!tU%Bu>yX zGp$xCle6~!7^rvA)9&R>$4!%JA17a^RSeG;S$_L&`K8OsFAHy%#w<4}{$Qg0y6j=` zw%3-$?|MWprc2y-HhuXqqw5)SKN?wfd@-0>U^$gtcvJoX1z%enIX9D` zjWts!XV-!!=dFYDEwYeQ9mSKK|`}0X1IJ zPTDe`Q1#@|n!#_RVVX0W;ZKKAV0PfYsp?vxaR)#5ZzzlKI{n^occ|+2$r_LP^K>tJ zZr576|J!=Yb&r0pFFyaZOpEtpmcrMSw@ON?U9aril>enD)Liw%N~blJZSAuso|nJ* z{8HY{59`D^!njPn&1x1{|Glp%H&FIUlD6s2j}`mo{k!|+SNX@^>FwV)8kf}YYH*xj zyitGu;otg`i*Cdpf2Y>>|My;xPtzX9KaGDfzcXp}QWHP+d8=&p*FKt%lIUYHqcd^V znmK*TtdinO+F!onz2&xPZL!C4L7&iN_Z9v~sLj#n6&Ja2_iVNN*|Rxkog9CwV{j z;u#T@HeWJkS#ws*&CQ;koA`PE4>R5sZ+5Of_&iM5n&XPu$+wj@XX8KFTz|N&@$rev z8jJd0GtG9i%b)G-xN!b%zWsiuM6A+vk9@ObHSN~t&dud}lzR2O@f7CyR?9@9#H53s z%)9FOGbpr2XY%<8=CkroNioh7diti`#w6KEEm6Aa#!spCt?dVM-OjCTZ|t5|Dg5W{ zqlgoyZ(d$Eedms<H z3;gej`IUXyz0`1ja}Kw2)*VNiy(0bJBJMBT`Swlp92dR|zS)WrQ4*U@&84u*yn=Mtpz3jzn}X3|5e>T z{?~722gdsScsW7i(gg_%PU-paVpDA`FMSqqjr{W6IrZ1kXW!0V4`fhe*cEVXwN&+{ z9WNA10ybP&vR(Q9jF+o+a?ZS?bN;k1|9?&YqhHrf2oT5!+iyRk`_GD=Jv`ipIT+9O zuIUasW35v;>Dk^79T6$lcHCdHU`GDUeYSq*E9N$LmK{0Q_ad+Ay5t!t_x72Gr`=!R zy=VIKLqDE*Jm0sHCxrFfGU=2znqkjxNd50MZ>lx(T;E^cbb0Fi1&qt;wK~t%a>*_a zWPh35x2h?qE1u2s@fp9gLtFV@#$5ce>%7=Z`%mUE0_W!4{HgY|l!t}M%HO$eSGN0% z;CXvLva&{V1|Po6(zf%lrp|I*|2fk-rYMV;Sq98I8&dC_S21t)x(n-P+DKgeG=E0X zZp-Bcduwj}Y+YY;E?D)olJ^^nSzfEx-HTV-G0FaQ%@^I}AJ=YqYqPn(JMDVxr&zNz ze{T5SKfbS*BM7YxgfOZ$L-nWk32c&aR?qi=dt>H%&nNrZBN&n zej&3@?XgKfme9IGfjtXVt@d#4UvrMDjCXH|i_tS(%jAm+RuSvZUcR#N?B>bx=3Pe( z{KC^`R_5!u&oc~I%v8bkEh6&c4>oV3`d{*`lJ1JWBIk>q9SCH*u*g<(h04+;s)=fo z_m?te2kVLm)RpV5wVbioOltmAeZ{FeoDJi=BG=2*c2ClsrfU~1AYAVyChhjCqBh25 z*-;*j!&YJzb6WBiYR_5!X}XV%PEb*#fbbo`iC5k)f03^)es;rjg;mmC(Ema?|`pZ`SS8*3;#wcIw~yu*c_= z#4KhG-f0#;yDU5N*5&bD>~lJF_uQh{xgTwJRGEh}JX}#YHSTSZn(A8b$8UYTi+tT&-o`3t>a_gA#^hqt& zhh=%swHx=`X0C{fRf|~Qptd*r(fZS$n|axe%JHrU*L(Wx#vLZ7H+LsLTr2z3Kxoz7 zCokSvuYCLVbE4Ar1wLO6Tx{>Vb7Zd~YsS(AjtkVMfnHlJeO`muaDS0htYZm3d}EHu&6^5MqI zst<0gc^=7^{VU^lveBaVPq@pjTb_1JNIJIiu)5lIrT?OeFZS}~m*uSg{O_q~)pXCu z46Qml_sYAuzm+Y+SA4$ryjl0+g&#NOz7^PgS>4Lq_`fOJU5}(aR_oTTwTg^c>CYsSS_jFeRWIMB=W3nsObFo^BXs!DK#qYcRd`~^XAk5vd z@R9J08yYi$jvV_tPbKEKkQ(={tc1rW7j3-v-Hnrty=b1uAHL-`R#oRqKf79La(UXO z%O`wqp2?rBzT>`@#~$;OGHhGE3cjA0#dnZ>d!xeJ!|!$-{Q2UOzy@8OMFlB+SF;1M zClom|U&=Fk@co4u>ry%FB>g5Z>w!F5T8pmJD2l%XM zF4~){`?y44ac{qw1)GH{hmwX3(vcxq`W6LW=zulI@1LChjM6<@f;wYwPKA#gw%hxx_i{3+&g=Us=%@1N zgRb{1H$LSL4AQ3N6V7RKMI}CZ#jGk37NW8e2ehRWAnvNRj$3+ z+BkPk?tY&A?o<9pyh={Cj5}3*b<)zwVRIKw2~1ED@%nX+=Sv;;ywJzn+%ul9TC|g0 zx6etZ>{Un90VxNfpsL4hg%#iUM+&1!}(-mUOynRQBX)9Oy-P!+ZXHWp9o@G)R=x6DbxP&ep6Q2^vm`C{Soe$h zGbY}eC+w`;)LUy%!>#td?bqpT?h5CB3h=k}G=Gg%bho&^>Su`JkarFU(duqftkpL@YfPc6eb=}Rb|g+X`J^)QV3e4vGtWNZ88X{GKRxoIMS%Co;o1~c zvAQR(Gu{fXyZ&99aa#R{e5HLC?(E#_*6_15=UGuxjkH1SZ^my%DH8K;c{k`!sycK! zv32!U{h+w%vrbnmt6aX}-Ua=PYWC*!d;F75^E92gX42+qU&Vi2x^T+(Q>;79A58rp zB_L%Y=2E--i;^}LC{_x^if!R^N` z(E+#OD;PLenw;Vays}hF>5B66h`DU){5#FXmPDOan!33#_KZv;hvpS|m(QmjiI*Ee~&#YSNm$@aTsR+G=r^>y33*H?kJ! z2QuwW-`y0;)8e}Mj9<);OI(@u7G*^Sm-Y(u8K_U?Tl0RY=-G(S4?NE^!>s;$;Z*=)XBx0jHS8fI@ajsDoyoz80q>yWznIWi;FR^dWX*%i$Exlf6m{d5 z(3tV=`{ScrVj+!Je}}D~`=a(#d6E1kX5QW)=7b+le;@H*vR?B~_N0p06; ztQ(>4_DNY5W>rW?<#PROv7TRS5%F8VvBz@5DH~z?XX&%*Jii+4^|*KXZ>sN#TQk=i zs^+ESHm}Bvdb&x+h^xZ4P17g+jLvR z^nVJyOKwSLv2|~2#d(lzQ!RzLco_&`|V+-CLG04cvu-b!f(warUSqE<?PjO7E({DU>f;lPs zvQ)LeA~r*X$DWlhtba8r&W!$%$fxnvQEIPVtkN~}cbZJjf8)9C*Gnz7*6eh@;t@1` z^>@okE0cA%-p;-j7$n~DvTNbB;_D&%cNP4Zw6%Y6)U`iaeIDD~+&FrczMpF{_2tZ( z2dgjWTyn?_^?neuiz}hH@9de6&*ImgZJepEossow!2zQghm|}fKZYOFxcuT;tbk9{ z6u;RGEZMI@;&|U3Tl>nPqvq(#RKNRk&KRuY-RbZ|;?16-zq2M5HMHMLusU|_(v`Cj z?`$@j3V5e2;x}4y|4gNySlpR-9&sr>BS2Y!ZKe|{};eXvc~YTL;&zAjG5YH!&) zg>GLJ6F0VPko(aS9>rcBw{}CPoXxanMrS@QF!jCBuCK|ow7+9p-kBZ&wr^fZ{IY%Q zNwvB&H%~uyYkKXWMGwt1wbw1VT940pL(QI@JvC4C41KrQJTFyDFpLlSxbX87wFP1< z+ZFmdFZ}w*yH3&P9!JVo(HeD&4P19^Itu6JKd_mcpP*8=x`5GacKp|5*|7B6cXYpc za4b2H)V@<_Z~Eql{duo4p1pm|UaVQQWYsmBHy7MFluP?B{;~DZuGxR*>(-Cv9evD! z3@qDbET~2Cfz1|w&2$JtE^v+oJWH?6n7T(+XO$U4wcGbH`dMLwUx z+ZXosG>A^zte5;PdXDM|!}NtbnU7lw1HVZLzq*!}@oLWZMI0Y1BLm;%bEq#_V`%)$ zqe{48TgbfkkN;Vo;W%lnP`l7=<=&uc7h7HjT%K*Xe!||{(HeJJoaH5RelD8LcV_|T z>R5MeI&y*Q2aD%FI%Bgm%n93t=^{xU7Ob~eaLT?deXlooZVt$vc|^8 z4=a~t1TLK4&1qk8)IoP`a9W_8AJip3)qAu!>(4d$BOf`gzTkDVT;V?NdfuU%lf7rD zYag2%7gf*oaI#+A(I<5R?DuwVG+=RB@MBh29D^*c>Gw%3S-U&3%z4`_&v~am?>jrI z`QZN*Msb~AP8mKno8DYAt-0nXQ{b{sw@+3+@Hg0^Q29n)ZEE;bPu@dTTe*W?OczQu z3U6yuuJSRT@XlVzGp^zoi*4X4!|>}9!`&34_O}IuYBn<1=I^q|oA9is_>%b9C44{f zlFz-6vx!<%{box3rA^sI$qHwgC)%9Ju%9D1L8N ziU+^DCcwTtXGdSmOkIg!b3Uow<9vom9~P=ih)eEHxF^=uaWpbft?Jp4Iakgcv{9EyN^E=ik;5&uNiS?4No>oX-*{ZYb3MOW z*iw_5nm%8@*sk0><(|y{vVT=aE!RIO@;Vp!GVb!j#=^ZmeQaUzXD3K*n$*4E5*N2k zLY`px@k@M;`~pJp7ID$L9~_Y6YE*utuJUq@g?!tOR3+h5ub;so=g!sl-;jBs5hNyf z(d}fEfO?hnjlD0PyxcfFdiv8ZJ*IY1$!GF8?8+{*8EUp$XsRbhuWJsn@ztmlG2uAd zt;}Gk{JE1kR%GUuU0jLYt@D#-MQ!|7@$~Ys@EpA;frMGSZ}zk6#0&2aw*Gv$a>>k{ z?5kJ3Td#b4Qn9s(@Q0sua}6)%D1=XNa{K>p&inlv%NH)PUt!C^b8?&FlvxYz_urR4 zW7>AZ)uO0vn*256V{;eo{`|yk5AU%xOD1qVN#z!`eJgGM=&TSg^QO1lOFyo5QatLn zfZemcCNpvSHd__pr2eS=Jribpn;rD?w6R3P-bFvP_x&p==9_R~S>?S` z&+WgQ{BPOE_3A=CU(dc+S(QB_esybc%|Wi* z{frCapIjDhOfd*{on`a-=+9SbpKjb`i+NUhx!HZ+H2dlTfz}1O@xOz&e|l4GAIq@j z{0D*B8YRUaeK~bWMtXve6T&slwX9$9Mb^npa7mm%VKgIaPNk*n%v-y%J=X5*eG$0Z z=wRFK1Bu_=J?b|qe-C;qw@vE+>+;i)M{fiPO$gFXi*Ab3GWJ_=Bdue)i>aKF*%zY) zpYv*D{MO0sU!|&hPoOLJNZNekZsYgQ3Xk32a$thq+jGgW2LmVNJ$WK%{xomtr^~0F zzdLXKdzMB9YiItgXB`W2#AE&@`YlpvF;d%lDd@V2oB3&rJd0})sSh7+b@o)6r@cUW zPW!r>U(P*|IVv3fvvJV^E56kUTnj8D7tdH<`*FInXL!TDyRAif-r3G( z2i}K$RlgT3GBxMjJ$Z6`S>=QskGK+PY}Vp~TF&6)Ux;oXpP5{NXDzVTZhk z$!@L#9E|d%s%!UQ~B3 zeB%inv0S6A?f-un#?<9{TP>-0z@YWWUL*T3xldX4s`c(KcKE??cc`}aY~!tVcf-(P%e>}oNQMPy-1 zjIdfnXxG8JiG`N8*;%HmO>s^T%s({ST|v7}Gelj&Mp$)MHfQ}6f!=$1H{-b9E|I-v z=w4|OX{pFm&lI^vgk`>F?2gH@AscU~-kZDs755>l-Xe!jF?*aXj>|o}A*~>Fx3lzE zXYeMudoxwH_KGA~u4Q?@PxEz%3;VO>9X&srOFk-`+#}-8W6GEkFUfIS-^~1M==n2;mLC&5t-dJNB=F5E z;ll>YU;2I3`kl~kS1QW%?D~OMl00wTZ_Vn9-*h1ZH3;n*Y4K=I&^nBG7Ub7zU zt=i9*)+bpSA9>VP_$)!Fv&CeK_w>D74R-Q1KC_mtRJ-HCk-p! zy3lN&cf8Q0n4XQAnO!qjelO|I2z&L;olW_sj_}nS=ASv%w^qhoN%pm$>iF-4zQaG& z+8ax`u1J00JFsn;a@~^N_>ET-t+q2x&Dj;nyH4bc8UL&ghb_ZCoz3%fW|j z!9vf2G7IK4h0d~ExaikT_VKmP=Iv&6PKrZHmL9{Pu5~bI9X~=JTm{&alqDdog&Qeu}m8 z&6=!@t`iC$i7mX@@RhOm$bwsk_nx+1u#-9-4u;d4<<=kOSGRTVJgqRr zaW8X+>ug)km2Z3!7Ssi$C^T#8wX)hDl|BDN`t#u{dd3^rXZG8@o_OSxp=D|KHjiol z3p!pJeqcQs-*eaBtmlcn|M3a6E>mh{EMJMN{8c7nS7x^^!c18GzHr~mUvsA1TI`rL zX_vRtv-Z7vU${R`nZo;3CBNawe$TWM-CFG&a<8Mz)=IEVw3!lIVyxd3d+_vQt)8W9 zvG^7oy<*0@nQiI0@6MPXc%tX*6Sz3KLTR$%{O%X`HZSKnUF!CI&Bm%f za*r-)McZ#xy7}mLNVLLR=91N-e)G2WlsKB4YHK}Xv2*T=!zDY)OD-KyKb3SfUa9f3 z)9JuZ#@p?B>n&6{?=JOpsS@&EWNz&_<;tCCjXSoxxWDqwd|_^`xaxh@Hr~F=JIjAA zgwyvd$#=LV&za=YT@>U?x`c)Xuob(B`-|= z3Fo7kT~VLZ-(3zlzqqLD(%~fx)-}eGwJbN+&fd^^b@nI2gy79d3Z(}Q#CoQbHO6m$ zx8Q=glU}=6zvKOhy5*rie5XhoU7w;OeIxA#Q*Q}FuHt+39jAk@?B?qzs$O(^+jjrg zyq9LVwe!b(5c7Hc_I&ffsmH#(y7qfg{%WZihhLd9@3z(Zc=bW4Yk0fx!UJBrd1w5L z6_u~ZDP!$hc6Ptot8?DG56|CkHh(N)KO^zxbfZc2OLX^XC9c%pW0d%E`=QHk8TBG} zG@iSnWa1dd>^=W?{wDXg3P=8JJ0a)XFL8HicDc}b;rZK_&EPwu#&CNUM}+9Rw`@GK zZG^o(9PIX-%WYo8yvQR#zM+OEb;6sY8gspbU%WVGBkM2CQkAUbzlfi`dh(+ScUg_( zud6M&*j`$5I7)pZ|1!Icb_~^zqtvgqzqdLl|K#(Ne^Xwup7Gtruetie^w+I_mfdV# z7=B0j9`~llvsRy3w|YgCwqE`@-m+q0Kh{+Mk0-6wu8kc$^wz0|y7Vdb^9b@w*scwd*jtg89` zR|QAO_IHPGiEp|VaNgjK;QH^kTi3rUx)|ZP^?m616B~WBAFj`P@KWw$rRyB2EKlD2 z(=E@pf61ADmFeO<#ZMlhJFh=fx0)}$wtYgrqJif9hIiX0PI-`enS)o;K)B0UVN1PG z+Ydn&hrA;mmmLyjO_TiZ!Mjj0a#h;_6J={PH7mPM%@!{v3lv!F5SVS@c6~vIZ`1oD z+y!=g`ajs7oG>(*wPbzVt{riXkzT1wE;mLqM`fqp`q>njzM5%;?ytJ*EV;*%?e7Hb zc>gWDjfTxjG_uc$$eu7r zi?kC7E@Dq~kQSXbJLjtAzJGBJC7+~rPX68YH{em|PLCJr7N1T3&0sis{Mou$OL+N$ z`hJF0UGR+lQg}Gk`lam`82RUw8RFzT52BbR^EwD#Foc#!L>@_5A-TW*o}%Hu>h!m#%tYdBDkntMA{1`n~Ei z_{YVcyMOcF0|HyLT>iStmV7upf6juaWY?#=c>VIGTuHlTzT(i+!*{IL)SjB3bjCi* zzn$x<^yi=3j}?0VZz_(N?EB?1U+ur&XYcIr-@IZ)+$|+t(Tx^bU92YeBD4QYd8ClO z|GH#aTB+0|&)R2tFT_rnzZBZu`(^TzYo0CEpMLRyb z71Le3M#p5Q__vexEypXD{#x+l&IH5boa`HmFO)1;P#ezK+;^npiS@f*mks_ETiIFV z#8*7H+qxt#-!x?QwY`Uv%w`D3Z_=2->Q%cXO*iwnQjm9O(2|{g)@oNb&*Y!(RrNFI z`-UkR+PC-lMtnT^A$DRTi{t5_Y0Von88LO4e}Zc3_t&0oU7%rTKeDH>as$kDF%P7-8)?lUAXCV;nYKRBq>3Pi|eZ{F0K&!qn+goV>z=r{?6S2(fT<^4%;EcJ{sT z_C~<_t@oGI%DEj#R6Bo6vTxH2`-ML(s`Nj6pKOztzGaHp!LzAn<~-Y1G$;SQ)%l|R ze(#PvWlZY3qcG!zlZ>FHqpIU&Hf6rb>QX=9_UFdYl$MaWYOy^;=JNDa zD~@=4Td3UJyvX9f%mc20-31y2CMzZs=oFMpk#uK0c<_2i@|@@DEUK)Q$@^Yee>nUy zF#mp=L`g`1ZNi*08Z)0iljaFoG~27GZ_5{{WuLusw#A%VawKZa6@!b@9&J(H5ZL)O zvd`vp$(?m8PX%0Gb+zx%rWae+cyCSqF11o_#^Q^K*Eap;vvOCTBr?a)J-DDN-hSGGe_;X#cD;Sm^Dp5R<|0K)k%?td zWC-u#IE}d`Ph+!N=3SV;H!ptD?WGHju9N-vmq8{!H0AXM&!TlQ-eyEu^GE>Bh!e_YV+ z`b|tJcd4NYU+VFIHLYSoZ9Dg#5m?_Vnyz57}5B+Kb5qM;Ip;S043G-@f50loOl<3w zs=1B_l-{^l`F(q$RAh4b+>K8v#*dfUq&#vLRMYts!s|O@aq`k^?&cex)1C``y7wk) z`qOoHJ6DymEVo!AQFEYi;pEMIVV133p`H6pzucX_^q=>YPdd?>MzXr9Qa*)keY>+l zzczZLJaqN3|GZK0ZJb)i`M{5|YjfY7Kdk4#a__Ti%O64ccaxtc%rumLC&@M4HveJx z_jZOSN&0UjK8Am9R^8{pV!bCt^9k?ICI1<(Tjd+)ukf}w6fiAdQYX(v@n>It@BU#S zW&h}vC!+<6|BC(}yZ&nJUr_GrsF7~gHF@gvFn5g=E=F5bd3644+tGY{x zYO;r!@%?kdHA|--w)8( zCe~@|xD3+xd>IsO88jOmZt>d4#mt zFI@|!SSz2t#Qo>K?~nOwzuC_&a67i;-N*Q~I~jlcxAXl`|1k1@3Fp80S5~>bynk5Z zU3Bj<(Vt!%`CLk;XSas-r!0OjH6>EV!|T8Yn+?%ZcKBLPOG_1-|0<$3W{Z~tEu_H|b~IQ#E;PmpPnfyufEk6;-uo@;ye6u( zx8nRq)pPi(f@CN8D&p!umy#gmI`Q~R?vPu5xYk4uO8AO=@@i(MZ`YdTN?acKAGAW8pQgzsa6iyGUy8V;JT{&BA%A($=&xHoPW+|_|A1IyCT()4RLm~^;_52#>A$%4Kl{6C-n6~1{->1ecx|5LrCFW(Y1aI?8;rkK&P#ja zo4dcpK4v3xSpR|DGR&DRKN&a{C1mDJcJf}_nYGS*nZ9)qOGoZ?8P_ACKOZ{0PtFxy z|Fh%R&(+)REi<_9B&~3)(fY$<$0v*Xc796u!ksHF+xnowtA|&!_Wz~Iq_;cvJbLB& zre5lQ#e}O*)Vsv~f0_{4yZ@7bR5tTLruy%Bf0^aIFL6C&s*d`s5T4?&DJAXPk@GVQ z+Ot+g+vi@{5Hi2QFn5Q`(>C+gLtm4)OiM22X7vj&CbxHQy!iUA&Z0n0=X5 zO|0$DM>)NFT>IV4&ObIhpZGXQZ1>y3u>9;-B}+DM(b;!-)`c%k8x>dH*?;xB=qg2(r_I!)@0$AB9$sdnQp#jv+Iw^w+iX3vn{UL# zyR~M!2AwfcvbmCV#XIw9<6jOE;)TXXPxddHQQ5Do@_gP)iQ{mdx!h%g~q$Q zH|4LqE0|Yj8p>9<$5O#~_t_ICGnQTz-5lVXY3V6f-D_@QdCz-q&D$Wa!2F!)_ilcb z+n?u_9@TZ_;)SzT4K>et7Fq6+nylDe@jG?3UEyM{>1vOQ-`iK6UmtC)JL&hlmph(_ zInQq>$y@$++V^d`AuBnq9hr3`Du`kB&4(v+t;0Gz`SMTmnM$@SWNCVq6P`Rf$}4_f zQA^iMwX)z6F^9+!}WGp9PZf>RT(f9g1MhN(2~_rqSEmoK-L*X@~? zcXPsnb=K3L%{s8CR7z=uogg>wCpmv3;VWxepWctTdrI7GR#f7)p8cD?{&Dy>DZ9`8 zrGd_5qu0xKdlp*n7Gk@okbgk^UtX!tY@Xdh-RctQ!Hi84k`HUXEq!(Msn(Qr?#Y!` z7eAfvU^I8xx|er;m~A@vr1F!>{-sy;${MPbwpm`gXCd2G!?4L}GSkVpvu$;*g;TwI zGIpiwZk+H}Q*G*G1@HRDDN-RT=B_xY$0+yB+B4U1=hR*Q3N|f_{4vE>L)bF@I(zHL#7faMj3>l8YWu<+lw9SymbImXx16=&t7blb>$v6#|CclE zJ{&*ACFrbqa>bO{R$HCaqQcnTx;1OAfB9%l;zDcnJSUd7Fd6<9tgRh^H?r4g5$vaf7 z5YXcPZm}nM*#Y(R$8Daw(zb~-INnzKo3J$cb87n@1^J?&IS1Y~I7`e?{P-g59HX#v zZ;1Oeo~pKa6SYG17|SM|?#K}kddi~R6R?0Qgg5pF>nxW1tH-CUd~iPF@IIOHi7%yY zs}=38ip|V}>*ljJeYk&(b;XsA)T@@}2|B!=?!4NTv|v^B@zvlX0j}Mi$=;;B zE3E3}wHcG7wmvKM)MYc@_{o+1N%kGY9#p;dx z=T|uyIiKp{VB27DLcc^+Wx0`_=Hsk~vu~|c*`1&&=Nh_RM!srZ*2IwAbqP^++B4j& z_9g6H?`CdLul6*{VSy(XhimCcKiidu-Ww z>;~`bMc(axDmxPE*F*;Ttkw`y4=mgAWs}!ci;F)NxmU~G_*~uaS2JdU(b7wYu>M}wHlh9H z`#aTr-zyu^^tTlp33*pxl+JHlot85FQv4N-n6#gUZ$7(4---TxX9L#)hU+b7ZC@s@ z|KXxjv|Ns%;61Bxx`OfYwndkmw`&)3M2V++xU65LA;-G;+B8kAU0Dfvlh;?&%4;nD z+%iY^eNuY1lTW1c`ieZEy1y&3EkyY4ygb94c}mES`IX-m8|Sn0|1jQhueq=N%1>rC zztrL{d`UKwuKWskm#5uqbAG|8-DPGhiwn;2f7f7B`FP@(wD%+V35V_qHOhIPU#9Rq zlVgXzp}poT;U{jbyjQ&g76u1qzIA)rFZT7GQrx8pmfkbhS6#1u_9T8KXYS9h$zH*| z-;aN^dlDI#tf?N*yVb5GPtT%!p5An>`=Zvtll|jv+6OtTKk(`E^n3Y9vnE#fi2Xdu z^8a9b|EY@Y&vf>G>N)wuaGUgwQPuJOAUH`rJ6|2f?r_;b?1U*?OCJiqshL+m48!O;ql zuU{eqYz$N7=c&dl5SwJM=+K2Kr>HC3Zx8mI6jVNJ=eXa)_;8EqKb9v}o*`$~pLxNM zHeKMEp!F@|=e2DsbrP(fZ2IC;_-$&$x4zV$k6(Xpe)Q#j;-62ewfmpg&5ycfuys{h zlJC@Mz0;je>+Ur2PMITi^Z1Orhdl3=3YP3@pS|>Zjw`2%RV42gje{{~m$K?^Tz&ax z?zVr7OVw7Mm971%RKCRKvct~a4?5`?KdrAVYx*4ZEFn{{wY>d&-ogn=o;M8qcV+SI zZ~EcNxxVd(>%?^nW-9qfRZKbUq9YDLkLl{qEnVu++1H7pfm`teLuA)Lkmv;b%;*;r|ULX9IuQ$@B=kRDUxg<7;BS zm-lOHy~BICoZU=vx%_ABDR^n~#41g=9*&YC3rzH#o^dMDA0Wc9o2Tgw^ei#3M2bc$bQ zm^3#cRsM+NhC`+cczM4R^4v1BXpuAF{O2%RZbrP0=LF+Nb)2$utN8YRy>+I0l9G@2 z^boK5)ia8&8oqy?!XS8k>8D#^9(xackW5VOy^}Ga!L%dhySAx9H2>py%ABjCu9Y1P z$vJ6d&-Kc~syOkY+%5=wAw74}6`Q`hQ2;i9oi%i|^N*_^?@9 zeU;wn8m0ed_5Pn!{9mjjk#ja~`J44#N|*lIw*R)jxs=VC-Fo%DIV*Rsn!EIP{n>ph z<0}`hdGPDx?wvEuQ(F|)v~visI!#FBTrlAkgK9Iw#5|_y>?RL4C^-zFL?L=*7))5pnSbm@m~>%=4YR@?S*(_uG~F& z^HtTsop%-#Pl%hRaC1)Hu_O66ZRW)K`_Gz_awaq5PC~NVvHZ^KXExj{dUCJu_4MZc zhlg^6#U9LiuX*{s{r=sLk~7zT+AnNy+&@sX-(P-qUTVytt$VXvo-K`;eCa?=i23Ty zjjGjwKD#vQrb%gqod14s-AjYncMR2~7tb|rW%zTc!+X<1)>oxp{PuHyWK6%k;La_{ zEg}ETe!pkXe3Pq4t7`I|L+6gCC2^SrJ1mNe)R@kzHoJ1u+P!<$p74#WZ!mpreC=n+ z)~@oKCA()|^>{b&hD1@(ZHruwy(&5TXHGrY|CT*s<%xp+i;eNAW9d=g8rtrDM_$SK7# zJu);XW3`#(WV^!0W>QyG)1RqqGt+SSGvmWqC0?D5(s?hPqB|6eZ7$AO=ry&$U~;mh z%GTM>%+@Wmd86?B{VvPgpyuw(I^NPF${S4rW_OEg-s~NYiBRaf5`sTbx(;OFe zdh_qBnbvfuucfiI|KtXD0iCtO{?Gjn$6f=v^TE|R&q%a^rA$ba7CHMjO1 zelPUs=-W%W!JBqHIALQbGApz?>)>^JJ>kO&Lgu!PEmNaA;!>U+n`EZP?Dxz#abdE< z%5K54TZ-)XJZhJ0Y}9s7GcVe!6U--~q^4E%f5KG3!{L*RGD_DKpf=cdb$ZtRO zwRn&Hy~2(2SI>GYXF2<&+^N2w*H`{{FjIfj6h1##$yUOy{YHsTB&bnaPY1L*s+1yMvCtmAy zKACzj)lXnc<|^GyYTLHj`w2=HMKexkKF@!<-%ZzM`)uJ^tEze?SpE7bTHNh19h@UMUq6t9E?q@$hZ;&xWdAUZ>{E?_+h% z%hah@s@vz|tTQ_&&z^X4jnTxWXH1-(f0AdfTcnVX;=6TClK0e;?L{*Kjw}kCoBFuZ z=a#2&_z%7FnecmTUQJ0*?&{~j`dZEACKBwjH$YZ9=S;+ zzK{Nzu`DDx^G9Sf{}G8Bs+V{YKHhxba(mUj31%4a(h}VyHv*L))r^rh z-#yH@bSdBU(#hRN=bbdNnN+LgT(Vm5#(A{^^XF|@xNMDU|NE7zeiW8}+ILbmPChds zv#9l5@xEE?P8Llji!7F_L~Xoeuj(Dq%KlP%&eTvn$MtVGcJHfsyt~Y{@A;$|hKY%j z3+8GTwQ8Bn|1s~o+THCZZ!DknJ!+@lM78?|^dDdQ^qZmWV9V+BE3LKjs{bF7Z}k7* zJ-wzaVpoFAL?uJ{GQCd5J%UTF>xwJ8nJqcG)%2*)#2W8*L51AD_2L58^=~hKpcVN` zDpKb~+JUo6Pq(}-x-u>Ju%`FpsMEELhby}dZwTZ0-YD;}mB;E%)SNGC{C=)ImbIVl zi-_HpN&{1Y*XD<$q_%Fo-tLV2Erzi8} zPi6VxxpXF1&*pW%GS_V|-p8+~z?*ETTQsRC%wHfPpT%qaq`wWvinn<-_B~9v?$Io_ za{1Zf%R=b|ddi>I)i2Plo$=4~m&IA;rTGFknd{yq@UC*1KDkBR@&xnAXxG+Pjm$nu zsdX2{on1F73)TAjb9R?~ahiIs(0W>a^)^)nFJTLg{~g&T&)lUqi>`9Ks;*{|kr{u7 zsc_XFUA^Yys*-zigPD^v_;tS>;BQyZJtlBjY|rD8J>n-fHAPQ6p;vyPU3YT&a!-_O}bj&be>q=bmwNz1mgt{{kFq4Q4;^7g7XvS__MrncdRi!IWyW`kb-wSRS2Q@>Q}j?uUliuchZ- zUh!Ml>~+r3zOw&vUDEvPoyO~U8Wve}yV}8f7G;H01zz9cQfkY|84Xs6Uy8rIWH^1iHG2>vNonj21qQ8lj zs;0Ak$7*q*vK97O57pm@rZ2l0aFp$swwHMH^QBAXaNG#FlKS;}!y4678;%ya2VRi$ zpP_Mu>qwTHNFYckd_J+*yv-@MJ|L+{F2 zOl!3I@@hF^wN^0(E#D%$zuod(+w5ok?Wd2)JL_&@Up&ji=7`&hFB_+eK1o=7yHkRz zN#g#O|7k7%pVa<8$x&W&m?3i^BSVVkKlPVM|AWMN=kny{_~iaOZT_L$tZDMg|9r=0 zUu?Q|K-Tdu+w#Q=8`V@ee~KzK9(m+2gG0$%Rf*X|Kw-lQW#vV4OEz&wuYDeN{b_H{ zl&zVq{Z|*I&fOxpZpGZKx1^i75=C|&D&Ksh{BL5%{aZ!bcm1oHz45a1`zwkU=7~R> zym8{e-__^p&8(X*|4|5%z0d8!5N>TL^=n>W{_LQWhE4VAs(Vfw+9}xm5`7}}HBM;a zBB}DbZg13I)Y_aOFAzAT`Gvu)$KeJ!BF7Y(?XRbp zC@Iva9OY=WJ^y7!zDm`fzYE#q?s?pLU(I9lg*`<6>OWHf`MY&xf>UcbciijLF6w8G zvXy_Es3QL{@jH9m0o#(J2}KwD8z1(DAKDo1YO{ZaQ9pZ%!#~NynEe;o|HoYD-^_cb zFFas>r{4aF%lX5q_A8#%-}+B=(anw46a4qq)$|0HWxW$_uhjk3Z#7kH?;fEy8dWkH z0apc^Y3@-J1r#TAX`+Ti@x`%Hu)9(C9*kYqRg}Nw9iIJ`0WcTO}W)}sO@>g z{=F%?-~3zSCzSVQs_uUK+TSmYsvj9G)CpaF;Mem~FJr&_ZxK`1&s%!Y%lOhtu5{j2 zfj9QV7AGY~x*a?r8&-Vd%hi3nt)dYt?zS-YJ(z6!xp&R+J9OJq@>Cdn>k#!!|?w@w$uaO=t6H zGR9tPSlef0!0owy%Z!&=)jz(+DY%$BUw`7genEDcdQr`_PqBwg;(r!;DZE}%cPee! zw6CX+FXwtV_0KC7p3{q>jP|bDlVG+peJ4Z7tfPBY>XdT+{@|uLXxS(Ycq8! za_;WRs0dHA;$1xF-MxUN5@-9bh*`eQl{r6cLd~ATr%QGuZj`O<++*M$uX9IbbJ3;y zUnCn@zbTt~TAXJ1CHMcT^0q}mQyp$x$#B(OQ&n`wYsR!-heyYj9Jbn+@Uq8Vn}vPT zsgeP{DhXee4mWvZf2-76nX)&CW4c~qntzLO&ei>Ek{@av&VFpLb=GlLd9n1) zM4`7!RvnCBcIvLv_O>*cf9v-(KI;>|U0bCkZNCM0Z<|q^K6|O`_Vm*;&PtpxoMOw9 zqvHQiWn)a!^q{7LnQnOEn3xiydNSaM&5?VY9nTr45&nYZgPrZdstnS< zxh@g4Y%$!avWoe%hGOTwoDB{jN3yT9XPmDiZki8)P zR!;WR)o<(f%?~I$c`n!S`b4+KDiuzaI;T6D*{$9k*I((j`2OtL2~mN2|J_=Upt_vr z>Uo}NR>uN&_fJ-5w%_KGYTmrCamN#vUC)->U0D|4<9yuY@XN`TTaT#Dexdv+{cwO) zRna@OFC7}yX+F1_cZMEvTA|tE*S?J5s+flP)40FJ+stg|>PSCpao8}KN$i6CTe*M6 znIAqi>8Y^158k!E|BLV+^`~;`e7BtQKO9$Fv0mZyIqB1Gri~omb5`!Qw_0v3e<JP27>y7s6H4lwh zGRvJMXi`aVPt{)-E?1iRrz|+w;d`g!N?YCw;iIyD*rxj4UGYTjmRk9b zEu12qw)KaHsk0$+oo6ND~!6X)^V|V!dlg-+Sjkexf^XN2-En{!i(hoT9vwHVc|1{KS>h>FR$3>`t9!(29D)35*}t0s_?Zm+o-FT zrKW#!-2Ul}M%!f;t-{%!+I%9aV*0)%_bS*;J|)DS2yIU6@$X=}BHg#8TK#CGWq;b< zL?2b98D)}P_A71p)uh~SPI907Bd^lj{*Bz>V);2wLkfS^dOqjnPP}BRySU=byQ#)k z17|-hd@pJDYq#fQqqM)K1s>V6Dul~Y-YpeZPh7TMvGiYTW{LS(*SDHKA8}msS3IgM z-Tijy+2S|uyv!F|%cH+mGWx~w&-t6S#m+VjocCbGN%OXZl_wv4 z%GJC#?|0?DKS}xmz7jD$VTDf9Ef#Ik+sw%>2W=>6Pz#@>6XRFWK1N;B4Cw9jD>W;a}(! z@kpLid@GAK6Jwvoy+z5LdTGlaHN1GLAoccIUGBXV3f9{s&M0!td69I)#rl!t@kfht zGrBk2m>}r({ai`8%Hvz=YpvOg^$U-t-jnbxbjxQs(-PXW;>7oygDL#!1;@7dz0~tu zAKUcB%$UXIw|diM!`?Rmva7^fqP5qStbf81pvAt=tNX-F!M&&ZeCE_fZ&OtN9No20 z%XUWoqQ zv{gl{rfP{jM@C9h4O7?-!!w~0i!y|d$FN^MF54P@E_&BpxAKGM?emY{d#1*wpspy) zddB@{`C_x%Cm!swSXh$S;Q7<^>96lQ`A%!U<34&)b*|^`OXt~ZMSg7xF$psXetY4< zBi^I;G*+B7e3oIkMp3oiYpy~_`@4^;ymCcL-W#~4-o7<$X0lKG5#4ktp2J!mmpsJJ zHg~;$ohn~&X0e7_n8@y|yLm>=!L#i5Dy}}1QxlmPeZc-)?agb;EoQXt%eygeO{re8 zXV2Eyz%zIEu0ABXaeI*YjeAoybKmn+H5Y64&5<;VaxzNUe<*%q5|2ghej~xvytf)X z|6fs;)6m;}DUrY6P|m@xwufI#S4#7@OfZQ5sJ9|?PU4T}$5tJBe_E*c4D0Q4yOw&t zPk8s>n7vQi+{_KNY%?$YJn?mkF8AiE7wr#<$lQrOz5e5mM2VlP&dN;9=zFNLxhr0I zc3|ATXFJax4mEi@XJ)Rq?bR*suYB4jl+`=?i?zAWC4?K@n=6)(M(>=WW=ZW;>YmXi)9T5L(b>O$y z&wvZ!Roeod+HxzAJ z@&5DD1=T+}`s|-xd-(WL(G9chy2;{dFHc07w${&jYjgbf#;wQG>&mCUt~}81$G=BT zj5otrIm*xH0(|O+g-P}JZ$AvD3>rbxx z(_vJQ%656v^dz^RA0uaVcJEqo=1c#|RQ+oVdT3mX>R+~B?L>7>7#yc4j^L6>}z| zCuQUMw=*WDK1q2i*&V*|qlDyox%Rh`^|epk&m2!$`9a#CerDS3%R&=xFLT?)lU!9R zlDE8*cgc)Io2f5?4qo7#>3ZtudA_sLYEu?Uy$X8ed@%o!#!rQFOJ{D<6kYZ9Vn$+p z_kM?i+k0QFT`Qt)pyp+ioVChfso%DUn~_3KV~mccd(Jy&@W(D!w=(3DM*XjY7wf#Y zi=@_VxVmn`s)Oq$2u+b@H>nI1(mP(%m#@0WH}Ao#qpmLt7X|OR&#`u9`ib2+5#JbP z1Pf=?)P%c7=%idtG`M25$!E!gdp1`ROcHADN$Rc>|&zu&b% z!uK+-Ot6a)Nt@Z;ZaukE%<|D3!O4XdcCEj;g?*-FU2oQ0?oxiFNt5?`UtWx6$rerj zq8(=nT{^zpnXc-~)>rfLU<6x^UsJb8!RiNoyAGacUHnigpOgLKt=P`qJ##j`aB}y$ z!M%y;it-bePhaMiY5kPDar!>D2IcWj^pAGI7+?5-b-+8&lr1%3HEZEQUNYpv&v>=^xC-wK5tnsz^^V#9_ zTz-}(B6bmh9-gf_%lr?fF3di^=`Ppa1$8?8m5(=Bd`ti5@gnbMQpisCh>jI|9_`|e zH_fXSl~1~B-1hE9_Ng;xcWLSS&tK>I@JigAIE%8a4ta{tSer9{N6cI(Z)4MDKTl3| zis#}NTemjv_dmz?X@etM?s=(orult$qSmV!{EHEPGj~Qt=k-Iga!#E{?6)>ZzcE3* za5KYw1*1IYdHOG2ojIZO%B*6SlIN<%OM*o@-Ifc_E&Q>>;!u>q@x|XB|J}Hbk73`Y z!~2{*X9%j=t~yls$t3#+%c`ELifwPqK4^EUF0Z&aQ}cS#x+Nly1EjX?2<~NEExR`6 zVu9?%849c97_NSZb~wK6S$@S+_CnW7noOC$9fX9=-7*P&(tmu`^niWSwp*lqJ#y`q zw%?AT1?|oWCO--`91+j!o&V7>*m&(;_O;6_YWofBW~Vehe$XwDR~vNu)svq`9wuJ< zutxTO8_)N*CmdU=9QUf_z4fd%lac*sFpZfaddZ)d7tDUzZ`uhu=Is+Zv zDaX!PujTviwYUA?tsaMh31#0{x<$`v2D`+CPFriVe*c^QlQ)G&dq0&IJtgK7=6Lnl zHl2n0{O`%HiJV&>Ypzyh=`zcj?f#$JiQyX*Hg4U&f8H9&D~8*xe&ram80O7>_;TCi z?dt-*^cGH%iL+hz(5Gh6m&xs)lK1AG%4v7ISRLG3t2Y0$#6{k#6Y`&JxIF2Sy|cXJ zdxOT->pD((`zo$mP5(9h?|OBX`qXKb?F~T-zQz~t&BzN*&b!z-dVarr%Kg==iNEe_n%m01X?jfEThqtCQoL>pUwzu+yYRgWfBgx! zMLYDLU3hXhFXBLz+3tOJ+a{LJG06V#d)}NqvD5XZ{4L=B_h9WFrtli`h80@nmis~< z9e8QQ+f%%HgK5dFqrzXYPS>2Iynp&;?I{^k4Tb*9J8-nRakKpKx-(|2 zR_>}x?4`Tc=X*Tf9TFRKz4@cb#i-QNlAW(K1ka1ya{Y4eXn)77irAC`Fc+2zY5-tVmG=1Fm?a}HHTEMb~# zHviL7%~R)G+0M+%S|^}2)irg~+>j++JJ)|}|Ehga`bLO<{_MFAuRUJzuy$LFW!iS* zbq4Ev?%8SbSZta4@_=Y~=C1yL3`K=@=l9bh&o`fY`Kv~F>JJys5{cC*>!v-*?XBg`q}Gk0@7Mn zI!|6ZN0nzbM%c6R?`~Eq%@&daHcVoEyzTN*mD>m0;v$qRQRsVxGFPpKn_htS1q!WSvzH6~< z)(gJPyF#Hkqoj3JST6HH=O-5vS!Qwsq#XKEZ8qD`eEPa|y>qVW{y5GfIEnq>UVTry z7Rwn^svA5mFWE0{kn;bVZSt$`@Bdj=@=G!I-aLPGx2ye$^*+qvPbJmZ(pk${vu8`M z>bc2#xzk7Q#y82|H})+)Qghzec1!!j;KL%pg67eRyxxYV^S++ldtUvY%8pX&MG;Ap zM0{%>H$Kf;5&}WoZi0s!i%o{>Q!aVkPH7M&>>4l!iv^TsV%jk63HF1wkOVgsul}k6D-fuQTB5_vCy{T%F zyX*hF{8?u;>E|~6eIYBR8ck*jwww^6_e(YJb^J7wF8%8#U#z^kFm74ag2w5d_FFEk zO4!%GlKuQl8+HETsR~EqH+$t5E=-BOx8c)uHIPA>Rv`6=de2= zYqa}>Zi;7Us?41cB^EW=)vxJx_*=zu2dd8>2>&xXDod^4^VO>g8Go;2ZmSn-Oq_f1 znc!~Kro2N&7fZT4U7vdh1}{wdx32zjr{m6eG0RsBx?3)P+h`kc*&^HHyTF}{V@Dsq zzMoz6kMqj^mJhs>4Y!<(7yY|mYtw)I!r3bIe~of{-^NUN8#}k>fA#jJQ~QPUU#^H< z;h*!lk#FH*E5@k;_Pj?Fd;(@njc#WYyx5w*w!pJIPwcM8z10pABsL~|-Y4Qdcek4a z$6tvxljrQsvrV^rZV_L$-+unQ1I!+or#^k>K6K>xX~Pi7)hx$11=e{VijYZP?%Lyd z%;U=wekqMVdMg*^X3bCh@wMowmR{1W_MLpAxJW_-T*?c1}B_Nu9`SxO&hz3bPTnlrgAS)+`1 zvS0iJwZ!RP4mm9-nH+M;@7X@3;(b0TJ=~qUd}Y`9u{V`YnVH{dn#((>;%xBwqf2hS z_^$BxhsyOwi~avBb)TTI%4XR-?-YkQ%4c1xUxdPRj`#BXvoTeZ^kzPH zr%AxuLmt;th|gzqh@fJ>~4$7RFh!c9R{Wa~>hAMBQTo~b<`MphCW$vxh;n(cfUa_@9t_SE1#bE%8p5#DXk@de*2j|1}Esbh&Vga(YGskL8Dm_cTD0fGXc{# z7H@B5B}P`AnI3!k+nwA;@l0!Nzm&|KUu1h-rs`g_<>|k?56vo%&%5F{C#ZW(xNZ71 zhbcEUHaL{Os*QKjUB6m)^FD3XEm>bK)USPZMDW`8nR$J)cJEJbtz4aF+HagIu{1t4 z%Knp)=g+f$84rFkE0|r_e0S#!o7~tJ1s&fvc=AUpo?)H4d%3*q$N`k5{Q_v4^}fi)`@)NmbUf+B!Fv&s`Rhpi;i$??ml)?1k$tpS!d2 z;{6w5vXMbMdrKU4$(>VORjn=RtM!0y+1{4UgE2eR75i=0C6Nia+`$W}{2K+4e5=56ySY zHXmv2GxXgSAj))HQtb{)tM{YUpQ{%ys93-7q2QK;=Lf=9yM;D5>4>gq|1x=cpW8cL z^%d?lZMv7ayO(q+ipIFGtQ8b2&Eb<0f6SdQ*R1Vgg5#yqCEkY@sdE*L&)6E#9#-rKKZgrTqTQv-Y(cemQ7# zv4!7+LsOmOXT?Hy_FtNtx45bob1Bz9{Oa-dqq0)*1NEQ-A|e(JzXi{9-r~qSs2#?9 zFZfQKq#dhy(YfkB6BqnlCbPmNYn9BpWl3u$&02RP^TDB}&dS!ZvLpjV{(U~be_pRS zXMg)x{i~<@R@vXYS-)PJiJf7>zyI#~>WTl}d*0EtOmXaaf9Yvdtf}s~PaQSQqD$i! zF&`1q(G6J|$g6nai&3Ka(OtKeUKW;yc%FP}S0*v}H+;0|G(mUmw= zUtj+IIsNeBPn8Wu>`4*RZmzzxS#jc-l*GQ(hvyvMV3^m+*mGiv;SHH@Y|V_uJiU`` zZ(qrscPVDwyHzLcmi(&8C_d6LHR!Zi+}8aGam$!io9|LDvU*+oNnF8BbeUHmk8a)J zX@_sfnLRO;PnYrvDM^|?DbcG^`Ul_SeII02Ji4Ox-$-*AL#X(ahdZj)pEdb*Vq?46 zKaN9JO(!{UuQQSGzjpO`=fPP*i>gg}x4)jlCG$#g>E*9?-%i_UlXl_9UGMx&1t}hd z?=H5zt_bp4sCTmD;E(4aHC?yVQ@P(C{Z;wF@D$_GqBOy%IjXL|_#<{+aGmn)ecy^l zKd1U$`1B0#wE6uLbFDDi<(_>lZ&}a-1}m+V z>71dCw?$QUoIbkG)aA3u<4prdk-0}4J z(d>TKTdmq6HVRE#mFKKBrAp5B+y0vAhbYt1E<Xn`CgvfE5tlg-*oPuKig)qRLZWC@sZ2eBWx7Pc5JGLQp??S zwgQ(+E%$gcBpLqBIkJma-96&f%?`1Ir5^=0=EY+kk}7|= z7X9x^vTyk%;-E3J^0AC^>v!*j<>$_xZtidLH+8VNR{eaw%#NcwG~$vp_OkR_OrAGa z{Y<0vk3XB0kKSke;h&K<*YwEl|8Xyw{%v=D@-Kb%}SxP2pBIQvqB(YJ@^OebQA_+-CUfRFMn1yzx>&gS=HQne4iMkJes#C*FAT)JAWa3 zO<~iQpsr;KN-}ph=$K9m@N#*xAUcOFO-Wb1sOjZ=&R#HYvZ8pz`hN?*98R6DI8o%Eve4GjKD}FK0}tt4ntkEF;_P=W z|E^StB$r7h?=|DrzQtwWRKXsszp`7}{!6s%p($LtC$|;Ezn=8rj>az0RVJU8eVFNd zob$O}Amfkzw!n%iHwnhjJw{76yoz;Delo-I=(Gui_qdIXPAzW}Imm5n_K@4yZnNRs zIA_V1ADSl{ZG9~NA%ayT@0;L-NnuP=Pj)#uCLfsc<6A?V2fG%}sRykVoUYb-CUg6Zg2L17qEk0lm)(B0Mle^@tnX>#NU+G(8q%BqN3-&)#wQtptSo2_) z>io{XJ|35a@2}YYeYSx?KX>_u#>$jgA9<(vW**@WySU}MYu`TcL#}y^JI^0X4B5%Q z|D0IZbO#6DCla6e)N7cPel9%aBhAYb;$vO;*s9$7ml1zVW0bS{Bz?Ip>DO~p4?hv= za8R0HeB#V&sv#nj&OEsO5SjF1YH z`e&3`cf|Il;;wm`4;P>HD9@GDSgF4JpGM~_?n8&P=0A$MAfxn&-M>3u`_axV|7xBo zN3C*b(|a{xmy0jU{6$vtn%s2$aY@#Ttg-bAknt9|Sa>C>x`V|rX7Rm1)jJv~MKvcM z%s=th+V20!&A~78b9L&4d3k2kzxIB5x%|i6wbB+^k+UUlNJ#xne;2nh>0v`b&y%%l z@;1h>TZU+}o?Iid&7N&Nm#fbW?!Kmp^O(}2v`gibcbjZ)leuk>rkC=vFJ0|HfoICI zf7yAbHlFCXdrF19EAn8|n=y)iGH`wNER^d&B+f`|o1zDEgG+7nqkdceoptI=*PLna^7)z z?m4ShhTWAZsC4$ZcDHT$%zFoqopfY8@TarX|GUWX%vCiDtxVmgp8Pn$rTM^%+{D&v zm*;Mox!~<8muc(D{oMirS6?*w=*i36?^C-+?Go#slD%6$-Fc+h8nj&fzIp0arnjG2 zgq3CaHoGk4{*)@J;bgc#DR1@%SE263O&7+9XXTd zhNsq%GeNU@bgr~m8n^cqoi^kCIDNGm>t@cZU8fwFw?EbVzTz8qzjpTRA5oq1H+EYr znsDb&fmQIyqbF9zxwig0xe&rm&?w@$nmOFZA|6!?${S}M!FTFpe zFZeoV#njVIs!yxc=g&T`qIsypaQl>kC0W*Kn?%mI^|e&bJ9=nVLS3}f0kuA>#ft+U z=E$$?v(Jg%6tA>+JfD85=Z~cMlIa%jWL|CCrnl?y^!KL|SDwH6 zp*v&eiwfsMt||Tf{xKU4@M>kNRUd!q`o>LZ!Zr4FZco@k971-R`W~#|4)B)UWRQ_4 z_2*=wS60Z$DXNa9y8mt26+TV*ICG`fer~hX{ncLa)2Dtr_Kd5j%OPG|t2|Vbq3vep z(@$TD997$w*v3{K6I8smAt!k9`#7%+QTcnzSz`D9+f-y6c5>6z)B9iO9+7jibxCGc zbN9{PC${{OXl(aX^Di^L%-bwb^-e5Df^{R~(<|024$`iMt5fz( zTyppbw`cRwCs7qN>=WQ*)QCgL?!kijyK+x6>Z^OqmIzW6zAxP5*0ft)jc7N39O zvFc!+XywWoz9*vmowu$$`|h}E-MnJ)wP(J+c%!-2sBVjf&|WLX=e8c@Q43#GUhBAG z#vxM>mGg7kmWy=-J`(qxKKxAXIJ4d@McZ-BI?H&W680#QpgBqF0_!@hW=@sa)pCMC z+fvl*lj+Hee7}w!+96uW`SruzU$c(Cza=0TdnsUJ`sXhn`j2ae+V58rxt@E{_z?^D zs%bCNTN{cixIdm2{WT-fpDTD_)80S75|>MADRsZ8W;Oqj;a6>U#7My`qhYxo^OF1z z=!r+|+^X_RjIrg(>3t1~JK5VrcV53|E8P(9tDBUt>0*wI)vFW|sZ;ISG;{U)+28r)SZVu&T;`tyzhd`=SHGVlSF@^{Bf3o ztJ^;In#(m0?%mJ$yx3fw7v}%VQ@VbC)jy;2mh~0h+(uWPJbbV|^38U>gZ9&7&benZ zS~vcidocXlFPW1s%06;`I3H$S&;8`T%5vGh*6!H-&elK885l19msS@4FBHtZG;8he z3_)v$lYdgY!>`_uUCk7~@9Bio?Cn2Y{kENGdB$%N$@V;r|7(NYlha98t>zb(6s1^g z`HJv@{|6u&{1*2VQ;B3 zrrPTSeg&>-XQ}&VI@O?8I`MWcyM%e2@ZlT&6{lZ_dY}JM`{s-P(Vy?jpUwZ?v&&H= z@1J?15yQ{>TIas}*G=^KKmE~}!kgRG^uGL^))I5aC+X+%3};8Z8W$b~4V52Z0=3RN z0zbb>yL0Z_x(oZHe3xtMF!d~WVjXitn&(d4uB*v?*?o%6d(Vbl|NLaV-u7SdHn*oY ztoXZ5rLSc|->y|k#d{J`BGUdzvb_27W>SPs#*cf=O`g$e^vbvWc*ZrAY-NjE$E-gGXSS(7dF4Ax z)r^7H;nV)mN9T90np$}DtvY9uUzV=ttFw}`Iv;PC*&DX}l2+sKq*s9!ao6`2rQXsi zsdbT_&f;mc?9H)hw`T`Ou=uU>tofMb_@@$9aR3#Jkzv(;!(?l5?+_o z3DW{AeAyos|IRD2U-svo(^rqDW(lUhv=naXu3Wvw{n4g+-RI4g!K)=R_gDy;?se*@q&xR)*nCT>!n?_{gJ)r zQ=8%3pzzS@GY1R&U;eBLPI~&KxrJYSnXQ7unYIVq`A4PYo}FV_*r%6pMJ8iL*lf{f zZSsx0zv3QyTi-Tt5V^gmIgpL3daBHfm)8$%ifalJIdk!Vqw&e=hQgo6ce$SrxM6lQ zBK&N)T~^`!g)ejG%GjS-C|vNSCPiTL!C1$g1=Wt}-?pmmVcN#Ixb%Q(NO%9_N!4!W zKYoyVe1`AygO3|$)iNzEb-i4x^mc#pjs3+Ad%8b7I>|C+%LfImc8#>>oq8*;8ZNRw z?{eR~gJD(XqqgUt^Mc*ZcKOp>vnAfXUmpD^!eg=S<%^=5 zN`KFET6ZSt_b(v@rFh%*>t!-642xNftT%T*SGqKP_tL$_Hm=OfvU>$jcPf=%oH)n& z{ROT5dbhCDh`@$M=X6fd6YJJ)kD8o!L+xH%@0-p=CW{%Cx16fU{3A2*ZGzFqiKheP z((iOBb*{fOaYNZ3mHj#juIlC*4Fz$NHXV{)k*-w!NlSvYYyJI8ZJFEb4)Fd>(EjDU z+xdBS^5n<_jhL+DhF$g7+6xvuE338qYkW0Klke5yE@8KXa7OVjC*^YXY)!Dde)VV3 zs@;`l={r3m+Qd8-MI@xWyPe~fxYfc{I(8k?s}pOM&AfKrt$4~rwi1!3yhW`i8+f17$)d7kFO;~y($CS-nf zSi0ly#LhOhjqjJaten5<(Y=>zb{?_X7&EsiIN7Mk_=@Y2SFIUmdaiIpRwo}mAg^Ml z{+dr-YVp#!H|w|M|CQeLuhV+h;&|B;`@=UhFfxez&v)5r|JpFft*@%7s;{cPG^KC; zALg#c%WDE>uK28JZuB5!!;b9@M@{cf_)xTO>ZzH>{;2fdm6>oPfOBitnU;c9#V^M&XcxFQV@yglgVi0S$Q() zy1fFc(}r!Tx)#?qvsG%e$+zn~R&%_;y7Rcib%W?N44)^5iM0QF@aNKPg*pD}QNP_M z*l^x>Fi}zcjjW&_%gRGj70mml%0``3PR=Z}Unlokd-0QpzdoLy-W(S@yW!4^;-)nc ztNs;aI*I$`u*(Pe$$fcI6J^Qlwa_B`?Do3YnG+fLr!eNu6OfU4w5{UUnkGM2j(4m0 z7fU_1eNrc&>L(YjuDSl$@b+tF$@aDHvr|+-U31=NM6@2o1eMN%q zjv|qjOtW+zY)+7pnf2}5$LG^LYP@)oIMQCqJ&k$2=iaPqQ;kA=7C-j5KCM>$!nb`% zz5a*&=PjJ^>C;E);M^ly*h@6N+kDw*q~q50Y3)p*R*iCn@;0{b4nE5FE%+PGp3-Jy z?~31b`^)lAM}CI=cIf-flIW~5CF5pM<$Hk#NeT;&)=hJrw(1Pmp_~P6eCM8hc6k(e z==0Q57Yt=;B_92fy=-{x)WRI5%r!brnQN{Zt`={&@<&fVm$5xXn#J=?r`}zr{dY94 z@35?_{P{Tk#YxE*mz={V*B&~%@5sc{;upj>D$hL|*(zuJq{V`%^521{_b+}w&(z(; z=j5sJBi~2qPxRTg^9SG9cWcem66@>g_LzU^*cUzbFAo+o-fym9ZknlH&f3Eo@Ot(&6D5RF_T3X}W3Kw?K+=H`Te|XfAdVHq0fMEUiC;>&=DyOz*ss?9@ zyj!>0n)v^hIkyN5wmSO5M zHQkJvFJpz*FTC{7F4JrE&68e!rG~{*GHe$qiA}AOwJR+TpEUPa_su6S?s?6abxxrB z-ove(iw_meot-pSF|p*U%*VTjt9(ynZ44-z$DbKnvNw2#kGR|eTgGE7EGghO?{E&vFbtV&UmoVYb(zt^d&xVr zPC4DY=e6B<<4dKW;+1QaZ_ZFwzI?;=@R@@y?~j^qt(|Jxc26UIlm8dNxxR~52d|lZ z`h&pARe!5ZPZvHFY5aVpt1|25c5OMX&09-7o9A&ZzxnCtsY1D&dd*|CcX&S^;#{Sm zef-O1rgcm=4$Z0aY=6j_!X^BO`{e4$Os6&77hS*kY3bqq)7%q!vWm7mXgGcH8jrQB zP2k~x|JUtqUG~j%_|P@OYKijGsex)&Hhx*Yy6^LycW#{F8A_b2hjlJwwMVW9^R(e& z{l2UFkHU{NiFWL9x2=PCh2NO5ryDm<*}J8=)wx}8vqMb5)$r^|4Pxv5G%ZR@s|XMe z*_s`!_IlgDfCMcwGmiFElebK>nz_tp@!`TpU#t?dq+fe3UXT>U*>B<+;A zGVC)`?%Z9i3ha!}4OTdWw5Ym$F_Nm)kC|_|`(l;sKfMgCkP|{v#4ZUPGc2`PX!5!$ zIrMr8caYAM+J`5Z&BJ;97?-yl+<54SAm=9j9QIn}M6<(XCu>XNRSb`$Z1bG{gf&b| zdy2pT@0&+${r>tF26pf6D_^DZQP8L z6P9u=oaEWR!}|@-*4!tPayoaX3;l_nnWS>y@VNy_J{mbrt%h#9&oTI)eOTnJlk)k~ zJ;}O_lQYxa$hozCdBc`$uQB28^+#@IcPANz_ilVU>FAVgTe6os=&AEP2y8gD-1?nX z?uO$%3+m4VzpGrPb4TReH|wnjqWAPIxirVG>q|w{H;&0!ezz43@AJ)m@3yAA?Cbp1 zhAAnMU+1q9T(jYXDmQE7#**u~KNy>@tec?ax5GjE>|T*Oe2?|z4j+4>l-zOUhQc$e zGd`QmEU#yL)P8ktZ)*@&ky+lBUzHq_N}aY{Pbgd0Fg?rPaeG6$bol)Ry}3DIuPDxJH{|VprvNO_hdiO7s87ztWp6kr@)Qi8YxMsht^z3wp>$*?|Xi}tJd*zOT~_V|J9wR-kS zFVBa?p*m|`EQ_7Kw>s+QgUHIq9cP|B=!xMyedva{rvJ607S{Ez?6fA_P`%jV|08Hu z_m-eZduK4pz{W`!27 zW9{yXl_Att*5U#w=-$h7y`w(6kLw7D;4 zY~i~ZS(ahZpk8}nZ}ZubAmiP_Vczfc4PziGXQYj&hba{MVj_I*~LYpkk#6Siwg=hr6ePdK;l5&OP#oKBOTYgE2&S$E5# zRMtn-vcX&T(B@NWn|@wgc0(lYaOC}b@9LFYH?3WTt_oNimSi+fnqkNMbn`TaZ*?X$ zXMVZ8)(G%0IyLEXq=~@qBi8Q~*YRH6b|b-S$Du&CprkKyUbUApzZKnY+mWj}MShZ{GeW$k3S-!CrDcC0>KFCD;;T|U!fvCe~DyT|jIPHdL` zG4;FKDxFuSg-VWX+MVPfz0=uFbYiilY67Y4JCF%UZD+-8OZL zn!2}$21@$-_xSC*Fl5RQn%N8yB2wkvzRd(%ZPz;^(fm^&K1Sd5?X*?O6IoQ}d*% zMF;;{lg96i!{U2WbQGf2;^K|md#jY~feop%}S>%8Etn2~{_fwwwPQ0Q^XW1nP zXl3(MM=eckZQ;6cTj%-d?d3NYrkN>)WW6z&zuo-(`lrj+-@dM%!60^f)x8h_4TlxK zgLlu2I$gO-X?<0*$p6cdZ@#=&46-cds1jYKdZ=er>72p?4Q>~g-ucOMWO_#3>r<}_ zia)0{McrH;x@wAHQcvNOK))wZH?L|6_G{f(&UPapuA)2U!XXJI-5%3*wi8lS|Nb#r ze}83uQQObXGbOq1rk#ApmS45Y5Yk{|o@)E7BhBo`o=Az0CwY60W`%z`;H!Of+U#qb z44pE1uU+0+Svf9Y2;Jqr=J@jzP443lH5q2w1V^>6IQ+VF?#?bvy{J0f^5|PkdVC)a z&6qdmkdJjr$NLMxfrinq} z|1WQ--xu=o#csV9W!+C%LOS*bK8J zKXY~0%qd^4#p~K8|Fd{)@!D?jy~jV3f81bu@M7AB+va8;eu`LFecHQ@VGrl;Ka5sh zmN)Nm1nh3Q_NJieA3x)cYL9=Hr0W(-6h5wd)~7Z*^u(^k+m_{(iv5?%xUyl}HJPS%^w4`UYhVI^SVD#lfj=`kXYq>tn%hm@dLKBuSk#wB+wF5fe6 zaq9UqW;3&&=1zD1WS5_Hr0&!Cx9aAXzStS67e7rgmyO!3vtEqj_^okLVsFB5UE$tEQ%@rBqCwF)Mif>~Bs z1`K~gSG&G&>$rNxzIDfSrK>K60V;nMePCK~+)+h__4wib|F(SJ()Hh*(9v1g$hSja zcXDX4f{DkIrJ5^l*xfkV>s79qn<(%wg2A=B#jfu8Jnk8>-x3mdeWg9U3v!a)&c8Zk zKl7jY7uL@%h_3oqD=Pl!{;m9{y)yq;tmZGB+4)tTJ@g-ca>J!%Oif&mt}jcp5t*BQ z;=D7bXeqZr@xAXxkxF~=fBjpszkJu~{r!^t>W_Ba-r7`sAyGue z=|zG14NXqr=8pl*m-y`6_h0Z=kN&XtMp{z9J&B{2JT64{@7d61Q2mZE`FE=N-do4t zPrszi+}Ch}QD^(5t_}H*Ri5|}1eYfA%Xo)6oyZKnFf>Ps0b#1CnQ zMx831zFKvj$nMQsr>YopoW0(;VCmbdUbi+MUG4qPaM`nezhABTnK8{PW#)#jee>4* zdwJOPapJ3k$C{s>SMyAI=5lt;6pgh?+Er^xYR(*;Dc|ZfwTghY5rUgw-JN4x7wj*=QZ)X-KZTay$ zX}0l))Tyq$pY~q)(zm(!{#_|i&LYz*(`RVcXYTlub!^Aci5st|PA;3}r+i7mBAi>= z-86CS&xJOT0r3m_QcT^~e-hPb+8zBuYo5UkUHi&2B7C`L)*5qfOF5kN-S(c-+Do5o z8eLs)LaFp9AI1a)rWLkT_uec%S>Sl@ zo`;X3-Db|JWe2(yvl^dGmR?x+q)01S`@}|`Tip|9Tn^WL9+Wlp)HFAzpEmn9bqNW7 zXj#E0TqONE-qt?&O{$i0$PdqAw}2f?CQ)jv89yWIcX4cJyV=xutM!fC65~Hds^88# z$&h;Fjk5T0Z$;id#wUmF9Qhv_*11rzSMl6|oJneO9J5aUiv73l#m2KUO3bI9JQ*sQ z{Cp#8M@;g8(+o~eyLoyV2Y(%tw$sOk5~srS1&cKoXineI$GFgw zS%a}n?~ZA6w%CzpcJ(&rcXHm-OP-}`a+0(4(H?_E4$aPuaxXOZ&1}y!V!SRk<+Y`* zyjZs#zP zX4$4RLt2ATWb>VH*Vo@8?04D}tg(0glUZgOb8!DJ2fle#H!k0q{=lSt^8%(Vt#@|s zY3g%XFDb=x-{`~L77Kem2WN|xOI3R~JtrTzcj?z16;ZAe4}7@#rYXys)zv#a-W+?_ zI-<32X6(#^s*m4Xdhz6Zr@5q<(v^)*pJY@8#4S{-yv3eh|3;6^bAO&kvZzzMVbuDl zYN-`(>?f-&zuUyWdLLu>DU-F+98Hf#7R*_jDmbAudPl1nV|=ca1w-t*({~*w1_kyn zZMpne`Rz^*MyZ8A);TkJ1b+XMb(8VKo<+HD+}`c}mb~WJa!I2f`@a48So>xA%QO0C z;uqZ14GW$8XQg@ghV~}`P2qZTdNw!RVmIFQxJ7w~qJRC1YUA~HPRq;5 z%f=tR+ilX~#Ju<8@2Ty)&%fCA_GaHzR@rU+exr%|cH@Z2y@~#ZZ+#fQT>1Z`zDH|x1b!s6@3#r-za-K1Vn^k)nP=~= z-17X}sfp?Poj=TeHG#>0n!nXd)6BT9nJf8ygx9r*zWejw<59u$5m#MKElsq!Qd(B_ z?@gRGygnyKL8tSPyw_HH2yrD~t+)@^xlF?rt3pi_Alt}QBk ze&U&ays4V?vyy)W@;&AEhX zwdS|0g`ZV2J83@M^Z1(R$CYJ$2A0n{^DR5?Ua)+*NUDfaIjzfKS>bvP<|ARhaspR8 zZa?c7{lh@vSnw>T{$D@ce$~FqxVT{BrE{y5-kHyIuvyH?yV6cO?bX`SAM0J(jEh?R zrUlxS6u(s3yVz=SeEO!&qS|R0S0oHhYR@U#-eukHbhTnrdqWLt_1s-=?_OmRm>N{_ zqwdeY!?W|vLNfWcJ><`f;MR32eF3oZ{wyL$9tMxwdoD%;qrZ#k=oo8PE7u%Ooqa^0vj%g2LjXHuFuh z;~icaZGSy~$Lg@WNZHplC-;Z0&-^o88)>k z_1|KihQ0RR<0307UzaToiV3O-wzx6tl)}oU=m+z+I#nNWvUt*x{O{UXCYfVzUkhJ* zkndG#5Y)5X;r)`|Gnc!5;BI1X4_^INFL>>F>HkZ8lO|;Kyy#?=QjB%|%Gc7W_19sw zN3P*X>5F@#uI+oVrPxiieoF49EW5Jfo4#GhKE}|Q`n^NAbFavHwT`Ub9StXqU%I^$ zQS;oPDpoM(Q#6DjP%pD_?$`w3d7E!=M>K8EM^{n`~coJ?dEU zEoZ%?lEh8dG zYnFlGzi`_fTD2d4MA&|a>ot7bdSW;K1qT!6`>fklG=6AZUb0cD%66yl7cK6`@;tgb zpN0rmA1Qt@x!?NQmV&`2U6{%@>Bq&69IdG~00IOCs(D&l|lN^1RGzsixGq`DgJ> zMy>06wnXg?^Ak3TjOhE+Iw8wfLQ#uv{S_(YJ@xMoaPLjsnEd$Jv)0lVvpw03V#`FESu5rfG3* z)8s{KL+V`xq&u#3fBF?Bw8Uvi=RP;DE2* z+U&OFSxdQ=%#VbYl{Rzk^)<3&EIHq_LBOVMm!Bi6$y@uQ<+@LqxN=_bACmujewDQX z|IyXrkL})iw87H!7t?d zHuC)Vv**~})XnLWe>FW(y1TOP?#6|4Z(KY7Ld}6&aXnLqq)Y4GIhUTFk)E4A@!B~J ztD_>-Ov%mp26ERsJx|6+&pCMh9#2h@?6aLA9V()KkEs3rllIMXy1U!MzW-W+_Al5n zjIw$AjhqyYs4bQ*3sf;vdnQ!vtQ#^(Mp{o^$ePpAbaL1Rjf#)yYyMjw`M*>4evzbP z+;WjtD4r7_RWp0&+LD3$cz1M zf6ks>p??4Aqsh}I%*s}Y_&SfH<&-0ff?!?ymwhK+mfLkk?M+&9{lI^fV~IUaQ}?je zp6oBkbo1K7xFXi}#-oDDb6KS`Zq@AFYhTWoka1E@$fYf3o%GE@wuf1c9-n;{8qDFn z?%r>H+d#knvUxS-Xxc`~9UYKKgM088&k0beQ$GBK8)gPZ3?f3W1*3%A=zN?Nt z65B85n!Po{%Zm5$(hteAmu}@;J$2E+W7ck`4!#nth^)V^{oFLKU32=A&D*`i7T4+R zo33zT>*_RsjR8Dw%~bHa}Qvb-tNkLqn)rdM&oX5U<|c`}(i%2~YM4PI%c-hITqc8??DQi-hl z6AyoQqLUJ~z>lNPr)9Q(DhES~$?A%Wn;4JOU2xm}OIJc_TJ!h24<9n`@O#U*{i<`G zhlb9hOv$bNFZedee-$zRy5N3l34iMZ>EF?g^ByLCz1MhW?L@U`z1Oc-uDbj9z`U52 zUq>crPpw%mqc363qtU3nsVZZF&ZH@iUhCZ5 zaK-qvuY|3f_1=mDj}NOG*sed3x=<*~&97v71xr_ZYRDV|yG8k;7CCbl{84S5WMXEK zXfKx9FnR9fJpG~^CHai=Yh8QinwFlZdgrm$xmP8A)qXwp^B$)cO?9)4l?ao!IOxAD zxk~oO-$^E%ht@8Z;P@N$>-O6%%j;TqT2G$l71_CQ z)|>E|b~BqR_wKX2Vv(Dc;yLq_i|rJa=EnwaeVUgzlnVYnQnf4i$)6>XLdHKYX3g7d z64cz}n_Akrv3%*OCgp2kGfJD5Oq$SRudz7H*5t_D4ID-rBK`_kE~u`Jx_Z&oFJ^8{ zfntAa(xK>i`zl>`f5@15lOtB=a?8#=l9@?SQLL|iT53g@PH7S?u9*?FGIC>3tya2W zaLk59V!@B3|L;&;HDz+aUx5z`c7-gCc0Lql_SwblZb+~Gi65C)~`;#Ad#C>Qhrto;68I z`H7K;d(3FDwQ}Y>13R4S3(=?8I%1KqptF5@sw^Q=_ z%WIMAzBV3Uo@~w8q4INY$EF1-ySdLN`1=QLlXsrBeulBrxznpPW=xo#yYEKkp}%j0 zPnieBWk~FbU#q+J!zqQw<{1kfez*9^A|2AbLU3*3(_S$X-vTkCrJUify_bAHw!uq+ zcQWsEF-yl}_YjOT=AFocBF9)5oSOYi-%Z`nKP{%MeDh7wXTcuEM{lb) z&S`9)nIay$;)FnElhq%irvDRvH8oT-HP6_6Q{erc*T**PJtXnSWYYe(-z9qgD#l*y z|LYk0@X^Nyg^we3FY$gp`u(x^?NHH!p|jR{`R@Prc@}G5o&HCT#Ae5{{as}hqK1dQ zKe_mDUuIpc#r3)u{4LDc9RHLz?)k^cxMhQ7^K>g6yY2EzG&iNrRJ>ukz{6t8JH`3c zu`LTb&o?a8S**8p=9Xm=7xU~J^-5EhFW7M~r@+R;;m?}JCE>FsJ&<{}EbCYPTgkj< zd&QS!+UbTA*e@--8d|V;uH*N0`_FT_Stveum;JLd?NeQzV(*XGk76E=>puG3*<7=D zK5OUZ&&^AEce=~8q)%O0eV}tUL*>(~i~DXmZeM#mZ$WjncG_H%BR8BE$X(!ba(z1G zByR!FpUle#K0MLa@o4_;9=fyYSPm`;V1raR0wujf9j9EGJR&xqcwUrZY}3w3ljd9xvjS2ppv)tap6^4 zcSSZQ%y>GFM?!l;-An6qsieqw?LDrB@kvp8Yf1a_LqRo}LW{*7Uo@bGhj7)G6mMN}W;iEBE%k zxO>vQTX*LD>eblG)+9RRPvN1A6&Ja8Fie#FbwKfzTd&lG2?FmFUFXFeJ^$g8`uut7 zo2Hm=IV{ZnbF%z1Y5pB2JPkrSNRwY^u}Jh{i`dY(-d zpQ`)j_Y$v;hnaUCSDf_j+CPQH(BJD`?`o;D6TIx*P+N5Nee^NrBKhc;<&GgY)eg?y zXI=J0w>j2+V|Z=3*8K{WRBzdg^i%(OpyX=@3pp5lDD**(QBZOft0Gw0Pctc^@o{PHaG zsjHU7op|21jW_l7Bt&ILJy=-kpYzJBF!0Un%FDm(o|dq?oSgjq%;gB#{^;X})h|Ao zoXa#rNjWZMi_qS6M%(}XRG!G)VCs`rD{cyJd@G_6r2pj8t2spxKkv=lEo#7GV%oW|Nn&x)3YW2aNooCy{@8&W+Q5N1=Tl$-a@!`jN zogW`1evC7y>20a_{pq*6`sDIYAIv&md_JxJZ1(e`)8l=_S7fZ1VRPrrnR`cgdTvQA zXL)`1Pe0Gz{{DWKfZg_w3KqsJGLpy$^1J!U^78U936{9mGk7K>oH=N8G4kc9qFk;N z<0F^e_s*Su#JA4E!Y9Q34);{;uI2o3Ar(IjkCx2z6F zR~t7iJyokTY>?O>)hX zZAt;XZoYaA_k-WP4fTC@^76@N>`7+Mr=#;+uU%VO^fM=AMaP-TbGdu7*6KgGaw*~C zje{Ekldj|jPiwW|`{Q%>|FcW0$}K+Xy?j?OZK6kO@jHK7Ok2-`w~Zz=_)&hLPOSPg(bw*o zqV~KCx0Q=eGo&oi4$EK39iNlZ;kc`r(P(P^u40>{gTLM_4te>!X!g_PnS?(Mn9 z^E51^#GZfrCMEuRnGoB(<>nIX{J-B_W955xJ;)^H%jw>`^E$5Y{y6W>H)*eo?~eAK zCpJ9a{b}CaZ?g|FFn!;BG45-hVo;fU$!f#2%@wJ4zlj73ZFQ^Rijbkq7qUR3$gO1ne< zoo`vYo?Nsxwkh-Ww%ps>c3$4L7mPMu-uBib+Pc^7`?dS^^MkM2?s~Vv@KIuK1ph|^ z`!lA=wZ)EiISqwHOH-28Q`b+-nFXqL)w;P@ab)0`GlzZDlMP!YG zijrp%5d=-x-EUzony}Xi*DRIexoSrJLo;Ib{dL8S=&+&&I zoY-cf^H9V-=Wz9jLq26M=IKm5(rYXh8vD~!UE|*EkS%RBmFKLa>%|{^{r0SA;+ESQ z{D!k9UMMIH&#_RIdEJ*ayqr@i}OOFIRT=?MS@*P3>rWXt4)n-@<$~LKH zR9-f*QA&B)F{vibUis!>{l#}@EN3dbcKG`=7QuVx>eUtQdHi~pxo1y^`Kz^7PT$2+ z3)9$M>+PMoYQmH`^IxoRzjb9%&b_kmZHyQ5r|gfu+ie@%z}cgteuVdTeP*7-u5EWL ztXE7}_?kCpUVEMS)uj{Sc2BmM?y;t#zH9%Brdubz8@!GUD85(nv5viR-jn|?_)7P@ zy&^qdQ0Bs``^$3eKZY&0j;wo{dsq3%Y~e4;`7f%h_saz8&VPOAG3U#}FD!nY*jQz= z{@>S^Yw!Qf{hL&KI{MeK-P14s>MA^YUvO!~-FFQC&fHeMAhcwM*N?s04-8{(yFN9z zT2c6RzSg;<`{!HNTIVP#l*n(pSi!U4)|@#zKK^L>``zK#eW?%j(Z-WcMm%6O5D2h* zQNOD2-}$^>DgS33_#wYp^8etD9{(#K0uyHANZ$#aS$<5no@3amxJ_%{^Z8!;y1Q8&4|Typq})w#@Z}KI4NK zH&!UPNc~u@tR&L;Ioa67iRp>%_tq~HuHRa*c-8LUji0YFZ)(;|_RA;?-}H?0fb&LQ z3EqaqQ{J31IcjxTXVN3p>Dp_B?I-D3wmqNnsF!yolhzzot;%^?n=-wRPd_o$`>fN^ zMWta|Rxg~g zRxs(&r|#)jUc9mV|7_wz!OEp&+DF5ctqw45JFrQoYm;?!jeG2)6~%W`doOC_PIDC! z;xG1PZoeL&5oT0>fBR2ypM9sbe}yibQqv{6=m01C(#28C6Rz?0Wqq1oEx?k!w)tk8 zd;7O{C$II28*p>mGwAX-YyN0i`{B*LS1Cg3N9Eqw`p&vsHffo#hHm+__iwzv{OX+N z$v<1>?>31$J=N5z)D9n|Uw&>vEp3|53mj`!2IWfA?tiVD0Me z|E>=D7kfglUUvEaFZbET+b7sv-KVRRoD1ZdXqN8o;>R{eRV0Q%dWSc z_qk@>&T9F0>-IDFe!O3>-=X@UM?#4E)eW*6TWu#ws3r!wyyy_GoYb)Vz=Zlo-y<_W zPna}u^2Ny$CxuQ->NuNctI>_DQ#nJ;(N-Jd4 zEtk!{nRy{qb$iCFeHXR&-+23d!lWw)ZC=0sK8117qp;ZB*}pd~^LcrSyoh30VW#)^9s2@)$+RQbBM}E!jPbvNWX*)uG zbItgCCvpFC8QED0aj!zpOL0goxyGDTyxcf#+o`|5#On@5PxoJ_yJFeS9aa9OJby!O z&4{!X{uo!xx}hs8V9wcyY2ItE%cTaWpF6)-%hrFF<#ES`m8T@M+|{qyUrBR&#TU*J zV)XHL;bVmltu{aN-I7*K(VKSmPJ3$SjMe%lZK4h&EtlrFBKjmDQ+C5g`zoETZJB)A zZTy>FmDf4Arl-+vwrk9=+u`If&qn5Sz;{%t7p65MGrzJh6W=YK5btXW$RKYM@%y#-@U-@I1 zvl*^Ps8*V`Y~SFl?!Il&XK|YsyMyEBZ_s|XvLIT*uD7$xlGSWojAv<~+IdyUHKMu; z!gg#raJo!ol~wF?pNq|3d{WfI{H#B2e{|KiCv)AEtb5O=e%458y_Hy^b!|tJ%FK7o zXa9aOt=7T;?aW>sHl3Rs>?fYv`BCCo zbdTT;i5qLCb-(_Rx$bNG5}}T{f^jl(eLuGxPUio?Z{m0@y2L`p-^ESGzxCTH#yOrmU}l^$)&e1UUq9eL+);t?pc18qH%1s`k^2Ce(q3;nX=K> zZj}&IHPhUSIbQy{+l{Wg{K30gU;02=__L2ZU3;coHrkvbmbkNgZ{%dfnhzx_5Br?{ zyP~Q@RXXd*9*?(^#HDBFcBtA`YU$c2wO71$X|IjEQeyUBbmmmAu(-J9pW7NlyX}-- z+@0NeY<8A@eDT6)!nloNl44gBcWjN7 zDQxB6U480A{%iM@XS~#%S9^;JYtGrSMy*Yn5{GAabvX;Z{6CydAi9Le=A8#)hoSg&J0=? zsVNgu8^fTb^ITL;{=)?gTiwM0M}I5|Sgs~>G%nvt?cwW34Nt|j4Wfd2R64!=%r?Y- zJGJfKoKve=S!}blHY!d2J}dRv?%Sy^rm{Q{G+7_9uOTW~EBV${4w3EmA7uzV+vfbg ztodAeYuN4$&AZ=pUY&XHXhDg|*BdUGOaFhJeVXw;*Y$m;*ZOaJq{Ye>94vBa`|7v4 zs?V=vz5VmuKzKHjlx^V+qvcOmPUa}yzl^m$ZigM8_H28$$9AVU+c$4@^kBDZ3H57i zx@0STP+{A3MK2xMk7w>KEt@yxv7qd___&`n`HU|% ziR%jZRck6DT;ekC%bohra){^Kq4*2u`@T-+(e2#fFx5xt1KaZ&;rnU@rUnPf&WnBx zZ}nBQzjxLDDVzJ^S!uQwds%%7C)Bg3%-Q#ltwi>H;ezr4ZW}|by^IeubyGZ8T&oZ&UXo|D<+bM4 z^gb@Fi>cQ8*7=;um_JiK_D_}jo3}UCm+#nByU{FfN>cVgABW3Q3`kySxXg_RjcKnM=+bq6A@80@8f9dr^^ncOAsEn)MqgzgfzLxEq?)y)6t=ehX z%O^J9D3C6`wNOSc`GlS5m&0p0+Fx-0i?@03{_el|Yd)V|snhaWzw7`fBa6z1{b!l~ zz25Zg{~?B=(66!uM=$=Ey(`MsZSAHVUBN4z4nyb; z@!6{%Bu%pS`lzaXNvK@tzH5JgT^(2XQS;MVmgdYnv$6YyqKGEzgg0v+d}@;T@NUAp zm|4l8Dg1R;Pu=K$&2RKI$=QnCBS@qmT0_H*f5ltb8P9k8Dpcpt-p7@HS7rS=PH{b* zrQYWc3Qe2*H*)HmpoGI#+fOfzdaoM1YthHxr}2k;Llhd;#T`rKF|Y3ki2Z&M)Rz#X4mLZ7c$x5n*?lTp3n!bN>U&Ni$5h2A6y|u}cD>wmELB5edDmk@w;waRlC3cd+tpKx7yWDzS{olj%d8En0=~n z1$*g|@A2$8Uo{unu1IJ39G*HUeY5$hH{1fQ*2OD&`yNZH{G5HW%jo!;#YV>)#8z9m z*G*_&^7*#qrfBV5)uuI{YIT?k_Q`%=&DiyG^3Qpa>^Y}+*tJaTTeN2`3y;|oD&H~t z_Y(GynKN(pwB1V0v$3mxoO-8G|2Wp+<=LHiC9C!tiq$WCT>CSHi<9qC zQmM4mpPJ_lS7dH8-vhVmx&plsKS}Ikq`6Q%D-0rX4AiQmdjWo}X?b|=!H~u(3 z=C6Cf>=rc(feD5>0uvtmFYA-Cj5a=HIYZ*+zt`uwr_7xAvYva}t4-@xy~?+C`iS*&1+Qy@lnSn>l)kFIW5ReN**p-_2X132*-X_@lypYme~pN%Gvq zCa(L$k{A~E95hs&exNV^ltrMJoPqTOx5HsmsyY?>|GZR5pHm!e!@{N^w@9v0Mcv@r z*^Xz*g{P$SojTLS5_T{%t1Q+q;=XYIAmavQ-3^~7+kSp`K-q93@8lh7@lx#>$*)p& zxyM4hUwS5l*fMSI5QubRoBg1H05&9)n$AC*LA(g zj^=nHed1!v$2xXxyDt0Xjjgs_Q;yBepEWysa<1qW|94A_8Oz^?uKoV9FVS{Ie%fxQ zey_m1l&`ZFPCNKzW7N6bhDYP)F4)?ovq0?6+xFSJ>K~||dwt#gG;fTsY2f}TOBZ;> zXxeM5HD2!yd$Z=?o^Fe=6S=bI&fn;52jAQ}g*%E>>#0Pr1yVdgF-OvR>ZA z+h&J!9=_enS@CVMq653l>fKkbn5}u zy>l3j@5(6rye9UbVDZ1F5;N3#pS9&YUbT0t@wxkLrzbpIw&dC4=YsD;y2V~8#y!1s z?dt2Qja8qS%->tA-fp|~D$jIL=Vd7ucNlMD@ZfIp6O@VXX7s;!dgF9<Any5hrvlHG+-uEC*DiJZR(eHlrGDK1 zZBH-SsGgXA!gSxINqK!~qAo^{JM%Ur>8_o_k#prq+FfC-YfpAYO`pN_^7BrWG`~#w zwO%(DK3*d;F~(-@o{mhuxDV%km7L|zsudUNbIsl2>+w3k_)DMn|5m-XR##V@DJ|IY z`DgpeY>pYHg%^rkxDvIf@5|yzC$`SWUS#hO8mhs&ey$?(1oi3N>ozRp@O!#egZtN_ zPNu@EKli&|-|o89zW72)+pWdQWe(??W#Xsbn!99!uXmJmV zODTE1$o9+5-Sbm>?r8ZkO%{#5Uv*p1w`^rLF~&I9Gj3$UTkPQ^oOtwQauh{#JfDA^j_*Tg&{YGz%~1skM!P z`hoM_Sy;H}JTGHwdwXQ-!4QSC=;+-`?OhHxJdfaPHed5iW|wMzQp)qyHHnfw%S|_Y zJY&0{)p*T^KYQa_(=xtKa*g$UC%?PCG3~{NOF~Z%90{Lw-MYBC@!suvY3Z%mKb7R4 z9yk>KJISu2``LkG;UAg|Z@5i9{;ja)|Ld3QRZGu*ds|tudsj*HDnXxUhW+y+e`P+M zl`~0S$})-f=yu(UXD?VR|FT!+Rkmlw_ogieBr9#?TG{0?|15l(xJcuuMBPn`g-2JO zTXSkd_v^cyrViUa?|WC$P^kFTy6J2@)1vZ(BaEy6r@dj=_-UHZd*zUy$`T4rhax;g zH@>mpdFUw=u2CwGBza`T;+9F=s>dvhQbdGv54p;wD}9>exIHp=f$m;ScHw%PnFjHh znj4ClzIH8CoxM%-&2!Jnr*1pX8(d&r>iy;K`|mmb;#U5TJY4wgLQ-sFV*{6CLxakH z|167{duFa)+Whi=?zhPXYYi5(h*)tiQBpJcBinFtgUG7;=b9$R{A%XCajVF{H($w2 zH8qtxx!lN9Xxaw-IjL?k%3)>ITA$Ni1-$$9`S5S)6NW+uiuNCS^&?r|@#NI~IhVy= zngpz5bx_rv_etg0)K{qtnOolN6WkwLb+GaGO|B3376?2vzj<|C?B5eE%~_q%B^ORb zZ_9X@RXUy3c;~ij)^8q(xM}Bc|FpQ=7ru&JMCR2s0oAATW(qA0auWFb@8XW0b<0D3 zKTYl5xM0qMj8)N5Pb`6_k4To(I=g~iluL&>fEi>9{G0+w<_n}fAj15yDjHV z_PqRb=79FQmC@OcJ-EfSYqxrzWxw11V3B(~H*bGi;@srimhYw;jqlVm{w=ro&uJ2# z$Fccqyme#!+m8S8jJk>0DIf0}oYvy|bK2wiv^JKmCC4ZDt(OrKH%L7BZE{A3%bJ9L z9-U5}uI;V=ngb^{J!JmT%{8G~?#e!sv;XgW{qrJAPhrDu<~hL=6q~knK0a4>GUsNP z(7hFZZogo!nQ>>s>F4Ly9r$>st7Az`+NPCTDy@0HJiPp%`06H6H9^ZMVK?uXH*~KG zjQKwCRN&iXZBmixo9*&<7qT!qs>L{8(Ndf9ZNcvk%U_FSJzl`y^rv=4>*W^@n~t$( z^Xz!B%=L)YJcfxj%jZ3dxUyirVvy7vrKZ&f{&ii-lu|#KRKLpUyQ=mSudx$lHtIs4f}3s)c@Dre?4W5Q%3dws1pzS zk1+6DJ7XRv!r2)ldrzZfc6kyruuec=vod!x+*W^{lISgYlJI#_R)ul=Wd7nUg)NqJ2lJyeCGbU56d=9dR1FoD9b!g zF)pk2&xyZxKHvK}ul#RSNwF}4nfRKD!m>@Q54k?H9=6GMuux1+Ff^EVe}2AL_hd7H z#Ca2EB^^|_Ed8)g=Wv&s;`9KS4GSheoqcRl&|#s}2MIYZtdI1G$Sd~G>6tn8p>*v_ zxu)KWD#iw1r`j1v|IAK&rd|KQ?2u>JZl($E)%HJ*__~uQ^`*5@qRKw`}|A)44O23jPr0zBy^3vVP&0%?UG3Ufk*6v46kb zk`pW`jK3oC>Qu6lq%Q5dThcg-yJ6#>MT>0DFKOxX3qMz0GG(>MZP$5Ry<*y1^JaCu z+CTaAlH9XPx*i|ev7=&w;uTl@3Xk}>j1`6}zD-PeVN$Vb{@+FUNzp`i>-I%pf9ub}Hocm`yU4Ce%*&DvyPu2=#?wd5} zb<@PhR`u!oGLp7Dzx#zR?abZP%bW_9-de&ueb&04Q6`3QUk^|G^XoYI(jXoE0^YQ^j6N;MCz7D;xk;`M7zxbu0gL0paFE|rB{tywC& z*KV19e$Se@Je9`#zpV6REX=CaTPeD5P0djOpXpth>r1k=E039mnbFA}O6dR|? z^`^KrV(VXN23j1qo&VSE+9Zu@io4`*&MA7g=3My8FrL!$hd8Cqhcw2Du1#J4ia{u~ z*wAb0`lM#T?91Q1{|RN5u0B%z+IHS0<*6zOk^j36=`C^XUiM$*#T3c@OUosm&d^dk zsS~p7TIZXyPg=G4ZiTyin#@0uY0d)X`)L#7J8K_*F?^n|>C>^f&$?Fns)tWayeN8S zZp>tZ%9)$a%+6JwxrMiJgLiEAMVAAnzkEU}`t#!a)FVxAu=&q@Q}S@xgWXb(a~UNq z9&kRNw6(VEy!{VhCZWEDlf``;vr84y>}BK_rTY&TXZTyr5Lxs{_NGi7WBiKge>b*> zNvPCqwAnj%#jj=3iSu^3m&^*TJeIYzz&m-Rz||JrS5A6t47!*44c6zqtvx02+@_{u z#nZww$#<9N*H2t`X6L>?UimgNC#=!$_YU8F>u&x1x;G22F8-rncrx?q<~o1FxxViW z-b>epOn!RdlJ5V6>Dz7#UKYK$?Dc)I?b(k+>v(J{H@~@E`X%S8amD|0au>?^Pp(^W zdGW6W1~)@B)>sv;pI>_URxQuQ1&@72Q;vQAm~M5}d{dc^W@eVB*P&S=S9KK)PMVy* zYT`bHx4q}umKvKseL9~zSa!Q~Jo1a0f5x@{hD(1;SpStH;fubg9{llsWFXuyX(JE&Mix9yWz7HF9A> z>(|fJ)@#?kcHJcUFyB3v=~0W4*k-#j*10`W%2vqtIb2%YcSHK^zxzkOyjT4^|LB%P zONoci>%U(3U#tD~|8>8g*MrWUzW8SUuGF*fOENykFL_}Qb3$;5i-y7kKW~o9o98dv zV8rSjeA;qmo8;nM0^e1-PXGK=qFj`DCBjxnrcf^?r7PApX!V7Ae`ZXdx?Cez;NoLR zkHmd@44ef22JMXtJl$m;{#ebMW8r~0cQmypy>^_V8#{+#Q^NAI>$|T`Dqp^SW#4+X zqc5^v=h)_c^}4^zq3h-1YtKt3EZDp3>#1GKeoS_BpRoV+Oue(*8&0)ccp^|_aDRcv zQd_;&LmQ7ynfCjY*HkabHlNkm{X&Lqo}0fc^h{?v+0cuAQ-XSP z&*~iyohy{=W$Zse`?K$?MAi5hr^N@k+SeAOrq?yxw-E323gP~LZFXzaxAcoVF;0e6 z@^&)fi@7BTI;x8KSS zW$byLar{WW0Hg4kRX^$v{wpu|&$)YR^v9Z`@z&7_|4**|`2Wqq`sZ#tJ2!RB{{P6W zy>XF6q~`a4;z`onQy&HN*k9pJWQYh7uhE=w?8T?x5Wn{9Y16+R@5y^5y5XNglY!r2 zm)~!0+Fh43FTW9Y{CfQTFZO?H)IF0$3#)XlpLs5llrHsV+QuzKy~iHf&EWfU^IO@M zuH)$&ElTdZy%x3XkGuB6&Eav+b?)l3MbBNc(sgl9&oim}$;J^uIEir{yvh`)KaO7oU4Ca%zdJ=Ml4gYSk$_?SIbvq^^B?k281o9WZR@KDYb# z+2?1xI&Aj#i1wO4D$adqHSgk&$1}v;9&MVT^@%g!g8olQFI}dd6$@6~>2#~C;!iu` zCpu%(bLNbC^@#^|8a{FRbwPao^eXo9+SGSTyKnSMwI1Gk%XsPWLQ7q5{%D?eOC;KUb>df9eIMKey=yB;}#YN)EoK8MHf(Og8{%)M#UC?NzFneK* zW4Y41>9VVwuPP@i)Hm)g=DX#(Qu(vbQ_c5E%ffZN*G(z2SB$wGn=MkNthU3QP2K=eqv%rEXxfSMkb@BfBY*qZ`l0x|8%+7 zMZB+9mrc>~m^t(0?T1Rf2VZcAdVD>t!Pza*t^0&sBx1sr3k@^=Vq~?jMiJ+fT={v+0=L z7GM85ecvwW`}x!7?G89WPB|gp zxlrV)&E%T&scSN7oSs~|aZ*}#5u4Y$;!K~-LJ<|Sy=U65sP#_e`S!hkmeZ3<@f$@y ztuSAa@F`m?=ku!kote{=oo;@W@VPwUl~6)Qu&b7HQAT&^u{|zl5{*5(-G!8@J%whP z98NO`&G7v!l;F$nvS!*sW6AFFV~H2vOx1egd`l_cazeQVo0+lG%L^eZx>J`#2`zHI zk+9{Y&toBtj>XQ?7j>N!*9wf}`F=LImj3{!t8ekn`4VPU`|OR! zT^_D&0T+MrxS8DLj%c}Dy7V&V@{^A@TE<$wby)JmXuDeb3oE%LQO&1cgv(C!ztCo( zyYadG<;5(Fr9B#_)xvF=c8a>#>MY+-f5m4>=d`AiYd=d)Eb+Q;Ex$12ZO#s{ko9`= z;%om!uy47pSk=FkQ_M?D_q)rNqHEp9y>IT=k-A;sRp1`SNeZ7A-#oDY_g8stO--w3 zEDs*&7O~uB?JMTFJVna?-QC^~bDG6CLfQLXKeOcRUw`J6&#YSqD!vp~U1d>w!*OP- z=kaj+n+G4fS+Ha6o{0?eQ`xU`RrVEsc_(nFt%K>tmfi=hfu*Z0C!SgJ^MQGx=jKAj z1z}Sng5K0AO$t`uJN5EvzNZVayxvZDdtmwBLsk|}{WoU*auJw4|8HN$(q%7q{4tdK zRhy$Kuj!Vv;Y9j!9Rc2d7Zp;>-uVSN;b)iFww{R>dl%BSpy*2WO0mmx5+zrD`rmP1Lh!d(Yq{MutDW0dw{&oH zGhI2beWj;&XjX7Xdy0&K?r+o#+*|KvAPN+PaFYyRv} zTiLw+^{cPkSI^6}y}lT}L(Ssl8e?bwAq0i41pywrK{wk z7AtQ#TO(f1uHj?!yGLP1EK4+q70}h3gRmmaONd=iel+=YF+D&a+PZ{QtTqM=Ik^Of5EMX*Ni2 z{_?p0z{{%GYl4bmLh}yyOiheBciLKd`_nIz<&=-?>#@IVzF27fi#z;V&!p)1wDW7S z{QYyM-ROTK%S^-Mer{8yMeD3D$ZLGq8S>QRgx4~W(>rI_7IjOsI$ViccTET8P- zTKbVij>T~Kf1#`;Y%97CeC&8*;!>XH{lReW7R@^aRlBp)bAM!Vd^q@R$6kkxA3rMn z$uyEs>-((9ENqhSE3j5p`jXmb)9+2c73FVx&ns?zb!Ye1&7~F_A90B8V(cm|eiV?h zuOh2rn>ND<0qsqHoSl0AM^sP0*dGz`zx1cIPpPSwpwQ17UF(j!s{7g9xcwr`ewu;j zw8{5Q`Al2+=cj6i*U=@5{3|;f8bz;luQ+eBMD^mdMMnxeWK2GUKgx;h-Li4UHjd1c zB@FxA9jD4Ld|7PgIO%Ns+J6oAZ*N%f_RUV4aK^G~7yE1mzPY7N_b!PYId$^&3?r4U z9Og%>+Z+CWb@j4uRXsU9$!Fo(8B*H2c3n%3nVbAbZgJD`m$P;{#a$1%|9_A1xd!e- zEw|(ge@r}}$(~#{BY(Hm(J98wyEb~)OK z-lc3U8b`A~e!X?$!s2y%ORgo>_ayb5Y+7*C`i1YsoJA~C7w_bM_Hg@>1259dW-Lim zb^O6R@y+FD#ln7@`~GAZPxG7atFrmM(X?c~ZQ>`)!>0!u)?F^T(K^#RWtQvX6HBw! z9&EjT|8R2ljAYi}H@U27k28w)#63EC+%sU|{<|Q9=zA*Jf?3iwTqEvor%nqsW zQzvB_XR#E_FELpq{CdlstM!7@e#maWYvufY)j1C4W2cQGGz(Z|w$y5!XLV~#if5{< zwYRt4J#ke;$MPkvnj&eJOl#FnKdJQn7C)hAX{7&M&k&u+j+=qvm!GR~OLp%I4&L|W zYR9ydW(Pur3V4FM+&-vnVZ0b9v0G{Sp;w9VbxBt_Kin5wXCA=&@?prPptW+E+jhQK zvaChrVeUD>jGp5=7iluoS-vZHIc>FWWC-U=?p-`;6ZuYNK24nS@=4`|DY0$$r@9H3 zTCh60K6JTfkymVWZk5dK4&FS?4K^(%mXq$}?AX6|V^rfR1F;>k6Q@u0*!y(4%OYu+ z4RmZZ3&I_Vb!5PyhVPU+Hgsj%m)k)~4Lq%0*?1n%E{}R`~1;xnYw0Uf{#B zHLjDD-`}}Zb9x19u;lrA73&Mtx9@#AeN^(I#+(wtAD<3=fAQm4U-38p?#L=t{#9-4}W0N5lj8=k9v-omWKK!H zS$Vp0E^o#6U`EN*)on7F{C6%(MmkFb?mQuVG`&jX$MO>&JfcpeY&SQRG%UMtqAlF! z+uFUw7v&Qd9@o`5>m!jGn4^68L)x5U=Tn``ID~Rk`k5c|ocSLpdSSYHhfwArrjM(g z-uoDAzErlsPWxSgaG;3R<;R}?nd*#>>ptMk3GoTgT@d1PVp&fz>pWjiHO9Krma85z za~_{w7@1ip<5Vzjeqayl=3jp#!_V+qcekH9`mvdB($vc(S6#2$MhG9#UQ$x3e5%hX z{Hf(v%bi)ez84$kztrrBUXXe8Kw0>uSclVPVa1a+{5bm~wzTc=lB<>}ZOXRWSL!4k zO1`D4#<|%i^5>I@r#;?!=+sP!_WS!YJ;AsC<=I&^t4iu(6;IxAJ=j>glYQkO{v%7} z-th3>xY8-${g&Wkav@zYtuJHgxb!|CJyPQRQV_|Lxm=I^u*t;_V8j0HE= z6dQkXO?y7;o7D#UeL{bgXDFt>Q*~cpt@Y?J*BOWXXXQSYysJL>X6Cld2Si!C{l6V8 zSkGnn@D__teOv7;6Q=e*o$~U}F85Un{aqPgnHe#s?tsDT-t)`f|5$my{J|pc+3itp zpEWKNvwyD28K<6k_19z0_2*@$_wQYpkonZ#>vGRANdr&6RoChc7yP=kD}~i1X5G7! zy5jM_EwX;B%%8f;_w+`yznixH>lbTFlQnPp5IXrH+mE08mzT*p$baqV@3;O_b75iB zhbq495;>nrO1A$Hnm)(o*t-pFy(LF~Us1pP&2o93@5v7LbtOs7El;h2y2H*+Jf`^d zLreT;rUox%|CZ(1ysu|+Cl*>Xh0o-@x%>4D>8mTxM4weD(a7KE@$6GqZ2k0Q-)3ra z{%Bn_t#<#vPhUDth^iUxog!k&dLgcqO@zh3Xsz^CmGqfflFe7-o0Zh6o+{khc>mQi z)}Si3!U{H4)s~dU?B!qF3ih0J^IsyR^C60D_^}-L9U*5e#)b#r4ZTqHP;N#<+yDrxFXY~x` zHOEz34&UfszkFSsyRjap;hA+sK~_huFFH1RLz`Q&yyxV6@A*YLjCCLN&r5o%QJJuI z`evm=%5l$}W%Vx$2Yvo=S8>iOtwkb-IfCrAAo>q}{qQz8>S z`#y0mPPxbtJZZgOYD9{J%GAj}!;NDPB>9LMTywZ}S?#k(7;PUAD?+|!e=YL*JC-#e(<$$ z((a3A&!2oRe>!&gepSxr_m<14-hKZ0wlT}MHFCP!>>k~|Eb=Yw&$4Cm3tw~1C|B|b z(e3-2&bKay@%A?LKhvx0rYoA>kuM09w~$_(K1W_gy>@P!*vjg220GiOe7GCwF4m;K z?Zc}Z5v=7xH9-kW&V@bL{o%d8!W`j7qrHxacd8bYoZL~WwPN3vdDRZz?waj)O3sXX z;P_Ji>ZBXn+XJ@w9TfBVs_VIoxlNB}Qhr9hXMS_4w%5Y2?Rz@}{MUQ`Ogq)X|5^LX5D^Uv=6W3bQ}Ci*mkH=C)DJ?OL_>(FK>evaGx+sSn?6l9b+X za=zWwOCr8ydYg;ZXL8n0jL41JecHv#J(h8;xzIM#-L4y+rrzsLVSlxY@9a$H8_y#q zsl_hcv9{y>)D0S#e*t zYT9-I6R{sY-ByzfK3(4a;=l8)KXG-}KF#(ONu8f1-BBF9`kvC^c}JDryt%O=_|Lu* zn{P^}>96WNq&xc++Y76dDGQHmS9g1Mbmym*u%%@ou4P+NR4lB@o=QJ=JNv5mp7f6c zzb~j)9-BGY<$3nBx7Xcx+^4&@?bXq-p2Bm`|DU7V3x;V^8}=RAp^GI58^eCHtPeXXN!YEPOrXOY9q-ABT9 z&nla*`OM;9>&(wFYP!>|$ZcQN?N`FJ)|9j8;e~%iD^Ks4SF&nyTx~&K>5jv-Fki3Wo_3_c`w8)BR%1UHmEF*M_bp!Oe63 zo!`ZMB#80m^xXbZt2vAhb~I$3+U2s8_58VIR|WMeKJRGYUo85eWcrqyfl(^9jV;e? zPizT2Do|#{v~t%Jr)@`F4sbm`JO9$cbDvU9E(u)tw|d64eQf)A&!x=?dwfQ7znAKb z4XKy@i55SR+GjAO{by5Bj<1!>`Q4A(rj2c?cx82;?q{VRI`?IRaM<-P~j3D zdh^_Bfv^i%S03?%PLSVdRh@Qv@=eJt0$UU<-#-_gT6_7KWv|xjsO6W{>eY+vZm{>+ zr*3Xb{qJqiv#LzQ(AO*wHUE3Yg;VD= z7N+kD>^3Xf*RtZ3#r`Cg*n1DYFJB=3^v~tBN)dIJ+D%S4f7~?p)nlF%^GulyOIs!f zzTy|l?$Yy_z4(>8clinN`v1{=|Eg#G3GVYt!;W#KLsx?|)B)$^Ydx6(?@_ znwC7Jz-*JT@zl$Szw4L1|MxLyQpein&fZm1zt_)<-oE1XDm|`+wM#`$2Wy^gSei09 zBjVsHj_(JvE_!X<@~u#DvF)Vg851LTMXoc%1=zn})tPuVCbo9I%FfT*!V}Ck@aA%+ z9lIWTEx%^>j`;ly-Lo8C@*ZhrpFRdoCB-R?l1itNCBpnQ1px>&ib`T(a`2 zMsu^J`V5WZl{0tqYQ&XB^+#*0wzGYeKc9WQsv`e6n@<1Bt-3pBTe5A7k=o+EKlR$m zdzZH)-N%4a`uBaYLmZCNU%E5@amzo1%3?8QV*qgq2d#t{~Zrf~5*0ZOk z^Zv*=-t%IMYx(?JE32Lq#pSD7e&wI%Gb2ao4DBFs_yR{{gbC>A1!^K zKHug1b~gPK|L~RbGZrotFfWu{7Do`w5Xy*=HpurWrT!+OH62*5L8Bi%oqc zt#(MncI$&r{)whyJ3gi)#2@QFYF|*e`-D$w2a;*A*n!uF!FXciq4?YBV&6B#yS65fjr>OJfL!0x#e!CgR?g@Eo zPdjWQc;l_mU$wq_{9P7r6s7yrFLs`ve&Sk_eepj9)|;wT6`87gll?9&Y%lC;6g%QR z#q37A8uQ~-wUM`*S(rPVv}8ZrXV%|(^wb9dyR;9>TgN+c8XN63=kL*(QFB;xtzhJom$m-VtTSRa zN*wwomb&C1(pTP(46!MXrLcF%c5TnoY~ zoqw+H`CA?L&p6rpJ4^eGf4`=2Gje!*v_EsBKK+Tk(6{*&%Xc2AjRD;2J78&!JcnT$9OnkhQ8M?$uq+m)wnwVRli6 z=JKANZYYxcB3GGX_uMk|)oZ^7E@nJrXH`+}7wVoa@b4s(*2`U|SI;wd?VMn;R@E=t zH+kx}(#<>B#5L!>Sp9PLTb{=}zn0oC)%+1$niY8T$E696SzedeJi6GCxqaIP-d1^b z>+(}p_j6qZnsVN&x}HAhw9!E}fBCOTr#p7BghWjZyLaYRPY1`^s~ar#7Zq1oZMng> zQ|0lyqqCT{Ph_m07cyob|l{A&&3R;vCx^MY4= zZevx*_I7g@*C>r0zT!LX%A{HCKjgM|=N+}V{~iTZ3Hy|Z%Zl%CncX=*cADl3!#^=! z71LL|{4rZ4%j427p65?i+aEY|YK~~jX6mG4^Sg-h3FSjU?CoZ018*F4{E<&Wai(|clfoOq#d`1(|j?p?Q?VoQELT%G%I zqtON@yA*Ri{kRuz?0jnDM8e*b-Ja|`Lxyp4Lxim3;(`x;kN*cV%-ys@*)MpnHP7@k z6~~`_>OOm|CrI5*JQS3=qH{_6p9JC4dx|&5aWw5;<|Hi^)wI;=O393uM?!^;)Z|z% zJz8SB_g0au#Lx4SyKWggl3h8q{wrgh`C4y>hm8NHO?vF^Be=Nt?}wT|b?da#C$(&q zYlEV9UR|am6&uQx}{e4TS{QfKT)`!#`<^C>x>+!jDySAJ@;utcucK^Ox zvTxXZI})#Q|LJ=syP@`|cW?T$+l;?ovaVgm^K+T-DvgR8PE+<)X3jmlY8KBQs6neFZ5UU`hzuBQ+eON-*Wvcyl? zn$3D;AZ^Fg)VaoH?INFFo0!bfPcz(9E`P3D!6xv}$e7jW-w~_*&N?%35;_=ee85gXx%N-(y*uacFF$ ztN4hL$Q|*VdcBx%r|&M`=6^o?mM@_Ek@`cW_m_TGiDh*K9n{-sJ!@9u;rm~Owz{7+ z<1{FppLvrd!no5?}X-|zlX{o$AMv3nDhc3qwLW0HbomweEKj;*ZoKQ-JDF`aNv zXz}}omB9sh?LK#&KALJe#gapzJUSq9XCtq1X5=1&*JoIctg)#$vv$j^1@SBYA6Xyu zx%rErg4;`3S%o6T;+-bO5~)HbPwD?#G;QNAsl=`_r(`C!tIL$zeAIKS68Wx{^qf9l zqp*R~OjjY~nxcw&>W77OO4a_Y%P*u%n%NumwNp!Ig}3?q-uOLV1oj2}-w?T)bE3~& z+20%&nyi1HpdmdD~zIt`9XhTMD zz*ecaiqcoI@=A7jH;*-n#aAaxxpM8cS74^~6V`?^%5{%EADlD$rjm#wU-~4SX9w@F zU7Vv(nfh{`)~$mFSDGBw+jjqwF3F)_x8&a5mV4Ul!y==`1U3OQw=SA;>@asRe&9=^4c}Hx`saH51C_Y0LcCnQwnI!dl?A8e^5foy^eIOQo%s*Pp3lE!enle$n%^yKju&JYiWc z9K3zHia^zj=X3cl?!WtICg0w_{GETxqyDKUDyKWlUEjdO;Be?q>R)+*ZM)U?woO~L zx%F%P((08r|71I~>B~Nm@)Q*_6wGk#)+mWIe9^Z+bW)ShL@AY82k+<&YuJ327Yj9B zV!xf#_I{^N{^_J+J;g7Xs#b1tetGDZ?2qJI%GU0ui>t+&8Wx&ue;={^W=`HM&u@p* zp5G2%`;Yg-%LzO5{pT>&sWAu6Qu=2sm@1`g|L?_g>rJvtcbEBJ%N3mSEAZit&PidM zU1y?g-z~VeGHzpNO}%iHhSlbIeML218H?j~t#{k?DOaaQ^{d2F2~$=UkBQTkhRI!7 zGj&Fkn0NDy@)h=Co8N@3$=uv`=Z);*-jBiydZqrcY)d=Pc=(A=f$($5wkc`J$ysif z+{?b6IW)xj1Nq@+B<(A!X?rkgMR_o|)3tt$z`K{Zk zH;=MSqH{f*)7Vtj9P^ob{qbV=r}{h9S8D8PyTR_}uHEeJ<@a+5`xN_V-oJ4?WjB^B zz2x$J>Ex8ZS2G;qeCF*-Hd^)YU8$FIP|LbAN{fW%JXiZ8Y!%}5INB%W!LL16-IHEq z+qG&fHCfF2@JSRW~~xY_BO?kCmdwg{|$aJA8rTkX%JP_H@R+)alk zKkF*@n7PWLwrRy`cV3pvQ!=Kz7fxJvP~rUjGnHDg|6bG^E>m08*wJ+&(78fD;Ct4A zZr9ze4^Gbi%Kl=-%uBoH`Fypux_xB2wyKB5$E4rK=lf1-$%uyt_=eFwO8GAHeEVoNBV&A|k z*kCbjvnr#rl8#0Ak@`Q<@hMG**zJq zVv|C_miw9u++){GlEB>$iJe{IHL|EdH6g zrycj(%A{8>C3pn%B$H|kIC8nV3t}ecoX%c+Y)A98qNCYo->(#yeq!$K=-@TqVt+ac zL_Ja#IoN-zob__&B=?lxuWN1w-2TnVxMg0pc8=HW@@1>uXErUCDF422#d86@X}wn4 zt2aGAS$N>m1k2A|PgvCEvP7?+V$CO_!JF_lv(@13>)72Fi=10$RBVz@ZE2XibAjTy zWj1?~-fSxIsQjSt!=ZGF{7NnFv)W#7U$R|^o4I$HuaIe@sMw*?QH@m#=xf+IHRot^5C3)?28xCw~3muad(S;aFE7b{yh>F~07JHG9_(km1)^ARimr8`X(4}_I2 zX(#e}Wj&o*msn*b-SWtw_qq9EU*nF{ z>%sK<%IAGrcYdBwx3^Z3VgHkme}8tLdiI{@CG(eX_>%k;J862BCVlGh|xumlQUT=!c2l=Rdr3U zP)|>#0edk2+LM!_)>h5%7rAvQYhu=o0vibrj{6gCxrJ|c{m%XO?#cI`=Dd2nbFS@4 z-@TKYKB#Q3o_7B9`PQ6pRd-kSUkMPaUqv)5`en!dgoD}6IiDndO^<&;;}Kh@1!^Md~#Inx>O z{9cdm?a~u0cZJHneK9;;aQ)Hhh7UZ)_&;QE+WUY0@We1p`R!KglV2qb4JKHc?8v&P zEMlcFdqaPgq?KdInrSx=xbNR_?d7t}LmGmYQ{5i)99p$kF8BC-Hsh8%oV~hH%ZyCj z8D(!JsTV%!%$gX%x~t=(&Zz?(6*Zg@`&mkMZ_)4$)%mn3VV!qf|4JXVE00AYZd`ug z7H3I3D&NwDR*`9sb6@^x}$dJB+VB3yR!%z-B_FUPZ~fh*RDl zE1TuD#cQuC@ES}nH!iBO zDDSLHywLWO<&|sTf2Pl>rXQBN*0?9^S6$N?JZDQ^nQQwsp|JI5CTJBZ`2=ccWNhLz zG?}}x&4OulpMNJ$WI@7FRx_EnPfJ#`I3G;P)Oj#_3fDr1lF2*osj|KE)p#vi#@Lo~ zzf*YXOJG&KKJy@C~EC32@BFzelWM6FJI`# zO<&Qeua+0rI8Qyswd#tqTNQhHwyCg^zo^Jrx!*IUt$(tzZGYxf#$Pezn?hpW)oMK1 z>mT{)#0Gax?wgYfCvKYBqo0}lTsD11IQPUW;Q^n1y%Xed)!kE<(JjoCc`BQMz{5(yh=FX?GaT)^Y6DxcXD!qGZ(Mme(r`Zyi$JyKDCLco9?9 zX~|pPv@Kk`;B=p--^==sPY*u&{@DHye_Vu0w$_YO&n?!^5u5oavhC!;D>s|l3!*CZ zzyFCkylh2nmAuihhIJn2 zl5StKSf4%buH%N6jgOv9J$GAu`shmi$y)LlnbvIrkzNhW_Eq9?K5sM48`jmSV z8^n$ne){VcJZYLi($RdotKc*n5uRl~#U%Psz>ie2;nGRfU=(aRc3q3sV? zJ>Q7;&3@bXk@?Ns*Y`wo`}UkzT3XuEo_i>c|5&?p`LlJ#UEiO$pJzIL?_7GYfXtJw zKWkU!{d%sz_*IMl&?(PZGfX=*C&+c(Rq1!|`n1l({(Lgu#jO(^j$M1~Y;}BMb5qzV3OR;^zcP;s#5jRt8}(FS}R8H&Z`r>uezkp z@BiE-m#(v%Skd`n#mNh1*S8#A)?Ka>uIt(IVOC!5L-pWSzM-Pu3YLUUiJ5rk@x8Vs zb=w7%;yE0azj*MrME}dg)Sb-!2YESVm^C+8ziY02_C>F!J63T)?4g|3QV|lbTGV%{ zK8l~TH-*c`NkvKc+Q$gNAm&%gUjMruRk)GGOX%W3r^P&n|Gx5cV(|Z(c30OsL1{xs z`rQ8#$GbvK$m!kZTRC;+vd^57&bO~@xK%N40k^h{%*~gFc6=?JwtvH>na4_-*+W9k z-I}%{!)f{>HRC%Qp3Hc3$m1i2=FNpCo3vNmp1VngF>Q@ml~Th&N8T3ooA>1ZF8np| z;odDOU#z@Oi@jeNBEQ&S@jdSEhr%BJnUcFAFO)1xYeLW_UQkw0l*KjG~9GryM9v7X*<%5pzPT}v~&{p(2v zK8KI{Idh6wnUW?>aTlHE@h@PPj_tR9yG2jjzk1fblz)=oIwvLp1_#X-_4n63f4}Sa z2mOMG)iCtjv^DDPfTF3ly+Rx={ME-U4F&uSoc)7`Q^TjP? zr*Ewa`_s4iaq;vmesYKI_a>jZ`bDQ;T5F`S-Ml3Go%73P|NK{1;qaaPzi?i|!zaS$ zJM23e%%*gRw3_5_G+R7%cpUJ@@ZGdTk)$a_4jOV*3p$ca5A^7IiCc0lHi;|SmAG=( zV7??R3BQkX9CFj{ z$^H;-fB5p$^x~UtZ#N}!IQ`b=_7?t`7Queo;m~x$>Yl0Z{l4#BxM|W9i3Hui`34;s zJ(8DQ6YHipOD+mz)2W(sN_y&~Lq5WjFQ(l%mJ=z{7QK}B;_Kz{5?{oxn?B7ycC&o) z^31lAUhBJl&$-I25te$px*+^Kr)=^EiP+FP;{qb})cZd+~jMX*Zc z(*(CWS<%|({yu!Jr)4yuY=WCaCQoD6gtdH+m=#i%7_oKgq@Q%PwLSgeSE_Nxilt9f ztxgxM_{8mfi7kmUvvlJVgX)vgje$?v_=|qdnIy>nT}^ot*FE8nZ>RfyyuM>s)rvyB z%W4wKxjWaNetvM7@f-QzHPV49^I8_BuU9O3fAMnFv&Q?s*#w%l30!_0aD*j_DS3@~ zSz3R`%xnMbT8{h^_f>xOAftoXV}S#=mFf5qXkxxl_@>JQ(& zJ8xyPc-L(H-%r!;m$Pnu@%w^p`6>H}AAVi@vt3aA<+cmkId6+x*DdPEE@OG`GsW+% z`GdBm*h#|iJ5D`+dEmR|$~pBjo=DDqax<}XpVME#8Ggc-x_LRR3Z$kVvN#s}`K7YY zvS*BG;_?@+Ia(Bd|KZ~wY39_nYrp62LmvN?S3Z0%@L&DM(>FCYR0|jxgd+a^HoW*> z`osU<*RG!XXz$)+Qteo!&%6GwjZdwee{TQfetGT!zN6d%Ps1OrXwr!5<_Z#;AmpUv z;MK><(iPqxVrH*f&E%9QlBJxbtrT}6Y*l6Cf$;F`(AyuPqTYtsaH`b(e7ZOGCeu~3 z+OLn^_niG;<70UK-&P+>->Vq3`)z|Ll#EJzvp1JzI z+^?DZPRfr#Wcrs^?wfWPGfUZBzpL-GMk7;WtLSa-_o_Srt3QbDaZsP!&E@i}ozt8_ z$6~UJUDRCDr~GL_IY*E3{Z0vcJ1Lz>H23`GH~bx+A4s^QeHWV}xQ;PaSfL53LOK-MfA9zAeX}dY!gPJNZnDO+4bjDeoF9 zBe!eM4s4p@H(|1w&$+8hj~;D(cjeYPui4QjOy)kFlh(C$m!yGk(X~UDl&ZJh488Iq zc>#0juKX7}GE=9T`j?i@e!`XZFeaVbW#XI9?pcY!tHakE74U3Ut*!XATtN25(lnpE z4KKx_YF*RhdharP@ZTe|e8$zIyZ&0*g&b^tUa!DoonisdW z_4Jm1ADr5@+~n!*IepSPGD+qO_Kwb>!Pny%?L7jeFK+`paoqv_2z3_sM;W_TEX*dm%7ytFgsY3A2O zU3$8kJwjBczxkBb?od?Su5y**b@A4xsbzWFC0A)qe)h-dCr^avgM+)DPuW!$Pdi3emB);O}os$<_ zP5IuY3ZIkU$_$DZ z{KNG)@u2~Se91~~meXn0DS{miN@3VH=)0j*L?sx@{ z)8Z}NsoQs16!rOKsni?3w##KXx68@r)m6oeyD|1fG9lW#Vmo(k;0cn>TfxUAz2sKw zlZ9coLz|YRpV#j#{PHX)dHp^gv1PKUo7P*eIR4T4z?SqnqerQZ`&HsokFRSeL(vs+PAAV#p0~V^EwMi7W6*PnYnmxF8AfdQzQz%w(BkQ(DAWnSaLg>!9)AR_U2!*hn{rr zYn}c7_ZOZAt2DIczF8ioC${sBJ zUUU7>F~9Du;gxO{M^?;`KCKw>Jk#o!>w}n5#fg5;ogIE1P)^@?<3x}o&#a#;bC;dG zGH>VfMq$Azo*wH1I#xMMV%}hLqa^(9YSZjArnB2MX$Sq5Kud9>9Te+4z zXy}}E_VG#<8;#JXEOGl>QZ&RGr?J;_>{d!(Ws2W_&sN>T#yWcKmC(j=zqzGLO@DlN zA-`2USYzteyIX9O{$6|d$^9*xlCQ=y-hO&At&*d+K$A;-+42L) z@9cB$e2u>IRWGk8doIuUZJ}aMuCm5m4k|nx(W#ZBzQ4&+`}peHmeKvbqEDQUKI!Ue zo4~?6`?u5aNbcQ_8b0Xo?)mY*gXgbNVeN%nuA5GaR*FqvJJWe>`2)9kIfs-loV(m` zntwO@)vu+waeez^E?Qj7KVqw;duh|px$*`RBRE`NB&sy*nj=$|&tU4mMoE0T!b3?} z?HQB(^X7lq)BcUK;FI7nL*4zW4^3bEw`WDtoTys1rm2z+4;0un-f}FRxZ;KXVck&X zH#|k3s~IYC+)q{bYu$Pmv2@2hsroafsmVvT9xQb}tGvS4ciq&mxQYYIiZ88u;j?w= z{p8-7!)|>s zoORr9Sr4aOUErL2_}P5h;E3v+R%M^5@kP3kN7@;iC-iPowGuk?_Tk3kZ83tEo~10F z@>tDRz;5z-p=rNay@i`o0~5R7$SFi0e4kY@X|1byi7C(XmABq#+~6))GjI8`Yo8vl zd@*eBo{+pK=i{$nsSFerj6Nq}{+yBbT_EX8Vpz>1Y^t+xmEKCPyFdPvU{HZ1@B2)M2 zeR|;B$cz^`_Ew)2=B~UXvXO;JzJ=v7M;6U zE^Ab`F27UK=>GWEq|z0?9K!+{WdaYHeBo$r>Xk`b>{Mm6aZT34xDCvFmwNc8-09YS z651NMyJcoethDob`)0AU^yzJaZ1V!5SWg~m(K-EO)^znJOdpS5IJU*BZ(XWZb>*GY z7dyMHx{KEcJ^e8wD{EEDlM5e1we>d#KM1aV&S${xRJ!+p)Wd`~n_4<{YpSk)CA98I zmS4Y?xU$)qqp1v{akoFN+r4yB!T)6rhf;3VTz>DS|LOZ79V>~D$d5br?P@sbs{ju>F`!6AxCmEP8Ak{q4m|jqAClhnDw!k6EX> znSZj;zqQ&g*EEIkJroLSTiT=eDJ9x$KKJW;tBoE1%DS%?|z-)-1?=w6OkRf41Ziivz%R`BiEz`jE3@`iH`Z@9Ip zCUw6x%-9|iCA`D8@eW&>?EW?3;{AI*mazMaCGTNOT<1Am?eY|*m)&-8vbK-2KiBT@ z+ypNnsOe!l(2QKoip zSAya1*!I54Qnu*1O!;MsdrzkG7w>v<&d?%qbXN6XqWZ`BE%kaH68etgPv9@n>&f2Ff_C8udfe_>t8^K_T*`YU(- z8*sc)DepeG@=as-Z>I2;~!_4=d- zd{f&uI)&9bb*$SHHPIyNho69}^xAp(A3yoUIjD!MF8g>VQ`2qw#Fu*?y}mMOmCl2x zKZd2XI=lY}^Yk^bU*e49zHo@oGv{h&^?v1`S$n+HSoTZUV{^2P92Zune_2PYOlY_{KPjbPW@}L zUR|vJtkW#Frt|M=iRr4PD;GtHwd~rI@BVl$m&k9Xop*n!f7^KUZ-4b94hQb&*q(qK zyN^>DF6R8GJv=qJ^i_7Z`HzcH|G(U{dCFvPLwKXg+u73WDev=};&x8(FVIT7_hPP- z)_t8#hwd=$Z`$f_73FyMq_op{{k-YX`&}>i|LA)%_x{v>a~IlAdb9nJujQX41^Ef# zP4T5({U^EmV|kaas;$$ins>_m^PLbT^QkO5xLRbs3&?AoJQSk5K=j|GRsRx2T`E{7 z=097d?4~v6i8sg2(2cvFJ{Q_)y0HA-nwy)wj;z0?r}5>L>pNA^_I0ZczYv{fD|LGN z8}FWbcOxd>@|L;Y#hzcVd)?Cs_qNVVE)<zZQ6xT`E?jZcAM&Lkl zO^7kmi|%Lbi9B&U@rQkPaMjL^3~iX5dFG#dyXIqwTDufa@8ac$j(@FfeUq+sY-QWK zBe8c*2<|=fWe)#$iI;6@x{n{8-u9w-@}uVcIX9i|I=m<=_{;o!-PxrE{098?Nw*SP z&0B=Cwkt1Ld0?K;$|ntrdvn{K_NsXwZw*`{`>HJWk=F+6n+n{0N}JCujObE$wZ+}< zWPDDi*Aj__UZ=c+vBGaWHnZ@PPaaDi zEf=!MN-PR^dAjT6y)QZ5mxZ5H+Hll{{(AP^dMBrM&B-hhtapWF9F z%vvV4wM6~%C+`D~C#qk5-8zYX?@i;c#}1aPNxQf6x_Wb{U}hzM-VC)0zh9Nl_t^^X z`4ViJUiM{c*FUCnN0x7l-n6N|^R<3zZKve!!7*>HKE7w5Nh){Z=`348MN zeLr#JJG(8+`lV8M>r#!b;>RN4sZDYVn^TXUso83Ivg^(zuMKCi))+s3=CY;es@lv~ zLFb=cnQFA9xHap!oNnP)qaA#{(^a)o+&np3d+#Eo*P-<9VgJ=}yfy_Bm-6W=5OXJzdLLyS3NM zbN1xr#oOc-F29}W{b6p=d2=W6ck&b0{<~!~<=&@xj`peV%$3EzOh4s!<&?Bmru@&X z#Wq)0WtT2awVA%^`@Az!Hmc857js$OlUk!%an;0s>74sJyH<;)o%Vm8_B_Ym@ATAt zPb*gK_4<^WdHTZh75<&`HpL&hYg(gK$KB+gwxi2@dDrtV^L*!h`t+)9^%?I6vPE{O zH@q9}Ch0BL3%UB`bm*7WD{X`3`mcF?q)76JmM}l(UAq^irV3Ndmzp<(EG#Hl8pm*$ z^=>8iHm3aI>Qm>oJ~mq?YNu@Zx>(&UxpV1}I@w2iuI+4^xLo}C7WOu`{x#t~1u{W9 zVk)mc&{)c^R}tQz(cyYiFZ^G{w<@0oy*Y&u|FrMC-SG3SG5eRF4-CWfmtXF;V}E_6 zKVe?-L5(NrD^i%YbDy)*%~!5{)ayShMQeL^`n;Mw*ZM>k&CA&1AbG&osM4u0BJbDM zPe&K?zV!${%J$%y%qO;EH4~4BMQBdiSn;EM<4%qb$L@Xlqv@Ko&sprK;Ne8o;P?(r z(S5QK#cAg*Icxq3u~*bTCDt|NevPUZpYhka!->mJgm9hL$p5_AcDCc|O_C4JR=ca7 zeX`Q!W64yLt3^_ps?oukYNsCy^KLt=t7)WaZ^PkP!1!E1+AZDTyI7=??8k}cI(D!I zioM*ZzBAjY-t9y0_VU9UTqiTtT((Wx@Z^c_*Dj~ce4%GQU0WricrT!$Sl~VL@)=uG zRdpYL{wE(dEpXu+r*nD9SpCo9OHZ{YqjS2l+uK!+a52nj8HsR+uMGM z`wWA{Q`sLfhj(4mk4TqI>zoiXVU>eP!0+jsG#~d&*#2(jjc3hb5zp6ds&(Jyw%sbj zAl^^*|AxbHnQivAIy>?fZ)`eXc&MK{M`*Q@%;CjR>5pc$FK)4S=&CE5e4&^@h+})i z#p7#uf9Bq9d3#MdMsg3czVm_J1mgk*mRC=Qw!iA;@tFA~E z&TbbwlBg+aB6PS-Io@wG&lBaKC+u8ZOJ7_*6!^91c`UDl^IX>>5#EuzEAIWdw0gd+ zV`-7RTgKVtNiUjSHN;)Ga{1kIzqvbSPuSQz{b0J7*}F}a3=^|k_We1MyeNxlT8Pd8 z*G7L6Ztq*4Hn?{yD>Wy5y#7_R&AeB<`;FGtN>=8G_S~OJ5n?Y`TK~2loU^AvA@v|H zYrw(<=G>x9WeGR!XISuX%~lYS5@Lz!*Vb?mx#w^5pDMk)GS&QPRp!SlVT-FyPkx;>@2AK_bItOtA9<#j`{dty$ur%&FW>Kz zY}!({`S&W0u8EslH-DwI?VC9v%N5?rz1W!3k?l7G`aKJvZF{@(rCyMTW$a~HM5v0hM5 zObU&k`sHrG*0#8bKUOYrIH$#t7t!)@ip;N;LigGzPWs#`0c=h zUmw(L*G^5!-u2s}HEhl0#g~;cf@%(0pE}%UHGk5nP2T6?{ce6gpgMtd-=Dzu424UQ z-b+jmi*qYE%29A=u3N)gYmvIXoGTn3Y!7#EZI~sPzsc%j#o<2L63=H3SDT)>VDymm(tw34lZ21_5QZUOCE%&?G#(g z9Xb6GcV)K94dFK~jb~oiy`D7bUxd^W<{M4B^;lN;N(q#G*yhgnBxr$!ea<5Wf0czh z-Lf}_DL9ul`_!Kk{j;HXr=!z^Y429O54YODFL`6ZoIoR{3CeNG0^&)*6F9e9p3>$p zULY!XvN_}W$*9I_&0U!h^14TR%d-BwI8nMU(dI;s@2e*E+)Jge?e4KU@~`LGxLq&( ze3<~db?+O7(}}nH1K9OaIQlj&(|=aiTxg{FNHyl=RlTSu8`iC6vgO-gkhS5h`L&6e z$1d%<;TJqX_rrrYgJ%5-zTX@&50740>ZlsE7yc9fdrC0~&EcDN=i z?xM=>&Dn*sB&IBQ-{kaPs_~mx;@Xe*(q^BsPHQ;GfAT%wyeZji{wyx#850CPEbXw0 zF;lx{7ohmW(Ed?LkZKfn^=sdYRqedRYyMc51RXvQcG}A!apFgX#d)GTOgy|~h1VPN z=2<`Cna~^XD=qxRx7%iYrgtWu*ZGjF^^o<;Osz9~Um|v7<}`ZrI2qvdoL~0i4;;$V0U2j`=zz4ZZX^Bz1hD@Ep|6C zIvklPW#adA^R>FH-PW2v}}}A4z$cO&8pg9 zKhtpak^txZ<_>3h7Rvgxh^^2HexaPMm(1(;lz;lXu!ncM=gmqeOXL^7F}0{#iR->^ z^WIIT3IyiA+3kGf+?LZv%9gmDUpHswxAi9XpKdvIM@(mW#&NM1Vt2#>@9&+ny82O+ zpZ%$;`Aj!#{}w;rb53RUpH&~Yzv>@4_vlpFv&X+SRz5u-KT%)Y{?6h3j1R>hvn{N2 zOqZYVwd=2%ntb|Q?|qKh;??|f=Vg`4)-1nz{=!}DTH!tO-o)*^?^%1bF6pz_OZi3j z0`C@Iy&qGyU;B%H980}X&C=WRt@2qvXm{*;5*hlZYo(mK?&kfDMgCLn7Vpd3`RP>q z{l8ni?56214%vA&U3%~NscPA|t~HASLLY76oIfkzYSrtGbJ15rcAagT?)E#*#QECW zfb%kIFMZ5Oeijlga^G=HSFvxwYX2==a-CXJUr4+Ag&Dr#rY1h*Wced2(T6V_8PS$E#+C1U@{~A@< z$JQp3b_=F2h`DHAsP&%Gg__&7OVMts}<*Ap`DEQ>v6m@Ok3`tI(P;-8b7oZ{m5O}EYS zDCF3GjUlG}v9qo5nU1^L`b(Z1yeu~_?~KL97awEWd^Tq|FMC!}GAsFu!MWzg>}zj- zixkthSnqPNsmboHqW|V^yfs&Pxs89X``$e1#N!jwU&|eEcKjmyP-XwIjq6zE9J>EW zNZ|Dw;~J9-oOu&O<7K|6U&&32`1`C}oSXAZxcUQ+iz(Cj*$aOid~#m8uhsJ9U*8ta z8M`vK_j82``AypL_Pn6y$3%u|pEJkbL~LgNv#q9oPp80^CYAq1c9v(8Votp{*w11& z_pAE1$18mNkM|T#_Yg6BD4poh)wk6>X-eK9{o_@6OIhZg=E&yU^_;3&ngZ%^%$FCC}%Rlq2_xX5iP4FIR`xEjxe4lhI zbnk!I8!S7ix}~lDpKboH_u`xXuW?qdUhriTGa~~-^S}4UdH!wI=%0J{?qS9mBkT|`C%19C`-QUilv#~W@QMZOb9V3ot-O?I$>)#=K}Vi z_B-3TrU*m?XGR4do|L-MC*XP9o|s6-lMA-Jows|j_v|-a^UBveJ5{IuSM0Ix%x%uq zI<}Q5Y#|;E2E8wLu6UB88rv7Yj(w{`?}6=~A|74{ofpg~A~Nk}@Ulyr7k*f@YL8Fu z${jrMt*P#gam~Iv)@|IF96nJ?pdvCODsI)0{g1Wxdxbil)o876x)i&xOX{h}#z~tx z><_NW*(~&S=Ax1>VTmiUX1>%eC|`WxVQEpAa&wrJg{AKA?PDcvOVE6e@d0i#vk&8E-d7M~4acl{T*U}x*@BzyJUA7sk@ z{gL^);@{F`J_~o;_FZrBVCTx9zM$@~@U2cN*^ZlMHH($Db1{ZY+LFAlGCFwSuDfE( zKULiQ{+8ddI&uRCQ{^Y$l`k@QMc4d@n;TTQN22K1Ox6cFOCHR;^wU*K|MQCvwc8Aj znLZXdEOL3-%J1KYhyYJjKoDZ60~NGku-y z{L8^p@?yn>hwt2PpHa9g_c(l$gOkL@3TK{R9%de49%UZm@;_mVws9P6*xoHuxjjPo zWat(BrgziCSH9YrdDkpDr1MIldHVj#V%AO%qtySrb82SY$k=rG+ajKVZ#yGTx2(N+ zU~9A0vxvTCqh}H4n$4c&rf)oQM384;IKz{}=G!taZ=S#5Zu|QO(t#`A{F|>c|Lul^ zd+C-sH7*-VYyI55hwJj~dCzqA%ft=UKIaeHnk=a1%y8^qHlbpcxo*eFBliSs&lYn# zDZOOaa)?bN+sWu9)0V$czh<7(ux)%0o6?*hSmnIP!Qsfm9|g>F71?uzsz16rJ^IcP zk`O+(f3@2o<{k034(U$2_O+-&x=l4!_i$AHwZPNgr8C4&yWI+vs@0X6`qS*|yq53l zdusT6in^1ZtapDSF#o--Ra@?%lD#KZ{`8)m{CC^;EwB1sYg#-{`SiAPf9dh>Iqzq$ zu;gE|ZvBZfCCB4SjtS?ypLq5C;+2-yQ@_S|rhl(qU>TnBb&ki+x0ROLQ@6)**6$ay z=r1h0QNGZ7dWHVu-<)6fI#j>5eII}Ko;i=#;Ulqf`}J+-yIpAMR3f2wZH*Rj_;6Ayt>oa@6mLIKB_4)~#TjvL zwE5Y?d=w5X^ja`s!hy`03zME?7(UGV#aXU&mY@AzO)yXVqi0EumO&9K_+LKRrMKeNYfjeoNMk!0!%i&&rup-&RZ4`V3;6at z-eLNP$D3n$zgowX)~eN;FPTj3mvdRKc)dujitDzL2nWOC$_;g!-w5{iYe_1kp z^G>}o|NnyX`k`)Pp*`=OYkD3H)&e?0TbeZFIM`CYG+Ms zJjM~CXnG^V$=k%CFR{1N^_Rav{}L}(zKQSH&lu;pt!?|wtn#&Z%eQ`aMMhx`g}|D^ zX&ffqm0On-&N=$NgIDZ}wV=nbr5&w3Kf2wuJKs&+b?4xP1BV0`8Qq+cc+*!^J9h%h zSB|uRpR#}I8GpPt_^aNKEf&A2`u`@EW<~~$fBRWK)E^3e>RcDd`1H5b`AW`HEBzf@ zS<3y){wJK*tYKNklxw!%i}~zZxzf{1Yd5WDUChk&KXBjSl3Lrq;(lY3X~h#)-d5hCH@PqH z$-kLr-b~SxJ?p>y+O>N=<;!*E#cbr;7M;l$zEew2`eI&lO1b3+t(jYQi&Q(e|GZSR z)AjfPu5-G5d!8QH^zy}lnQJ%wIv6CD_*|!{wj^pu==C+WxIYzB;`>_g?z_H4C67V=`4!i%6*#_{ zYIgPb{FVg%fS=Yg>(r$>4YSG*MStb}etqc^hd`+li#=!D`uah$ZF*GkC&%>;np_5< ziC2#Lyy7~qpg8aC(z-UUZER&<1ejF((6-uS{bM)S*+;A>|lY@QU5$Z^u=j9T#H zqdX51mT^=o9sdw))0_Otz9z*#9`wpw}DNmKF|J40om-u&g z|DVg%9>+~fZ!#X@} zr>oEZ6<8zXny=mRPUqvw1Kv-}=iJV|ajoY~*S5c293M;sKJDvjyC%2zq%x<$rQX>1 zx#^Su+lyo#s^D(=ER$xNXgMkxpt^&=`=mT zT^Y3=3evej$NX(GQ(x ze)%9&|3Ufo9%G^FapBkd^41(ZWs)3a?c!TfvDQOni%aob{{viqJqw@iv&ho4IwB_! zwdtMfO3}4N*F5KKW#?Af?i`ohV^gVJ{b7Q=qW1*i zw{M-xqQWxiWz5vn-AUzpRFp$jAHLG+ zp4q%G>Uz@DLw*1K{-3+Ea9Q0`H#MD$Zr<6==M$$r|MKVW8|D91 zp|hW}XY~t-i|o5EI`gvI1TojAyOxXW|8iR}`03f;V9&oF?39bHIZn;{dLc0Um5HD? zXW<4ut{FR8luyhJI@7?VeDYmGmzH9ksHLE{ZroBi3sVD20qKq@H%c7U__75u_Al(u zne_HRh^O2!i|ACAkLS6{U!D^x)O_`08^^n2GC!?6f+ue|{cGc2wWgoGpO^0L_!GHT z$uLM+GIHw1Yo<@zSZtHB{Bri3T;8(D$Wv{n4gcy+v!@GI^BCsJrmMbotZH$Id$&)x z`Kd>cdr)m<>hHIcj}`xlnZ&$A^=2dQ*1J_KO6@c1`mzuFyt7j-kN@a9UuTUqt`2Oc zt&KMotmv29cO^ITVb+sKmyq_eE{ku^oIT@>)%Uk2%Ik^Qk& zCyl?HXKFrl|AFd*#PC~TlTtRsTy1?)FCUn3;cmmb|6XtVGEbE4^U?EOX)ZM}#Bc7e zvX^T@SQc$cH{2#Jxa_P=jDpwV=G4EzxeWXFCiKr~`I<9B{MXTm`)5mW*}G3=tADb> z*u(Oiyc7GX{JL3xE{b&RoXPd1?NRJL_r0A_%RKoTO7~u0{7Kbd$1kmE?>#chmGY98 zsw^|pIMZD6YoQ!l^0%6e@w}@ptlM~y`;OiXn+?VSJe`|AzkcIbop*8lu5Fj|$|pZK zQmJSwb=KNRPvYFWz}q)x{kUhf`Q!?@eM{4x@_KAFGV#f`%anM$ishfu*4^(VHMX8< zsXp>AGIDcm(^uuLGc#FU8k@Q3I?ue4cwylr&bY@rEaPwLMw~tVPsPG2!r|7R(_#M? z2ksV;i<>iZ(%y%4C2KaMIrKFA`gtyA+PmAI_jxq+?vlw``>pEOwWGbgY%F>c^BM$P zic0UNH5T07=`X{j^ySd?`?lLI^yD30uCtkoR5om&lC&Rlok7h@0i^zR9}d$Ar9-c0YqN148Xy*aW|S z_U79Q9%cJuZw~J45xyRz=ktn9Z=dmE&8?GzRp*QDe(d_Z%k2BiJ+IHL6q{t<^WVt( z#=^5=dI$b>tIxb#+^v{nK5@GA$7yP!n{-3AHpDq zW$`T82imL{{&m~`oqNaQqENf0H%tZhFvCRhJ{z z`sW&Ne@e+4-SaLVTiU7AB;Gl`pLkGHvQPh>CTFo5dzyTu^_B;U z_pRaIadYpEv&9y&t(JFAAFkGT8=Lz3$m-Mxr`__rTZEskxS=s6Yw7jhDRv_JEsB`` zoeck!@^XtpmFrP)h1>~;Z39-Fh|bXZa4g??{td2um9?e6=KOcPWz7(|E%#zm^}4++_x8FiXD6@O5;-&W``+)n-@onXzb?D+dtCNh(T$JiRJ!#TK9Bjtzu{^0 zE9r9_zS`zhThB{(27DIJ`*=J$Z_|vMiJ7&lfBmigX`FI&#YeC6D~>Tub7hTj_bqW} zooiXe!v6oe_lNK_?q-|Cwsn!LYBMTdaI)Q;W*lA0!!y(Q)|qJ=kB18K)ztdQH(p&` z#F!y-wAxC@=Be(ncmJMEYdNaHIA7w=ghyxQh42M${rEyuDB#B+UP)VU!4L*Mq-?pJ?; z`!5N{O{)LPS>U;_q2bCuZd)Tm)6Iq@hN;O5#ed3g{eM+1Dr?ud6RRZZih70DPF~r$ zvfNOC!|2qsr%FsBzcvLbTu}X?71CPfxoPg#+lG-F9vjv=U%LLXZ{nF?q5X$C@0Qvy z#P>;TpA$P<@5*ByH=lW%U!TAGWApoUIkoZqlfOA^WbW!~a{T*pp{2+=&x_Zx6(`8X ziU=o{S9ebAoj5r{$4Kw@3E83`zeSy)5p#Q%7+QI%MTK1!GMzQ)xXSgp3+LHQ{hg4Z zWw(@l>BP+oa$aU9~yO)h8X>UOegO- z=iJX56SBDUGOR2YTVIJ+}R~6HkMltJwE3t`_v(nb-^)@B|k&w`M1tEm+Ja) zwTytQ_veyzf)PwB_{yB67HzVwZ`26BIm?_!t7z|^O^-Pewr$^axqia?X|Js>l_fvh zoOmiYI%n~rlfUOAPLNK#_3HH9_X>00I+h>(7FJ|@b3?*J&fkx(q{(FloI3cO&pnLK zG)E=yd+b*KUEIsRt%+`{`#<{@=oJhp$e__ za;2L(buRhY#q6uUAG0vu>q+N#6{Q^(8{c+%Rc~25K_c9`QBCQ~vx^bt7c0#fE#k!< z^|0C*Jh|GG_|fMxdqzS=r_@5fnlqBYM{4iaO-oRp_N3_`t7)Ob!zY_t^Ab6pJMQ4H z4K0<}+_Pz7xY%T)y{ji#cwKydNO{@RwO0DI_D8FKemroXZ1!a?t4aT~jGsBP3C?QE zc{eR@-v>dKkIN2yZ{3sdTB!J|=8w-2|I<87Clp(}U+8HyN#)#^X9>osKhgzu+4n#A ztgwl-Ol5IjJX;5;wo<& zH$)4x+>T(ef7Ck1`PRbfg5?!0dm@rnxa%Y_C#D4PP2>xC^4&pVVX%j5b@J^a#Z5;W zK1wYp*mJ^gsfeOd`hKPRvj1D|UvI65;AHH6TW&B%_AKw7FWIUezMk_@JHPn#p-(>+ z)M;e&ZBTB@xNui-#Y=JBhW`Sa)U=j2a{Kb&;e zRs7>u^$SW@R-IDnj{n-N-j=X; z3;(JIM<|`vFjr}qz{|}h*P`_Hv$BD3q?Zbtk`q(lN3{yzAnoKEE5kk*>^!()Of`vTEP zE1ndsTC{(Px7OR*^?N^W(RvZO*{OKu%<>4)z>w18Vnz42&zxU8cYWOMEB1`3wfhZ! zvD#NC>05U3986!Z=gTom&X=*PB+3rzzi zU6l6Z6V6|-K}l0bv&Yo^N~op7vX^~c{o>AZ=1pKqo6s7h6&kJ3&9LlQ%d{=GUN5>M zx#dNmyVs({%aXV1FufL4Ip=T3n0qv#^U15@>Va8Pj(9AbmB(DNMe9ZCj@emVOU^F+ zzGSkfuwC!XV>{-~3VChJ+qgV2Q@{`5%<|J6&DXXcS6*{N zb;h~H;&U!>ZItbpc4Kp-San_GRH`R`dzn>wdB1-n^L8 zcJes^YOh4A5>~1BSWJB!$1}%c`_AJh&MG$fb05?duehWfP#Mf?YH?-b=A)Z@6W4KD zv`Fo&d}i-1JLS_Y;pj`NY{I?xXQa)|K0j$*K)OuOl(X#GvKo$tw(sYL9`Et+I=j|o zzd%`s%jfj`VCNOld?i-D>W{n#UX^2<>%Cs}(xvr%Y1VhkI!w3u>4xv>4LL7WKKbT+ z9iCZjE-PiXuAY^~Q*mJZF1^xQGLEnJF5#c3ZzQ{LQuJ}z)-5)5Tn{p2WC|;foqKp#y(*!S0S9%c;S@@Fic}!kg?#4&Fk+x46R{2eT(fljI{m|XIuse4j znu*K5i4AqXYxwFLQ^WT5S2IehSs(mWRS^5{Fz3{IDTj9pt)040+Z%B=&Y8M$imOHU z`8CtGmdsU8f6d}2b9Pc$%VN&VQ%m%xul%!PNfr0D`m#Nm@Bf9K7c$Q;dvajORzK(e z-0#I3&d$zp`{uJt*6nDe;%r^LX| zMEAA_gg>PynBCPTyqkrnxeid}|4)5<+qO;4Y zJU?u=Pul6OxUJjjGEBXl{0?)b2lcM}o%_Tizl1lxp?GD~(Y6eBlXDSIUAiV5`5<9d z^0M$%Ywzn@?0&CyPht73cbJ!Df7@?g@#+Wtx~nqQIUBiujGMSN+O>SfM*)X5=RJ3C zJooYGQsKXA&rP)Z8|+Yf@6R*#_XZ0bp3LfU5}2M=)df3Zhc!%EcRLvt&hC%Kb|dWxWDR5{f7e|%e)ktujY4}>S(!Y$cE`Fy_v|!u5eg(!B?kE z@eMaLb$4%k*44AP<7RBhAC3vPC#Q41ojv)_iHScsCfzet!Z*0{Uby`#*Yu2*L@QNLS ztmx)~;H?U2ueHKL8IsS4EIub0@OYNX-?Pn6n8crK`pm(hzxtB1V4cp96)y6f-}fK7 zk#hh1Td&SdF%@S5{HqSQFFv7_>;BqM@88;#`3t^!tuk`<*cE2)YdiJWvPYJZUabBd z4ZT%4CyR|ba~H_OY}r%0-On_;JK&eqkJ>$VS-tO1jAmex`|$VXi?5XoB7U#hzss)R z^5Xe0N_zrMhg8af0>_d?aa>ZU-h(J^#5v= zXIs>^w4XA1wEWNIt9_oq44j-xRc@E7h|NBg|Ko6wl8}&EOUp|I4zb9xoC{aW^15#u zvSc;gx^?zLrS7U*D~i3Y{qS1S#2d9u_jG>Qa|TI=XZu5?wfElAbvvE0B`jX{-n(<} ze18XW)RwN_yXSoHoO8y1&OA#qj*d*+9s9h(Avx6Q$MweYM zDU-37sIxGRSBfRI-8||3{m)D$8G<1uW`;_uPp{A4H@}}Trig!0Gw)oLL$`UJT`f5) zy0<2$c=r#%#m}Q&tzP{`_4x6ScBQv{vz|-t_1(9QS!maLrn~=GtY;J^*zLP{x&Pd1 z#=T5h$-Ac%F`SETR5|C=ZtWPvaSE}&U<&~)!O{iuV=+(txav(u_j=4>&D~9bryH(d<^Uu{eG`kZ9d{A&D)Pp849RtFos)mHjJ=^?d(Nd(%q%K1^(^UU};iqju#}n^&?&)fOJDvi-9A;oaQ@OvhI1 zzFu%h=Go`hYp(uP{&qutx`38%6A#<%A5S_YmSsskR{1VvAH!2|znSCSCG$q6_!5)g zx0^SFFVu*w?5R3c&T6>C>~i3u{K{7GZJCFqGmZP-uj<|vJ7>|<))x{FFB#Vr`OKGK zP_erq#ip}TIH+^SitgB4mF|-_kGHcfJSf<0XwcsxxvuqN@SKHGX(dzV9KT?a_Vv$p zr!_%$esirn6(aH`$|fzEG967ex7_tMdEoS^Rr{i zI6ghPojQ54noXzPDVtqU&U0Q!eB_iq!e%`+xpeJ>@3xQ2@t8?1!^j9QaKi|IN{)_&3MGkNIm)%{o=<-q- z)H>a+-=zBQw7O!8q*2Sefma8{M zZiU#-%B9!r zh9zgT+z5R<;kY3I8ViPhfV%(*&pw3x$tMmq%SYDmRqrQN&7#K8?SEk9;g+o zs9e3}3;S(NJzr+aP3}@|-p{tXNI#w#m(0gCQ*p|h#Bcg)Q#^0f?PZ&LB`RZ01J7j8Gr?RI*{SyjgR z>SNV3*3B%o_N}i@RJpbO*(`q|bJo#&lP*|omOGU(>v7B@r+JgsE&ILD)Gzwda=V?Y z&i*_u?D2YH?pJaqP@s|0%F4n2t=PO<2Sn{G`VWqb4vzK=iIiB7X+H}sS#JEzj zt0(_B?|QLQ$;ui^(g%g)n9jMjOj^6=yFt^>rtK-8`Y*ArQG9&-k#5g|f4jI8J*x~{ z#Ak9aq_i6rZ+M)rnPW|Nxbf``smW_^tluepn{S?fE8D8+94X>UjqY{5ooY2Zuys}Y zmWt-1w?(!a?Qlx}YWIj+;peh7`L}A8OgXA}Y1-*&XOCML6o1&f_VMkHov|%T-W>`G zPbjanYV(~ zpp8blL~>=J?j(iT!o8h2KjyvEin*G|-(l>>@wNZuYyaR+W;;H;T9{bFwyjef zqRghxJD?ML@}m};N9kKzO)2(mMV?!V=5PhxEUHnTxptSVS+%BzR@v`4N|C2hcb$um zTP|HBwszjC)hxAISDIIDIj6(hB%1SZ>J-I%+3%rS_r-5-o3_zS?0%T6*?G==J(m~1 zWluh59Q3A5a<%589#+f4a=z~-Z9dKJa`&q&@R3>|yPYCbhdbuj#ahUvc=A+rs8}Dr`NIQ1y z{0&YnXP?LfLdhqKCHWjR~ILC%V^cx*~Gq_HOYOzVyE{JwB|`bTH>E z4L{{=tM}&cb7sd0X?(ltZ23yvCyKZKu9XQ57I+sDZ1DZVJ|~Hc{aVbIG#QMuCw}ST zy3BjtHnr7SVs(O$anH^t(;6#S^*Z(x7HpKZx&Gm#{nXkEmLiRFmV|Om5)7Yjy7Ak> zX}yvU4xQ0a)!(#*fyu&r(x-WGzgi|2UJQT9aQuHT>(k4}1#7oYyZQOzL$NA*|8ys% z8@3OFOqMe5S*E@IVZr%pH@M4741Y9FUb!f$i?bxORjbGGO3>OZX|k7GB+b`Pm=c-<}j&4hIpZ;9p@lplz)H91yQvwcc z-(}1d?s7k8xzWmV8<$wLWlcS!@J8l>uEjSg{Y8aZ$I9elXMVV^pL5nr{+3tmu|Aje zcZx6X{My>jra{gZfNLUn=rV!@`z(xvsenmd$)Sg-uj((IeE z#(F9fZ_Gg+EvfS9Jg#S)*uLDIm@XOlGdWdAy}v|sc|ce?&#Po!4X%R3Nlh#Xb!;k{ znwz!xbIdRM9+kLn_=a_*+Z@^d$E>$&e~_Kt_b$4*aPNbMvGRKvGi3aw>^08zKT$K_ z5{_t%cq_dmE-}lb-QRBC-NWKgnifl$eKvaZJU}Z%ZF}Wk=}*SBk5kygZY{j9RqDpiS)VPhS0Af9R{ZS8t^4n} zcgi2^KiK#q`het#a{*FIx<9(@|23C0lHvB173%#z=b3)c^Q_sQb99}E8xuU! zX@B9hwZ6w=_JvMe9UWS9Z*@%MA(_Mb^sW}M^6B%dHYux=&xzW*a@)flGhFj^(r+bv zy5(ipK3i{L-80?kLRJjX!4cDBIX_H4{mS=iwKj8Y$2+5jZ8M*_eAT;hI`{R$E$?Lg zR-HYUH95-1cH)adoqBOy<>VcASHv;KuGMnf&Z+o$X>{_vc)M?zPY5l}?w-P4#E_aJ-#< zz+vCrnb*utpS|*b=dB{y`iYnJ|68iv$n$Q6r#j!OYhKrwIR6*7*(M5TEL>VTDfeTJ zueF-}uXRdHKU`f-iQfEvB_`UedWO)>vw<5SvNyz3De`s!wj z{`cJdYWb=1g}3>fGq*Dj-(6+i8MAk*Zta_jiL*8&g~mm#Rk53X>b2H$cfobme)8?x zE*tI@zPPY@ig%e;X&%?+=iFMK!k5%cJMW~m$Mx*y%#+8&Bii%W7gjgq`34?+eTY@$ z$0@~tGv^*ZZOeYxasT<0)3q~HcU`t-#eQ_# zi%zzawDxS%xTE@4t7upM$5RQ4$K?g1B>ZO|G@H_x&Uq$Gz@&Mei4y!sS1|>uYq9J+E<``plK@$Gf8I2fNq@_G{O8DqNC|FwQ8Q zFr#tp^%?g9&(y8tUw@`{(F3E>X=1ySA02sLeKhQdMADoEZok-S6ni`v+EtFfD>gW! z`MI^vIsT7|0~)c6FBaSB)lf zi|KOrq%9{~yX|0MuR8W+UfvvoS)x1l{ACWF5wniV@6y59Tju()D9_#C?4`o6*2=%~ z>L=wVyS-m-|ETQy=6RC9w4HjzSI*w}+?6z8iRvGN=ogkV-J(+^)E_eW>B!AkaV7EW zi&IWPXPNg1T;p0XD>_#8aOyWkp2y({Jx1P1j}kAvn76O#vk9B{)V`c-Ek-$sGll_k zA3k2|c9^Z;ibe0IKU;nO>^tnLy6@$`OMjP@ru<_$JmtX&-JE{jLw(auI6rzOyr#LX z_Ge1XgR_oXw2kNd`KT6T(#}(sIY;yIl_u3GeP%BHz4IbupZ(DI?QrZyMPDiu4fB)&wQ1ir0BQ*%m1Y3`-?x=-;`8NljmY$ z;qVanwEy(?3d`LRw`NLM&AgCpxqHT+^(P{ahDk<$<+n7yHu=KB2(54x`Hb62s@H$i zEuP!FC}y7Uh9Euh53$=bO{e(H*|*`a<@()cFO>@#Z!av6JbJ%7`$=&+znW(g!ybuq zpX~B0pWjPg{`JTIe}Ct(hgggF$~^Ery1XL0b8$w}8NqKS977%~%RlOQGHj2SuMGRT zFM7g~%UX&q{MAWZ`Zj|(BjS;F@PlPV!FyMHP)IU(+;wtG{9n#pw}oPF>YF^axViF# z-Baze^OCp5JbW2)d1_S=+wSPs4@0Y_glz74TYk&$;DSpQsmeRlMR)(YQBiqT?q%qr z8#!N}&0D?yf#1!O(zD7YR_^ScrdK?tduR8>%F0=X*KPS3n>8iq^X{FKZ+~g)^$L0Q z+oE-r>oJS;m5;1u_kEkX?Z$~b>3oNt{cjpu7Wdf*Zx($i@Mh*qwx8QLHqO>LSQ9m| z;r!BXNl&e37yj%PIJjb)^h?D}Iho0&Tb3nnXSOU}Sa;;bLqApit``SO&mIzeH%t5O zk;g*UOH5p?r@j)%|Ks)5x#vmVlDzKxcTLN^^rWsOt3UAVHQE#R%cq-t{x{Vto9`89 zW-R{q#Cqz+Na4w$pJ%mSk@WXkEciI;hbi;Q*{|mD3BTGXws@*${%8LUYGNw=PP4;5 zPH|hw$Tp#c)6ABAP1NbPYL|DLYzPtG>GZlpapm6KT|pQ3Cja-zJahQah0wOHzwfJ7 zo0n`A6LL{)F`TvHSJ+GER}ou(&s{jrMCi;HyDhoXOs2A2zN0VYJW+3o%Mrf#e>b-< zx_7s3F#jbZYqI0~9FM)z*RK_>Y&W}i^ZWD(8A6u#U;g&E%DkZdcfQn*R$t2ty~i4Z zU;Unux*;O%x$gWgav$Z47*eXIDkyI9e;3KI(cSM&>pZ2^M|RvlK1pZ&oljF6yu}X- zockeojr-90Wgl9u)iQInB>t+~<9NB-!o|Y%^y77%4Q8y>2aNNd9;n~VD6KT>w&b0b zoz2C(mgZki_l3XSey?ebs@-M%gycQO$G$yValJh?W9P)?Jf}W`IKfkU#JZ2&=}84}&-(57*sReVoNz!aQ4Rmel2RuGna|h%1jX|IJ&|P!<|z zFgsA-Y|BqE_vj$EE!r}lIaRVM4W`=2JY_TXURII*X^Q-oe5SX2OcjX+6^mL?pIhwqPdcAt{_p_04=I<9i`;-1J_ub3X#|Ly{ z^$z=8t@ym_L|f~IoNub@Jj83mt~>ai-k%=(e{RmdovSW%FP$LyM_M4@@qFo@{JbZ- zR&iYNI@Njc^vTs8T-}#;R_yq3%=`wg;DU}_-{k_dE>Cz@>6zwhtvmh7f`GIVrEkrR zO!dbjKYdJHBU}9W7oYgE+|KM(DhYOG^G_<&D{%$hE7=;Us*(0_b@AN4g%cy&Gkf19 z|LqK%SeGBASF&+W)Q2e^qAyy^{F#rK*lw3)a@4h4m7T{b)VK75_jbG1jh7o+mZ;n) z+W${*M^mHM-Q7z(xsC4_E1tW@s%WQhG{ow>@l^f0-8qrppSBmQQIvCKxpbscC&qvF z#zpJ<^H(>|fB){lm7XQ@nm+|-Z)C{1F_k+oVn*;sH%87Zp~k2ES}Ysh1kG9_+UXja zwP9_~V_1ok3*M8N%;rM;L&vpS< zNmTut^gqwV{_K{`<-P0k_Qn4V)_3>cock{S&A)KZ-}RgKH1E}&+dO%1^UBHHOIL2* zBt3VEPVbU6i(Hm=G55Bd>1lb@tJC{si_u}O&qkl^rkdzpJ#!^T__a{+=XoN3{i|+C z&uq)AS{a%-VO8qOnKxg)jC_@>DYc4IGE;I_zJ04x3{wn?=vo=ci~m_W_SfI7e(})&e3CyewVlUaaK5o>c!F&m zpQ19G_qCHWFHC3U05y)$H@OVLX4 z41dRqODeP$7U!*htx-{b%X}6;w-C$pXWpSDdp&i3v}7jsoSP%?cqbG0=|Hz7TyyoB ze$dTIQL2~wZ>bo4^Xj#0AL{2!jGeS9w|R4q<+s$j zwc_PF|9Pl2y#6qE$t~IIaz<+_-hP;o+@x)mKEXxGmtde48=KC}95 z+W*t;{p;_$4K93^+neDQ^Wf+Cq&e4>edM@OKu3OmDN3#yk5;~xv&=slv z`vn90-zAS*#clQ8nDrc5omj(i^E`vl^6fKxI^zGu&e0QR3vg8YC1^OUe237X3Eg6K z8L^*ENoVnhzWZ@@`}HnAW!25g&j|E|scvG`JSSrkaHV1jTh@#iKH;b}SCoFXWCrHV z%o6)%w|}vHM*QYeNso^ldzE3eq%c9jG2_VF>tE)bt*N?rpkiy5w_hsT#-jGP84;zA zC-Pdgsoc|BpLDb*bBp>$E9T<%kXEjz%lL{K*H&%`UCWreOKbaQzh^prmp|S(&$lwh zZ$pHJfMM48GhCk?SFKqxtu@0pZn37w&BwP6zhFM9r0rholdzLbv3t|=Gb=j(YTvL5WYQBiGrsxGBtU@SOoQY(SMPl~ z{LBCNGp&xey7HHV;yUlGTjoAGt5DWyx9^pS+Mjc)H$UgyE4st_p4a5s${iJK>$-z3 z{a9%&eRoXBu_vTBrd)dLOrp~Ls!dBrU)?a+;)r{nyi+(zN zsymfmxTo`Yl9AZQg*Sf$@Xdc}!MZG?F~+(yaptk;r#UY!OnPSfpJ(yU+K{D(mA_>! zE6iy--E;Zhjk%j=PMleKCPnjtz~AePdz^*3Rp(0;r>r)uojEgxZF!~D;*OV#7th+z zp_conP%rTB%n)C-&FKOwVwc}rZQy5`7%)ZA|Eit3|6IilcULi6?Ak3@=*MfeJ?!E` z&bF5~PMs~cm0-}+*}L(az|AnuL>C^hi0V^}7r$^ERGV%5_`{;;xl-zz?;YZua&J?k zV~mDMntrw6`L>|2mxVK3atAx^gbAyTB!R-HuJapPi1~DyDhgc7gTeg^#rNEHQiX z?W|C<*y>WL*o#r8gxYl$@6zC{sl<@ur&^IH_e7W73qCqx~ZnUu6V(CtUKvh&*y8S^ZYv#kE+ST&cLznc>v zy-K#IeD0^ZfV)j~w_4P$-B`cg+(Gw%+Ki>~0u@Kg%jP^|iktT1=Xp-=6$-l_vENSU z6542JZ#difvk@!rj=QG{cj>(OFuhP)ZbsO%vKyBIf*KAAvNfejMX$g1OaGJW`mRVO z;n}SVZ8%f*cIv%d6fmcw@MQPI+{f!hRJyKpiTU_`=r&%d_~ot?-&PZ*#9&GN5Oy>5 zO{WyR?x}ov^GG~!O71?#OX-R;gHx_qRail4?es8FDt?Rp-Y%^53mDT_LmG;kw?uxt}ENhb<6E zofBYpudlYoc>03(oNvzPu85xXao5w?Dye@0^cdI2?kUwf_~=~xREw@;2I)rC6_+;@ zl`bzUofocfUUBU$vp2HOI?nUW=yW=gY`OD@$eUP>pF3)|FPIo>WBasFRN7JO)sOk& zmYe!FKNmVu$-<$Iky*HTPY5 z;*JGYU2`mU-B2mFuN3Vb4}?9 z^{n$ZvM(;=yqaGn@LJ1ki4NNmiN{=bXHR@} zGC)mg!nu#kH&=Xo@$U?a!Bkn9g)2>;9ew&Lr^x={FP8=p?v<&nf;ScJwj9>JxbYAq{!J)RkrvBpptZwKvxuy{-`9bo=#d_dVn7{r#JN?XGjkUcAz<|Gu;>4+E!Rh;y?qQ^NLw zLrbIXxINBk-pD3ZeqZyU5bM^{H+OG8`Skk2+VUU#E1sR3Zj`i#wOur)sr}Il=O@}q z+_O%4izNMc)WNd(#ct7J9pIH8}Fld@7_D)nuW6rJjd)QS@9anBsJ@z!Y|LXJm z8m^aI?krM&6k65ulkdqVwd}cut61)AlRlwXRAHIgGiSjMnR)&^FQGo%#KiewK{iq0FbQdw=&{yYv`uyW7dOcl&b+oKNpd67>^MEiEebnKN~Yb@^Jg z%_8UPXPSR((_C>xe96@B2md@<@-r}VVYp&f*!_7QxW2dSYFf9{aNmu*1Iv~M-Z{Xe z{)JaIEoO?Fq2w9m*SnXM&9l6mcT8m6w5QWkGCN9kpB2t6YW4}tUVD(kCAc<4v~$n5 zRnC2rYis;YdW)TY_aJps?kve7`R7mc--xdCFuOc&!L%pS4(N%kEi2yo+<10P-;8vY zi-+s=C;YVj@{iNYC+BfthrR9F`l=)Uq64_Pw2U`y()8x|SNTtPs@CkX?)pRAIYr0U z1PQ2W+z4He-`V)}ZU2&|twn)i%QO>z3Wd%~gV#g*w-!3jLdFEc){`2#1e`@&9RVQ0gkv_|6cI| zLoWN&6$Y8JtU|Ue;4D|#)x;ru%=_k%#zO9|vcqAREr+J_CdUbhWsmqHcML+G0PCVUndTr{(^>g!=3s2Ir7uPhK z#v7XQb%xAstMa(IGd&(_uiV=!FMmHoGDu{SG(-IwPpyry!W-WvJNKAv`7ED!IR0~2 zxA}w#GAqB&sIs2$L)ZJb=zfrA6MyqE>U{K?drjTJH#3)iy?yiR+NtKt0%Uf-3c9z zd;&5*+qH98#a=)A{7LryMBFVoxI|S9-gr5gRM1^XG9|AIAnjR_Ph2+;Ofc$U3m+PyFMIP$2BdlE-7kz z&l_Q{fbG0n(?0in?G%;$7e3=(dCOnn>W6dhEy}5X$oHy#f6Rk=w~qgk;=kE{WnI~F zcVkGP-P3*P{w(6^FET1UZ=L5(UA8K6Wm~it_tF+_F89;A2@|ayR2!KNbDIC&H7E7t z>tFZoDE>By;d(7n$MjR(|5uxrFh@vONPo)bS?|Anvsqt#{>ATl+ll`Z3LaY=C=5R; z`TEe#bp;AC88dc06)tZIs1xMiba6ep(BXP3OzWXcz1Bv+e?{|IjXe^T(7)O zCEWO;u+F10Qt)$Pu48PBWdq~6B$nB4&5l(4vP*HeV7Ga>>mjKu9m^J{y)_r2_J1n) z`S+9RMwKZ4UTbI!dE%bc3kn71lV4cn-6qt&YOuC9w{ zQ0b0ojP^?;c6DVMHo1B&6wGsCoOa}|KH&gDfG3>?R&_}^?&)tT(KRc+VZs+gJa?fc{RvRu?Ux;;X#OY_&KD$i=0 zQb>By?4=0NsHSL8Sl*Tytp{zU+3}le5V#$#cYa=yZdOq zQ}wTloz4bEGmDNLz4_QHV@XkIM!T4R-kUm?mmisz++->J5p!_vGy7>)F@ibie}61* ziBmYWZ|)qa-|6v=_B~6!b*Q`7>J@nu&u>X@OAVCRvBsup`R2Jv-Z9em0^$z6`S@W~ z7VC}q@9tc{F z_|M>qd$@&RhQ%_F`I@_;w6sh5Rx!7{Lif3i-0uHb5o4$l>Z}85OSN(Z^<<0%Zm+W_Ton7{j z@jrj}(!VdK{`!ABG)L!uiuTj`>{PM##dl*C2_5}he!*p_^uty6zQrH%2+{40I{Gtc z)y}oXof1pxw+N*~)H=)*ImmwE|L(u+6DCFnRaZud1J=nz4VaQs@3T zmhYTb?erJwo|wzDxa9W-lej%AUe35Mo6GiC%66eCr(_$HI9oqTY(E8QfBWmb~ZN{VAKL!ywegXG*=L?VrHn_SWqaZZpb$ zSoU!TPo%W+mbw?$_&45<(b~4ZOj|Ors5;M`kMwx6rDcO zv00_9;|kkM3sLE*GEY;EgkAO3kbPNUr?=-|0>6Rjt^zwX(M|0iJq*mY9TRrizCHS9 z-ScT)!Smeo?wx(5_Ni6v_o8LD4^K1ll#I2Xb2M+-vH(6&=Se4;s(V-W$4>12?(;iQ z$@)ECjDEMf7uOTd&DU30X7{YnyL>b_TV&()H(a}=0&iq(ci*L9OBg-M0cPYTe&;PWLw+O1QC{QT#23iPh;fXRmH*{2=}O(WIX@Ga_97 z9^<@bR#jQS%gVlYqDOr}Yer?^?7QJ?7ncT0m*w5Ox&DcTMwice)8j^8N_)KLWp;mm z^5SUd*I7psRGhzF*!=N`>+q6D>p5F1g{wG|Th8bTMPBeGC!rZp{?+(5iPutQZ{q?h|;~xdR z=5;#Cu&U(H;x7J!2XBi!@#+(APjAt0nx|x^x@-A|u5U*!nw}E%IIS>0d|s5zQJZTu z2MXDq?w=ntKluC#?G?%QL~oeBE1>Z8?ED_vmGxA%tS zRwvb*ChVN;qWb!6@2T1#-`8xRs$LNRnKPMmG~diVd1UR82`{zvznhrrHPk-ladm4- zx?e4LE~o#wxrVbyaq;t;G4CbM&-^^^`sdeo{T0~X#J(0^#&C3{d-8G?TcESbB;n8&KuVsAvwT3M+# zx!c%}29=#Y`^KnE_#5%oU^a8+q$t?XOC}`deZ4_ zIs%in?yTPX?PY6JuD`7LhRW;b)OA~aEB^cb_@}|or9umNPD!shzsWhra)+yhz~tA$ zxiTxSU6rYl;P8wzwA+6Fb9^=%zp z$~?29@Sm=nmio25(Qgyn{2FUIGgch&Jvm2?)3IW8$Ew?|CeN1fa;d#ovHw@s^xp8P z_q`SrRWIy1HBa<}$>iN`ZTFTKZ#PR(SeVu0QC<8zV`jts%~KsJB*ZMfgykC-f1aJg zH+xF#sclVM>e{X9pYNsJClxiGAkpRrfL8Df8gQ;?UqqxhIz<%S_qw>E@Cm=BJ8V z7WS{#`5f?WeQsl8JJ*dswYQVZR_~hmYSm;JZHdG@IX*LMk^7G|k8xkS&v{WnQ24Hl zj?n8f1+2oSuI9aeJi{P5Bd|^9T+~OErEwM4Ci+&r2){Jz#tLzzLgAD5oHf#go&L;e z`1tzC_D9?Ir93XX-(ddGDED`Y)j}Whb47v|gCiLxD@R&{Cd$lfWW6f8oo&&xK+DqUMjx6#_aA;R_2J$<^Mx$--*$a=D)7Dk_A#4FyLZTuS6-4xm*wtQ+To89TcX=aw|Zv}h(=9s+pqdPka4e?Yke#&3-=Tu)eju!bmhgVZl^;KDqz(r;Sh5i$-l) zrYH7I?f*iF(A?aVQjyq1qh~5@|2`BH_=Zv!5 zY+t_bd|myG{q>&htY2r$+CFXScHO@}H=J*{cbs$kYZbRm^G^voSIxOr>U+LMUHshf z!pvHm2Rs)`_k84CuAKOGtDDgx`-MM)uV>8i>v;Lo?c~>OzfxajuF~~;Ke6acnYJ@$ zSJt=4e}CHdFJ8OxfI(Pfv*C=5X%cUA419KF^Bk63&2w4uG*7eSYo5u{pE#G_(*Bmo zuw%ud34VHcB}>{&szkObUfp!Xwk(lb(Q50*FFj=$)4isst>}I(xg}OAKvR6noquoC zd`y;zm&diOyV!U*)1zZT*}|3y``xa^R0u6r{jY!So~GB7+?!&$praPH#hRYp)*A^u zej#@Ahimtq&ndsYE53aG{4>{%#XswKvDf{4k3_kQJ@XOwn^BT4k8G`Y`0`LITYsNp zsH6VV^piJMZ$4ONwAs1ytK7oOnG>}i7Njh5`TcR(q+>N*Ph@v>Jf3{v;nNs19y8-b z>QxWAzbLam7P8CcoVBFaX3?S_Re{bg+Eg9CAK#zjB<16?B36~Xsp{>WNBw7br+LqF zpK1FqV$wFLMe6H3mL{waTUt6`p^-)xjV(cwJHVcx$Th7Z-I&25$R=r2lJ zd4KxxGuJ}puN*mZkKO&k?h5wm(4}k7wEycDkKVVp6dxbmv9Zl6eyNve?cOT}Ycm%9*4l0> zl6A;vd*mGj?^kiD7W)GqD_#Hoxa-uJwGK zA3s{SC0yKtNBnT>!zy>@Ggtk*3i&Gzx4G6X?=ODc@7~txT{Y!4SLwMGOK*Sw6Mg2V zfyTk~kV*D7YXssAg7#bAF6=Mrp0{A*@`y?CA#1nEBu13%FKMd~nwS@G#oNH?K_1`C zL;tPK=daJYGH1@eGplp@eO}uXuGyDdBQnwM&(FSibGu0|_Hk`?{Ch6GQar=^h14(M zCqL)TEPKYYD)~j>%P0d=cYK@ zzo_QtZzq?BJ~5N8=ljjIz4<}^#wiicABsn{?0Fx%<;(HEdHS7qM1v}xe-M6iS?=~$ zsi>DT$zPyG{q?s(I&#YQh>#;eJ? zuhzs*>+L?}XMVzX+g0;(o!$H8)?cjt&?4&k@mov78ex0U$Xv-Ak zDH93$HVCFiyM(Fb^^_~`)ZO@DX z&GlA3QD{@;PR-VEv{5@#zv%4M$<;0zx0N5v=+73r!_gi3Dm?X6==vE`w+8(8QRh@U z`Y(^0MX=JbX#Il;f(6xW0$ZG9TPqe#a?S`Uo$-Oq()`D-3Bd>0ROXAfwm(--`C<}o z?VKatE?*iQ^g32$pR&GUqmQl@&*ZQxo?DhptXjMLCcTnTY|DRUp{xdy&^}CyIu5*}q%YufcS4=)kqK^7X zLYHOSjdNw#gc|Qx-fq41t%`B()5))lHU9DZIpXuvWoAFmdd)AoOrZQl)n(Ph zvYiHh4S2U5v_4~=Tw8PPa`L>etotedvz9Galg;gmxI001!`JhL?I%_3U!B}DkN)xA0z}n1CIn zTYJ-V)OD{PnRPPzd8o??IpY~+FRI1gwAd}*%piVJ@I~8vrm6!6o8?oJZ`{y~IUVu1 zCN5^$r%$i^ZTFpKPHE%Oo4(-TRI3<&TMnNU(ktX^1;X5xd~*39^V0RqjU2c1b9H9+ z7MX00wrp3Jza-hqc(Bc7D)xvIagcw?x_wthvD#AIkLnr1i#8wf(tNes!+ZasJ4_SZ zbP{-0lv*t|(Go~0x?Hj~xuJEUrrr7JypyU}(s@)KZ=TV?E1+RmeMz^pt;35sFJQ5m ziAHGk9cLj|!Lr{+tWrcWMfabWdUl)Z>Gv}3OI|soJ>dMhvE+f`wn-PS|Mc7L@5#fR ztjhJ6%cD5sjN+u(0*VIgKdu+)8cAw!FJa}@Ii&Mf$8g!=Md2wg7HnQ$?>&G2^W*l$ z?aOjMT0CEWRXu`%Vc&m~;*>2Ztp6t(-psn?cj8gT{V48d%Dhh3{uya3mNH)U@YoE` zUoHYJ9FG&S32kJ zO6Z@e!g;CeuW?1mdzMO%3rcSivNe9l-Cu|2fYi z^M+1O{$_K1Z`(i(rce2Sc`Y zvUl?A#v81Ye$Kk|?837Pd4>IUotw*j7I43-ixyBl>vCM?OI2V|aWYHbCWk)7C2N*t zJ&6mSx^v_DG?kkY(R#dMwk8YJPHBZ-Gn)MSs{Hc3UDAiLjUtmb#ViWV+bXv)XI-Gt zj>w?1n#-^GynVFz=8V`-kL=Q-oWJ{0au&tK@K_J^}P)8%)> zqmZ>*jixTlU3Q*lvVeKm_ZPp9xhU>_v*31->(_Pehrb-j3a;#Px^Fkd;Qop&KDC#h z&OSH4sd4(VZ8m~yZr0R!J=>A4k#+Up(MXSk(5AYSWjW2STyA^CX#Cx?^+8~5!KNF& z>!z%CoSjvm7OuT!+lwUWSP5;x%$WykUpX9A)Duj;byM-0#Hu6QiT3v&EV2<03)^sW zVtC-B%eB*N_}k@U-Mc!(1#M!&>nmoZAC9_obh7GpUH>PUr*`Z9)m|T)a^z0nO@?Nc zOvBC-2KCBYy`SuAmV0HRxGFrbXE&4bbFQuPRHXW3f<#1vAthc@Fp!8?+yNO1v?+SR2cGga4 zG^vR=J7?2lwUk|@|0VD)4S&G^O?gObzAnb>HcfW)8^*>X8Z6$+U~~Nkna06R_^;>0+a`S7v?pZj;-; zuK(V8Y5wwEQzzZDdMNbDY>n>8g3IQ%+fSS`ced;N=Dm8YO-rKD)TpP+v&=nj3Lc*S zMmsJuH1l1wb^e_1WjR{Kd@Cm2H91zUIybPuWMWY4@x3c<><@ZUR8!ygE`8Io55bvL zp-FNd*$#%S)XQFT=HPOztSMQOrt!#ndCXEt@{622AxWBTyP~`1+m@D)Y}y^o ze9ZC4l(RO)_q*mQs@hxFB-lOu{BeD~;fE8Y%oAf6lKRCSe_zac<$Enx;DXebo%1r2 z4+=Ka%~lXj5xXj8C^mJm{qh%&6PSvA-QK{$SLgY1<IMEtqtT zNA;(qPg3oIwF((o9ltJ?urwIkW`1v9@oA53k}PZc_3aN=tTw#m&dtKJN7*jqU!~Oj^C3p+t9H_mCralxgw>%YwfHP z+oiT|)$8xv)U!tV>N2MrwnyhA&bwvcboQtJF^&iCR%r?Pb-rF*-EnS8%+!4@m5;V< z&yLH{uK70I+%9`Z-;v!9tPC?R-ixRe;Hoh%a(er)?!qL;2>l3&leG5-!jc}oBXH_s#U3@3qZ{oo^PEq@eSo9+j#eU|yx&sK4_ zSk8|*FFO`}Ejz~XX4mC|>_7jRB^l-_FX3kOp4yhWIr*TNh|!_bk+F&lr-jQami%-+ zy28fkqQ!@;zf^vf?-zZur1jj{?MXEZJPx1tOHb*ZvvGr_lMGMg(Opy8Z4SsTo1oqK z&i0{Cf!pe5cFb<8SKsf}m~hhO|Eh}?E7UwxF3o6ei*P@_^s?%2~L`NvXh}!@V~;k)7d43e?AHn>I<&E`g7?yHNIPZ8Ox`xysTaCT(=GdRC_O6B&+#y?@=}ZReD?Zl1M^Tl0q%f4HYsAD;R> zskEUdqrTGNdi{n4rfW`QH^%>dn3+*)RGWLYb-8o7{@io-3ynXWI-Q`A^X>Vk{U%TD z|9m&!XGLoC(l&M`28LhLcRl$RpLOE@OrPc3)^1tZ_Mw-Fxvy!4sJqyiOD>mKb|?z* zO6+1ebipa|QC7VFi~E!K-=#=&8qUj^W3YYpzRxYc7%$pgY{?6lRQ&JsJLXgBi`*An z>2{m?CS}pFH5ormXP0kxTf6D!@6TIG#RJmhWkly^*ovsKPWI2W+rhzgJ!wzZ$=wPE zl7)?U%RBmXQ%CgyVkv)wW41$xi+WNxBcSLF85`1^g8UlB0ixd z@kjRJ{mb}n?GDY*vhbSf68ui#MEgq(*04MFt-jY9=472_Tryv}c+$H)*-DpGyVP$YLZ{MVHX~U9+^n)%b!kdM|EA^(vcAYufb@q{Z=3kSL<=bL?Lh|GL ziZ@+)DfMYfMJ?N^tG}vdWS>!*GrPn0-l98;FNxIdX#DVPuh!RTX0qZ_PqFk`9o6Wa zBIg$oB5{g=u}LfnEoH0&2mOZ7duxb<7bsj0mBJ%>N0?|vF8 z!x13cb?oRxuTT4OABaD?R`y#)e|9pQpEiZn{gQLaH;KKzD}(nmh?%Qs z_xH+0pKIBXd9d2Z-K=2S%t?{{4~2u4E_mFk!hG`6HMUPZYc|Z!7OW2|>3y}HXNSb= zr@?C^9mwW_G>9+k(FoK8I2d;ZfGrN3McvaY+;o$Fj|ao1DYt9bdO zJTr@K*;4IYFD=-2Yi>0=+ZuX3{Nm3SIl)GjPnSH<;aI`<#=+6yduHx>Kg_kc~nZv*Q0)MsfxtvprM6axnFkUOe7n%EYYyP7fALmb+C?sp;lD%e! z!s~zc#d5hGEpR?;pU5nnv~EgeGv_vcEhe$YTB;oDTkJH_&oOxO=UxE-*w(B&z{t_yNvgTH(zJwEsy)$BAfT`c=0@1@YEj8mDe}})^G4R z-6WDZ4jfo;lJva z-3M}#Os=0lchSzfcWKv+9z(r{Hxsj#-qsFIZZi?fc6eQ-W*;Q4Y%kH;VqzGWp)9Wc zU26Kn=YEXEn@{ndeHwIX*UTg8KNKQPTx~xl{M0F2s?KY3<#djtZp*GaU*@fG+q$ts z%EWb>sm#L#t7k@?T4&J_t()*%B~s=>8-LFHnTo6DPM%_-dSyjiVO`26*RXxpTo3c^ zdnldQpsQ^4Y;pakzg`uO1Qwlj@<^L2{Bc?CqI;_hTo!jWMK>R9KJH;}c|30OrtLPt zs=d!8Cslub#J)@Gf_K~UsC$Y3ugCrQ+xvgA&?NUstt|hPx|t*x81DU_A(W!xneu-T ztI)Fl_t;Bw%~L|B3{M>%fS!}ZI`MKQ7+wL$-__}(`F+i z(YA`hgJDeBd%KRDRlaz{*F=l!qnYYH-AJ#`d$gK&rkVKar)5zg8F%vgGvqAuZ3i`+W%2t{_u41 z$roFjC*9ims>+c`N#|{O{==+4yXrq@+45~%qW^KpLT~2Y3^S=sM(b@)Cb>v9PFpN< z^X1&1hvI+n?qk0GR9efeBvf<8o_9-P>U7p&dpi;>B2Ja2v)rwo>McnuKqN^ z{Itbki)$RwN7gj|@@PIP`0m>$UxkRfTc__iEY9kBRObI9UZ(q9i@yontUmPn5wDtf zlHr0&|) zNbl0bR@-p@c&!QDdv-IgHqX2pTrug#QsZN$0jYeK6vOy$-Fn^s{Nl{(Y=Ntn{9NB! zdRVFFwZiXA&RbdT6XaL^TDVf`4I@uZr&;iiTk+x?d@J=kj9|g;I^# zTkDu?kG8YiwaKzxE_J}hD>D(6kTRG|M z^{=-xt{z-(dhzhI?A#{{Z~VwRx4mojIrlvaV*Evm78O1HDCDc|Q{teqsVKxq{O-)- z%DLZst2?A@=EYv!mHfu@^*uMXnO;{ry(MbaWL`41@w!;f-2C>QdFTqisPqjecbN&e#eIM6dbkV(&v8{MlGFRL^ z+dKB(wz1#3-*97^-=})sizmLiEVF!6w?D?oWbZTamuJM(Vog8v?2*U`eQf+=*7T~~ zlaITFG!-e|&k~P%$iqRmzerS zmz{hu_oDT>*clgvwI{BsnUV9{e9o-6C-y$+^QKs7iies^JmT$R>;KN;>avBozm~0B zmr}OqlIJ}*Z*&e^0L_P$K2Siy;Zy{ zt+3i-bz^Xef$Q3X7Rz*}G`sy;b!~~0rt{iKZ4S{IQ{r|$e{ymEg0=hlf92fB*~eac zAWFZmbt-GTy5h?P2Pe9{km9?Z*d5-;^!!{?k=w%1~{Zly28meRckBv76EC@6)eDtBK7LyS(h9wFh&GOwwZ?v!_tcvluH4q-nyqH9&RPFmpzaByM}Q8Gm_eQAsxA(;t&*p? zoW6+j?X=xi?HG0|f4Y(!@6XE2u5%tCI%X4YHzlOjt@?Y_>ZqepgxfOR-G?S*?wKoL z-}BD+)9f^ti+l1DvUmNJ433^Hy?Gj^%^{wl;Zyn3JW<@`;G`?Q&jI7Jv1uu3sB ze70YzWoZ5SfAYhXUbp|gR+uZ;-u&yZ%3l^1l?1C6?s;}%jelMqTB24jkl0o0Vl(@T zY2vcIE8bS~&FjDK71FZmcI7tt!VtaB*O*v60=zy-t?SaOdOF)&{y|8KwEvy;F@GE6 zSv2pN?^$jcXPmbyZ=d}1h4ly7SId z(PO=(z%peM1wBb0){AjTLQ0b-%AQx87t(4y(Q?w%6I&+QT4)*ExgPQ~V8Mxf6FqrP zq!&HlXHmY8IJH;ablZx}S864T@17D1WmQ>juDQHkZ{?c{ei?UTC5>iPEb*R|nleTF z!>y8KT8!4$`o39yx}UXOc$=0@$L}-Srp)k9+MuXme?6F>YC>K(E5B{+UV-_I|Vz~^z_PaJlWP~x0FM_?#Pm|=&A!Z=gXXUY(M?SxrJw6 ze4l2$_N#1#;Pah3_X%aVPn4~%ytL)k1gm9*%1O4j&J^lzSo^xV`H9H!wP7_Uu5~`} z=+6tP({i8Z@n~l0*T5@0RfZ-9ihpR7fA$Lf^-)(|bN1O?nXR)P+&oiquvqc(%q8C~ zcIeGt9(jLG!alB=>qlpN5?Z%VIoIdNMw8?gSXdsD8Jc~5w)VX7#R~0-3nyxMRqiwn(D))JZjg4dI-%;M za@yL+w%m(Lge&Ve+WpZAecC&rSZpo(mcTb$wYo3$^zZW z^BRe3g!Tk@>YDn^nXw@%KeaA!{ho5%@dCX#jcoeJ+Z zWoP<3b(gkZP@iBjW7)b_RT>x0X0F+)^1khc%hO!i2t%HEij8e`7}%tJNN7ogZry26H2FA{Huw(IQO=vGspZB=UWUU zK79S0t!7hsbM-3!vciJ4PjmLXdOpeKTB`WO3;y+G+%Dm_nx5Gm^Zz=7%_zLlZP~Ur ze~hPVO_hm|*!sC>Yr?0dSpMx<+^N5dKRv0lzRoqVJMDa2(?N}Cce=G~lo_OSnP*4r z`T4fJzUlc79@R-tYj{nM?K*rh@!Y4}GrK=ee6-bkxo`xZ+=oigrfa?2jWO?QLYuD3p3d3E9b zpp80f5}v*f?YOpAfUEN)L;f+Q*)N{oQ=j0m@!j!R`uoB!%yql9W`BD3!b!oZ*PT{g zi2M0=if9Arit3yR<*78&YGeW zGxK$Dim2>gw%_7k{>wi2&-u4`$wB!)^;akDt-m_y)&Jf5!~bQAeB95sP37nBkfc&~ z=IY=7FWYZi+x9p7uhC>tb;}K3HgKy*cb;-kVqKD?{MMc6gp%M%r`3xJPAW`x)SPqR z)SUZsZaw7PaQpt9r(UynF8IxIw$f7i{N9mQ=h zwOxg0W7LHu!n6C&uY1&M-f`K%_}mFAYfcyWlRHdX=KXDZ5;!U82b-zp=3I%bkyi~2 zcD{-=XMFd}FY=mOufe{>Z`T^6xibr1yBfYOxaR50o$K~i%yoR(&mnjv%QB{b@1x84 z{U3fk*%KFd<;45UT}^hg1s2@fU@CvryjJGpiGa25f-+)+Yzv*I*ROxAv{|cKa`BB1 zO2%5ZD<>^}Ioq-PdeHhW5eKu(?<+`ON}T0WEv# zwYOzUL=?QPTiW=1s=>7%#{*_9c$(L-(8&Eu?<=*qQxhsLpS-2G?Vrh=1m9>*k%{wlf3M)3d61>{5cA0gDM9nkEvpV% z8}N~n?dId4*xaQ(${R%8bxf}DJUkN=($f9k$f!2+i2Ry)|0W1HNvz(wFl^1dgW)(9>(&PF}G{+L^5ndiBP3%Zwr)C>0J=vsyeJf5Fz@8vFFEpD%5 z`&`~&uI)M})73VUi~gJyeI9)?I@mwF>7k*Zn8a$)+57$#MCN+Fz30&>_b{M8bJxS# zZ*Kbwr|$N?mb#*~xX*kZuMW@Q>KqRHSq(xZ=NZzT1?6YREI9Ct{q2QwdVCzLGbeRN z%uwxVy7ez=?>EW#q-7HJz0&&~_h{K1k@-;Fyd(CA(IH*+1wwg~UkGK}wm*LTcn9B! zLjHtw*7yeG?Can)rT_yi~z>s*UMW`ejL7_UijTwIbDcq}F$E zbf3B`oV>)?%lky0a?;)2FZ`PCn)MWa%Xo`$noh4j|Ix89T{u0eQ#ClPYF$U<8s1n@ z-j^5t#Y)^-&hh0h+ir8d4{6V3+Bbo(*pppB)f9ctWu0rr_g=nr>H_^_OJln;iUgRy6sN zC}Y%3C#|mzlA9ZrJo&8q@~v*%qAzpe+A9=2&;M!;mArdJ{`fN)F2l1%JKkoBGyXJt zz_a4#s*r-Bw29?^Oc(yS@~)vN-_7aAgojOy>p!r}JRTnFZ=kqQsr#Z3ssL?e;qxmI!Ih^(~JoL+-W>%RC_)ZMUTR)TyRE*9zZ1c_p{t zmKyW??2J>*LL2?P>_28{zU-REBAN8&(3%%FO44LrHxcaN`_`E|=! zKlN2={CVY_LOMRjZ?&v%eslY5Q|?!f^BmbeCcmv)=7ji`ehLT>)?B-{wYGU#dbH+~ z^=WQi{0BU1UY47O++qJ8lzb_}(sR`$0ehjP#*Fa=UVk{(+8>>1FzrQ^PTU6o9LVQM|_eKc(%Llv%745-FvI6TYq{{Lx|d9>mH8n7ZSJ5mup%X z=r{4E&<%-2KMzP`I&$#7w=2DE7MG>PZZ*3b^hl@M_xPlaTPfN5C#gC{P14<++&wjH?rFF8%bzE#ZCSYgLhQA# z+&rr+)w3r&ZIL$lle6{mI*InLJ-aeDzv{QVy#LFksf*s6^m?fno%j9xgH!)|&aZm8 zV%sF0Gh(0rH@|e?U-&mOd8ebh^z`S`*jG1wo^o{41n#M8r=7i&k#{Dk`z_y>Np5Vr z)owbhykzV&Jz*Emhiu;&6@j5%XFm(x6x6-{uu=GQ*}N6jNj$4m<=ov%CTeko9`Tvy zKBe-)^Hl*xS@T1>JtOWla2{J^P%@o=T0e)a+(OmQ+wH4wFs@C|-}qWLnZ@SVi;OuU zHVdu=-~IZ)-1&?}nB~zkb__B>yA579tkU^o5|hNKwI=Rvp1jfqi~1yP>ob?5c(`69 zz2@zVx_f<3+%%7iCpnKF{1>%mKU2BHr&&45ZE347_#b??-+t0xTj~EZm!CUP7W%P( zfg#xCf2VbBN`9id{-5hl_X~$zx%Tt_eC5TQbC(&-`4gLYJvu6@kjdhh0&~0q%Xx=T zS25K;zvV>o`a5Sba9>;7JkRp0OzrIH2mbGr>)BGQlI!7OaCJ`a>Q4E zv4dC2hDN^yMhm|dsPwLTXlv_x{tTm;@A)5%^OluADOkO%{KbaZ%gWz;Q0disa!>xC zo{pi!zrErW56q8l;rw&V+(Y|*XWE}#=4B>zFPyKPUz7N2Tlvdb?`9u3AGT&yf6D2% z3=Ogz%1)LSsLQ~>Frv7uBX|EuWy*&5~wC~_@aH`&Z6!=+v1;0v=3g6}yic@N3$d*{G7MW7>TZMoyYlvwfZb*VwIR&VE8Jv@13^T{h8Ttx0U zpUQ7^sXVtgWxqs5OGiOKOoY_oM-yCYSX>%-kFvC#;V8=SP)!TAms< z|CHN(P$OJn`7|+qksCcdOV`ffx<0w&`ik#Q9wr4InK_+j7waPqWvQy0J>Cv`d~XKv zUpZ2CTzuJrJ2R*DsZU;(FsXc1noDc`)0(LAOW{(jn`^t6FBR%@{kS&!QsL*H4wl6W z4m>+zVE*UO<;bPls#d4pyt}x<#&g}Gl9_AQ6fR5L&{SJ1k@0x0O66|XmzTF)S@K5b zTE>Do@%{^1HrtjyeYj!s@zN7Q>KAVrrVb&62)!ue2769QUcEyxdY3=S{bl2&pc8xoqaS^*W8dPSVp=J8Ud$ zKWXi(Ilj#A$kOdBoI7k7Y9j8aZtQ+}G3bQxgBP4W2VELCAD6>g2p=N|JJbzEqi5iO%{PLXkdgS#Q2P-D$k;9b?35$v%nXLz+wWb=~6K-re7z zRdVjIiCv0>xvN>kRQ6c!ZTEF6r?={|FZinSxJ=mg_~&;!*33As$r5$hMYz)HgwgWJ z^MzF2vnI=2=bGuX=$e+@V-I#u=lQMAG-KjSd@cwpYIgnJW>#Ry9X2)SZ~y)?(L$iy?(X9okv!^;t$OvI$amqNRU=5}w%D((H~_drZl!1U+}DZ`A*=bwhfm=te#Tr@*@t=R2;6`Ki6>ChW;Ax^L>43ojy%mv`M z*Ma4{A9o-V7MaLmHZ#LvWLLA<<0kHAb{U;fDJT z)6a^1`ZC4Pz`gLdMW%N1(~ZHcLfm`g@^iJ%r*&sn?cZ?us(-Td*5yl`>%?#Qxm`6ooU9ubMYUp8SiaN zXUN5G3#nz<(J<}B0)^eK$E^#vn|}#RbiY^0ablrs!q?{)cDQ`AaJwo0>-f9!Ma&m_ zCff#GHO${tJ@syRu#KMRnoTd>WSaPzEi8Fz=HNM#>%bg|kgmliCmnIyQ()@3e)Zi7 zIi2b8?4Lc|jW0auKcbK`=jx}Tt@3+k9`c!Bd_HHPV%Xt7E-(4|ig>>k@^ZqwWL``Hub8Ozk&Kg^i)t57a9 zsnzFa(;>q-S}~PQ-lDzHN4+JkCLO(U!`aN~`hq8%3z8aU+{=GbaKd1sF`t~2m`SXO zok_fjgNdVwlL@nlxRlZ??%X{t+u0BCKT-d(C~jxJ_triy(X;Q*PBEAq@rZ|G&P5G3 z*?FJR_>P=@EMk;<>w~H6?efQ`@`Voj>ICoH^S5-OC%f3bk5N~&7nQx)FDKPCPhTdH zC2@y=zUB<$l`*g9OfyZ;_E-!?nZyt?PE)68_WJ%X>y->mDnx%a{X^(2wcqGv@STm?PX)(UL= zc#)y)>%I4`V)dWy?>Uw^PyPjGMeb*Q2J53X976Bzq!iD0J-6bEh{@@#%^R!cq)f=} zRB&xRs4#nK?R`)AXIk1zqEdLSe07&u_KKl({-kH+6TUDrKWS>u%DdrP)U!OIIZkDM zoY}jJ;gidi^om?+411%?&rGoWSA8R__EzLu-Hptj8Fz23-o5GWd$Sjld`((TsYp+) z&a3^RSy^OqGJnFPCvEMIuE}>S+8JiknUW@dW=;3Jh{eH-$IeMkGo38nw#0#T@>j;n zJ%T_bt3N=_NO+xgeZTNO0rq=wCvF`i%VDj)s-B)qx47eFoXKT zEi$jJ9roheP?E8lJ&12dg7b#r!*Le+5x%d^JewWHWjgstSZv9rgzX{uMQ$mv`#NfO zKKOP+$Mp6($(mK?c-PHbuVeP+%cHkmN3?_9owKCOE`5D@s4@F^?Y79k z+f2fDzHzbTeSDmIYL8lS|AgJ$ju*D=V_xy4{#(HR2W_^_npz2gO#fF+;%GE@&cbq6 ziJ{%*S5tR)bFD+Ts89F3*4hA;s_Oy0uh%xEaLMtrR0ag}KHkZ3WvcW9?@< z4(!Nc`OaJr&Cl~JcenoLUAxzFJh@(Axb~}+;p&Fh2al~!D2jSi+Y-k5J$v_!!+T!p zuWk6<)(~rXtJ-DjN8v6bu5VSddS-r4{d*u={Q3GHAEw>BzfNX%5R1I2O42{(U)Mr9 zy!|I^+J5L`?Umz>$6Z@{t8aX3+j;Mbm4ov2iUV3tPsB(4RoW}E^VEuaThAwUZS%}L zQDN-yV$!3H{FXjKb`pjm5hXLO$U3~9p%(dlb#?IHx~ypxCyo85?O&_3^Lxv`#Aen>0inc9_UHI?6d z=eD&x*}h!B+~TwBfuisx*}Tg!%PhNM9WCCiuHyc<&O)y(wJyoq+r30>hxQ}8jm7o* zo~wGcUAFjhcgg{YO&^4c7gw!-Syw*=IeLgbGowY$jr!9@5#Jzdsp+`HvvbQTqm!P`m(&(L*HwQ zH2;pZW=SXdZM%z^InVQio>>1i=6ZGR-6yd{+4n=U;$O$MxofY~Se$%llIXPweO7^0 zb8Cv0KMP)>aPO^2rSOG$nFn1fW{Vj0=TFa+%4ttFtGKg%&Z(}+Vn0P^T8Q7?ktN_B zd38s?Y6i(>7Nr)aRfb7d9TzF@@W{S;?8eXMs%zG@c3&{{OyBLKpWrh;#jk$*x7^a_ zdlg^nd_2`+wEc+b-Y1I6&yS03h);Ak}rOnbx*s*HT$KP9b z^&Gx!Jk2UDtT|fmiT0DD`=&iz@Gg3$m3`g~ZQ(HHKl{bJz5ndyKC!On4AZ`O5w8~L zvj2!VaqWcn-};rx`{x*c|2->dZDz+HV)Ap9h78Z!_+p}2Zc4gm(TXL^X$tG>Mtgt%ab6D>3t4eeB%sXDG^E-K)0bkOJ z<%+9~&doacCCPphpNQ!@8@HsTfo#fScAfIDz z-qE6su^+l_Z@1Ai|Mk4UzA$&q)!zH}pR70c@A&rP_^oqM9S%{;rb}#@zr*0h`vak} ztMXrq+*t7^#do$!_S0wQ%C9#(UwLvj>l8-)+oE+c_l-)gs_0#>z8$ufedDyIm70viw+7=&KO_nDCNLwcVk19IHM}^f$V+ zBcakT`9I@N4P$%d`P*ZUnYM<{UbJ}og-8GHFjQ?i6uWwX?7C=9|AMERWBn{kwsP9J z6!X26du-Pf&g<}b(X++Zts@pr{owTP(p=L&6&=5fq!uT2B?sylL``t_S9~MWzk17& zj2~CzvSZG<6`B50U9oWArR{<9zAh-%?S7lU95(m10k6WAiHCCbUW~qZw|?VPF^MUD zMoXEjTP6PdyLBd_%DlD4$=qS{6?JD@*Y%gOOwx>BCENTuTJ@EUzf^K(O#Q~SjC_SZ zo0c|8{<-s1_}1z_TQ~KjUA5fOnLYJn-dSmuEfcR@-CFT>+54}zOdCBuNPJ?-*!QtJ zRjy`V(r>Axw}}y%6P9~7#QJWyJa3(Qi>X+euWw&)**jj@K93b*N7vWhXZVtCdf>y- zvjwWZ&&amCFSC30MTWIl{qNilC-s-{VMC((;FE7Y-sf;HeuhJ zSyh>Tv+wU6`7iZX_t&p4`XBj!U6PY`4+9fJ4dY++%eUt6%DfEak@q^Y?lUzN;J>F$n4`bvPhu|=|2B%1YlkH`;6W=u~o%f>PNx;Q| zswj1iC+h>#EqwAN?v$|{IFVYa^;G=YAGYhN-ZCwnzUzK0_&lp~@wwktpI*+{{AiVC zy7(;C1m>wf?sy32vHCTiI+e*TWT>>quxskUKQq}E%~-M0z0>5o&CW-KNm(=1KCKj; zXc}|kh-diam-Z_irI`ekB(-xtiR?I=Eor{qPwaKt!i#G+x6R=d{9BVT!8)q(_Jg_e zuC=|-TCq#re$u{kE=7wHBQ)=sER^~?P2k5V$2az3FS))HcZKk_KU$+^@0`_an!D_w~Ro5X{|P6eiD$;riTbTZ|8Aj;@pc}7X; z`-iFgF$s+BD>r+*zr%RL_$y1fU)n>>XZikiY&RxX{rV>p%Omxy=v$-hGlSUVsIx|G zi?;j5$gup~=EZz_RmaXX8&AEPlX#1LwMn3L;r|zt))z{5Jr6j2;_mmCM&YHF8iIVj zJOxQN{a3#E@vHp7A6uJ$k`~QR>TcC`Ffi1#Ffhpc&wTKwy5w{H@h-L{*5@|1zdv7A z_3hgymg`fOee?RsHHF?LIbp--3TCKIXX+JYUtF}Z;@-PSd=>C9_mQg6sHtT-3O zIlIEXy;-Pnf0L<_<%|#~Z{c(|r|y(vF;0mSdBd1a*F}6e{QZ1Lk6|HS#Z6)U&*z`N zod53b_vn|=?~5nhS8IFu?<txY}~K-bWzI z`Ta`!orlVfC+tr*TwVAvIPp7YRYKL|dFyV7|NZa1`_X8lD-R;hK%!>~|0H zJ99V~A73Td@F;$cxmwnf6Ec=7PYUXoo6m|jTC(+K_C>*UjcwX9&zJsql>SD=(FOC%CmhdL?a8&tiPN`b*gP?-?z5tt^7{TO9eZp_ zQvDTA?KD2(pPf`~+amrq?9JPC@7|pgKc{WH_(V=zMgGm_ovs@sqaMdbnHn>Gy=N1q zzjCR$b=>p|R{#I89C&89SmO9=`)^C{Ej#Bev;1S%r!->)`+F8M>cnTxo#@8L@>PBE zZQsqAF+BTM2`6l*RI3-5`6jQEJz4hXo>^MI4r|`n@A`~ks$|vN4Q9GKcNBj8`)E(` zL@l{X3*1rzUZoz|`!F$iMcjcIHf-mW%$H_f2v0IQKF#&?l(;E63w@p_GWX0_^7Lus z)%#O*SE{?V|6x6}OgAGhJ@vho^R^G7bAPVTw3AWly>1nDF8rQfrO=)yjlC|JrwwPm zk4}7;ZMxc|kZbciyH7&7tZ&a1Ui@Li&UY$|@pSkS&F6u|ZrkP@l06fUwo&lqv9#b| zm-!yE*0H2G7KX+>`>v&a^uxqSi>7@@RAhAKpK{A~7puSS9nE!99F;W_j1zq%CthCi zW>@n8_a|o-OgG;AFEw!GzJ1B7^zQy=WS?~?ylghZjpIG%R~0)h)>`|R(f94WP1T!y z<?`<9Yq*Lg>XCjC+fi)%AUUT`JjRQua`P(;;0`=lg0_$1-P1Hg0%3%lPL?<*=7k zO6?DG1m9UTl}-Iw@3CV2=gSl!5xynxSWhZ@() zzb8D_85e~K|2%eZzfyJ57G2f&`z)pBJ2GRoE*3s|b&XEUJhe4`%AGQ9nMahI98CfY z+63g?8ndYXfgv$)(#$>gtmR8L@l4ZCkYD43Jt`#14kNIC|d)IzdU;Lh``PBbfW$r)Et*{f7{C4kw z(Bj61A9o6R_@tLQ@^(u|i{(h@C#0OMJ3HN|IOWOXRoNE06FuU~bI<6s>fBvus?;I8 zG5tXErT7z#SJs~}Pl=Fk2}%56opAnA*P(Tj18&qlSIV7sOnGs5K;XK$&B}Ac!>1=sIksS#sPnJLz0)}T*4v5P$;%kHSzL^DmZut~DN%Q-U=xff*?t1BpqRuPBazhl& zE8k3IS|KcNxN>KA?bX>$#lFc-51JBQZvJMyxlPZ0C3jtKkHEXNZ`QBdYVMYkTOA;< zPqONd*kO?wwXbis{NdSsByZ*-o%R>&9<{$Tl8B3+Gw;$;mOI?nKOc5qHdl6^fWTwb ztw(ld?2$`U^U-^=!J*AOLgq(W=+^Adtgn0&uJSi)#vPb1`ediro`6^zz72=Cdm56R zwn;eU%Urzq@Z~Q!~y z>!q*AZgg?3Kv#^}g?l24vV{UpsWiPj9W7q0Xi`#JvPj?7X14c|Bj^}JN=vq5gWXFIq2 zu;2OHc8bfHa+MydCh_KX4l{HeZ07uHGH>H}=^d87LuZU&c~|I25-msk?LA(wkvZhh+Q z-8r|n~WdMxU{k$O?ji8;+jS-nNJGu3bC zRJvU&PjO!*>ot$7z<~LL>C7jx{%?I^`s@$wy}#$7k?G}2 zUpyXiY}}JR`|kXNwM$qGia&6EJR*5!c1G}Yht*!0!Iu+O?qk(%OWAZSK++*ZNhC0Q znL~^0k{OZ?O^?6t+uC6=ZC8!@T=uEQBP7Ez-6H=cy_vS_#kbZOrwskRPl<~D|YtVlg*os zge{K|cpUg^`AdzNK0-5tHtLpWifZd=uye^o%uB0!u)$1x#ZiUUPsf@ZrXFtz{JNC& zVrHpku7=p2y&K!If;6s}a~B?8cd?K+{e|cmE}6v8W1=$2k(u^~Y7!-X5aUn4_`?3oUB?hxvt7>VdLJ^2mdZxrEZAW zrf>0-|BczPV-I5+4hO7{2x83rT)XL#$~B#+{L8tA&wej*zr*BX7-bUS&;G-B|4zLK z=M(2r<^C@y&AOsxeQt%hXXeC1zjn_*W2VJ^uYje%X!_&6R~}OPOYiRQwL0PY@~ssE zbKSJ9iFCo?`@tb^4En#aq*PceUh(K*x#E$~f0vJN zWlXy!cp)@$o$Q2eF^$*G8-sp)>-nSX`R?fK9pCnM8Yb~RpIi_!M>!`-N8{P4#rOsy4Vx?>ZjMUK;X-<6)EQM3>HoQ!es&YhD$(G$;2&xLG>SDVfsA%rc*tLj8Ze zmMaUtm0$d8HvY@3K~S+V8Yn%KqoN*B`Gc)zvv-DaqR^iy7D$tkgxX zEb7xdb18j^*UT9={sc-%O~2Pw8Nu`Q^37VgrkJR|-;;_rOg0qX^ti4q`7s}#$I*FO zg7=CA19}SjBtvdgCh^Srx&L#)f()^>6Kgm0SbmMpvfA3ObSqs@m%BSSNZCHzW^_Xq&L(^leI4UJ@TA2>dajQD5Ngx+=hO=U?}-&2`5P3Y zA1I!lmS48m%#SNXGUKZCV&ipwO3kpKnR-43n7lH)zG8z`i%D9r+F2bCa8uRyr>&*|oh&?UcTWqEqf1>RKM~L$C902ibF4+&U5`(*tzuM*0~Qd z;~s4BFUX8B2xIwjeg5B&`~2Te&-UODC<{BW?e694({oPFP!X_u{;%`5#u}E@g6+RD zc52P|cXEdLa`v?EqQ9P<kl9-nG${og9KLIpVwwH{6ib$!FF z`sn*PugFM;Ikifw@}HexR+y^fZ}LR+ddB?DhZh1RKAt%)GCzOjEQ9B567vinXuEJ& zZw%j|YabG>xO9sNdra31?$A|#1Me9IDo$6D6khG9FTEy1(c|Nq{eLbx9PJKdD{Ntr zIi32hocVK`=jRLi%#T#%JSa|HnHFjPe%(x`SNAw3`otcwRN2?jF>$5$_l3!86F0l1 z`giWRubi4vJ|}z1DVu#4uNur-cKNG!fm+^-|M|UiikhcRtj4lPzD0ZD`9j{XOyihzTqy;UtN3fdEB5{sD8FMS@vZ0i zUBR+)39sM!dda79SKU;uFtfgtzM+fnVV;UB8)wF8*L`~*$=4O0kN*<&!3HvfH4`!lgb_1CRFnVnGwOwDAw zEF;o6y=r9svgXuPt-55I^N{IT!!$dIzVjbmRfcJ7u=`TmKk3|??s;{;_XXR;yi7AG zw0;+R`@h-ovK{uoS)wmss%6Bu~rEFep=;tp#9z>?8oG0KUl}| zs6CqJN7M`J`Z(VJ_Q!9e&h1>R+@5*g*l||qCdS>0Wtvyw>$2|jo#^{mlDJu0N$c{< z=682X7r6xX8E;t^c>R^r;umK^PVEVmKY8nYw62sKSXM_EQ^d?lFn;(_%G+}vaQ!tmPwbg%fIMUzIngHGI`rwn|OwZH83coEZ zb@OE&I-MvHTWu4~ZkSLgkty@D@WL|T1|GLB!awH!ZTUZy`&aoi55}{lA!33Y9lZbd zD_==@aYW%q{F6ujeUmr2Fkf@8zWKTRz0WG;jeMb7RIPdXExMQPYYFL__*g(c+tjI2 zB#HS}@w$qoiSnmXVv<;2ZdrV+Dlt)UYW`IxPcOCjZN@5sE96RQ9K25_<(58KKYL@I zdiK_DU8}#fY5N8IdFG7_`iNHn)pg_SwvRNlbq-*sIUW2U^lC%D1-@0bZsycd@|oe-xb>t%!?br+Pp8cN_#m`6#Qwn32@Kbz?o2n~o0OnoZac$v zgQ?Nei1=g2UtD}**uK(muVwZA1P#tNe$1+AF9bF+Nd~B>KIogTksWq1QvR+)#@Tcq zrA?`Pvn*eR8>K!-@SkzWNO_({JBMiMiFoh#OZUcXC!g z=`#;o8ggM$XTIVclPk+E-K;9l$*IWS^SzWcw5I6jcE3<_e}7l;^0)t^MD+`D3tNww zuHLi7a`&waosVK--^K28-2KnAW5Bhe;KICOy z|N6*GDIwryihZ75uU}^?ZxeY~ zvMpwQZ0wx5>$Xq5I(5N&|AKQf{~eiAr$7JZnrz=qAzx=CY`i6*f5q>RxOB;x9UF8v z8|gpw-IG$2s^XpEot}1M*2jx~GuK@B6TzTg`c^b#Lhp^6&JW&cH#6`#eB7_Uc3teJ z)k?b=cdx18FLlp)(J(W6p|46%hVtX5E8`TFHUHrVo;F47K(bk6!TbOz7tcd6+-6_H{UhrS$&MnG<~}X#}YrD?f-lh+N@~Xd;fp+x)a;XQ<)Y@ zEOKTjTK4H!)29<#!#|gt64|u>od4aZ7#We)e zS^k--=$!4^XeQjOA-K3xOtIwB>I@y1qK%A#`BvG!Oy|GOez<6X>A?^++lMy{xL$1x z5B!_xyy}$(m+LJ#=G2aVN4C8T_c*ZQ>pbocI|Lc0E4=@5B%ywx!CAF{`p>^h7WR28 zF#KwJo$W5~LXH)a9$lRg)O^MzbMBnTGLt`-H{STWqig%L<2PVv6PABd2#6m1sQ{t=U#F>6yUMl+)&G+A0}eY6c31y2(X6#ympz$!;kNFowiS&;wv&w!|5>ln-wCL|DUoeAhBELN${LN){iH5Fvnc_d1zH`gv~4cpDR~pHmaU! zd>^>uLYcRM1mCI$_cA}u@Ned=c=}|cobApI_U4|TlitB$MkW(=Ej}$_|1_gbC$pI) zX`RzQ6*U7>CRd5$M~)Q#Q$EuE#?5`3`QgxQ+VcZ%yxJ`rQ-9rXYwD7NW^J7+(T9sW zUrMKLnlF3&)P&7ZGc@{M3H!x`wDy_bi7ke@KX;)^%rfY_k7oH|WJUSlys>dwS#cq*Kn#%GNy`8geiKK;a zb7^Hq@ZXHpc(nU)l|EdlQIqrAdzn;0j%C;+f_mqEO zk<0&y&b+CzXUYx*c>~=P^MA_r&3j@JR$iQ^b!5)tvb<$c6Fsc0C(Vz0=RHfM!rt5U zdid&XG1`xlm}3oc;;$Z@n>1n5*10{;+=4YZ-tlK|HdXAtdgns&CXbzB#_d*(;?9Aq z;~J*>tXiOGvNQO{%&gn*I8Zp|R$-q$=MfB7UvEl>7}|`%c}(ogL6Q z$^Yr&od)3|mFGVfPUZ^wxioZwrT=D`w_$~6s^2wVn5(wAa_u|ao9tfa8Q&E)KQm;n zW1jW)+IhZP#yoj^EjRXg@7_K0PeR8_=gqfSz4@;!D(2q0dtq_4>GONL6Z$r)zUce- zNLD~Cg~)AfK&B$7_4Rk8>aEG*;yBJa^ey zQDg39`;q6^Uk=))Zog!Q)4w# zCYyJO*O@}uE8#a8X0Sig`ks7!f+B~?%;Q=U@3i0EzC+{uH^ncX|F*=P(ET{+ukmIxA&~+oB6c$RaSq2 zn0|d*@ZKi^eh=jq9$I%m@6?XuQz@d^GFxXn40yVK)8FV7TlcTL;n=%pPUpt&lYI`~ zVw?2x%#oFS2@i{RGFV@j9dY~Et3v0HPP3$*YcroecJAqK+M`pJdPC;GFJ8|rRqrnH zEOm2#F_9};Wn#0);?Lji%=uTGSQ~zN-QycAN3`6Z^4!c_@$gE&Yq{p+*k5{QoSfsY z)$cxVBB^zX$nqbOIcE*#OZauin#j1#tnju=5n?mz`X+ zJH|F<%ejNQ!h7vQj;mjid7%=$E%WPjkB_GoOj^T!CBKB}Y;oEpRSzm*5xS9&mX33F%ui*lvG2vnFu%szn=w7g#hV6mAoKVBe_GHv4hwPDl6Elb0Wp z-~3>orbU8%a9G#*`%ZP~hC62)tD793d9A=Rg1t2H$3Eup4KKOEUNP5wkA1Xy<4>`x zL3R6C7dFpTzHqYsa@D7o4mxR?;Y@iSCfqdO{rLOr?`0W`q5EIkD&K7C`?N79H?`@< zHHDHnk*^B4SS$9W&k1YWdUpA(Clh|Lot?@S7$4}U@?_fKy{cQ@?wq#TbK(li^h;J& zA*ojTmeeK3+A^iEwS#~U^~d*hs@m@IT^qrE-qxw(Qn1GfqtZRCT(7M%tm<5wZxp61T9Wv0{pEAK-!g+gPW4$upG38i~!uA*UjPt%l?y21P@@BK8WNW*qe3JKvlrIMk&#~6yKYf}laLMZ8l&;g+ z366_QL-*`wIl3`-ZHU#Kpprh*kl4747sc8cIgh5znr)q7T_DY&xSC!w@Lpyqq9!>YphaldozmwX9YvL@w+tKs<- zYMU<4x_imyZNw)N{~ujt-eDWLvKzi8EPZP|?MAYt-J9Y|2h3coqGwI9-gZXv8|&;` z%VoKa5&T@c_Ug=?(A0HVvS{6;x4FSnt==?kxa2y2qo0g;@g#f!)`^)AX zTi1SjWA)C*bG*{z^Y*UlZz{IgvUvJ8U*FKFQZpE32a)~{`t_Ec?en?6yQuO2-?O4MP66p{(SdCtiM~ttn9ufg)^ROa==u1s zRgF-5`-C8t{VfXj->c?zKJ#C6O4ucJQcTQS^WBpab>E(HnzFvY^WEC-D<-wco(wxA zH!JegeAT5Zem}X%5o>R=VS8K9`)QYhYPu4$rhKTK_(*uyq40es&a*t8ZQZ>xyMKRr zVVBdk_aB0++T)JS2>;#pddk*gi`LDQc{!tco$pJ%U?X)c51V+C|1R(UcU}CiAJq4C z&e6vL4i45I92{c)vw!&)&-}ao!T0)myQdm&`ODw>?*CnP(Q=8ux6j-?JEzgbc&d7# zD~tB7sHQaLW%G@`32+6Ku((VPDNZgeKGjqzdw%v(L**_$6Q`nh1u4^ujzTH@QOoQ* z81!1MuuQVr7u4EwFxYGAFWv{9Om-VT@o!l%&3n$DP2W%K3{{(7emM47ZPNVZ|Jkml z&$gS%uie*Y?I{tJvQzTM$J5Llg3r1*WC~66<9~nt^zR;L@)tj*=I%WcFL`iz?YPgH zJZnZo2SzNqgDY2zACM8MGXF8_JRMK-aQBaD!xAO3JddM7cK$ zFXi(z&o^8CILR$`_jAdl2V3XO{dD|;@eTi1Y!}l%&e$Y5LK( zwBYZ}X%;K~1|O~d!7Wm9Na@`~*>y_qHnnL#IkqU!W5JaJnz?QA8XB&;<~uomZp_xL z-Y6B*eSV3U;o^6SRYqLrCqK!Ypj@%myYyARTlR91*$o$;mzOq+ez~~(`}8#-%bFtB z7&shh-xzg>;T3~d3;V55pXxlwn@HQr2O?e zlk!*o8!L<3=dOJ3KlSz0!yjAp0=YQ9OwHe|WSGD8Vl{hy$nHazL+lzQCyCAD$$yZt zMqS1!Epx@!wzVt2x)lc8`SNt?&FtCH+KjXC1M)8E2sb?yT z=PAYodE7p_Qg2)HOua+*r0)3cjJz>#)%sm4-#*)$du#8*Dh-vJTaHT}vWh?LZTZJF z%JD`?lwWxDn`>YF!ew06^0d!*x8&E9`L3&u#vSz)mr^=e`^8pj#!i{=IMZ(|``(pE ztA8*lXP7agPf5SNG-~!wp|BV04ov={vml~J_{Te;&(=E=*MzQHU(x$qR(P*hPuSGJ zJAbs?KL4L5X7qE4rq8wO)~4m#Q~$hqU1y|yCh&IQq+d%`9QKglo?8qr;lu#>?*T* zB?p7F=}pH(H_u-GL>+q{HEs8e`yc2eOs#P}+Y*u&@08g5%8d0`W6XtD6$*Y=K3$ry zZQpU%?wS14w%Min$(!?D3!D9>^UeQ19p&c~vZeO9My?N9eA^{ay6lX1tlL4B2?fWW zr>7m(lh5-p+jq7is^S9PY$ose;LYKM$N9$ zeR#0zxeC|HS@I_v;|;ER@iG1W#CoTux#+>WOOl)GkEEUnHa^pAe(J%Obyj;e&M8n_ zd2LC2^TLxB>-6^sZZ(u)`~5Lvy@Y!BOpdiPkFHP24dY9<$n_F3d#-(KYGV9SlRN|A zN0LR8yrM4GG3;Gpd$752+Xl~no!>)r$~RB_pgu=m=W#64cVo|~&zw5n@z2g_tPGgc zCa~^?esxvn;=m+(^MyJ&KHBDrItFKEp0MAs%|&+WCx(lS;zvL2H9w*q^iluDZSNzy zyzdH_BXl-{1YYS0_h0J!+p@{Arbo?+VT@$-aM0^^;!qOLp;9 z`2qh7udLSDS?~1c8^h&aFXqZj3IFxus@#g?AMzW{TkFlwWBI$wv2LqDJ@=3EAy==@ zPwbv@zu6?A{#vLb)BFQDSreaE1vTEYT44IF%#)vQ?HYX*6VJnfmw%caxT>la!d&mc z^hZVKpP|fOPVaNmCkHJs(49KDs(EV9jmZ&vD-C(f`M#d}bjLj5-=qKhGjG;wcK?qv zVD0tU7ZA|c@ZrV(kI(l98szSYkZ8$y)4MixOGL~6>)-3&#(bQgS`x*5O})~x^?r>1 z{Wo@sJNR{`xIfzNVkMEW;6cL%7Ljc#9vT81rU%xjTO`J)SwH^v&AVaQ@}1B9ms~t` z=<9<`vjl|FCWjTfryD0_pKY63diB`X_F-;!V{?@`3VKf+zwLPU?DwQk zmHn5p{9?C?YO1|Fv9+z(;`Ga^kO~%k{$DmP{Mu!E zo5jb9T$FXrGG$POH;+#K{YF|R*Ocaa5G_?_Qwe6S?Fym-TwBOABvo4~8K zW_I6{A5J?;SG1RkvCeq$xQd&9UcxiBc&q5g0@vUF^KC8v_cTTCtmf%U*$0*s@;vy) zG`HV9?2w{QHRJ1p2MskhsCD^XXeK6HdG)q9J?OnGX?264t(isiiFoqo=bIliDY+*Y|NF&W_H*&#m5uM&A54zm zTR5-$>Z`f32RuJt+`uGR{rSQ(>s1>LMdclyxa!ueh!r2Zf{z_GTqpVZRnVl4g|RHE z84WQpE6pT)=FS$_X1e)Y=+2P4g3dFW6=r=Yz4*ZGiy@oFl;+oO*jw~PdJU#M|HP-G zx#`f7nHd{TP79bnL$!9F=*fp`**mpYdreu0OkeMr_cy|I1b)P&#ne%$jLu{#H9!#`781E2kR^aL&q6 zIo4oS-oV1SBy-b&?e;R3d-NX7^zr16TDfiEYl&Msdrw_(SiHbXBy!&lWu-FFv=1V4 z_*3&QE$H=m=Ac$y@T$eKT_Aev*}VOn2l_qN+cJc_UUKAkjq7}~tTW!}H`WL5zQ1Kb zC}ZB8vukT#JPV!EWP8}}YR_SApOZV~n%DHK@VsQ_SlgqJz(DjITI(ZT=<8-;6yXGzR<0Sx<{h=1%&dN zu5VgpWbeq&y=u3W{EOV}|5s0Mw9*dD>1=-}I9FCTnbZ27kBk!qaiYoe*%$}~~sAosyKd5;eFxQ`3Ewio)& zU-^is!&u8QW#(D+x;G2fN#z~qG-x}mH_JDj&wgIt_OsuXHK(ZGo0a#+xR3Giv%q%w z`__}{+&m^-uv-`q>!(+|9FEPBVSzV3a_ zzE6qG+q|dU*`@Lz?cS8Br!MZ!RW3XjX8A=mw`iZ2SxQ3T!p&P_)LLETN}f$_s=L^j zDW0+PlAi3&AKm#oWV=$O(Xk$7Ix?+9 z3~trm_DL0u%q#xMbf$l?&8&0-_49Q}`@j07h_CZ$=u@>8(wQ6NxyWVFde#FLZ^czk z*`)-`%w#d(ja=V$Cgwo>d94bg)ki-CtauQ-%DU`Rg6l+o=a)Bn=U6>--J$Jr?7YJc zcZTv!dE%3Nwsp!}Dd^nZIX~dm`MHYf1$`yOFAsan>pZ8Ox_fTg@zttzJ97GS-f(uE z_bRyi=2^kZ{v{I=ioRZt|IyO2d&0}|G98;E6nQpx1YkFs!Z)(AI9?5*4#j=xceVu-H|EZA9 z+y#?*ij91wGd~upu2`fH@lE-cY;*~?OwN)0n;ZnxeVEVlKmU<0JHh>JG>@tJ=Ky(m zvCUI?c>YN~&3)0I=P7N;al+H(%%V?E-YK6vQJL*&dh_Nc)zCJzE75b@62;CH$lE{N z$!F>;ox!-v?6A;o{?A|eJl^xI%@=#RRbDoSY0tIXUoHyj^=8r@!bYx#6|XP{r#|M2 zwO#dei)NU@a z&S={^_iOX-u(?kzoXL&w=J@#U(z3WK=^o`W0Se{IeHU0Po}eC>%Fn%Zp2D-Kjmx=u zm#6&L+PBuBg3Fe(^C9Q)uxa^8+vh1Z>P|T3JEQN=;V)|I623F2)|}H#w@_nz_Tp=L zo3exI1Yen@nlJx;{>LLPq!N-Is2V!$spm_ZJ&XJf9WJSt5cgwA=bSq2)tbBN60E1p zJoimoCd}h&VR_zrlm6@)e>skXjkh@Y@74F%%x}GQsW@@lkrn&C9DiGQ^MHT&p^2Xz zTUSjk-r#Yrx&8fI_q;tk2j=Q(e0ve8_R(Vhr%m%rmT8M=-~V2=rfK!-7h5j>wSDkr z--kC3RC3QAG(8fpCUTfFBK4O2kxglKK{8jrE$!6vTYFGSZn9JSq*GkWd6dI@#HEZ* zn(HsBf0I*lT`&AX^2P&mEGEQ#Te14VlgQvsOU6G-10MEWxE}ub_(ai<&-Mv@SSH}@ zdtkBhy-UwUJH8elQjZPXW@WVW$<{^UnfJdwz9M9M?G?uw)zC%W92Se~xRs-VmPf{4 z%urJ3wYWtX3B*!VOzRsH(&LyNxSMr;qRp*Ur;S3_ zI~yFHwuz(N?@iOk2nF`CzYBt*UM0_oe!ghy3U`Z#mflqxZ~Q#-li&Snd?d5-(^>4~?mZ~`;*X)(wj0sMe;jEJpT@9tQOK_5e@pcbEk5~?|MVf*1jczH z#&18(EI;)@`@+dU?wGxG4YwU1zlu7dv1g%n%H@wW8&-TKMynf!QyO5P6MZ9k1>8&w%C`M2#^*xUs(yk;0{Pi9sLiuusE z`Oopo56^NxRz37dYU}^*j2YME-$)e(>c2|new_NY+P;G|Hixfp9_ypLNBL>DW_(&y zb5rzUZ(^!}<1e$X%-In?TO?N7Fuh>3ezUzbggdxm+S!a&uZcf2oSL{B8*kQW8s$&ZKD&a;QL%ydcKmx77Vb7%`PTM>#LEkH9}SGpiM|P);?ch0 z)B~a0%$K&D+_mA8P5Zj8Y2VJSdf6Cwukpyq1OE=(Iv!!%X#a%I`}Mli{OFHo=4F4{ z7udF;_}6{y<+tDen;x&tx>5P(`~y<=J$~Q4P%3X;e7KGJ7^IR+Z0uwudw83;&A!3PSs$H`aZa_B@ZN><6papVT#P9r$)1(amoC zc8+7x^Yo=l_8L}jM`&anncQFazvqK=YiNPex}%!MJ4`nx$~`|-(3KH9x9#*Rc3aQ* z6#L?(Yqu;vYE>$~J8oJ??9OMKrp&Ycy)8K;N_6%&@4a(6%b%XQDk)s?tDV(&vzGtNZU!|^Vi3q)(;Sw`p<1vBBXQ~oSrv|NFxPov0`IJ1S?oj)! zCB7F6IojqF8&yRLKH>Ab;HF;sNICs~tHzNP(IQvaZ9F$Tak!$!U8bsBr(C1|`S0vI z;ZGFi+V4;L9{$JJ`>f^{?X0XwhsAfV*m`qK-BWbT_H_7U--^4@4%SzXof1jD@pH<0 znS)!uDE$j$NM=7D=y2YD)8&?nOf0D}(OY=^+1B;RWJM>u)V(F`$oi0@+r4*+)3iIz z)@KfV$v?S%S%cQ;cx|qPc$v*vX<>;|Q(Lad9E@mrylG8idfQXK1vV!y&Y3pndYkZ} z6z(6-z2fTMi_W;G>2vs~k+1D(&!FxbS|2K&pG{4VU%ghZ_C;|+?eD~<#S<2!&k%T= z5I!YG`_7!0rL(dlM4vTH+S=QH)_)ymjaq3^e2!wA59@_@B^v&zTID;nzS~AF@@ui2 zKkJcU_x6&5-{m_l9Q?I2gGsE-l%KU+xtF~+PEM=oa=P^Q^q@9R9-gfR1~mdcQ&~A) zx3#r#?Qi;#$}wa2={H@K%|C9&HyPe5$lvI{j;rRAN6q}pbz3uC#1#!4E}WlWY#?Is z(p74+_68%KYw3UcEV82QZ(cn$`JB?1#Pz4IZ`MBXvTM!V+K4aN2YWj@8;(V1_jNc( zJSu3Do_bY&d7+HhqGy*UCNEIY-M3}`w8+=IR}71`RXp%elzQjPzi5Vqf9vf1y{mp0 zD0d_~xfJ+TIBi;GAO8DBzLa37?_a;EyDD@Jv`nk|d1Bt>^DCux9ysUzpUJB++w0q< zvz?RLYGZCa>QsyI7G1mW?5RJW4|H1Sw+1us`hVQjG(F(`k=B6K{Zr$0R(j{XTlPkA z{fnFa+1{U1K4&brUGAFoIwrL7)waKvAFgk&&|A)MZ&P$}c(dHunD0I{v!hRay;v>0 zAuM^`fj-?oUt-y{k9X_4ha~=abkii5CDmStOUR(*sOUs7))P##zVfvfS3iHm8hwkM z+i{cgfnS1~cUey2-klS`Y@T|fi>V;CbHcnIkEA{JS?b@_s|mJh_Na^g@oTl+c-aF+JeGYeX&nO@1>-gI| zH+)X5<|FB2pL2QrTmBxL#sB0DXLw7K)$Z1gVFu4voaeA_rgwweF- z;Y8zg(<=4*%4dkOoyv)0lxdzmW65{ph5o-9XV-Qe-FnAZgefWSUq!DnhRK2)T-nR7$5$Art z+Zrj)Dt~2rwT8**-v+rMq@LEnA16M1(Pm^`$XWc}8i$Dv+hkXUl`o*Dn#I)?vG9{=kt{cUci z_ieZ527V5X4zVBqbr!$;b>8|UPtr8GWokyt%AVCvNRn#J5Fyl}ce}kNugTTfZW| zM;=m~c|+1zcvV`kWzH+5;Ad5{cO`dM8S z>AgDt8aea+PT0lXu5{DnFz-i&&m7YedmeP3lxl0{|L~FN|MNM2U!VE&d(K(W-`9$p znHd8QGclh0v)^u0_M@!V2NXW_U*BJLL^)I-bkfw2uxV4K|6V_B_oR0#9(mkf_+y&# zceW&fV+9ex5=*{)FJjuLa%^%^%dy4m4-Q;tILXM-1!obLJm% zVP4qSob&I8$$ytr&a06+v!i$IXSKaAJ2iA_Xz0Cu^}T!d2owjFUi*2Zx_Oz^XOH@P zZ^6dhZQnPp-Tq&y=85$8?#WqhonqN9_DDGSe-gFk>OQ`E)A~YDQC7oHQB}jK6M2@d zKf|AW=B)qzW5*u#iyV8^t8(m9ugQ^Ly)MU?`WHN&n)p`d{adc3JOBRNBYdYy@2*W$oFzFiVbOtznOEo7na!VT6eQ4Vr*kcR zPMJV;U?HdLy}7;X1J{Q9Q(bj-MbR#+Wg6BRy9%5ynYcFEMjU`)IM_haOYgn z#mwuM-^`fp`aJAj^z~Mz?78b7D%IU^n{FR?Xh|e@V4=)K>Dk?C_7koKmnXQsGF=m` z+i~t<+eI6rM_I1U8!oq3?D`xzV`h|eT4Ra!sz*=G8Qq%Xx59zb>hjA6n&--Uq>NVG zKe{wIL1T45V(8~ZM*fQhYmXHrL`LR_mrj~_>B>T_->xo;z3jA9B^)A+77BO2e04VO z-nylRr-SxCdvt;Gv$xBI*wa&PU#@JZ^I?vD+Z*VA%zgF~n+%(%Xz|MH-sRDW_ZOKJ zzFyBN-)kqjbJIrEy(bf{+?Tnt)vn?GTZSXwG*ryyb0u@@n}q$)<6N<*|LnS~ZMW9# zzqe`g>{Pa|Pj;zgOmOd+@>j1-_MCRaysNK6PIo}W&c@NhhHx`<7al#&*iKsWAz#NGn*sA3~VjK`g!(-h_CY5l~Q_HBc-~3-c%O( zqD141!)zu$KOZNDFa6(Eapboi)GjD^xG-YM z@5rwcs-?{5HJD}2{KtLiT~^4!HjCz~&!mO^uVehWYuc@U>>G+>8wxK@S2Od|*(IU; z^>UEz%UcTSSFEbCU_sROAlEcQ?ZJVz)Z}UB3!T-@= z-fpio%H=gabEWH3^fTD@9f;|_KXd&JyA|PuiO&14f4*5)ryhGS`Yco0{*&qH&wm8H z-@7pIQUbAWH=jpwdIlXzsvV`jY3h5?o*KoB9kCW2b z=JCS6&X?1oA ze@ZkYv-CfQc$|N#@O8`ly#mGRP46dv`P+B<>$%hQw*vC#ugSF8_N8s}wh5&VCq9_( z`8z)N^M3WWn>zo7RRt(4Fq2SFc=~_7XY|nv2SaXNxpVExIoCs1KGeU=xUyp1O%VHfki zmbZWBzSA(?7BBZNugd4W&E&%`-~2A!u&IbSBT2-q%;xrClsB3S4(@)!J*UF}`hhd=gFQEjA;nA#l^1%*o@ zWggouU-*3C?<6b!19p;Ge6Er0>wl~?j(Pd9VOs0v;5(vEr(IO{Y1WH9owjtZ1M7vb zt4uGhofa#NC|dB`$<6TQbWYaE6GSg=mfv+UD_4D!kB&li%^ALg3umjI#R`i0>)f2T z)MEvkO>UKr>4C+2WDJ*;d@et4_Gm;4_`Q{PSads2M;B%`zs zYU^yK8_m*~G4;0Gow<`9E!veQyT5sA;T^V_eUlRY2)kR0+}ys=+S$3=!t472r^v<9 z3~l?{PB_nU; zf2jUAeDH$7q$3F#dUis;9x3cQoPXqYA)jrkT1&ZSa-Z&($4~vMSeHH4hz~Yzj^pQl zB9tP0Na$#ag|c{Ln9=j&Wtq0jb2cVij(xY=ApP&rZ@r5-elJ#2x*@acz|Thson`Td zU&x-gSTo~7fxf~cr#g0ze#bXeZmS9lp04E#FTdy2emUdW+sZ$yWcv1-+VUlFD5uXm zEg3y;@j6~UpN+dk7uGB-WBQh$Ew1$2SnaXhk1I`^mazHSUXt76UNt|jk%wQc>C}fu zUnkc2-uO6uhqIrp!J&6oudp69*|TTO8*L@whJSruzPvaWZ*flj(C@8c>4BXqG~&Pe zOtLh(x_jm`CA*j1yql7R6Z}hRl7F_nOj=>S>90n#QQUE);)aGe&mdTgM&qagTtf$dkdy+DK_4+ z(L``_`6km6!LJ5pr3D+eZ2vu9I#@NjGQ?43|CM<*g_}ftE~;gw%wFX_O|a4^=aviO zoAdW`$^#$!t@VAj^E%BdmKxE2#nJ(#o@6Xyc zpES;KR+m*_d^zGdO1LpSr^5 z_Hvae`Uf-l(=^&|YRz7GtiDxD@9@eOiiWqGHS7eWRh-hF1|?5BqI-kqgSgb8t?8ZT zUhWfRe4Tl8rN)fecVDLbv%aF1{o#rAjQvx-+0E&B9ig#a&`kg0yDf+O($-Jk{n%BR zU2RQI#GD^9l`pbgUFWoR%gmJWA89k#qqV(Wd;U@6*>EVbu)|nJ{V7+&uNj&F&ehv2 zTh4@9emi5jX9r`QaKl6^k*WzLdHp{lQZ+?lw?q{0cq`0o&b#;5#=}xEU*1Qnu6ka2 zM(~WK@~|ME8+;Qe&JjcHYx-?C%ho|R3DTlW9_zNp0-+PtS)rv06F&BVa}D=@xo=g zCl+_5dAiF^-F7c_+eWQt)23)he~miM-20#Nk8fr9QnTqU9i|h$3R&eTZ9KbvJ9A6+ z9Vwf$Z?<^FuCP3!cBWgg%)Z@o-YU`H-;CvwQ5*Jo++DPIra0SdgRG+>Rsjn)O*oyh zD0jB|mQ5YE)_(}-xg?e9Xx-{AV0PqCv$((e!#Ovtr_D8N*q((}&X~e?UF71mx6I~SR&Mdre-qi~*~c<#&^6dmEf4%UH;a1=I4c*f+x!Nir@P0oOS4<@RAwkhB80*nWsP2e0i)cqqHwz za>CZU-v<>Z{hIrM_nB>&%7Q>2(UwQQJk|#;aV?QKqqyu~@>llDD&diaN41zUx31v` zTD)eP;zorlr&k#_N~yn}-~D5~_t*E`5?N;+q<`<%dBXJdzbo61`YgMD*EP>cf8`Z6 z*`I5sbUNfgzz@?#-7U|wCpR?u-YJ+alpY@JbueP)y#$@iUZ3_OPu$Mmn7`!y#Ko5L z&S(D#d#3;7>;$VnLj2XY-{{{pKUXR5`tAMZ(ErU_%DLXXP29!yc+QP&xu7!+)VK8t z-!3akx?NVcG1vNY{XPEAHm0VbpZ6AD7XO`e{od8p;opx&-Q9a%pyy*z!I?ii^(NtY z2d@UEuDo@sC*kIW)w@DWWO&g}Y|{Nj)B^`F6L_@tkR2?-dqbj&8ZNBdO=Yu8A9tpDnW9^QCEv``N4y_gV!` zWSNjpJu z3jWvEnMK#{em?iL$T{xf{Y%+z>t)qWtkO87T-CTIUE$ZHGKR>hE&3n*tiC+2Hu}kE zAF|F!-dZT3$|dce#mvgD;vw_iCe6v)aH`ouMfIWR5%+I?WfRT{E}8YWrG6EE`lPpS z4x2xE&0fDW>fxTGTk=~Uy}#AJbGeT0WVf{)2QPkB-rlv?_cMQ;`G$APH`6=?<5-(JlpMUQ&6_CVq2z+4(j;_3!(m zzvsJ8x~0n~uI=LBaIfpX`ngyCrz?B@U%Y2_>4KV&>C;*L(%uOl_uSBOQqWiVqNMLc z_Orhmgao!Wb#S-}iuS6UJkEQ$-KUw!s(H`s@DCR$Vybr7zfgnZRrB_#@wg z;fnf0g|bWO7Vnn*T$umzM|F_Qq`s#LW$U_sgYt z5_6ON{++Yl-&SPTUD1nOE~59YPDK8v;DWo&dUvFqICvBfJTz;Bms-W9Rmv*%@K zNidJH$bPW}Tq^JSvyAiiYUTVET>T^1{JH1dzt?UZ{}G+u@Hg`4tL@5;Pt5mqKUi$# ztxy|u{FB$GvyyM@Z_M8Gp6{XmoTuxT{feotTH*AxyjY>YJD_OlvNPUxIgA%`%Vs}s zu2K-t{gqpjec;op30z-%?R5hFM78~zyyJiHpIfJXToCxYSo-PeKbBTm1+$O6xyM~C zwydko^_6t!qKuV({HrtkHw2&At^Mw$^}>v=?WwhT-F6|0T+_U!y^7Up^wJT%>i^_r z>b|xpb*>7!xZt=ib}2_L=_mOJ@7_vVN{ywqfZ~%ku8&vzEqKYHkw^J$!5zPt}bD zt}CpnD*t}c2vMCbsi*3)ACY-g{bRzla zvbLnGl4=pl$7idrWKLc1!6|0;q|OlUiI3Wptb*RNzUwSLaPPp3@C93{CVVQKVHT`e z{rh5WeRHnN+fcp}7eBZhvu;!4xxnLn@MDD_Td;NSxt|XjbTrG}&P+4^yv)j1ETwYk zxt$+Mwrr4{l&*a)%=x9hZ=<#AIk&4yJyRL7D>x@=DT+sY1>t+ZsP?y7f(H&x^7bhiA=YJo_p8mfcjh!$rvlg?=QLNN_#;(G}HW znsO%KJY#5AMP2m#gJmC`z7@H$NKTI6*!ui{r?SxE7tb^%Rk?o&+4=VNLaQ13ms~n> zO6TOFY0Rv}2XcL9cFy~~|IW5I_X}p_KAdW~>ytzJ%jgo(lZ)h+L|)9;{33RC?oQsr zmsf1>TeDV&m2rz#tyz-8OEaxGt6088T61rWjtD+|?d6Yae~&a*s9r34<$HFaw*R@u zzs%-zw}~weVx9GL_0tWJPZu58e)gQIhI8wi@brp;g6cOLE|)2KsRjxiyzt1zsQ(C0 zVXJFao97N*4ajdb7j74 zxbAB9P_e)#`}Ug~JiA_=x#9YBzu$W973#dFuDVo+iY}W`7Cz@>%v^`gna$k07O%Kt zn0<4LyZ4*c_*)6A(yL!V7d$U-H9>K9h0ZoX4{b#lVA!j;)?*S^^06e9e9 zW!s*E2bLFU>o3=Dh^^f>O>uVd0tfa8)+CjXlM5sAcgt1y9SdT7n7Oj>zUdvixXC5H z76*POn6FGtsy!2x?RVViu`x%5jNyEf_-{+v^RqmZ{shg6iAm0ke8Fm@#@@c5c<;9h z7p`rc)4z9XOFg4tR%tV9Q#)(yq7R+#mUt$=;P?3YG{&$0k%P%1mCGE(i?~kic_ta5 z;_2FxIj820mxmhv%gZu*eldJX7XLm;zDiAd&QgZJCsSuyrZlW*xz}xSKcnO?+cMur zi+R?b*w^l5xZ%$-RUec1j_)@%o6O_t_mP>|dZW2Y_luTDt+m3Whdbw9_1>Fn&9}WQ zcDDBRCwA{dR$lilUF0-ZG0*>7`O6@!xY>K3ADMD%&6mh8S2yts#^_8snQ@<&+5BZz zld{dVYZ<%Kc<&`W7Fr(m^rrqU^=(m4{&rh5E!nqFVA+x{K}=;+?w<&G!nwHNUiI;h zkxR<6cb!#XSC-_I-Mh8Z^Fp3SO_$R#<1MALTTdQm;CJ}2-(}@F--Ym*iu^i4H%>J%-Jo#hYoUuv}4 z>WT(27TF2rN3M^lJz4zS?r`fW_cup1g{C+~Y|9MY;x4^7I6%;nZ>!L|kB?^m&p2t_bg?dQ1iHD zOaD4Mk0TqOeB8~s^x7#8CDSvfqozj87d^c+@YGt-`X!gOuNJ*Ibu)C<>Py-?rf*=B z>RqA!@|x)#=~d$1aaxw4M_xK_DN~nxZnv)Sany8~(+j6wP&ZAGYVeJzj@ZV`Un9}w zE$?VKQ!ak538VUbxp;$ri>spIFKS4K9+)g)d8qUJ!^F(?WpNWc5?F1cHmz0iYcn|% zx-0PMlS_e_?HgoY2YF?-Zz zcO9DVbZ|vw>P?qqEw*V-!!Az_ow4HHtmHMt98=d8RX=;0>6q2Su0BCuHuAdG4Ks@m zKbm(dOs<){{+!rFY_pc7$6zcBC@A}j3ysu}N*ag`Xb(ZhROBDnnp6upp4Zo0U z#38i$WfW)UH+_|p>+0_A>Ah~SF6!5`>p%WFzrC~hO%$KIV?@STotK58_ox0nm&+FW z^OAsmX;t5~qLkw$m43HQGryiXGb+d_P2g0OgTet>)yA+#$KIz@dG38)<0DnS_Q|6~ z*L$D+$n`nO?(gAwGex>7gk9yc=JcSef3lzL)MkaU*=fMW%=(O-sq+AB!dx>N)M<3;+HxjN$pNuNg0b^WR$;7f(pqa{I`) z+gUwvAw92u6sD|^HCXvvJk9r3rfTCNZT8IGb36?>$EUR}d~6tfzj_UWL;0S4s&k)2 zF|QUaKeodtpmWjs{JA$7H}P#f`pmFq_teu*3Oeno9-J|HDkZZjYt5eQ2qw9WzE|3~ ztyo(B2Rt(QdnwWM{Oi@M&Z4q+7~8~Lt>4V74Smel5whX?ucWh=Wdsyg<_j0xv}#^c z;%seSkR&eFRCVdg$6zxvr`vxbT#T28K3SQ0`Pnn$WhZqkM8B^Q^*a4GF(%vQ>?8pT z(f$`-%kFfApS4;mJClcNe`RJy+O%^!PjfD0VSaL_XHV(7te3v$cF#KYsq5E*Q$^cW z&AQaMPCQa)Q^@3J2?iBMe;?l#BX@3c!IW7-(=#T165AB}>CgM}H`*F&|7Onm^!fh1 z>xsuFg*q_#HN|!d&dOY~Df7qmhR?SzRh-dUs#2o=l^?l zsg<&SwGF@jZvV||UWczAwNdz)Cihe9{@1fjySZ!svK7U=S-DV&_s)5l@|CB==a?DH zd9(Iq&z6=7#!Z%dJMZ8A-=o)i`efvl?~^3VO=`ah1c z(~Va8n4M04EW50@<$F+CYo^!ax;3j#Z~hcI{iMWVU7b}OWzI2E=AYP}Yp)By6DZxT0pl=ShMurWQOXy!r0^ujTq@ zYARNq08e|5z8{R`dK9)6O3*WlvA|ew<~-aN|qMhUBkeR!(*o zb55n6*rB;@$KB+TEh~PMN6P&8w$pO|idB+(cT3Jc%QaJ?Z?k_6XX7sYC-JK7?O&63 z>Fs1>yF2G#ee}AE{yWaUfBgMKh=31I_O9j`XYZ@BFMqdD%^_NG`5DK^XB@#gE7G`R zH$FQlzB0n`;?$`Qm9O8#-fCT!aVI~2x}t_(&g}dO`x_tF7cYOgbBBV#hkQW>;Sk07 zbr1Ib-uwUK9g=% zQP+j9IQWG&hCktYTI>0L%J%F(!kQtDm2Gn*cYPLFzUOf6zwniRT$awRyP#8_+j?_O zLdC3!nRViCE>29<-%`k5ww>+6)?-S?HNTbI`|x1>ntOAZ+ah9hxaJ)HAaSYXJ}TejXPwVc!xth()C!)G?zP}jSv8y97iPqj@6JE+QURkdGJMf_J`n|$>Jeaj=C zwHJ8XoE86>xshq(&lc8G-&HzZEzOUte-Lo(^y6LbecrcPR^4-DydCwWd2^%N|7g7& zJ)XzbJ*y8fhdwHPww&R_zKIEkV;AKem)lmj)~s>;lKc;hf8rml)C!s$&$i1awxEpp z`-EAd?HMlvepIbdjx*GBcjuF+p7ngIbrSpGgN7^0{N8VjOrQO8?!_l7zRc@xKDKQlwF=6dZntwbDn4U9ruhoQ9thOG=3?5g=K1}RY=!SGo{6i z-t!B-T%UeF!Cc9)zAfZBkH&)p>sN0jzlJTjbfl#9aa5>MVCbroYT12ivy$T*_B?!W zIKb|vR(l$FG$Ufldp$BP97t#);S3dkA{gC%@kNf&OW4&)TB$(3ePueek zWAlc&x>n$$`~({{&9clp>?J=OdG9&c@qfMSzDeS6T$$$|MTvVq*3PxbVZLK;apX4Z z+lbny_Op6wcyhB0XS?vO>fGd7^!v}E4f32UpW~jD*G}Hav2+s8vr9K*R~D9TYt{HL z{ixVptHYlh_E!6|2gf&ct~+|mtV8c{#R3xr`M)~_KZ*Y;YH;$mUF2(!%yDGdP7%A)QyMF4Pr7VVSf8q( zuyyaBpIavhOv`?+a(C60-Aixz{R-?kUd14gC(63p%Ori;?Frd;R88Xd>a10feztMS z`4=g3-ttYG&p3BQ&$}&K&QEBt_*fD=Z`t`4lT5XVXCKTsYh|fjbKAoA*=bkl#&75U zqy+BQVY|P<WG$uQ^RLgY zlTV!6z44Jym2O;fcJtEfD!Yr`ul@LI_v0(Be4S|_O4}Wcb#}*YzUa33b!89xEg?yc zRjchUu%Ei>+gk6*n_;6@F@2BXo-g@QrV8>l(RD?>O>6;o=IEAxl8#$1ze8EPh_T=N z@2?#TG}UY3TFs;Ducy}rB^7=X{XF-G{g3JvmHn2E*6TOke7NkXrt`yND%+w1d4Fi{ zjV=y(^I(c!-Gy8G{v3N1nIRb;{pabI!iZ-n6Lq8|?3b;5+I%P|y+%~}_`8Q(My^DL~j`TTp?ggp(Rr=>jaDAso! zWo69^Ue_hkzB$XQeadY)rkzF-OKKw{uf#?!+qr7>$HT=d>RkDzP73?+;?kiY-o-oj zFN=S?t3)?2;^P(PYmSGe2>NSYVOBZZ{{6+gkOFZZ1ADexlPf#*MQ%6mx;axjeL~W~ z)n@aLO^(jDI@+q|Kjkssw?6^ixBqzrHa^p}Z*&fHU)7<_{i)>p+O;o!HE|ospS+r| z$5ug4<3fU3MYyZ~y<0C{u5dVbW&YL6JB<$>6BfJwEsT@tAV-LC#e`XRli#*n4KTcD z!*fMiHe+ePo8Yd!A8a?ro~f2GdVIum5wRXXtS#HUHT95qZzWe($N8pYB>%u=f zPR~-y{BN8R$-k=W@RLkQ51XHV85vX#GM6v0EU=rgSB7teR`x88M@JsE8q4b4aIF5a zjahHs$@WIS4ap9(ezG4}`;#g9dH0)hF5R<_NdNeLaoc{wtq!a;&))i6RGf0laPki8 zzZ>Q3GZS6tNkEyx>`KT24WWKPh$skAe&D1NGZNZ~IrRN#Nl-@XzV|U*9+V|Ag0_G&5`1 zvYuVl#!8irQ8eHD_WUKs6)M`)Hu-*ac{AzYmxjPjsz}3M zH8%Hr)zj~_Z?(CE;#l}L`0Z&rz}|j%z1F;A*~KT)BiBw|@ZQ%uc~WGD+`i%iwdwkM zoKF~XKA&+^MDmzIxzzpEo>g-%U$){`*c9dR+eIhVNG|WK9RCL+2Ft~an#qT@ZQMHX z(%SCK3m(ts_SrY)#_c~|lq2jp=jAbDk;@;~v9*_pPK$Kc>kCKS>V^Xq@-c z;HctE1*70Qr-S9EL>Aqj67@TE*}csM*FKv%+VA{%R^?BcP#^Q*G=YErN?(SvpFe66 zm3PM}%IIuw?4l!+%2s(Z-RhLxW0^mF>RVlgR@H60Ouo%NB(8c-$l3q-jJoKjHGjVII&4!F!{qhP!V}wT zUb}yJD_^2{Ygc!R;W@=AwLFVjwlqxLvUmCP#?^W+FGkOfpUT%2us29!{k{4$Ga1*s zXBmIP7XIp(9G9+>bL(|>Fo(W++NpO3f?^e0+}xz~bL$pb2F`qU&Un681ox3m)dKax zz7uc%R$Fu;EKc&B@*e$5vtk~WhL+E5U(Z|96Z+BnSC@)_^s_f%)>nTXN=rByXEAe? zzlo-7gyXMMF0oVgY+F#|VI{h-$m8$n?vC5j9k)s5&$ywj@}sfce2)8zN9w+xz8O9H z$h+lxugM2d<^9?h&VTPL-Fuv2tL5uU)20i4Ip|~f*;Iu;`GMN=Q>!(vC#c&?ls4$^ z_I$P3P492?!>%b0FIAj5=bECoUMV?x-PC)Xd#!KCJ!RgetG?AO^x`(@q|bcelC7!5 zXKos%@%lV{bt!+#(^)%BZ$Fwaf%TJ0Z}>sZCppb$c1y+nx40^-cB6Q9{@ycP0q(l zjGuMICBB~gw|(D(Mfd-GnUMIvpT{O}9>doePCYHZ0n~-{^B*;3W&~{;2jMZ)Rna{6C+nRCKx7Ed`O=+ciJ^E{cjG-9u-%nEpX<(DrBauGSlC2 z#Z$pccUw<=eCo}3slZD05s#*JvBS$p0wHOgR{pM=G=oyETzqncNi+1mUZC(&ovaTF zS1~eQ$$S;s==-Rk^~H@A9z5o#VP*bvn4KWD-SA~Y+Ew>`OF)O z8w*22>LqR-oT#WKpEkuY_@UkdgNu$X@-imI@f<1gm*$tP*>9-3zi<-w5mtE*u6t9S z*-1aEX}GHOEVR3cg>_<)*5Y#sv4uBJP25?U#653K=GRm19cBdr2U3{lTsonbIsS#(>GW; zoc?Nk+{gF%X@NU~(?9z~Ud9XN&TM_h|4%1%$BEBga;Y=U z{o2>(lAYvp;{qmHf;=eC8In7G$ zzo*A^bZ@HO;o|=de_8Jx<%wV1lpL;i$n{ZzZasU6b@)YFyOzn0eik?i{F z%;k9-B^UV4_|)?4&Y}Elj*?mb_e_0Uq+DMY`QzZ-oyyn0vKTL%wl^qnn%aIYsqmOg zjo-5`DY%R6F*06Zq~rJWppdxFYLVJ=OMm(=mAboF{A=>@^&6IzR4v_9S#(c2b*Az1 zXES21ZgQPk9I0Qq%cv#wMfueW!PA}{dB0=w;%gD%esedI zSqml>d2+h8MK8NCxsLyyyVCP{aoLk|DjQql{aiTjX{k7Gl$kuEruCcpicSfcM?aGJ z{mVjkt0xG5RZH)Ac}r%~<-Tpj%qtw9e2V$IZ%wVMc~asFwcYA^t4elRn8!b~v*?zsn!ojc(6zQOJN0k@xbz5m_y-hbEo z!T&Co-P7H6Pxsh8-D~%BpWWM}rG8KMR&nf261pLFvEt_CuYN1#*Y%z6J7QdC(Ldq; zpWWZH_b#5j)_I%Y3i%$_KdBpip1=Ha#FhdU(aDJFzRw8yFKI8V}*YKp9 z2bbkG$pf2j$Ms45y0}z^|6=(?`3F|Lwb}8v?)SfT{cY^*s_Js@kH?sbCb>zEm zpksZFQ{lQ3%HRGxGFojUQ1XKJO=^GtcKwa)T&Fsv z`bkm>!P1j1DbB3C#2cvby3XFQQ57f0AzDK?{Np?(*j64cVG_f5iqKo7I0$>+EG z=U%5XC7XSDxOHoYqJqZ@f2~K-X}{MV(E8iT`iX6F&`s`3&*MW9BbWaQK2w@!Q1-KU z>&nl3Ea}R{_A~At>pZu2y``JVijr-5Z>wKhy${|kaU^73<;266XBO;OdO$vKiQfY0 z-?z?6eBWNRE$WG7`I!c(45Z)XD9wGP|v{%@eMC&ToHo&iwl;(S)N{t;;@N z`}gcq^pby1lpf#aG4s3qN``Isw&fC?!Ls6NNn5r{^f5IawtQLL!+HC5xO?5r*3d)B zPra8Jgr7``IJ9!&(OoyctG9DC$8tM8I(b6p|LN^%7Wqq#Eq|)LgXyPttJ2;d!kd4j zOmVO8o?N$nvssOEiDqr_GDcI+^9K$_CMl&>ny%K)+19A!Yms^|N$K7%(Q5}LJAB{!*|Re*KR%B)np7{|{bza4kuaf;kC-GlI;43xJRa;+i}OUUI|xoH319ou>&e-Q zpfc8XOa~m^{Sqis?RfLwYk5GhmiwZ&3U4Z`DVG zo9Wb3(Y)90@TuZG`?okQ3b22@+>(3pEy)o6hA#(9Sk^Ori)4BzTfi+5tF5|h?m115 zFR4A5$N44SrY-Ec(IHm6CLpuHx#CgD)y)d31xJhLKTz8(l5otyB&MGBwbK@$^R=KH$O7}q4uhG$A_3l+x|OS-{0NscUD#5o$c)H zpY>z@T37uGF8%SB+et)RhC@SGilgK2{)JY5<`)EA|J}Q&?dA1P+n!zW{Qg|dmqWT& z#AjBKkMgNWT?IQiLo59vJrz5B^*7%lJ~P zX*Hwa$C!5}o)6vrn2Aqk{XJK+em^IZeuSkpN; zA#Y7g8%0mmt(*9LgVgkYg_)gAWoF6ocdER%)$6O;x0_n=gf$EADcS43rBib8btxlX z{XNh0MP?}NzcptU$M31D-aqj&ZT);O{NYl!X|j^HB|dEKi;y~Tb;3)YrRJ9HlP>f> zGLYI~AtbuI@bal=A&)l93*Pk2OILlm$Bh-S(R=+aw6f3X)6P3(7aQ)IxQ{a@Q{c{; z=KQUOznmj3GJfjNUN!0CK4H0E9k-;uyUfnfvfede!@*N=_dmte8`(?!n0wr8_c~v7 zHujx&vc9zaS$3MSP>)^iBxeHK)a8i|H9~!dT(|GH==1uvNO#q-Z+inxa#+4ApE9#K zrxv^NUiie#7p^#mqUmcyk zhuc&-@{1x?{)^?_>C?2(@#1ksUjMwU7iNfE6g+u4_Yvo|*1G|VbGI*fi{KKX^$Dy(Gh~46z zZn5x!6SLpEO|~qUn3Hm$Z;RvCDV#lfuHA1?EsgA%Hd%?GHLgIm-eSkXir|uE_2>B~ z9b|QLIB`n4-r9Mui?2<-Tx!;dgtle9ZtWBLKg_nTdm8P(HZ%LljMck7Id5#-y?D#~ zsk=|J{pSjqRqdNyQG5RB6wljtb6q0VTAltL`}hb;nTp0fMe|>W4t0v_bN$Jvb>ZH= zY0+YtT}uwBOV({%ykdXz`ZUMiE8W&AX-!Euy=2m1&a~&(maNeK;djsc_L>jnKldFy zb5^g_{$K7E?JQB%v&qvG!*lnp=z6N~`g2U^wUeBerzqaYT4J0rD}ArrP4jy_tk=t9 z?y48ApTO*MHfn{<|B303m+oXfaev#w&40HVbZ$LavFk!fqosYL&hdut$9AsSb9csy zgscj?g)de(zG_{q_t4dfOY7%u`H#lNxns{tC5>IHOSK#XTjR#c}>q&aAs# z9NS=VdUkJRf#BuMKla|3>+^56Pxi0xtImI%yv%xV(Kxto7im$=O$x%QgBS$`ca%#(UF{qt^~^)u8u;&$j9FZjO;gX^JfJh(=>H)Z-P4@CQ)APZ6AOyeR~~Ru zo_03oyl`8b!qneKk6dt=cVOM589(DTIo!>R>1(&|-Pzf!B>Qbm=GSlOU$%=L+|VCk z$X~tSSxLvN$ov_$R#$D+`TU;i8BP+=4Cl4-JNK6_s(NpL;g+dh?^-_WY^{s2b-VoH zlH%|A*G?^~&RVZ`<-%>Y4|6{hygT@DzKqU0AqnOc@9r)!Pvy}05p4f!?JJmE%Lf9T?>;(^l*SUx z(b>N#`@*`$S;Fks6umrq!^IdywIaGAuK7>#Og}Gi{*1yJryp%5Kbk7_F3e`Ru3a;$ z?TdfittX02PFHxB`hKx1oOAQvhnr7+{`~V}1EW!7bdr{32IrCcbJ8~{^BiV6YGyy{ z?6;SzjBbjx?3p&p=W*Nvw|3sbTY^Ut+8pvDxR&^qe$}+xz&U$ybjrJBT*gmwB~H$d zV}I{1KU8zT`{5HRvZ?}48-Z&JKVR>5p^QYiD{IX)+T%0!(L+|-6{NkfN@#bRHi%(`{ z@T*%J#Liq7zUq^q^Xt=>Q;%D&P`-L*QWm@6&NTwdt1>25o^0y;Vw$+`wEL0OR~xLf zd;hMo+M2wIoj=)MQLg4{RZ8BajNL!BJz>0We!@6u&pta5>9mEX)~GChyS40o`BkQn zb?0=|yLZdF^i_s;-16W^{%~NDhj{i6zb&&T?tVT=FyofFw)q3i1^=FIKY7xauPEBg zQnVo`&y_>6vsp8uNpEk#qQHvlr*t+*+Er+Gztggr)@R$-6@2=N{*sn;(tkIw|d=>pAJE;Y`lUCuh&xWN>zqyQ5~3QOxPLC!ZKNHl-c! z-|p2m!I)`ds&uB@mgUwv=5IgnqEvi?`Gf}l*!8~V6ZACx#tB!o?+~73aAVgOpQbMl znyxSVEY8R1zyH9DX6M*FdVl!%=W}lRz1lbM*`1uMrN>UF&ub{T&(d$s_U?jcDZ|Fx zri(8n)JpQ7N4>MO-5TzDLtIJ;!f5<@9Am%cf(&rI@tVrEFiwz z{pIYcxI}}XvrY%!-K@DW=l88CbLBgVcwJom))+(xOsY~4d>>jOX18Orfc`wa&bW)0 zT`L<`Ubv$8Y2n)H#W^=pRF+Tnwrs55cX4SK+l13U?ly)N>pY1Fd3K;EZ10hV716h{ z+6p`rcP;)eu_NszU-EU9TY~pgF1)|9J~N~3!u&L@t*3vt-es9o_Ue@E!@SOqcg~7D z=-bA(&bvz>)5?Ew{F$34O8s4-1QIG#Lg{-czytT#Zn)Kd7ooCvv&DMDCs&;Ql;>_tQeCG>1eqAK- zEvX{%he6C8q4?dB7ldlhs{itp`N%HWx#xqTmjUMqk^VoA#Amk4h}a#?+oI9F;`X`5 z1>phVx>qHqtaC{!?08~&G}~y=ksnrvif8Ca&*S{wvAW-anM01frc>GL-l}cI^V(n9 zUJCuQdEMe?g^aW2@0**|+&3%JM|J)mcHzjkd`_)CBB~QVF-h$7y?=T}%MR%^LRWYF zyZ7u*hfe9wlzy(br5;{+uIK!!9Hy`Hwfj-~D(FLk{zYr{?-&1CyG_2DGm)LsaYAQ9 zXieNCm%UfiwL-#mQZug!9O4pN;_DNrTK{1Elnf5j*X#fOkE;Lu{?FI>zU@3`1J{3& z-xtmDGe4rYW$hbZ(cU%x#8+$P-_Yk$`lQ-gaO$Ndx3x**;dgI^*@Oc48y6{daEd!6 zhpd?Ru-GP;c?IKH?Yvd~p-qQGS1tL&`0-HiosgfeV%sMF5i^#oFb{secr(AbLtb$i z^Wv2c!=GHqzP4Mp*~Va&bJb!;f$MK~+Zx>Y@k35-()N>ep&IiJ{oHq`c}4!7tL9fs zze_1z%dR=%{VQ_OiCZc>i0rW$T<6`S62LR9eK znZV0(+w_k2oINx7h#NcW%t?_+k~b&qyAd8@X}3bywtZv!@s_ohIQD1sMBU9i*|~Ay z52Z6Jbt42*dVTI4xt;&wOGa(~%-T$Tg`R!yw0E~APh89Jb`r(Xjy?GmVPy2;)GME+eEaJAotgCv+z;>b8tyNaRt?n(U=zzks1V-guNvo_9a$bUyq3Uth8&6tl@SaDI?d7BYDKV~0cS%5|IUvM+yISY9^stiu&) zH;+ zL0VneK7TapTO<2)$89I4%DL~;ozlipUr0y77tqW3R zSiJ7c?=1^;>SF9>&Gn1UxH2#O!Zg?3sHkU!i!1!(S>L3uU-Y5v=&QYwA0iV=(@snC ze!3*+ocUAQO5@hE&YO|ElH!aGvuAt~D*fPb@{nz=$*OzBo0ylb{nEei!#>^Ephs_} zrkyUi(s=E2*_F3Xd}0JtzI|MqR1hIrc6{vQ-;8apq8m%Oj`|zEoO`v;e)(U)=5=`&DFnp?0>ax{N?gVwc|{2w%&&H zzw0*a|1SLMExS&A;zx%*{qy3tLWK>M=udH8~I_psDCSTv;;(0v>-0oKI{{4PZ>-=xCUmgzF@Z!w*$Mf2=pTGV#fBv`0 zclz(F{~Y+9!#l0LAWuSWez>(+>W zKZ8Y?b~OE1cbq4#aZ9bls(J3Je^!h9o`0lPYSr`YUrH9ST{u=HI(f?$-MTDOn*)tA z=XlD#z8JCGX`>$Fj%B}nA8+^nw&FzE$MSEzPui5O)^30IZlXa@#eTiNdyAcUY=!P8 zZ1;EhBmVwCMyKA-PZN#a{S0ift7%y_aq2tw;P9MBcFN8+yRvum1bf_iksbYL#TJJw zJ^MYyr7~>2rUv`{sj|QE=Ckd(YdiC_r{CtYcfR*- z;&Z3Pbs{WRKR!uZW3>7Tr^Wuig&OwtOl?uxyNY~=(^uK$XmzalW z{hU%8wrbwwW|7++PNhrV2C1K9KBgiUBgw^=wujfJ^_EvzN}+7$HojfC3}H1V6WdZ| zc(s~xCa`*PJMWtyr5TjGb-|pKuPWY{Ih$=iI!T;&-~ITx7mJ&hIBp7Z`Copj{P*0< z$fg~fJ(WCR=j2``{XOxCqdbtEH*U!`*M-1a4Y(w0@Je>R-RY}ziaDSVX6%4vVz zO3@{v$}LfMHT_z`zQ>h5a!^Qj*uXhqyZEo9BQExHn8VUP?TCux`DT@tqS4l!?Hv(R z@}_I)veO+Gmm6`0HC11AI#uf8V4A@G^Tp|p3q95SE_Mq%OR9LmcS&sh*>5`erW0#x zm-g#d)-9@R=5_ieJ;f-{gZGlqarRpc#-<*vbCqt!ZrwDAJH1xn6047($GlDVr0*`C z7GCsf?&=vv-|z7yF|0f|bD_81?8(y)nx#0b`ofT?y6V5G&E6F`tm>D7_nZvxHW$)g z{$}FC@YvUh$#V?J25@Lxl_3PW|il z67Rf!&z1AiYT?3%Csb##e~2h^_#mZv%KcjSiGu68a#9=a*Q~mn_9fKki;cDx!%?f7 z?F*M)N;rJ#gOhl-!fK8;PREPqFir1f@qLvO$@f-wU+|Bciou#fAq)b{2jAUK+skt5 z@}3i}P5N86?qih9I$>?S_#;nBc;&4FU0c0HE-Xu%!)6dQL*uZ(vt5#RHk3U$Wcqch z!OkVQEt`enWu>cwa%!R_=%RGO+7*F{8(u)TM5Y>-Jb}dMgq=Lua37#S!}_ zf(lF1t&63f7rT@>bN5*Wu*s}4HeI!@>LKT*h1~|hN}J~%O|vU9s@iw=lMMH#kRQeA z$KL4^M!&b4Z^#43fPSe9QXzTOm&aZo`1;f@K*x?xR zFKAoQ7TZ5BdQ{2{8I3)Dl^nid={h^WbI#K4SF)>8S-5lVRB_2n+p#+4ui3iSPOB$g zmT?n*R$I!adpS}}!J^0WfaMoX%?DS7Kd5B%w00<2EHJI^*_8Y&Kxc1r;_CFe1LcQg zC#6;%`n@D|%_s5MheIq^m&aMk^xQo6G~z_Bf!NgjPT#(Va9$Ku5ET!fP-p2PqR-*y zbY>1~%b9nZI5ekSR^Yw=^pLZfxag9Kso7I*?p&~uxou4x>lA*e*ln(|WsPFzbmTOP zzH}SL?3uJT;>(G%PHT3o7y4G^eK}^2&|ilHtNU}C7&os>x!K&e!}@npj{nB}7q5nd zmivm|FZn6TCl|AQc}dJ3r@yD<4v5FKtb8H-y?14mMBB+JxxwG22FmZ;%`JDPWA{P( zxVih8pH@2y)i}l8ntHNumgViKJgV+bPc%-=+3lc^DPXeE$Hp@{P3cH$|6WdKUro`C z+y4K_(v?)P3gTB-JR{n_aXp)4#|xeicJH`LXEOIjZ(DOE@TiCXB-xwZoa`yZi=C~% zT)chrdS~FFsWa_2Zeuk-2NlE<8N_z=enX+Oqj?y`m?kr3;nKDnG};v-ZtR z9@#64em+tB`s>KU^OY^<*W9yBeE-D$$S;+%1t%0bISmgi_@p)W#hz8qEo5>wd~JAi z?`gt)oxK;oXUs2|wx#vH&i;?zGvo#4{N&&exKzP4_1C|Z74K{er%(N$&voO=_PORg zE~fMTg)MSP43E9nZ~XP;IfJiVjJwx|nB0i}tNDD6HMexPbj`+-Z|puB+}EGOab&js zrxop9hsyz}(N_Kq=o9BI`uaBIjmuq>H2Pl`~O(y96ZUoInkTx zcXjZErt3Amd)J$NU9fh3sr;tM(h2LYeKbEW?I-a{E@{4t)9f0hrH+$y%=m5=Wo>NR zq{G*`Gde8nj!w_v8E@az*;nnj6?pRCmbs#y&u(%~?h2fJY~sS|`dE9`qo0bN9pTyi zWL84l(Y~!m>;$$ymii{o$ucMDjog|D@sCweY}G+a+Lzt8c#^pF(u20Gab@55ChU_e zDXl+x;HJv*H;Xi%Rn=`|pK-OaPhF*@e(sH50V~fgEN8J;q;}%4_f)q#U9-ZUEt?uG zBGNw3op0f%pU>A{|E5?Fsbd$^JRFx8>eG*_V5J+vMMW=T_g} zy}$V0?$W%__3Pffiu%9Ca`m$r$tAr@4~LiiagelHJ54adDmZo3@>>?h{<8y2BkT5L z8Q$$bq;a}Di~0MU1GQD2dgkrkXeVVk5*?r+u@5_I+ zE#|g8ib~69rFgHaGv^=-^#7$=sn~w}##V4uhLP$CmEZ^gMApa*|}o z4n2Wa63Hw6ET25{obsX^**~|})v0;JHq`AmU|SGUdL$JUj39br!!TE<(a?jJ= zbM{FSQtYG`1TF54J%7G)f14E}YmTUeC5#j$67oaM6bS^M1@b)Gz4yj?wC2x6%5g^_s_p zKFG3udBFYPMO*YoPSd&HSw57Uww=@Drqg56TJL=Q?~nU`SxT##9royMTX5G$#X_(_ z=Lb``(rJ4qF15xiv7Y)=NBw8=m)3jnZklsB-&=K8`oWj&d3uq|2Rm|C{*jF458s{V zdT`~dj_O%|Qkd0VZ`;58{0#9RuA0*apDzlFpA=OPD3Ui#O+)Ki#<92G=60M)i!9o< zj@$U{jcS>NaVK;0p6r)pEL)M^q5Dkx(2P`{OP9CrVr%}-xbyn#&r#ydo|_pSo2fru zHfxFfb$5+*`zM(upP2WE<-zrC`V9H+?@_pL$Kj4x){mE*t!M8(I#hn_8kdHF|H>8FqK~J=X7~9Q&PoZH73AY6 z`|T#nq>H;BHyyWp*E?(NA1~2IQAWxk_H8rzR&Q8wlC9%(@!u|ka?a(3dvr3^3ncaI zo;ho$rW@ysr?VB~Z(6XNe{xf?KUcClEql3=XYS^_wvA;uQ%=sD+GJSF{bA9Qw|!X-+q;LDNlLjP_{Lie?fzV@e0icduuQ4F1@X?e1>Yq`5Sgz^+%K>7N3`V zbb6-BW6iVDQCBEakX#_BrR-Uz#1u<1@8C zoZKZ@{N<(G<2UE-eU=g~c$N9cp3_V?{Nem**76Tc_FI2piTn@t->y-#CEH9YqtNngUx-`yh2uw>^pMT^D*mB zKYprtLFjzrz3lt!{uQ+4MsK+&*H_Q+t>fgr1y@=-W;1j48!o?Y_NM6mBkgP z?w<+VkrdC6%C__48~({%REt-)3f)<1YRE_b{beYGg$)51c#MP07NPBu*~?@ClxT)4Hl z;B8gvr`0TZm)Dh?n|DokbuYKqY(A&nW%-?1-(zmxlickqyo&8wou`;*ILoVF=d(l> zmYuyXqkCZ<6GQLoJ?43eb!VDnmLE9Nyv)7gk#dFRs<_4S@(-{44L(`0YRAf5pP3j} zP1bqr-TbiROOxx=g*xVog>&_+?`~XC7ZExA^86VVoGo+2Ud0*jS?y%c^5=+{tmabf zE>F+2mL17|?q7%s))qRlHrsGsZ_tEil3gd|mtARGex|Buwx-XKP}$y-GuEFM{xI$1 ze2tw-H_BKQYE}y7$6a9$Ziug%pzwuN&Ng#Z`Kn3ZkNO_uX@2r{hdOr#gN-fcH+E5m zmRRMPn_gQPnL1mSxcFaWJi7S8(wmEgeg58-&)imNCGgWUecCerb%nc5m8$;f%W)4^ zeP{Po{h|4f!yMDy^=`R;O0ibEwPc#^=d_7hW;WM3YJ7L`Hu5#+<-15S{1e>j{i$zB z;Kf<9PNlYeo6m2?*>;C(6;qh;!nddYzTuCxI4H@QUwbXq=~FJ}uX!gr!lM<^SvG{< z?Yi6liKWS=)BniI#{uoJb&gyQthc?cIWxVoKUc7)-HGA#!=u{57rLdRou+m?x_s`1 zO=K#LX@2La37O+k^B{8du<8u!fk-z|;0Kb7P7swuU1&*`l7|MhY2-2YO( z!86v!yo`PNXh*(W>iRWTrSGswcDn8p{6;QP&G@5-GkEqnv9ySj zM|NjRYUxL28O$>ZJ-cTD>*cKEN9kK$PTsTJ_?FH0!&{y9^f4{czO^rV@5yfoEb$W` zl;3!+9(;YBfLV|A$HbrN)yLxRhs}PmdD^RrowIz6a_&VPZJr!=C_DVld6v6YuV*VR z{r$J4a?Yns?rOV_n3zQ#e_AOo-`mt?V7Y(yrNfIQPsP-AWZDLc6t*qic`MfPhw3+G z3mICE0ibU)$f@pEl7$O-WX1z0tP|nRdA|+48sbZr~~HU)a9*E@$5t zZx%(N@^7y`T=JBflJvQZ!(CdaBs%Mq#}vuf4zY{rZ+TW(6<21b=dZdY^T5{claJL! ziL!B^qn?B6hzI3~d)XS&4);>0PRoinfXG&>SSDL7ioW|Q% z(O0b}FWjGV_S?A%#(L>xCCz^Xy4YTC$V+ytGB3Dz{`1VUckDiH<$S}x@PaWLi}?)6 ztCki2UW(mMDp(mCe|EMJjw z1Jm}Eb0(!vOM1y%TCr_yhpSNO_TRrPDy^M9?_RP=Ec`~D^~aBzFX`K``(}oJhTct=#Vhu0mYFYFyeH$e+`FAQ z!CpnHk8G;HYW$P;rEOrE{L_j1=S{BnJM7Q7>+tV6J=d#bFBaeZ60SR?c8k12pSAl_ z=`PWD(Sk|kX@-R%x4x=wHI6%K_bn;wz%JjNGdIt_ka_!*#nOzIhIRA)JM!#cwK>1< zYxsw2D$Qm3))RI;R{f?cRm^M1yLfj^)`S|Pch+-+XVklAnijr`)ceQG;#kk@7`kf9 z(;GjJ?5$S6JD zgUm@O`^^(mR1W9XMn<1~9WQILm4Vyg%YK!u&&B^ufBB|ln)dY0Yjdw{mpeCIXZg(S zcjoi6-diSL6w*Iy_c zG%UZ!J&9HR>y;A^)wiGY*rq%G<61_iZ#*n_%5Oj6yD4&Xec+PKy1U*veVE&vY}vm_ zqHfd5cfXVO8RwtnS$uzfV1JFtZu6DL{r1QIi71MdH>j93=}pjqFA;I9H)@ZUNvdf% z_nzk!IB}<~Oq9vJ=lw*Tq=ZFBmc-Tn6k`{ZQ8Bw?74hWA+m)jGE3@_}{Hg2AtvK8I zHE_%SQ!l0;{xwHZLa+7ryBGfzx1C<9^jAxE?yba{vq$39-M`MgvGwrJBiv_v*UdZl z>k4Dt^SAbY87iB9{9Tzg@$s*Q1G_B_+Zi7B-|PN?!TDR~r?Ytvi|gK;o}m9>?!1-L zON^Mm%ig(v`qQek-*@la?@qZt+vcdkLy?)^&&>VT$na+-_rJy2zxM7vUT^=fVix!B zvjRVyyHBpJ_ZB`NS*@`Am+_w4*7Fv+Juj3I?fyJd@owo{`CnYqE#(%pe~mPfY!)tD zo#X3i#;kOuZUy7YIL4EXH)ru{x0r3r3Te}sA~z{9VwuJin`L+B`R}#N3k{Q-lo+Mf zxxtjtv1MJ+l7gT*v;SPHoy?m}?K{0@&7N_W{*=^VAeCo5#v%M{?#x{GSjz%Bf*u!=2f7d-LV-&#ohDr6zb(y|=RTO-%oy}Z z_KB$fJs>D_YX9HhBU4&Cf3N=BVXV2z!?5bZnK@-EdsjEt*D-7USt{~qqOf|3W5$If zF;OnP1u6&cO;BdPBmMmPyBg&SS;xX;j%1!#xkt?Z+Dijp&Y3s$Lrw~GF!@h1OcgQ< zyDfP;euv6$hnE@8!=q=s-kWpc`Qg{z509lCxgB{Ssr87;;>yyubI(>xTjl-v>(6sH zUrfIod^6fYdX{w7+O=1&%wXB4F-?o%+%}QB{|=w}rH~^z?Xm6Ma}PEy?Mix@x+KH! zR+aRNc;1lAK2XI=!e`~wv6wy&~K028L2m)y`FbfTR&r7_5#Mw?@ngx`K_N|D&P{?K3(Ju zm-WXd9qs3|&%~X5X4w7=?q@2-zxN5T8zvNN#)FKG?$#Z?OemAgAYsp zXPI#<7ZaX;^uq)T{h8H1cSI+=&8S}*`N`C7d-OJ+8F9b;?Yqyezx-TSQ?Fhs_ssLJ`GqY%tWkO$==HL@ zI&A)oDaY;GW-=CUSZ=W8V)4XO@2}xL+h#X${OrBwJCl3XtmuUSR&sp z>eF;v>-8Oi<+h%+a+19du-t$FbQt@N6^hwpC*Kf40c-$dt4h?>P7% zsOxI0NOp*er5&%ATp5q*ofiisGhQ0LYkz4k*UHCmL}Ay7`!7<$A9DWuROTmo=0tkN z>kA+IpZq=f{9!<#hFVLVzsA}AlGQ7BbH==h&YQS&lW~gAO6E{SwE!FU^(I@pZ~4Y@ zoHFb2-8WHfXNCHsU@^ng;TYWcT)6J#zz0BJ@Lw$Lkgc~ku|5UK=uyM4D zxISi#i&mki-^wf{oR4eSicP z^OE?wABv)9mOYYU*dO?G-nphZQ>JL{%nwehU8|*ce(8yWqKmo$%A(~zt~xe1?Dc}> zhSh1t(w_?+NNzWl&HT}O_l~7cxJmK4_BZv9ucgm*?R9PvfbW2+qluY z%|9l9qcc8Mxc1+lh;#er)J>>weYzv0X=;ha<&AT8?tkw6hvVE5+gn$DE?sPD;w^sj z&5?;uTsA%Bx6OaEUxDT9F{a;l7_LuL+CSqar`-Gt2lHfFf35pgaMv?ev8mMS_N=9S zFVAELpZu}8Lm>Jq+y3RJx5cOV`f9lAN&Rat7TNQ6O;MKRPNBI$S!vVltJ_r7eUtiE z#Qa)p%+22?+#eEq^u@1hyY{FG{9R#m_EEuIp^1G_+YZgYv}eh;0?lsOjJYiH<~rY< zv86cUa}eKLUWv7LPb96r^>v}o%y}Z$x3~)^?aA5Q^@K}j!;K=}r>BZSHR@;o)C$$k zl;2SHX(qG8%e0c^$7i}v`+e}Gg6(ZdCyQMb7n;(14+?qnoL>9XTmRt%b9r5dy2<(c zYD!;D{)wKmL(cG8tR_pLb8But=a27;Y&6$-Tz)zE#=+{sONRHF0X88_J96T+43Y;(~L*Ilo;j<6&E?lZ~Py9C-0BB{6a=ffzJW1 zmAg*Oe>?l;MfQo6>MjO3Z`?EvA6%MI)F!+|=xoqB#l2c(=js%TdfYn9Btz$J;Zl{Z zo^{!BD%Xq$4WIY~f1Ek`Sfg3lbkC&HN4E;O^y*Y+r+l9vtWa=C_}ZF;03VM{w$txx z^UZv7)wF7w=v42VPa>DEFYOn7syj98(yrhzhjU9G@y}ZOnoU%^d(+Qv65N-hg=1nf z&iG!~Ff&;G0c-VvKcW9ac(s>IE}wit^VjAx>z+gfc8fM?hlv*IuiU%G_v#m}jR`YV zrP4MW{C)pOH1GA(XTvL`Z^)_46L6ZVv0H8D>iTtzI$yZs_pjg3`jB_!?euc}CZSW; z7F(V<6xo%nyJ%l8?_IZKN6WSyq5|AHOYL6?-rG1Wyl4OHq*J-^`X19+UGDe(T(0cI zBNThVGL)l2CWOdmrMGIUG$%&yO`Kg;?! zZ5F@0@^g7{mO-Do_Z6NQ4>XV4t+|@39-zy+?7l_wS;tL0qTS1{i>C-H@LfK#UtT=3 z-{_$5p}o^5r!&>VBHZ>{wzMkoNnhVb8O#Mb8o*CwouQv#`7Q zv;UaBu9w2=#aaTo^X}!wTg5LqT;s9(aD7PB2mOeNDc7fd$xZh#a0m)6P%e@)wRo$) zwmZ6eeo*XDG20c}Z)%nK*c)p0$qc z&c9i$UmqIUwQQHH?&r1{-c9oN(j$EBFMr{FY!_=<^2xf@Ca%h%?C|_K=EV=(Vm=(x z?~pFblbe6EX#4Gr_HoBpbbU^wP5*4=+`m{ivE+#7CY{RH*8>$?+d|rfx2GTB`My=- zV*byc9ve)8oo^qsZN0P8*6etVY4pV1I~&X|pE$HvB(gj_EaC}Qw@l$qrD~f}_ow-m z+w#KXy$@>p-U-*dVkCOxz)HD`XV*;Ycq}nx@r_m2I_xLDNiYv#Wtet6g==rXYl#_) z)%^b)6PXr1$Aza(SH|2{Q)I;+y^0C->NAf0p|iPnT-o%>dz+3$hcUv zc*FM&sa1vbZB7eL*v<8kY<=~oB{=)qv~_7pM^#N$Xj-q7xL@HAx$fxyq-|ccMH1`w zT}-d%k)NRZ!_+_|%y#+;;XN9!8DA~WXFr(gA}PNx^6~+XTdh-)JLgx;dS5cp*zZV@ z@!EY0E=tz;*hu#-Iq<8j>xigv_zyn@{nh_x&M8fAnQ7g5RKB?VP-Q^&kDpDS{uoPq z`8xU9t=S)aQ@?q>a_(eNu*m-O@nYxOuql?wP1An;()szz=i^6>d2`LZPSw<({`G6k z&vf;D3d?i;%JuP>KaSY<@rGl;!#z_zlocvHulRj#p5Q6=v)7NfX)PxtITt=q71}8AHdpP^W`QK;m;TQiZ>d=7yezqOwC%dwm+iBr zUgBq~E(}%QoF1;Ew1sK@8K&2(IlsUDy7^-C7v@;GfI})zT31&8VSCF~IsNs$`bt-0 z3AKthp+9_nnWu?xp;Dvd(IZFgoG-s^V_$4c%C__?4-QwPFcUSm8s&!yRTZWIFiBk*>_8i_q_NC zl20_t%7iqT*S-(b<J5Q#B&Z=V&nmer2>c*S^S0WV1BOHKrGvuItaVaN?+AYMean z|Au$Q=R_EMG|D>7A9!5&cU>|6(3ZbHzAif9J8A1v^~mizZ?eDPPl<7qU$Zy5G4;Iu z3jbe%+dN_(cBrW@;nkORFBKMP*56_k8@EGi_gAaCL1mvD!qNqze%Uxq&-w7w=kGGR zoXu@7Y@KIU2&`UmK5XAzyC+#fzf!9+S0`8)KUulNLu*c$ftlQ-XgA5GN8j$mET|IW zIJ`foban~b$?5hz+d0<>ms-zDRE@0UU;9q|VsXMoH`XI(_Xq`CSIxaT!$5F{T zgK0ax?>f9{vgw>{Gx5smBJOuzZW{A1KVn;_5a+UHyOM9Bx|fD_d*#{5i-L3#o@sgd z{k-ne@I?88=SB5c-3ZMMOAk61aIChps*8{l(@SW)Cm~_u<6SU z=?Ss^tDZz3{$2g#xAoB;5BXi?J%{dX@F~`4>#Pgs{xNT{^Q*1im#1@!ne0+wW4Z3A za^4~Ig5LkU$Pj+rir1oR6z+Qd@etWCTj1UOo^w&An;DO^?$$W9)^?lca}KU72V+H_ zY12ce{(1M!^NVTo^X&D(%v&d)^PIiC$dr*wc1a6Q{n@{3Z!|@W>BcJ|E zn)p{eMLF+wz^n^P&q;~AShMD>!nvBPyX&OhEnJsBl zW{6tVCBE&-t#+}$hKu^wB}Si{7k#RvzJI~V)Wx^=G|bekY}PPkKBj)eTuP#)RfBEm z8Oi55p;CG;llUYHv@<@RdN%1#<$DwF_S;_%9{zV|{f=i&r_MR?erR)wHE&-dm702g zO{$u}=MO@ERo3Ni7V~&#bzfg8+ws2bGSk<`3OUTuy<_t`Pe=>eJajmcd3lrSmo5KP zpFZR*F4-NRle!l{{+GcR}TYUPg13j6SpA<2f zKRD04@X_=*7LzZHe@tAZ)6acTzU6Uov;JEJzinLgi_7@TUY%JX9<3DjE+VUmD_i=4 z8MDpD^6FJwwk~a!6^F7zo!0jQuN^Ij)*@TDg=S8btcI#~F4(qX(ao$0(SCV z+yCh^+eark#r?TE@sEI7T-^tLiRIhww;3A8NV0PjnU0+sz|M%P9?TTeblT1XI662jYvjh+JZB$-fw|C0)Tt(IOvl@O!pL*bv z+huh7jO0|g`x^Z|83BxYZG8kMsQ-R^`_}`xN2?_-%wudVp0VMas@*zn`O2 zS*~NPP$rw1Go#CuF)wY2^M_4kmAeY2oIHB!_j|3FhBHM=n3hjhuzJ|P!EedDc!lWo z{b&B3KbRwQN~wuIMwF>;#l`h*;c3qqze_V;`f}*9qR*y(dv;0pDb~+#D*9Qjcs1_h zHn*b_nPeyWWrSNz=bd2Wpt6x6RpV)In%4l+U$Li=y#eLhheT(GH^Pp0#?bxXj0R`FrziCIuBeo~&3m$zg9i%f3wp`4Zo(_BzJdIlcK_ zmfo`Wkh%IF=Igsulk$uD*W5p|r+Mq^tY^4wD|kQ z=eAPS?S(r3_2jMgt|&X)^`}2PHe7hPZOEZYAoW%_Z&@9SdYohBMAIN4KZQT_Y*-8W1Z zqBee9YJ1}MJL%I=x8knNmrmqQ;fUF^`$!Ly@7F@>$}YRk%T7!(9Ph1`X1GXbs(eqrufy3dPLv}bP5*|x3u zr$kF%#$Ca)lWJnJeYbt}k`|3vn0jr|JND>PHm&ntU;6UBuJP@r8CqhS&T_f`;yN7m zPeuC6)5_RiDeQrIBKNkPH92@eDD1+IpKH^;&%DOub>%RxD$N&t zJZ%a#eyj1a`rEPxTh%w++rB~i3Ce^Hyo-y0y+yu)oMiGB4CAV!lvJn?v z*o17_eRFyBT?Vd;Hm%=%UN2iYA?8(?;Lni#brPRzd{16E)w#oK+v33GFAk``kvkb+ zGiPeTcQf&GdjB?DvdC)@zFoKb^ zb*^puKkr8VLTSTg-%YOZrL9bw9_4M}mCf;-`}3^NHU)BQtvL<_?k!oCd(&1#zO3xb zEv`82xO;-H-TI}WJpT;xeh4^}ZBjNZcm13ue%X!hj`7iTvw0713qARMPwkDX+TF)j z3R%_ZbG~^r!{1=bt9c^Jo6qf5U%G_neL&~!m%A1-^*@hyc67GgFT49$yVk9~saCs6 z$`>#6bzOay<=3RH9^KT`>r>AOWilyQdrH(SJO2LYyopPiq)V*Dnk*MKr+xRnVW+S@ zFMQ6#7N%+Z)j^Xgw$J`8BD8KpfWw(9S3}f0>Ks@bh2mEJ+*8pT70|%$K6AbwXUWE8 z3p}4{+4EFyvYV(ca{Ttv1rIiC3{7+T8g@Fsr|H9%YZw2rtq$<}7O3R&_K)r9)nyzJ zwh9j~JzDgPfAgtGKIK~}N{2m_4%Y5uvAGt%sQ=~O9o&@`XD|46Y(0@Zt^e8U*h80J z)`~RTjb}30wA`#EV{cpSPN$`dTi#Y>-fdc2X?$EN)oP2M%8h#kSG#=FpRO`(y!GGI z<*5zNrn5bPx{XiQyFSzLeRH&7N!@nEz|fc@Ix`k-+*aM49=BZ1y42mxo9k@;(RbC+ zXEX!C_idSfx#;$1AuHDIsjD-}_cJ)hmYnAK{>EGGN#KN{TW42YoOb={s_Fkef4rkx z_2jUpzEb1V^#bS27wAs3%(BvDdEmV|BlSwC#wN*6EAuY+?d!`3W(+;Mg>MbxkEa_y zKE3Xk^5e+f_cGq8bD#Ztzkg5Mgt+y#pN-<#=9np_z0CYPH{@l*> zlKIM{Zt^XaxHzoVy@@KOS zI5$4rvupXE1F6bW+U!kIWjEv>Kl@N{&8E3*%L;Dh&)LW^m(yzP;x+Sfn2#Lg_;guN z#E6sKG{md0LC)3lD#{baqc%>T_ID{DiQ`?#1{ zzO=HjsQjtdb(OL(;`lSa^+b}XhWS&~E&0~L{%PMW3{or-zHd`>YiyXpxY4e*bjO5+ zY+JZYnvR4d|Gs}_vO?R{pev_euez#alKRXfTY7lIi@wUvio9yK7z_Q*N%gyZFc3yW+F5f6mhL zZHN+j6*0>wF;ZGctEi7fy!wn9*WTktDl41b3deW&?_ZJrbCrxoqU#DgnS7*x{ zR%Q4vC%dVbN3;2_%sXB4XA0(p(yp()4e#$R;%0pQd&hFYIr+`yPfIRcFE;r3l8 zvX{j&wKrO|-f$7i&92>xl^JVuC$gWJetdydyPxHZQ_JFRY!&E^?FhfxQB;}i^uj~y z=#E4`s}so!Hd$o|MRU*0TRX$Ah^zPejZ3E*Sxx7xi3-#CE*t4^rQqGHV*Q?}^*5VN z#iXB~lYI8X%v)=(C>{>lx@Hc;_o}HpzpVDU#yWQ&-n8>du&-^*6APwES~r*3@p&Jf zP_y8m>YJ#@zQuRy91^Y`Twm~+@7_U)*V%zrZ>-yga|j<^bUt-jtq z?faioimhu(g5-)O_1~v>kXT$giO{nj}fEgL3fe+ih_ zSH<}Hl}!F0#mV+^@9adL9X_&9AB}c;Qh*yOM4_; zH(2F0HSKAZu$^&y>6zc6s#0AmV+55>L?0@TI~B;5&%w{sd~SMjjj(2PpjJ}V_9MTS zZ#=R$P8gk9Qsl@9!t(tXq z+q7e!KG+C;R#rUbBERmEl9;xH*Netb&N%@cE?-ZDmse_aqN{^I@?W{W+y>g8H@hZ}sIxZr;0 z&u^Izm$DnhR~XmNycmC_#R#<{>AH@o4uYzEEN2ATjHy_oHoDt&PCnJc7gVr+v{E@d`Q0k-hH1;a8871#f9QhH6>ZIa?f`KUG38i`s*H^ zvwv~nQsQN1?WYbJI|LTblQdR~m?9LbR(rlCZjN*wQ(Q)XO4<}BT?m1Xgi z9fzuCENAb2n&u%Oap%g;OS8T#zHs*7`eom{w)n0(diB|2$r#PG(rahkK2>4W*3i9Y z;*$@Sm+!B!PBss-I&RptJ=Gg6E`aecb{CsThusE~Qdv6yG^ObdhDU9U=aIZg^uJ|B7Z z_I=(Bud6ig$qO@^?JMflj!|35-XKwAI%{ujMRjR4$J3i}Hb#x2)6E{=z8Gs^_Bvp< z&#t(G*Y7f$-?7}VSCH>UqS_e&jXst5yDJzUE-+jBW~o8s*Yw5ZZVW<#JbuUTI9_Wr z`FGED$JE_P@3+tQF|%pXdHUw!m7{-u70sP*ag8(exYazrqEF>!DZ)2;>vaPk)SS5H zditYqO+onXnTz;;c`EZb^sZj~yHH5m=iXGuv)A@MOjLPj^?IJUaLuM8&)HwW%utQX&*+%I)-M&YNOVxKo1l+TwE{PM8GGVtDi z-r!>|-~XAw@YfK`7zz@d?-B zx7{vtg|pN74~s2Mrt4m7Sg*xC`%;|QpNaF8T5TWx zSaP-O(w$WcOaD5p7hkp0&B=J@(zLywrK@BAW%&FT)JgtZ=XZL=QwhG{1tt^z{S32> z=CM!8{4`57&7*nk`7c(c^0&BN^G}(|w@+0r{ghSU)df=Rm!py&&+V$XcR%*dPd&5s zx%MnSldnoEo2>Rd?v8$WNTN?$6J_zbDV%HH)ZVDm&IY^UtA~kG#t_WX_TldKI*` ze-p2v<@$_@D6MrbZf)`Imb#`m^`k<6@7%vVhaV@dYudK6EbnD9fE0$e%DH`R0`<}S-5ZXpTn&`kaE)*E`(rcj`D*$lT~wGH*Vms^IHi{7V6owyuZy1Y z?Y6wHlC(=g;>X>m_g5tC3gNzZ?1trg)6&{=pWnF$t=;i_Q-t;LFMI|kOj3_CBt87I zwcRoF#D!H_Z{JjQpO=1-Yb8GUW@hn<)PO|B`jp>GkFs!Ne+>=&J8{*f9FzF#vHMkato~gZwq~y zH+ki|@X}|yryVyq^@gEPcX?sP+XMBQr)ypxyB#sfG>#=!_qhC zrsVbH+U3`mYHVC;|9DE)gtedhtOaxyd>4Psw=&lyKYW5rcZu?2$t0iD>a<;#gCAUu zX;*OAC71R*hGTV)Z{^GBzg@3ikSj_Ug{!4b>*(KLKg;lKb+*E73T9NK4vv)4OX(`$}`_6t(i7p|Fh4WOx&aQd* z=VE4{&DDuqE(xn13w|kCxWVyyyy!#MaI-g6mcAD)7GBh>-1+R(%a&{F=T!?g9Xxy5 zuQD}g#pk80%LFdz#_*@=CM?=|J<;IsvZvlhOFCjKV=wE6vmes_crN?_uk5buhZUJi zp0esbJJN2~eCx_;{SO;Ac;|lJBtB7}DKgt;!kL2&msb_1a~{03+<5k(DD{cF28XBT zTzo!x(VUg(&#q2RZ#l`fU}NElb^X(3mbx7d5pnpYzf+iJw#vIb(d~Xhv#m2{Jvv{V z`mJ+b>`m3RA8i%hmwFaoxpub1^H|x*V`Z9e-1ax$*s7_a^@2?{q4@BXn#6zHt^cjB z{X4H=Q|H}l9P1So>cnsU+&NUJG>#~ z)9;5I{{67mOZ@msF=Y}&ky(7AOE{}9%sk1Ym?+|D+)8O%hfLGRQ7x&B9}coQGn@MwpiPe+q*@k zJ&^mE9PcfHPiQ#8#dZ_Rx1Iq$U?o?MqJZZ2Q_m5;Y! zep=G8zvu3HE977JsQBhQ_qA-sT>h22B0gLb?=V+C7rDNjvCEz+O;?e`AuBSqV-ZS=Q>%ALA0Z}LNNwb!xC7b1Mj zpVpnv*b??(wUUkHDUQ)_z!!<94iR2k#w;58@6Qf2>N*eJb%XyT`iQuQaB3 zp|(+KP5&ep9O=y|T6pVT&W|#_ zt9un>HXaB|KeA0thGF8uFJGT7n(N=gDPFbIzCQOT`>Xh%j^`b|sdp77-Y=;;x$LUy zrTe~H^p34H@0Z^=EB4;{(|dEjh+JB?rHg<0PWR=foU>B5P3Yy8d~YFi=g5seSBiQ! z#O2GR@kqPw)NKTH@zbtTK6ByERu>lNy`Ra?u6f$lZx%D#v|a8|Jxf0Sf3?2N`{vF~3l!Hp=1|N& zRKx!5Qt}h;$9*d%Y?f>}RCX%je#1?nzQ*{C5sdF8T2;dFSG@ zj*<^I-@cx6swUU}^x=*!&+9!aoTGzpCb;$N^*fTfxB2HBc_y(6_sgk!bUChDD>(0z zn3i~=ruA}YMm2k68?W9^&&d4tEqTusCYx1os6Ew8n}2fG*RzWQwXR9b3Ojq%;o7B? z^*3+ck-L+_DKO*uO6ED5Z0|!|R&6s5c;~wI^0EI*pZn!APAa+_e#TsLMsKH%>lxQ- z>02>}v$G36&9j`ga$DQxw3+6r;$h3xr!5PWRbA#_+@!hUmE>c~$KAs5^;1?TPCn52 zYxTbGs@YpuR$jjQ^V!0_I?OsRXR#+oTg;O+dIz-^ z@y5J}+qq|f_!eEwZ>1-*e;!eAi;Odr`F%Hb{F47zoqbC2yhu52Dv>2^HX z>fp8~M_!$j-G9A9*Zwop{cAqt>KM( z{nB+6n{7w`n@>Bu*;B3O?cuUrs5j}*gZ7ngKU*2HuY9|j?PP`0y9W6i8ORW7~$ zWBNP)LkBhd45t3P{oPXN)eDozj6b}JHT7Fx3uonkYV_=aHZl*Ii@qR?xzk<`NQ+aZ~t321=pJ~k6ta{?`_XIdGU+p zwA0F~c9i&iU=4ZAu>OsUdd_tpd6^yE3PO5pB9+<9-M0^3<_xdp4106!+}(=LYF&cI z*d0H#aY?^$e0}YZ<12%uE9bc1lwVmMlQ}Qq(Q{)?Hj~XtY=KQ{XJytVzgv;(Xck`o zev$S)3D-9|mC@YZTeaT~PKb=RT|Z8UKr2 zNi`p9>qET%R^ArxQ9Rq@&!2I%P3QWNC!Nka7Pc-rR<@%95ao5e&j zjHhHT2zpz&Y+99J=NqoaR+FZ8)Jq>a`|U_(Q9&V$|=qoIW4c+}pqS+k4|fyN_*f$yqk#mY3N60N?jL=LJkR zN-x>gb)D<#&!&)bt9;Fl=a%=Mb}rye-^5%Y{hKrT)9Z)VRxG!0t@=^p%rTgS?$@58Nh zTt&mXs!a5R?uxjjW&b^7QT=@Wl06!NS%!zK^1ie^uDWpcN85d#_c@2{TO#gFQ`=*5 zR;cQBXu`cvF2B{LrajB$4uo+gBp>Cxb7w}y{?N~Nz_w9ogm!-+tTvdI@a zALy5t2QLb~X7Rsv$)(WPjVsm$^~QOo&5T)?urw%lrNUF2-75?fc1lj|oKdwpK==2n zZ5_T|o=czC@%c*SzhJ9gP@Qvk#gb^{FK0LU%;=o<`2N02$HNb`3T1E6PWslBwg{u9=H<^0Njf%F%3I(2cs`hjG zuh^~1Mc!*9C%vf+etPLk-cqae8C#`}&o}uo>*HU!OOs@DR-0_RCBMY&%KadTS6C>p#SWb;K~EX)%E6FQ|r%Ttl8_Sr`b~T_q>}>bWF-srkC7SUtjEeX;u7n z(YA7f*H*`8{$B5u_$X=9N6QY6kHTMc>#c>^Qxq@%`Ef(++M;Vy+WDS8`tND{-@51T zdAXoFee17~a+t#?5C(C((>C4!XSqqjmD~J5x(2ut}`tIM#S$Aj3gnZ|+oaAwn zWn;kkPemy|tEaxY{i67gs(#yvzN6{l^-VpGRx%s9>?l6H_|17ex!-|@6n&p3GOS3K zIWtE{P4k_SDf46t#hA|4mz>r8vktz!w6EyNt1C}@vtA!LwZQM?r}T)4XQ!&ypSb?TS0W@g}D0WXe0H#fx8#<=wP#lGj5qQ>NF4UiK{xDP~@3?{4Yy?bM`G zX~&vcnc013FMBn0-p%U9f1+#a`%l(y-2Nov@5#T{VM%U-A zZqC_%`xko6m>~0~S?ZJV_N<*JmaQz^?AIT)Hh#(CU9D16Ht9#qxvsV`pg-NY-lOK9 zx#YtQO8MenLjT#s?p5MhW1mr^qy2jAcl8$!|NazI(a#YUT9dtShQ+g9=Gd7*u`@Ln z%}{>oa980CSJdn4>^eMto39-Fl~b^AmZ^0PPlirk*3M^9qQ*--UrK~Atv-18!J4Ii z&rYyxm=t;3b5}s;-1ZkscXRC2tXSrEcBS^wZMrFMcRcp7J^JGDcYE8d=K55~H1oJY^^D_`E{Gg&gK#LIMzucYX7r;{3d zGxZC%C!8nDNC&auc@7x zB=L3UlA8?I=lxK#>+C*KuO{T0^++>NPrd2?29`hDXZ(Mj(;=8}A+wF0sc6BE_nRNq zd%GMvXZDTf(0`x*-fBV{SuJ+`KcABk)?OGKSNOwj=eCmEYu}EyFS+{nwR!=kt%}L4 zX;MA!zq2QbNrf(07afyZcOWQtcd^2fr6(Rua!#9f`q`$nM_i>Um#o|~N5Seuz(iTb z=G%(R%EvT{J=mr@xgDCI&Stu=XwBzq^p> z%euYo?%rG5a&LdjyS**9czbSj`T6?uK0b4bpJ(Q|>{3^Ct+)f%H5jbAQz4z3R=@P2oN-@EWh&WFk_omY!j z#IF>dTyn&Bne&fVON=GXa6MjmNWDPz(&GhfQ8x~^+;UG1?QbZpf2Mb~FyvA4!!7); z78@Oll`a;PO;6r*^sDc~N*fc2Ak#HJ)&w2y?^lFGQ;BTZ1pR3t_WZH}= zE?<6y?NR9cf2yjz?hH>&eRPb&`|?vCK1m*YGx682ZF#Q@G^U*VY%=ff!JR5y2Nusi z^D*hzjviJ0k}YEXTB+ zJ-PlV*ITmu>bG_)m|IPMo%h*NJ?84^RJ&}wt1?>->=ZK4xTn)(HN(gEQf$TP%?lP9 ze2Y7?uQM;>!G+nmmHv}vF8O02e~hza|K-w@>#w)YGirGu_}owHr=9(@pSu?eotPTF znI}->Zq*hR@S7jTkQG+tncu%J`R3Z0=jIq~p4la&+qgt9{?z=V|H{%L zXT=2Xv30Ct@XnlWm1_N&;kx3tNs1-SA5U%Scw9HXtUK|?y}M6#?XjQv?||`9!?bI) zdsHX>+*Idm8~Wt*)>kEu#nj&{w_WX?uyfx|+x;)ZdkkNHQ#fYu__5VoIrohfK^ej? zH-}BsESf1I^YW9?ovcl{4O7}rJ8^BBkaV+WvGu}RX;Sw-e^`F`UV+`kr9Xo%-duYB zZE!&S&sCiUS?lgj5}e-baChGM#D6}!__)oxnp2NnYVQD>`?U@45QgVdC*U8OPmtDw?Kd0N#`gg^R$R9dU>zs%}}sdG_fwnXO_a9 zFY;H1l5&C3a4#(xu9PA}Wgx7z>90mkcP2N#NcyraA# z?od~5^2AF!Zl^VR6*bMgy4P!}O@C_Doy5c&*;D4rzGAlcpX2;+QIqcWh)TW3LC=tbKh{e)}ESi7|PLv;Li3xgjY2p={LTeJ!UiyuIJTw`7aw zcD^NT+OghJYa{ji1smlRf4sQ(W5t#kca#_ouUwp0_HgFoKoQ1ejw>aXuh0CxO`H34 zHgmsFvP(kMnH#@*cj@SSv)@o0H06Zjte2-ut1frM^a#BU7Tl)kounQ7P;Y^d;KWTE zPtKYUdgiuRnSXIuqZmv2Tz#sVbbW(K0K2 z;hld6T1~fZePUuQ;q|RJ?xvvO+=V}1CvP!b^Eq{EsGMLJyZP+k-_1*oO=X|H`N7{s zTT@$;|Ad?_<19RC(6{edVnXX?#U-!XEakVBP592Wi6LpF!zzJAepOdSdeF z9oJUwJ=Vb&arn#m838%<^Eb@9$SQu9yH0rKc7~(MHjJw${P4X|^M0E7Hu;~89=<=U zpUiouyZF0!^B%*TeEXvK5H*92efG18r)--n^R-OlerMU5^y&YP_12fY*kw42gIlaq zWVcYY!BRzu*X93(MHpVOM?T}5_N-6j(1PoxOpX^$bNJ89Usxbw`Yz#|+eV$>{$p`RI|Z%0S-KR9q>aieg{ z9_iNm-Kpjl`krq!ma)u{u~&Y(vVPIByu-g<&$Ugn@o+k(apLQ$=-Fw(>`q!IwU(=`p^u9 z{$~+(vn8gS-`42vr_ucId#6Ff%o@c*%abPOtN8jk1Rjd`qrY^0z%Q-b(>$#69ynEc zh|0$l9hvBAs@t#rW6!?CrfV}KrP=f}&mUJ$Dv?X7+Q^W&wuOCKOZ)fwx=l{5R5?(6w&q6)d6ic>BAI-O{~@!jj1Z%2_$RSPetBe)<>Terj@tSm8Ydq0w>|5g@VxI!?W+~X^2Ig0et&=VRyh3ll>H`Z1=EAO z&UG<7>c1q+qvf!JBU~z1^?u=$B#XEIHX5+3Xt}GrYkmI3OOjcitXDqb{&wc!>dj5L zlg=#?J?Fgeu$+X;!rdC}$98NeDx7-aM@-P?e1k~28uhC=OP=Khi(GiNC$4?olU+R4 zt|r@_gvdUh`Y@+_-Dk%Bg^yKVFmO72+yAX)!~3Pjm#nnQkS%}q{c`1@t=Cm5Thk?W zn=QG_5Ow>SQo+{C2^mMut$2EV18Y2+oW&GpVcBfOf02LM-^$%nxbrfu(wMV)^70?6 zb}lkmu<&>J{zs}`mAk$^QC-n@b>W=4U@Yjx;3pI zS_&F+?N4p^b%XI{{~LkKGmUqCaq6|V1~45FU;46Vo2_>KjZ@s;Kk*!2c4D7_u|H3j z{+urTd1u7EAIT&|&wI%5fYrIOO@IG~R|40h?|(URM?0ik;oHF_;gj}1|K+$h_}2|R zjexdajE2Em(j5QH+ShS?&bHv5*Q$%3Ha}x_Ss<A?&iv{$*F|Jnrd4?K@m;@8&A*bOwUaAF z*GA&(w>O0bOMkVN?`Uw@%v*H2^UEBLg?sZha+Pf3n73rvBr$Vg>AwE*;*L4}2f8>a z-*6OOTz){c)^Ywqx9ht;8Qo&@Z)`lf?e@#LdCd9J)+&D`qAbeRs+w)lz85CDakby2 z+50({Pu%ckqq{r5v5n&9`(|H`iDez}UVBK&YDJ^NycvG^XY1!VKmF!un_c+4C~Ntx z4F0oe?$^GAc;DjP6umIal%wKo{q@!B)f28q8)b%@xo7FBJA-Po7>{L1~P zwfVdD=p5bAmXQDFanD5`1^*<$x=*^s*JnSS6@0N}(p=W1c?yl(MPOSuWL`R)ge+>KXy@*tQa^1T8o}F~6ZGPko3j+u5 z0|(T9e3>10^!&coxWjHb|6bo|;&*dMyIp!|L-)a$uD%QVv^!=W-1|MI`sKCEpP9ug zr#&-18@(?7)TYxlhjYuXZRp;x`pW#jCBEtrsnKk=9$h)PJpIY4b!Y#X96KU5p`vx8 z+E1n_)3;2WZgVtpPO;FQ45e?f(GL};?*A$o6g~6xr+mS)f?uRpeR<5e-sRSv%F9=O z)b{?Ey+QU$af8DqZk?u0@n^2`e=N7KGGcO8l|O73&-D5v$HOfhEi!!N$M3J4^+)&q zoVl}=E}IMQB|N}tnQf8K-Dn0i zR>cQbk5xp(I!xcVxn}mYxQP#r->B-T&%2y^IH~p8y!B6?2eCaDIbm_MgL{3OYDs+m z)X<+^Ggs@^y4HQ;F!#~^zQDkz>XuK-jJ3_r&tE_6V;Q*p!P>X%mdnd$2H%N4`q1#l zj(`WHS2jL8^OJMYbbfy2Ag|zqm4)vkgLhrbynk}p#+_Fue_B)H)~x)z*=L9MpUZbH zEqXD{rXZDluJBni^_m^i1$6ZqC;c-Qxo6yU?&Q23f@LB7Q|$}l>J}HzV_DDl^LPE? z1yk1g-h9dbPW#5j&&u_)ldq?l*xxq`uQt3YbK{M(hx&~?R*&#b_1!Mh+6(T_W;I%H zGkFX5&naI{%Z509>H7WUOR>w1xfqVzo<=uRmTgv`9#Mn-n z@j~HK#$Ul;g9fKrD=x9$cUMd?xYYNpb(7giyP(Yhw--6)@7YrO>__~HU+-`HoWH_r zPGN5Z``@qKJfE)XKmNa%MIqfNFxXhyS^V;U_55e`v;WoGb8S(1t+jx2Vf)*tL%B!W zFTI$&;ChCcNq_i0MUUpqQCgFo*$jEpXFQq{yJKtaAKqK;pQb1$?iSy6JfT7;twM_T zhvX-N%YF)-qUL_@Ozmf$vpM@PIkW12xzF!z5$ky>r`Tjz<=VJ&TP9AuVPnF6wln^g zAh+y_R|1g+E(IWc!r8J~_{D*&Fs6?pafdc`Q$}PWEoOUibO*y2X3{ub=jwp|j~6-{kJCdv?nN z%TDjOe?Zvk!i7a{E4ReH5br&9hHbaC>figvziq6XYPa{U1m}6fyH}U1Sbr%qJ~z=R z`TaqY2fgXnc=cL}Gs5qkv~7!>o4WADtTSA*ymV$IRZQFUPDspU=4ZyYY%lE7f3V83 zvg~Ewd2*BOtP7KZPbKOz?^jsJr1{fe#T}udr!RC%l+RjpCNaN#_3Y*LbH5i`>{Ve= zZNI@I_LFy;d9-Ml)>o-;U-1PJb`rf47e#%R-`e;|tY5fr zzVDZFXV~xb?6|gdR>Q5h-y&D1A9_CjeQ26EQ%zuJ zWA?@kN9?p>G}kMtt}mU?zm)OddSmI6IR|&eKb+*@9j=h{KzOkZ&)+lB91qSYRb1E_ zY`X2}whNtmkL)vgTy*HJlFd9%?QQ9Qy$n7Euh~?%sC9qR`9NU*@q zXTOnSCDSg|4V@=$tuDCz@KGK6Cw4&*OSc%yLnnlr&aXOeE?len?fGLi&6>u0S6J_< zY5%A=#kTNg(uR9pKZ0wzL^rKD^LkfEd!m@?>R)z?wKpGHH%(-w_Q^TtPIpb}E<3cy znEwFZxwGn56-}P`3T@24)lTEVwr`=8V6)_wXVyK-%GSVA;R*iqE~ z)R_ra@02lg{=3rrK%y<*|C___v8U-<@ZRd;6H3u_p8MPmsLxBz5^eL|)47dl&mI@aZ~ppa z9Qw}=ch;18svHw*2v7cazvYI=f<1NnSrp`Zgc&B>+rNAjC;Q{x`!j;<{O7KC?je7~ z;ZkBXm+C|Q!`~WZnmK$APr6^CUhLK4bIY*r;tHQkqxQGIXEj`D|N1-kvI2waa|6js zflm^5XD;q}bEqS$hRt>5ce#z1PRe^HuBdNcZSkRPX@z=V)ZCEuO%pG?J#1FzQv5L{ z{^{o=)g6oM7u;Ugpz6n}2g9{Ts_mzkUUnBgQRQCw=Dvo^!qEPp%h?y!-IKrk>d74^ zhe8*T8Ku27IrA^~J-@>KZmM2eUFD)B>y6&pe9m)yY-6~`lp}HJ{aUT%+mF9lwt30L zeU{T4t}eYAK5cD%X_x zmAzkSwCAs@i{8Xv{p*!BeSWiRPk7_KdD^);l|l}S3uZp^yO?ueS@vO}ozaJF-Y;1n zecd2&m%GoF@4s!IKW5}<$XBZS{%*tD)5={Q4=>K}P{^-e^YV4CgTi^sqUlc`g?wk= zEZ|>t(O7Q&zq0c>3%1+4eW~+TUQoUxxV*BV;fn3NH%q^WdOoQ)n)dgpq3gcnvQMI~ zs$3m@FbLeJe3P%e^ySKKw=8=>$5+e#&(rCw-<@9d_as}*bvNw~_XJPpILZo??$d1+ zG-dp&xleo1^DP&u-z)u5{=4`4g?F8A>?Skqzs&x}d(rD3?@@(hMJ+)w#%KGE$H`y^` z`OBSuLd_=o_r6b+TKV(9hKA&fS4$5a5%zTpk$sa@EumS;Uch_1tS(eWIwNUvq~4{n zv~ziNZ@6r1d9ouqy8|z6p1ShE1SY4$pLlB|Ityg4&s?bWkg139^7AIH?8Qvp#-A!A z%1qgoSZ!h{dhTR-ec^)}jopu%{!VQ*IB}@qZp6-}$&+ipZo4%3@64tvO@(V0ZsOr7 zn6&8JB(AJ4CqfLBEnj;EZEF&}SYyf;lv``E+D$6|I+yfpk14O2m^b`(+|*;dv#9H9 zRN>;QUfiNB3chJP&PV6icX1TE&Z`TVrQ>>KcF&i_2kg~mibuY5{yd#4RP^-CB8eQW z>8{#aHXSy8uck=%%Gf^?uXp`4s89C|5PT9+RI$T> z#eUbyt5+8Jr+xmrXG`B~>k|$O4oEj^ipoptq!m^vPc@WGatfPI<;29Eo@tNnGeW_2gOoBH88M z33dACgLVY}iQdP#{ZxaYL=3~@lrpW~Y*vXZGQSkrR35Wvz7)EtbneKq4I4XCy~|Dn zUx>aDdPS)%s?tOwT#7d)A%Ul3vi2hNxrXV#7ilXm4v0B7yX=8T7so{2)X=wUTcwtY zt+8l(wj_1;X0xcA2~I6CXBQcWpV<4GT_*fMpghm5EhesIr%x~M<2?QGR@{~?`K<>z z9&n~88$D1-%e3`;vB<+ZI_lW^EdQC8wr{DD5|?<8lB4xHi5`d6bMa~AoyMw8%4~_RR?C?1&s9l1H7QAX zYErBj|55Jn6Ji@eQ)eYRu8lPaZP>a%P3NpfyLw{g0#BX3HyK^wvA$Z<*ELDr=x|EeA?PULR&hvlfEXtl%zSO(j{)dD3(ZlyQ`n{|#Xb*}qd$Q$% z0(YYIY>P8{TK`q)x<5#ewr;d2;W=h;blHt}8JU(@b7ycp_gr#uV$rPWPKwJ9_RqND zy)!a>9gkPVge|_D1uhy%A|6w=Zqm}zbXdG@{_#l z$@#O*wU#+2UFSG?Zr+ab61q}9wpk?d2t7OZR^w>sOOMFsi3fXHcT724lBx5up}KR5 z#{NlCn|iGK6Wu$XXj$BUA5yaJT#ktHifr$XoXXeB+;oa2&9I0QyMA)2aI`14XakblIr$?;wK<728T+8(P^XV0w8TP$&uP1{vEx^rrO*K(b- zJy&JE6@2#I=2NtO-PxOIp;b%X|8w@WE!9n4E@ox;X5~djhgrOO57^FLSeI=SoBT+r z>e5?l>y{J$STA)ly){g8N>g^y4pZ11IBR2C_UtF~nrW`c;a^X_((~Iq!#~JyO+5Vg!m^}Rjo7+dXP>M%*2m?sPPF@b(5^j~4cfl$ zovT{OelMe8;tP@K%7^BurSpAvl=+_YGdE`CvgfNrk8)qqAeRIi^I-r}uObL`B`WiRsI&T8IP@VDA&&K+khm$bW_ zrk#ZoS5C=1aNaF(QnlN;`@Qxb3Ys+*D~N3HHu=7Jk<#ry%cg{=JkdSM{pw8RPRq}p zw`K)h?=BPikyTRGt@CAvC`Y#L8iAOJs+b#hPZDdwXuq%XRp zv7PdHBHf>uBmFPy$-b1WCok{&_`xmeIOF%jGZatyoK*cWcUxb^u zf=t$&qkL5+PUm~uzfUcnq&NNRp5nVFbKA=du4P^Ki8(esKP_>(e!8>SW!dAh9WlWt zuJooH({Wsrx%<|{Q^)-7BrZ8(k#Z_|V#69up4y}bFia>O+ z%r4Xf#%h>I&YH_B+J9E1rnjSBmv6N~l#sgs&c5c@E zu|R9t}piC#v;F(?n1@oRgVgq3z81nHwsM3_r9gFMTI-7lQD;5Yr|v1!2Oxus#J{c zd@WI0_qC#;n9s)A<49oAiRp>9C-{%8{a5aL+1};ebp9Jk9V=xg=qEEabWM^`^l4^# z<7De=`t z45znm+w4~~r$3rk_^^9+f}OmQY`KMj+b5S<*@>CLhwYSNcB-6x)Kk$C;n=%=j!xi_ z;70|QPblpnn4U4dh-@J5ak6Wr zr^MzxGJIAKPZ}i)Of{Cw=k&Dbk+`Jb$jftjqP)sHt1iv3?1VyrnZB7#*O^?(dM(cv znzHp?H}gNBvF)!^sp2KDG|F7NlSjFuPfeJsX zh3`6fO}-L!`IEWUp@Pft?wxw3DSxddnspRTpZ{(Ds}H+wgl)*)%DVE?jvD*Nt;+(1 zADgZ7o&R!wkXzK`jyd;dJ`>V7p6Hr(`Rbtt#_iMj7u}zA63A}aE^;&1;oDnF%Ed3lBIgHjpyD|5JBrtaWhGw;sv&xsDR9vCRFnp(>KKYZDP zN!sSQ!Ma_anv4Wxro7^{f3KDmXce8~pyrw6(iEPQ$=efTBEMJc?NaaKWlamyB{m+L z*Lgxq>V|E0Hs=&I#&=a>1vZiOdNWUm*4kSKJWkwa{-?mzmAot8~0 zQ#j1Fuh{zIoReC+lPB7)X?6zcw@+&y`o0VWo%+^3!k1f zU{F__kQ^Vgz3iOxFsR?6ZF%5wS`_N@STv zMNLz~ykNbPYdYEvs0nWS*&ycFe}qjh=f%;s1CJbbC)?gz()s)32KQrg9mMRI5B)jw zYMHC*is#mAOKgOX&7ND=({IUr^yE={?I@c+YfsEhI@Kp;&CuH>9cUM#bmPpu{>Puy z1CKhZ2XJHo3EI&4{>P_2=UZ;cdl7 z1rBaB-jpk|rBzlf)m%RM)%h5vYZfw1>R#V^R-e6jE5ziGbW_x1E#LBYgf*g6KKr=rg;`9Ljb6eYz`{^D^>S_WN&r-IeZ(dQT+CypPb!sg}9S zp?g=ampPSTU4i3;YffwHC$D+(!^rKheI4I>M&rI4ac>m2<|c6;WPkI#Q$%H(vR<$I zzm>;3pBi&rF`l#IZQs{#9ebS9)UQ4C;=H6a~^>k)%X!{nX!jqwm4tiBCUcoF*-Gx&YPUhx)86x`UkBo(n)wa8`3b~&w>K3S{ z-*}~5rOf%ip)6vvPW+pgjz?cYgwrP1)UuZBXZ~N8cyP@bgM4qZOGqH6`x&2Xmc2VEkh}A@gWg`# z^*PD&{nyv7&$Rrp$0uY1_w1>vQ|!+r2-iMx=__4&p;y$7?dg|%$EiDZ_S!FJSU72o zZn(z{Hm}WAN!-U8uN^=8ewo(NB_AyNkL^lMP8Ah2Y4;YeZq4An6?v`fP*`zMd&WCG z)4lB(%cpYAx;Is{^Yhe{%)@@MH$N>{l(<%HGuI`---RiDA-hf zBJsxE^&hV-%Z`c@n)X#8uQP1(#|(WA=7?*{Gt+Xm%s9P9+PJ-N&D``Odjk3&7VL5k z{d23^YFW3w)su{EON>IRc-e}irZ3AlbxBm~1m8^m=U;19ZM?B-L*Jcie=L%v9-CbI zy!Sp|>)G?mF7wpPRuj;>Gox7|?s+b!|Dt8-n>Kfa`+W+^zB|i^Yl~ILg*(c(Y{a~J#WXJ9R649pOpE`5p$j1dS}g?Noi}3avgEvYvRs7_On}E{r|xkFFv3D{M({B zP;B4Ktzm|_k2Wu7D&yRLp-nu{N6cg9vMXZ#IXbJSa&g~`RFYm%e0sWL(PGVA&$fG> z`1I__*LihHYi~B|7jIw3C~l_xI&}V{vQx=AW}@0oCKXizH@U9)Y3oaFW;t!5mXe~X zv*UzvW;_3tCp8Jd?l-3eOe`yTUl=;+$>UF<&#vecr}?~1J<+m3T36u3xjQ%3KJwdL z6P~a+#9IIOOVbUrYHx7eTXp}& z+w3O`ZGNYJp%91a(rfH|R)t}eGtMqKy2xU( zsOIaBOx>HJTY@Gl|0%wkah2inn``x_UHwYxUx(b?|F-NIPpCz}|HDVsK8as$U(mVu zcC2%AjY{aLPW9XCYSm?$pYW84ShyGO_55{jfA9|T%GKt}_uC#9dKjjq<0|n{`q7ff zlj}aNxqa~30ju!zrFk!{wy!<9KlsPqbw|rfQ>Lw7V|VGJ$;Njz?lZ-Ie@uU>cT#un zUPrz+xAm>Wm5enj78uS5`c}-;{EdIp)ie7lzD+p!?qpcY*>%s0(<@_qf+p^%{`5P3 zN8`=8J#QzA-0Lc{Zeu?D@5%lHJPr>JwneHke>Gw<4o!EgXZ`fo&uvoJ>jgEMCCe4O z*6(>5-*^A(+Cul5z@2}Oh3#Q|81klZ)sOQ*{I9lcd=-E6;FDGT&xKTo;c6DSXUmr2RdNUcfQ z_CYhk&&`>zw_d3Jkl4G94GX`t7S<@t`u4GD9_Ndue~t4$yXaJHuI0Q`!D)4CVNun$ zP4my073@5Iw#4G}xiB58qO^O8tP_gcyp*4LZ14D@&(Zt5;IzJF*|C{L=ee51o`}i& z3IA<;RIREsF@I6_nW=mSI+wh89l!51qtDS3*~OnZc|UG67tl+c$jNxj%%ERG+agZ# zOnzR|`J0n%OQp}Re)i+NTuPqPpEX%gt@S$&<-Yv4L~Kr@zSx=9s*CIrIA3-49P|!4 z_I~m&{e+)JN!98_eeWTDZ0&q%=hyHVncIhs$_ z*%b9WU6-*X@{`F*@k>wt?&o~=_w|*z3tt?M+V2)}`bBQ^hg+iWK2G*y{aa-}{c3%6 zAKT4+2kK2qN&&S9oSM;Xl`(EERQ~Pv?xk9*9+SHfp)spRO zAN0;k3z7}0yyUl&i}B_zt-?~L$v)Au~s{%iY9gWsvi=Y*LHYOg;voWbXuJNxy; z!z*sLvK^keb+Hm(T1q+Fqle)S^ZsSJNu)aZXDg=oZ0T#?%{j~AXwCg=Q}4J2Y^;b5 z>$@*{P%m4uVCO~a%3QeyakDw5iv(^uWoVgyU-ECw4F&$$llQzm@YCYZuNRFw(sZmn z3^u1~mThbXtkJl0 zl1s>c=LGI&cLb(9YWE2LlJoodjZFzH+}x|@-)T;vfZ|M_hY??Xn#P} zbw;@lv&}oY*4dW`S%2jh6YHwcnR+in31{Y($aX*Pzvu2MKM`4!J81r@)Jn+&HK-Z*q*oos!=y{cy4!^h&k zcBXB3%3Gl@?fjiD%nPlJw1T?NiZyLsdZF`{uf(h+Pfkwy*ENxgGwt()4cEJCcih<8 zT;v+zDdTxxD`m^?2QIzL0XKrhT)U3QZ(s}#Tf3h%TPsZI{`D@FpKc$1wr|p1E__(~ z=^_1?`*szXN!#b_J}>$Hre$xnjp@Ul3A^L@a;$}TB>KxDGf#xdZg62;&7B|nnQNx$ z*O>VhKhjtJar=2wEUdAfFSjqpK8R!Kv^SeY%Puwc=FM0uSKa5bfUzjFl6zA5tJHUQ z8#7Dqzud7XxA~BI^lZUz!CHrs7erV)<-C8i{c@Gy<9_X$O#y}(Oqs`ia&1@9+BYS4 zsp2#H>nxn&MSKh2?GJtO<+jD!=H6AmPO+TK+SRmS&6Q+kaivJz)A4#`YxP1N-_dma zmbfZ#((JaG(&2&stXyRd)h=r9Qd)c@mE%xmo7`*l-zk%pv{VW`ns4W)7SXh$>Ou`) zP5yVc8;UOvG1wMa@pOOux23YT4{erzHAy-8g7Njw0WwOA{%$AAy!;DA;!a)32<(nDN_Ps& zo;3Ngy|f{-{*MXmGs8MME_F%zv4&(j#Wz)-^L$*^oEGd9fAUU`jnK?3T5l7?)%rvq zHSUONlfTuX7a&|eN$_mNlQ|!+FIn?o`M2)NUQ0OBt}A9tR9(7l_pwIK@|S(03cn2m zzp7d*com;_cYAv}o!8iZW+wOc=Tkz=m~Y0n1g^hnw9Cq7_J1=$|jM zBL92wi=2}6)?CN*S3OdTi2Sr}?`na4YMV1|7m45Gn_v9q^*&aU`knU|{<`t)gUgdw zvQy`8Fp}?izb@*j^QX`lVK>b?B1^wLV?O?B#hZIKj#Nw(+F4_K;!Q=wcTZo1Eld5j zulTXXdF^Y?tm8$p|1L-EdN;*pL%i@Zn+Jan?frhTwn(D#=vzLSkBiUT5mQ|%rgPG6 zW=@CpKPOJcrBTh5Sl@o& zzQS{_+<#6blAE4(PRR52zsIsnA%LoWQq`u|vgXf?H%m@UEiUS{`f7Q2o>!rW)kVeAAL2iA zzM8-1;D+GC_wP5lCBF<||L?JNm8n`!)e%E|Q6H&&4>iA+Bp9r%&R!>8vWrpKJFkWNG;4?n*G963sT(=e2D>v5ogGi?(+yGryK!5tk1<{Y)+4 z_nn9HzTJAJR^*>Ohd=D`uWc?Bn|ZJD{$*nlSSR}>V|DbA&##Y6y!Kl0(6i^!KhAz^ z_^Q$S)NXHa(B8RCNgGA3%CvvIDyU=rfx+mrZII2KlkYfQe)u+_TsUMx?4xb`4j<>4 zS2@WCowuEFG1Nl&U%$!6Xba^&2hG=vvo0<=Aa_%|>Q>`U<|pQ}ejUu*=v$Zc*nY*W ziMwn+>c?zv-nQcNG7iOwg*ml>($|-)+Nt(3F)Tl6JMWG*&9@vS{qfmXly(ZNfBMA7 z+t!SaMe)cE_PX?q`jO}3+nX~qmDWdPeu(?VrT=ld=YNma$4p+9 zZey9dMeoJDiX|3?5iy@RH>%CsKK0VAS_bi4f!_E}KQI2D=YB=6@o+rXmrai%Hq}mA zyvS!olKwrT+r5X|`}1#Gv3c%3-v8nxi>m!~MvgFTp3Wa#rBV{vyBGXnc)-}5!z}z| z+7Z?Flg~d|5VFu~)xHIuk0QO)Z)(;|`JpnYU)ECD(25Tpwtl%k>K+R=%dFa98@cT1j=8~tY(=sS?7!Syg-)#I`WEnVm(SYFprxBn z8AwYoA3asLH*wb6JwMr&tp8>9P42bOHl?%iI(;l*+HNuLcMEP`a<_By!Ied(yy|*~ zT=(A>`Jw3WY)XlVXn|(8Wzq`X%)dJx+W&ady4z`UZuOk~KVo(}9=2AAjcdM~Q<9bZ z;8mB9kdM#=(>W|tx6Hcj{GE6ni6^zZkw*24u z4z913Tfd>&_HuD71$;fwV)7n-AJ z*tqfkFTsx@Pd4qAolyPk;R^4=#|0#HS-z~fe8cJE zRjiI%M?O(N^@Fm!NMC}W?`0J>-7C%Rt`-N@Epd(4ypqyeq9Zcdb-C=sT!HY`w1+<) z33`9)R=O|n^p5*{o^`5;#qvV?RzEoQY2sUnxIo|bwcdve8N8Y13O~9eTzEB_y*o_Q z!OOcRjFVeAQ*qsy_E*Z~avFu5mo@}#K4!b_mGp*t6}KO+YG0*&s#EB!O60NVz8`m{ z|5NgRyRNP@Mo4vjQs}INsm%sXW~N(C3i$^aDe6jA)HDBW$w0U2Megrz zJP0ii*~4YHjH5Q8YNyql87jlpFgi8{gr;GI&m#4bWfP1 za^%q8+5Hmp-(Hse=)?3z)nfMS4;c=R&oqBa&3?BzRQurDo~+dN)7&Q4&irgvc&41& zvsw72__zFc}{*&N%SO_hso?B~s&cIZbc*R*X1)Y+!0-Pv8$nZLEg)cqUB zXWf={C+0YB`C|~~Yqe$e{d?J$KWi*`{^!pXv5<0ZG4cL`_p;Ypf2;E|ozI-}?VI<# z8HFwPE%tF8?sJ>ik=~yac73{)>LRAF#;`92C0o+sluFrVT6$m1yXE_PgNEygHLI=a zO8kxI9^86jO19_OYj2r@_RQ5hx6s3adGp)wZ&n&pPi^eFeedJ~-zjrtzm{kU$1Q$$ z_Nk(O)$GeNe63VpXMHj?{2yPsx@Yp)uPZlvv|hSxEyqMN-s8Pa>FE#4T`s599uSW6 zwf!0Ptn}ayjve`uD`cV_nZL4`{;Km@nK`rBpkKgmI`2~s-}M{ziQn6%J;%I8dUI-B z)hZcIr0z5YNtIjVrp8Qa$?$+{6(;W9*hS68bmc?t;*4<+|! zS$635Ouakxeb^4EJ$3<`G%GjkKK?Ikzm#Cdf<3{z)lbXZ@ICNz(f7&wzV?5s?fx2Y zKIgJT!=`Y@_osUTANO${-Q{e;8pN|fi^||JbccNY@ zhxhU?u=%v~@LvAiHY`Dnb9PiN{^ccnFr(V%erLuFxg14dNsg2oGRlGuX2|@i`^>35i`p(H9ns0{s~0}OvFE~b|NjzOX9@qD z&?1`jQuMM%bMmEvW4@Zkm)GA{3YuT_bS{6&*@iu@S|)3p`W47|$(YS_`-}|{YknTw zc{k8|Z~ZRIUrc*)UWD)4aymxq>5F%jmhBI}8A!HVwn?yCbct88dQtmoiKDyUo(VN; zJHBYTcdManzTjMqqOixaW@*XXy>atVgVfSX*Mxp|9B&9rsoQq&xc@}T3_X8q<>KG2oCm@jdkXQx*1(Ishq766OVIMzcHw& z%UtJ`$ojrGn!q&uZ$!)5ugl?N{S$VkEY;wE0u4Bo}uWjbO ztNlVF_8+&nTC%=t?s>g)i|+hxkTo?d5Iwl-bJ&)1+fpans5AaM_V(s}J|2tg`BPs! z{KI@|N~ZWz$Me!ZZk9g|W`~5HCq*ewzU%oHx?8^^(ew&HDcvrFQo5?oqw}t{m*%M-PVsj1W zJX|&V)9u?fqFeVo((K=&7kzuhU(Q#30>^?J{wD5SIpSd@%z)4B38w=J&OtlM(@J&uS-{)Q^nQ5^rwf+Xn{v&Er+!os3 zyT$VQlFu*8OH378e?Q*Jd`I(OS&!qPe}^~SoAKaXna{7s#~sRIXET3#UC){F?^D3h z--{e-J~vq8Y(AuXKg;QKaNpjI#P0U$6WqC?=b-8NXI-RheD{t3McV4{W9b4I|gyYk8c<)?O{jw)T zzNRZJboHrc`@gqVP0D(jF#kS+QI5it}9k{o!@V$B0(Bh^h6TNWt`t5sHtOid0`eY7b`w z@+Z~6*{k+nsH>LgvX(p>#U^vPSxWd*{ekxrS93ozK5>ZQE#t|!GH;F}sdt$VXxFJ8 zTDK=~?Gy>eOTB+Wr^@YGb1w174DQz%{NFvfj(DATKc)4;iTf*7-d?j&{^~-#?5oSd zGA}O^>&U-tn0 zNhfi7En%GGe5d?ZGcS9i+%Jd!qPu@ObNt|ZsqN_`Q;q&mHe5yp(z*mD;7jbUwp}5T9CH&ZgsXp={(7^CpHwUH~ryd&bG<;OZ#1m zD}V0I-u#qlm+^n@x1VROG4ix1E5Bb^`sHdw=prqxt=aKwHcoWR{quj-TdxNT-|YK; zqg-iAhga7rv876)N|RKRy{EA?pPX@VhNgF5)RyI2{&-zd3R)TBaWYKPYqpqXr^{?H z-ARw?<@XqtKbu)O@8bWzHBNh<)xEd;ey8|++4-%)#?~&CCC>*4v!6tM7hP*Zxu_YVTq8 z$>zIS<&|fK?6Ix4{qM+Lc8T8pd;8DJY15ZvB~CnZ{q}V`!*4tO#~I&xQ1tYz;Ne%3 z@8-{V>9ytUdO>Be^%isY8yX!cTN3#D%+p)!XQr@cTJ^21QQ4;Vy13+X_wr}gUv%!u z|E`wx!()Aoui2L`Q}^Fm@n}tD+S};s%~k1P-tI4DFW7HBW^(G!fr?+NKKHVH{U`kA z%kpV;={$Ao{NvYOUsY9jk^5!(`onhbwF2ySnD4x2Re$%t(iZMxHC_5z`(xs-tom47 zyYSFizUO;$JuNpjC*}RzTa+h%r9@lt_OvqRRiTA#kB>h(6ZV}sdHV15)qczJLnG23 z#tG`_RUcgP=kl&o3deZc>e=>s))lbb{jvPp^)2>N?Awl7PVfF9yUO;-eVw%-R!^2a z+cN#k{6lrUuO6>z6^*;)z5Uv|S>YACpY=TZE!*kMx!;#t_j@S!TyDQ?@y=+~=$n={ zH5b-9vNDQ?AUjNyouJzdV^yzg48#%8Um0ol%X13qjr2mk2 z>hqipMEYW}RxaTx_qmt7Z|{yH@1beWvb*V|7EGX0**+dkZ!r9Vr_Du4Q{KU>VT6>il= z*o45^Z4E0wozT)s_45H9yGtJj94ekUwbwK1$)Zx@TT{2c z(eg^z!o53;XXX6M>q;Ch=l`8lmU(w?y3VAq758s?>#xh%D?M+QQ*LBs;Kv7HU)k5@ ze&u_+I(V7C=Epm=7wT@ExYmBS=*V)ltG?UM&oX%V@*MA(`OjKKPs<0WJ>AFkbxZK6 zdon-TzA9RzreBb{%q#13>8aIyYm;N8f@>m-c{I98k8T#r`95yX`MuYvPnl8c7;E}{)&0%C7VCZ9c236q&&20J8a}JZbY2pICh^j^q6w6*g7tbHL&YE5EtynAAEiBKXv@4H0i2$gF=Rt6s;io3T`S z7f+d8;`7QDqZb!DHk*Zhoi#P7+Bs7^e80!MH6Q*&gxG5Sx@>!Mg1TP!`8N~GxR%!F z-B7Myw#wPBe@3YJzK@IR{`Ad1IQvQ39MMqQnL57NRuh$iro6N}lKWWr`eWr8 zZmIrXu<7x_{uSTW%?(yceRbsO?v~k`a?YEtY_D6juiCQzkKf84n_j-0<3H=O{SqVB zeY4iDSRHs;=5OU`*8YgiqWVYvKHJ}E;P+c+`-9mplos|$cALjv+Ok`9%lC~(Bo)*4+S5hLj`0 zclyKI>Qd#?pL0&$JWprKRQV+#8sds;cjuin*|{v~;eYBoBQ{wKI>R)XWo#W}B z6dUgtxj-$aPVqs&MY)+8`n|gROFXT8TV^{Qn-I49bl9$6RyAJdA_e9>d{-qJSJIb~PH+oN>aN}^+M)T5L?ccO) zSM!N{u2J~A`ejq=krOwfW^ZD?u5G-jDZGB^kDjHOH*6X5AIeB zN}03%_WIMN+j#l6Xt(i(+uhpvEKn^_IqCV2`@6js$4uRBI%my{jeEn2K3`Aonm#|; zzHH0>9hELwc}~+mPC9#u0$%(-RsxO~;0*0Q-j zSFQi7I+fXtG8a>b*k(~>yyK`r=NV&5tJP>Y5Cup z(pLA|9Nl;A{q}8>o-0?L*1yfCq}l1+qtl!9PtCV|mM}&6<3XL9Z#OpmIxFbTBy!g7 z=<*v`8g<*hb=uafxt5o_`23t#w~m~-wZ!=>cQN~iv?9)k;&Nuv0qjoi}xGHzZ@IHf{k!$% z(A`(wiKte-3cGvZyG^N%X?o$e8B@z2ufP9u+JaTTcW61@|9p6l|MYk*zP(HQ))@X- zcfuxq?~W@9rwtQJ5`INRUo!Wdy6W!cr7ricdz$Qh|7zcYYyYLBezR_!@OPuX8;3B* zb{CEo$sPJDO7FifQE2^s$KSi~<-V{S21$o!`{(WXH!G&)lV^Ug|ub!)Ewf{&$aZQ`2p~ zqkmtJLyhSG_zIObbC z&ki>=RjaJuAGM;^q&C?3@zf8I^2gr=#6AAE>Cd{HeNFd%UHkA?f8YO)GSk<_JA5*! z4SBq)=>C*bd{0;MJgNr9XGMX$d#Ew%sRnbR7^x28PW+56|` zuGr}I-8ri^E}y%0^$dUB$EW_z^kV#af6e=iaxePkiwCbiY+)As<<)2I({JA%-g7$S z+I5?=UnPojcCX#@`1^g&&x`gR$0RlPTvT&18 zpw_vWgEDQ&trbN83fvlkx5S*`EZ z>$tvS8kg&Nu`=sT2~81oPhV7rm27=*H>AiX?A*1`gS;OX9rBLna(xwJ?HZzKxn_&; z8lz30%b(7@UH?ty}NF&RPnDHwaeF5A5)*U=lqF1;lKAk z`xAKo{Itle`RBjzUc0kp`(Ic0J>8w2_w*xgsmre|p62y@+p#5@J5u{jnyolvvUBo= zrpTz{GbZf4uC}`=$Ex;1>GidV%ahKf?bp$a)HmGJ>y*55+CAf2+n?1-dUo^rii%H& z)zQoZ_o2x-X|vAFMTiZn&-~DUYifL3-9GF-J0!vY*Aa7 z?Aa^3wx3aT%~rp@tz_@S8ktYaPacYU@o`eE6aSs}8h-rx{c&@jeNK4&)u3ulK*pV~ z&n1OV9kV#5c`bHp-i(U4{Io?O{7uj=i4-nB+%hehqJGClpRtEBSN zSLRt&&Ejm&j(5*5`)~Ad(eL2zy=-2GXBa&K3f zj=y#;6Mp@^tl-pr)bC=Q@|XWJIKCJLZtH*A{jI}dz5j^~wU1_M++OzJ>%oIL@*<*- zcg_CAufWA?(3IPtd58VSZrRFSlWDmsR`Vww^5hYk>b2~XOwi=q6U8-cZ(b^%%C^zn z_A%;bkGO!-BG$>3{T6+>M@~M9I3E(1?3W^KEcAKC-CBnV-kbww1)R?sPflF2p+HOC z&nH1TCXVU#gNq{fCa1|?m;Jm$<(QDnW4R+X?}UV!pYN#3d2E&_xBdF5LwXXERW|a; z3ivI2{J_=ZS>w!_3d4E1cY@A5{v;XJo*SX5`9_UpePHQLx6(s~T1hh!;}zKts{CaTEXb_rzr zePPe^LZjO|xC?u{d*@l1Hi^plr5jW#No-P_bEJ`>PW8%(3j)W_Wga*E|J26aEJ^yN zm)P$UjkdB~J{9kM$~65C8P>7%ipa^eHow&W=r6~f{pD!^hw>#^oe4)cQl#a#)r#IY z)<5-i`tP=h2Lg|NKK!Qbw&ywi=AEy;p9!5mdn#9d`Wdr()jp5E)?IJz34gl3PUGO0 z3)kHbSnD#Um(*|Ba@F{Wq11Yh-E!VRES3`_9FmMq_Uu$iv)0L!N(}u}2g>2<&<*yum$owv8x$BmBuM^(Bc=deOg`2ai zSDI}WI-$j|UtmLtnDjqk-p1Pof5m+oI^X`7yYGSBguphX#)Q*s+X95uXSAAL%;@60 zc#Wy%@A|D$T(2g76!Q0FtepKcL5Sb?NT=2P(+3Z&5bv|Lf6uPjrNPAiTjYoFWZs;0 zg6~!+b{^cKI(bKuV$0qPi{BeKEcTQi2%B-Pt@Lcfg1FK@437$FOs{-pyH@mf z!aZMM4;Kr0l?Kh|`*oMJxE;1M+F!n*5WMz7klB4cUxQjnGC7B}CP8ZEsqmXGD(}QA@s>RZGU)!9v)N;_aK~Q0lr#=o z0gXllFN1EzEBteh&8@q*=TNtEqk6xD>6siX@dN$ zO^$O*4(|S3{jbs5Q>E$Bd#*$#N0tXaHb1o3{oj5|{*#?MPSnWhc-(u%d2Z?9D3(Jp z+kVc8=s3;3l_|bT^EvmeResmk1hefs4>q3i@Vm$w%R=mu9$7p4-E@;ZH+dUj1H`CSx zd_MTFf7$-6U*B}59|+XoY&kqL_s`wk|59`2TUW&$PY+^W(6`J>VaLXW)0aJV-oE4# zvs2)G`>RE2fdLX9is#1)3%|Kmv0>h~oZuO?V$+wufBCdcA}%WIL_T|zj&k4%m3pqJ zhg>3WS_F!JZayGmAj|eTX76VUWya!z;xaMmaY1W8F-sqn(a;DtOL;A{XWyQs;y=0$ zeX&$g>-^2*Ca?YG7LSQtu|T82)Lgd5>mJW-oZ2l~E^umb;dyvn0zV2&C z`E-TL-R|lBNTvZvwmgpZ;7?0^O;0cJ8!M^ z+2Nmf+K6@eOotWgnlmjn`8sZSINzs{z07gX@+WBxtGP~;rytg<`I^6>@%d{fJ|*K5 zTNp$hKRYGC{xqyXQ~AzkkJ9@xTC@M1lv&e|{m$PhnNjmqb)0U(ep!Q=wKpE5?-S&? zcgVi!qynqK&E*GGwRvYx-p;{4(=kDHiD<&#x&QnQ2q zxlDhq3%1v`eU1M&m*-neX)l-i#Fk~R{>=60D*a?&k+tFZYzD?t^WIzdZT$O0-{@Kc z_dExYH8-wStC!WtG(6w8WllXO-x}6rP8Mmi1GiZe8I@*lTeDz+fe`Q2sqeSlO@9;6 z#prUa<6v~%6rr*+_cGKs{+2FRbWd{8;Fg_}HQ9!52KWAhNy0au83d&sC{8ez2&j27 zW8180kqw+{7kywk)%Nc;r$piWhKi@1llC?+Z&rQCxhDMZ-cM|M-$`HlEPK&ZeO0vm z8#b8=O|IPq?CxAPjdrDn=e|0ku)Daqe;JucRBF->z9B+j;HR84op^rsj9@`icc{ z8(XU8?RhJ`uvjXe>mS?7!XwKB=Pgy8oVhY#xtaFC4sYK|>X;n;#JA=q zheWOPnPkP=GJ9kT&mQc(R{de}|2*~sIow$Wa~%`gT0SP&8}Uv(H*NW{1g_hbhrXK6 z+32@;I`f~_*PdQJG3*k543fTVY`hq=vFWdF!^S=y_E`;QF1(7%TmUI z7te(kikz2!T=Ffraq>>;>W%w!p0Y2{_Y`5e!uwWo}^}+n6^jmPvTL zhn3y<;kjdz_$v*49dv6R3QX1A*R**ecPfX3@6sfx$Y~B1_ELSPu1;iOd(7uLZa*Qi*=VyPrZT|mftYA`KBlPIQ0jr=FaZ?Jir3_Xa zR6HsB`t>x+pT`_zgqJ=%teh=uC#38oArhsrefqh?ZO2ag?h$5iN#&VzFzIl~-9~m{ zf$MW`y*c~k!`Fy=%l2j^GyPubEzGxB^3BoCZi&1*j!t@i!YUX=PGt#NFl)?gWIr1&0&17RW;$6`<#Qut(7Wm%$?7Xm?uiGkz6+s1STaL@lk$F+Z6!^&D;bXT|j8@`Zhb*6phW_Zw z;}R+=W|K3u|LfH$8MIl(;hlK1f8NXE6*sMqu9w$;%ar?~XW#Qj32j*>QQ=#qggH(x zdJua%PIrdK=kl%dTwT138#&^I+RqEwTP89dkvQrzJ!VVp{qTaASXrLQX{$Qem%V3r zK3`t?Vp;lIMu%$wmNT{-K3p*ATJX(7vd?zj)DLIgAlciJcT{ec6L4N@t!Mv`k~;WAHgW zP3~ZcQ>4#E$7Rb-ByTqnj95L7^HA5#!wv}*mX~H8`M)Ug&zng*YK}!IxFjEaxOK|1 zgrlx{0%s4$O$n*447w1+a8jiCrnZYH&!qiI>*cLVcSt1la~xb=D9o#^mVeMOVA~xn zgWp_Y22MhLzx6qecU{_lhF9~*vvY^dfAd{5W(?XWv1YHo@kXV;x(UwZDQ6$0`)*

    @%4XM`Q;I)g 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 IB6hvynK?VH=7RgJ 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


    @_b>_ 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%0DTtYri-beB57ToVP>r--LHIZ&%*R30dX5 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

    gsz_1E}C7u=gYwbMV^;-Uh2!uy}f(xG+F(X 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

    >PW_srP&__g2-qG5z_~7}mGx z@B9ycN|{Y;raY}Z=6`P2VfwWBznFUYxgpIlY#z4}Ab zFVr73PJXR>UzIb%E#2q}lf&nG-*432$(y00oVrGG($NF!-(L{?-gVE-_SC8_W6|EN z^P{yshc15|+VAV!T&zAfTjjZ~(C04A;K)t3vkh`je_OWTX8w&1mAUhKcj{{co#{K})=BB>4w;Q}_6i#i}W9s(t@~WU*-L@;OR=ai5 z?=Tikd3PqtQB+}eZtJmS`iZPis$>mi(7V2 z@tngZym{N^isM?1t{1+U-247UwRO+eSN&fsKF?v;X~mTO_Uskw_5l6rxFjv7!*f

    vE0?YG`3LrM{8DlRd1tLzx>2R_*6*wf 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

    uX7T}-xLbg01eY2TT`TS5EoDqh{T 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

      9BtmWCuKQVInTHS9PL)q-<_K9=E9si zUy`O>vpmbYqv=ezx!AcGRYtzvU*dmhrFBK?15~qCQH&z=GFL^XnS!?kl!knp|>gE!ifsS-+$+1O?&#iY2h=~ z$GLhph3fJr6lg`N{JojVNt^Md%sE~jA!{^)ovNp)x zs(I@#?t1Ox1H;YCa|JVlKI!aSv27k-#GUzTvzMo?in#o^Q1N%ppDUMJUg|Diwa56b z?SrSzg-dq*Q9ocDK7r+E>Jj@gp|i@pUZ->VA0_Ol{g>0<>6fU{pmFHW2H8!LNetfa z_rl))y8NC}qzs+hH4=Zmasm$J5mKDWQl_bW-7X$@Cb+?Xp3ZLzBh_r5F0$X?*R@0K-HC}_Z68_F<*p_1NKJfo<_eEot&-X^rd#PJ z_NSfhRY;t9iZ}G_!9`iyE9%ZKJUhSWr%%zc8yi!e8sAA=&=DG;w13&Nv-_M?Z6@rs z=e0buZ-Ua{nG4_AwOqURWnNsp_~e_TCRc(EWn5OAlGLCpWOlZ9 z(F@kv`-_Uh1E;3Nr|M}f+rPDB{}WT)Jy}~V;u$#G7bwLiUX&_45qZu~NB;2AJ;h~v z|8LceNjGo3W9_j#$#jC`1jUqa$6Irxk3M*0wy5Eja{2PYl_kduSEjt4@{C3Qz~%qk zeAkY?e7bD%lA8ZdMO_?f6OP|~Yw>0N1I`D=9-HbXT+W*GpP_DlCimU{w*>BO-u*$X z`0P{_v1_p(qUwJwGzvC9dm=V6sN}-tcJqU%$7x!<*H zs`J#D;$t>{i;>Ff*aKafdfBbVjQsaDv}G(=u}dkqC@DDk?=5w=@-^$axtJdp$ab$V z$^E)oxIq4TS&r&E!BR`%LOUHzx7%*22NL3f=e@1n{X8OUpMLn#BWfF7959ogwn-rW z#fJI@125i4p0_4zuWg)Dl<&1ADF1~_YU;;b`QA6{ubc@eearqO=IXJFJi@QO=&t;A zFydb3SIy?q-(0tkUdx+&FT2M(G(WB{IJ8`=*ZJ1RuC;G_y;tYR_s56EAGCc|eY3-Q3$sz80_I8UY9ttyO zzm3oO)!rHXuqNl!U#A_| zzk0dw@2`L5AHTkIkX3h^v$oh0X>&h2vjx)AAN;m&J3h-(`HP19sf8})>w*N=Ihwya zo!yW$>HkaBX0sm)&Ac9XJ#}>z* zQHFDGl`f3SxpS3)Gu|Zsu60%HTy}##XN?ru3*I~d{MYTb%Fo~X{PDgB{siIm|GYyE zoSV7J@QTA3=P7-2uj=VlZN2(4wsU#%fuB3YUG|Hc{n9hr{WnHhT3_VA7Kbh2XZp0o z=0#c8SX^o42+Y!M{5(&1U>UHNVLDcZ8veCC{%9@1;DF$zG*5 zB_;0GXTgUa_SZYkJxeWZee>8f@J3PD+Nyh^Sx3yS=4c-;ZrwUzrpKS#zf<dLs_-Uzle2Q2r01Vo;`ir!={JRYnFfia=mfw^y-&W?>3!}`r`MyzuaJV z;BnhoNk(5b%02&A_hrSxhZ~r$ZJNG5OYqXshCh!K8vlIy(D>)mg)R*#{zmV(bypv* zURN|>#+`;4top2d(~jQOJajy-%{J(u}6xpYDCfBN#L|ApWGk+<7+ zc>f}~RNkroHBNZ-OZ|=Om@a<(L&Nq70w2U@M;~KQp1jp$|B^>rS4AIp?$*DoJk88Z zH@dL?*tdf|(ip_r<~Yj-!Zoj-Sds`^*=%uex7&8&?d z8Pj+-TPA$Hu2OjK^N}qFmu4neZhG$RZn;U^+h4Ot%!oaEcF7gzvJLsl{+T!PdG~FY zZL`B^tK6UG6VI7?JzHfokMZV-E}hvLI?uw_YH!bDVN+;k%yxXGb5fPv^V)LOWP5S3 z$F5AJ(?ZPe&6;d7aa~4v`-!_QKlifTKFSu7;@NC<_e4ZM?Y1{1yq2oYr_ICJTq`o; z-Q!(~Wv;GESRHfkoc8CrcVaR_CayEKNr$J7>DK%OGRLm{6Np)sJiF=5 z3&k~s)(aIwj>c^gyTjpBy^N6wklpoP>N8hFemlATyTqsccE`h(R>w(P zVD~$*J9%Q>H?<{seYO|2IoOA?EB0X~60tW$CxXo?wq(LR69V9sr~BaG5#tCu@4Zs9Fm*37&vF(%#1Xj*7( zz%1|JuUsG2%)WZk!biw!kDKcQzPjQz5q6b4)1uH*+(8%TEe-m4I<4mxcilOk%jtSY zXS==-DAMFvS-L+{^5(52pPcz!<{e`>6S=1?W4}sZe`wl+y}4~!g=ybB9Tz`W_*zqI z)4geDpzF@BDG3K>l%MjD+N7MD|4&AFSDJqF=Ks3$bPhe!cab9)t-e>z&+ zv75UlN$~o@j=9EXH+RMeh-nloPJQN_Vy~Pbtp75WFTm%}4Zfu$@*RkWX zdQ+!iDU)I2G|q*qXEzm8c&+{F_1fjilhOm{&1QCX?MVL1DO|06mbqxlbFL)O>Yn(k zlc#sgS8?`utvc7NAuO_Yo6a1~NCVv`e;sAH?G85z+eY%9xqHTwh z`?QJ_Om`pHyMyJ|6UQAj)|SGeI_EhzcK0vQJX7>Y_GH6d_SmJvu!}f z{rmKOQ+-wWaf>qrdvmO6_NUnOT&%J6TG28y=!wnQf0wFelv-}?G+6rURMMA)Gam`o zcFg?mv*J%)#~U@xh?_M_9RIK4;IzNZS+n|2XZBV&soVOI64Bw_fj_+I4GNd_hz3Vz14OyR=_^XKVC45n#>G zcW6=hhyF{m+>7GpI+f=NiymuRY<11N_{baeN9Pr0e!8;QZ<6<7--#J7WE+H}!q@l3 z3e8&XqvzJJ#h1%-=TviT^Q`GU_KV(6a#}CBEa8gX?ci4-_6bhw88^hZJ$Q$gbiP7(~BlG=b zySM~B^87T;skcw_Ih9wW)GB_^;lOc&fY|?aM@;@Q|NilU<@$?H{7Po`6Xx3O-6G-g zAVBPwsNoUUy!4i|Co9iwk}~0c#((FeV8rF%yB)%92_K}N+-*B|QLWub+;3*sGsBtI z+-@ty+NQoee#}tp&BDY2LHX>~yIqZ2!ebrn_tiDzd{qtq{j%=J+fQCge!ST8!#4i? zr&Sd#1(9z9)?C)>S-&;+jM=^wX-%GS67ys3-Hk~RTK~;-mbHC-W$DMCEpJ{}UkonP z%~Q79<|FCUeE8dB^N^MM{lA`F^q-Br(PQhmj#rcIRa)0MoLj29^wH;&Ur#)pad(kj zyZxL%-Ya#!ov#g9#3#H=Z3_vwCANz>_Q#RUyWi-3llF0C_WsW*9r*s(=}tYZJ=zk+C zS9$N{>=2r1^i0MxUVOrwG`-f60x>IrvcmE?qO9T^3nt6%SAM!)_=ItYP1-!;Zm}!Y z?S+d^roG`e)_Jn|n8VX6+;a|zz4AS6U>|pVZMC(5!RqdI_w7y+T>E!bi0$*_+F*S6 zO-=mNU02+tO{%pY?x}G5?I8GtyY_lS!-?fCsVege9d}ymnt^qC!re z-t?Ot=lz@Y_f*_9vY+tS>Pdo%UC%cO?JaXopYc`kbN-kidEEc`XQi4M2@-GLoR}hF z$QjlDgX4V4C;t%JtCc(0ERA&93V9V5>Ai|nOzW7ya93X`+$na`MYrzEZU^h+3BUGl zND|bW8dcYuD3`K6ha+u?pS;Y;+O8Z|uP+{f$zdJ}{U(p6RG(cdq;zZk?r-lsp*;>4(8LIOc&UvSs*o+`^%raCk18qCpK4ZJF;>1D=zsgLDJD~7+t4~75T(w*zYcIV|Y zk$`FC6U-ghubnSlO!r;w z*}v`>e@ok_`{dY$J<1%$ZTkf$#IWBvG)ZjjN10ePuDC19Y8L%{XMgtltS=vbiCg4Y zJy{d;t6~0Gc{z2@KKAs7y}zpdowed$t#U-r+WhFs=qHmWo?l+{@PXi!eIZe4d=qVt z6fl|}(VVqyy5pn+Qq}i#LyufE*ccYYSNo1fWbW?%BbvYZN`80r8SH8HHd^#~>mpaD zEzee`K7O>L^cTNufy2z5we#8frc4p|`}StC>a%k*7-y$7&271HNHTi9?xzDv-Y2f; zri-upXBIwlj)|g^QCC1gu+>b)lb5Gl)B4P||6u9A^4UqYGM7nfMvFT5F)R3Ea> z*!Iw`bd|TU(^ts$wd#ESbSp8r?aa*dsym{mr~NIgcPO7^t1%|);72Nyq1oVr1mEBi~(YHK@&_^jPWmq+*4xz`y=9scDwM>BKl z*Ikc}I|s!F#L3=$@cwAG`B9%`&zo+oGGvv_)aw4DrmFg9;-6PO)AYF}r2I6KyLIr` zokwcVlLap-Tns5%*#CFut@0O}0>y8Iiv)><`mSBglC9P9X?4%P5M8wc_iAFBH%*!K z>fmW_3*Pj~jJ;CAljm$tX5IhCBA3hV-_I*Al$z7m2nlYIP~HAeX!e91`!Dk|1#gy_ z*lH9Pmu#%EyVdZ(#TV}`h8(HXT3k0L{-m7Fju~EWISTIShvdo5e7H@ieTmU$kq_2F z<{C>^hX^jzit zsjIqIam&7F-|1z3hW%iw{|k2U$tzo~2>pJ}v#pi+!ci$s2Pyb0ee zwr=a3QlI!W=jW)3X-r%vz);CQ^S=T!YpA*YM6Z{tGiR62sxYhBTyRpv+jqYd_x)z? z>YdBH!u;%l_ZLs7=qW4w`*-i$U+b&Gv`)>6yY2JDFn#Wl&RyoFrRNPkX|)wP9#suk zW#-5^>&N5fO>dL0@~l$(^2fpJugJ;`T6vO6%T_tV zZIGJ9C;5Giv{6RVL~O>6PH&kDqURJo`@YRioo^ljj!% zj!AN9i(34x*s@#YYwx<5(hjM?SM~C&8rH8>o6)Gawz9!wNvd5 zJy^rJ>MQ$o!Hgp>*6RfP)NDQ79993QWMM(yoLKuAEq?FLO_(=vQH9?{p8H0OPpZDK zCZ9XKR`~z5%9tP9J}sTRqL#6LS6HRU^c2^uL>2=KJ ze;wHK_0@uJr_N^j+?rPD_kZr|>jDubw)$}kPHW{~PF`vI^HIqwy_ezw_60}h9Nclg zRq{l*-0GaDJgsL(%Rcq5jBcuYzxjmn4Ym)HH!sfpba%Dmt#vsoGtWt=Y%yVDy-_>u zp6~SdTj~44ebrBJWQU&Gc9Xl5-FLD3=`h~~_aEu*4P86qLSvH8SKAv_PsOw^r)X~3kL{%&9phhjN@i<;&$kPA>KUw(>#|+NR{lAD(09Fv>{SV`BDpII3iE#| zpJzXJ%gnTT!Xx4M>ga=_+E4RkPc8}#f5XMmGF?k*k9V6oqtKRM}=$O-9H{smi= zdu^DnxzGF3;TihXGVSgklf~{@$Cvo;=(^_4d&$A?go?GJ``$@M{Ig$WO0(}&-}%`w zv!Qg={D--JIA^|RE3u5>cp+L^l(_4rBY)@LhWlIH9x`5P+@S3A&1?U1+xpDfjgATH zgB9*n8}>gvz2s@q_WysAq`okEzW)-wce+#Ur2vtenti8IXO;hyUd((fcJKCQOOvjx zRGA|1#pBDC9WP(W1luujO`D=F6{=Y@>3(S(o5tA3Zl-~E={n+dL_iom{iR~6bX-e-@jq~3wd-VETLqcxtpWfWx3+DMK9h~6HDaQLZ zWTx@atl5QESFbNTb<6eRr7z9a3k{~Y?brV7a4(0+dWr0!^Ot3p*%vQKuymHZH+4yn zJG0SYh7Bv2BT}X=EIQJdVK%{jv*=non{VEHD}(vg-d2`m8rMb?~tG^3TrmZv?(9)4em{l-g9Dy<1v$EzLABx_85(@?OfjJC-al(jThwO7neQ@Z(?8$#7O~Sf?U;UkfsE6+3J}RYwDWYKs=;fQ#TT1b-CCW+lQHw~EfLwm#~!bF z4&1wM5&gnPB9HsE+&hcZO?u}}Zr#4UIY{$@c`#Ao?E#rPKokc?#zGuD8!AQXZa+S|Es&_Jh-Nn|7ZJh zH%;4m^Q#L!?G=dQW+}Y7D^A*yYwIoHfQk(Fi&b4V7bcw#Q(}<4r}oA*p=s714wu55 z*B@S7zodKr*9vd@y71%^?V5ak|Mcf1<>&otI4iSZ_eE#Dot5%DP2D+P_W1cYZauM6 z*7;ptdXZbx@+B{O?l8|iv{tG4lPqg$+~=FW9sZdg{d-C=U#6yV%_UjOS%;U(EU5qQ z)Bn!sYDL4JU#aXL?WcYh&COZ*<&E!|e{1)w=SbbWpyx~OTu+(W1GR5jL@h7b+bC>% zH!D4I!VUd9{tGtd@xGd3C!H~O!$yl+E(T4u@An40U_aGv`2Oze-Yx5QUd-CI&PC;Y z<>9ZBDj!!qviwwAeDpK(9Vr=JKBvaKwYQ&~-e#GppxWT$nD_U*Vat7us%vL-6L&^V zpEYfJ(3U+d+mAWyFqM<*O#Uo$Pmtw;d6h#r--W!pd9S|ay>u&ha&l5y&qXr{hpBr+ z>ZFg=ROAYr72u8$k6-&e(9y_0!(lz^dIcx*h+GDPZ`)?)7rtBLq|s`w_r_PrZkDBI zn{Kx5g9{VPHa`*=n{A6M~%@>`|k5$)t&6u1ooYIZ#6k#|Ma8W zXOD}$pTxAiI+aCRWV-L%LKB6WmEWIktkjEf?rl1L++)!v8)aFiZHqU?+vM%ZFyOb_ zbz7<6#a{8!D|eS>C~ci=P`H3u_0WXnY%(#ilH%ViSpMv z_S#@sCM)DS`B%WB@`)4QDR%Ydbl>>d&)6BaF=Megw`RYW?4li-Kejrq+2Oz`YqFT> z+s?E_yDVL{3Y%?=_xCya+KWZ!&wb6Om7jlkEHBEak*Hj@yfp63t3xaEZXU7Pad=P0 zlP4>k7^dC|`0^w%&`Zea=r_HS(|yMBtNC zWku3ri}kZAsvqfREz)`V*i~-Q_w(vk=PWrkQ|;oJhCRuLFRL>(Zr1Evu6d}uvY}rj zgE#DE@1>n8%hDP00uydm2zmVf5EF8DPxH;l*)LTd_O&kZN^!pPcuzKi^r7U&&x@Ms zpMGU!$UEfykAdUZIi@P-E1Cbqo^^fL>6-WXDBGVT0I_?ersB$r=UA5l4 zVfAq*X^;Gl7lnHE?TPaIE6!P6ZWR{&w7c*9B_D=np9`j9(V-#R#4LATdsxr*t>;gv zHRsyxQ`xpQ>FB9MEwY!ADRg5sdwsw)Hh+fu1rMtaw_e}*FR-iJWY?o5JGY5i=36!D zsRkH}nQpO~X{&PTnWKT6x81bt&sS29Z-2;8eB;FXH!5#Sd?p6$nXG%(MvSrLt!3FN z%iur>m5Gz5Cwx1)#K7x`$)aQHeI))YJ7F;|-Q0$^+wfMU!xp!^Vx!o1KJnk}ZaqzH z{pWOY`v$%mF_Bd1?j7nU9&P;mSwQNvzqb%O53Bakyj`bH@_v(y-5SvHzIU?Y>65e5 z15>PBj$|%kjSf$J-z^{A5yI!1mUZ*)YwbDV*8c)_oO~?6nr+W_md%6xdf<)#7P*CK zua7>vd!x8jF2-Jaw{dFD>R%B&*M4blE#|TbdvS&LVQi*8$CAgU(FXC~TWTJJ_Fehq zD_cIVPwRJK!ey5BSevxv+~UWJt|ZU=d~8|A_w$SIx$b!L&V1^oipOcQ7kY1Oam@~& ztJ8PLRr{Otg6D0;Hv4Ml6#o5`!`oc?<-J%@NABbbSnNm7t@-2*Z2zm{zYrI z{R^mgmQ!16X!iLd!@<9AmmYOLDtsjLUdJVeqjNVL+mz!Ok;L$3CxLcB9XB zy=LXTem~Fiw;!!rzlcwm<%j1Ep|-w;U!L1uSD7{*@;n#wx?k$!HXb&M!gX?oOv^TL zUPzncq;;@5eQw+FMSmGyGqgBAX%RAg8S$i5&+E?i9d|wdoM1XSZI1f?xM05deT7$_ z*vxCc(7E|=iB0E>tneo`^Sc$c>2EgKce83T-vJ-hjG6zsV%nUggl6Bf6o8f z_dmY>;s3G~i>BDG>vYagw&%$`*jBgZ+v3W@G7DOoifZPbk+oX<_n6M~Yk&5XTuJ^X zTGhd6@H;9jEOf@tO=h+7O%a7cALcrhPu2GdJ-_w**YnqWU)#@WJuTa4aj)Kq zqzluR)GV2{Rq$(nn5?btrqt%f_-V~YKh4=Ez>vn}ceG&D)lau?)iIrz@pX@c(YaT* z5By{CkTmjU4gYGpWr6ky$)auH3%jvHDt2U)GRXSgbEPgG((tc#^52-8u%pdf2ZRO~4{G_*I?d$D~71Qrjv3#6Rcj~Po z+s6r&)9%k=`8uIa>+Ma4Un};sefi9=uRAZdDQ&`z(75DZfeNK38atQ-pB!#z|2g5r zQ<0B{Rap*K6}N|aK6ZBQv0Nq4X?WMWw*G%(TbW7OdilvYY0PhFFTeR@#(LSZ9rKO*@2Q58k`{S{5g%op|&>Q(@`wnjSw#Kq# z+k5xyD~Ai;zYE{5H~ao}V=tSg()jDUt^ed%X^3&e@WvaRebcPp{ddoyebY}l@1LT6 zKxET18}+#4LlP`|8am8<)1S>>`bIo-t`hInsqcPtUC#->`@8(v$u0l+75~S)5Ox3m zIppMtV3YGN7yNSlmwItp1e3?-PAk*b@e*Yf^BY)8Tf4>5WK@ETGp30>yRK^^sj=kQ z^FzJco;`hic(a{zn$evZQVg2rmD6T;o{2m2<4x>jM=R;KZ=$~0JvlH_8H` zm}hSCM%T73Z828%Jl^!l*eZnCvy(levi{mNXV<1{5yef1CWT$QS=rS7d*dYUlUCKo z-CWsfI}LZAIkRAyq)Ja4$CEa(PRq)E31`kjJ04H|c<|QNMYZymT<0y}e6fL_TikHH zPsKLxhdvLx8omEkwN2?xI&o;$(i1--l0BVft@Qm=RXY9um$KCS?oDz3m-I{wed1U; z_rJy5C25yJ6^}}O>7M%{@Rjb(hzmC=w=CSaJ-BqzuAN(dmn~nhSN_<}YmZsJee}qf zwtMGsrfZ=$O(l!t{zhzOa@%w5YuTgs3qSl@p~Pm*v%CDqO!KF_(!s&Xm#5?{xn@{( zNcYH^&M2*u%ciD3)?0lz)pB!MoF%WI@T29+l@CsSQ}LP2?vlpz^ykwSeXe|+?XT4F zu-Eq8n?i+mXE;*lylfONJZQ9IYV9|fpd)!KyCQ`?Y_NNGs;>Bzmr<2oi_R7UGy7n# zpj-a)55`UUsQCK%p3Q5|eE4WD_^A2%ostEjLd}~jR~$LWv*b>x;)>d37gJmf84hfd z&EB2xBzeXhyT>gllH$iEJx`g(;+k7?yUEW&%gX4OfnL@MgICMe9LPEM)_L)5Powb9 zYjjT^n0(#z&GL$iawV$0MhE{NzhTMJy(#Bz)lJw*1@BUCZ`(LM_x85l@_XGC^+$Hj z{p}v2ygBf!)YslQ#>ejnAN=LCW>)-+riDFO+$VX~9o4vcV5Q+vAM@3x9@%g7cRwR^ zc4LI}_mDH|CS8&2m~6G`$)dYfZ_6bd`>~`;)aCUnHK~=E7Q1{Dw;nk=Eo;@BtMe|mOnofy@K%g(hs0T4 z&EvBs&0h0&ZlBC~IkqiKr@p;2IkWa&YIUkeR@559^ESHx^9TfBDy;U*8x$SNeA4 z9uIfjv2L4xvg+GewiRczw2pie<>5&-Nnlq#{j2Sb_wMxuCigx)W5@}w*}eJvWWQe< zR_*oPKn@ZFRK5;bXggFPvHx ztLtCA@U6T15zV^TBTaXW`L_A(f*m&Yjq_%^D0(_sTF>3$d9lpO&+_Asf-m!Q>?d!T zp<_Q!C4SRX2fz9AZRZ{FeOYG{x2(c=@)O_0e-%s28UI#n@$j^tXfpeK^0e2@Wp}<* zJo#g$ZTr{ut!($@>%U)c%-A0NjEN<6LI1m5I%0t_Cb=LnQZ%{brY+Y5iVpoRdEHsI32ay9uiM-1ct#VJudgyVGU6 z*^#$}N85@xci8(*ygcc^tEHdo`uC>uFqJ93Fm9dPcJ`g4^})OY`yz91r@Zae65D)Z z>76|eY?m)6ukk)5{n(+e(zr2JKF)xDi zNg_v$pQ+DWP^I!U;loc|rSSdQ-bJ^LS8u6b^7P0R!Q;Y9mHXB2YA<Y^`{!bSEnvn(Y5$&i<{|I>sa@uzAa5s!jU1{ zl{?f|ThCU%b41OuZ2Qv_Cpxz(FR@;@W1ICB>t)u&6Zge+ea>9w^nHfbtJCirTJKIjU|3U}e$a5MPMqQA zRY@P$#NGV-;Km;7^f1>a61$H1w92ZP9@v;RMMB1BfBEclCi0(pB_8_*SeZOJ#v6U(lKWn% zkPo#!vnF10momw0?-RZHcbT6{R`QXrUKJB3AOHN;sp8?4Wel$-$5E3w~?XN|Dh?Us_}l(zyOm__(q?{>^o*Nc0!s<6a-$+yDZ_G5kv zeh7;3Uwyk_qp)t=t*5mo!Z?0zl;qEx9XO4@>yOIM*fU`_whEW$oqD7A+&U;P>aN@i z>*;Ze{_cBeJvZ*q+l8;J7sg5bOU#)NSneOF$>sX)@~N=nnwqbs`^3C@|9V|~X`}z` zDOyMO2IS^HDP$MP%u;`y)9Vx<$+F3~%ZxvM)kkZG8qRwv=h^x1*dD*8C^v5h`?;OT zpEUH}pWV2))<)~z>)PtOFUPY$iHFZ9 zdjC;cFVQdY{>)tW3mWS4%<|t&On$2o{l|2k(Y=*wQMyZyE&8vy=5ns>AA?Er8EiLw zKPwT#%x_yRqWE9Y>2;n*nE&+BZM%P4Tz$N0`iOsU_3@s;3+w0o z`Ek7Rv-6+w=WlaXY&InRtdejpkjG+9jT}Pug?ry7_I}d3-U-l=Sx4!@CmTHSHz?6b2oUK;b2y#oGms!vz_R-b$O zx;krd`;IPO%LAL;ZD&5dqxZAzj-}6be(k*?@3y&y%O=jM@`;|=60C1=h+Xvdx($v? zMb;(q&TICGzGuK|wWnT{U3&Y)1inP}iL1(3rdsOl))n^L{(9^7ZGDe8!nq~<^ENn! z6g;ph*Iyr8@Lan1j!pN8Sf22CN9u(PHEJ4zwrRNi=6VxTdG&7L?}z>#zm$0-CzmgK za`sk6vB~5*vrvaH?@V^?=91%m8`JMU*quA2LY+Cdz|E+b?t{GfqT5WZk(G{Wa7vjE|kCUo<;8A#lG^h9lr z98a05Z~A$!KDWr&g{!OgXxaR{ijQ9!3g$514qn-J_Lpqr&h@#I18)9sk*%`zPH)Oe z-h1u+zLrT!J3Kkxw=P;xq;B-%mfeT;{VVxf(|5|v%6HzQQ}xrO@Ao-_yTUWWKi)cY z=-->op*Ob8ex8(4XM0`oY?`pDHA{8b&bQUi@A<_xpM1FNhcn-*iTfVcT+EQ3yZ;z- zjCgRD=jz-&@BJCKxpL$dsudse*bvvOwNKcPy5TJW+bXhruFdW zHBR`uWJ!423}uyH@&`V9m>$Wy>Gr6nJYA(J;^di@{>_S^Yg4(eFu6v}akvsxyQrP< zpTE_;$P^v+lw-P!tmYhh=A*IGc}>)V`Pv(rj!1VLmt#pkrYN~(#Rm=>C-WIy{5gR_ zY-tT!Ry$s*whNeHyE}mW#|egcB3_-Z7=Lqok!PID&+>RvRn#MkA6yGW4wy^U*d?A- zj_>yqIh6P1*sOOO+^!2uTvTFdqZltc)2Q2?wW`T=mb?|)p6wqVO8m3_uxC-z@pmST zvkco$3I8rQ{_Y*4(~_h0pWe^7|Lc@UhZLi8|9_6qAf7t+ZGwpx)-ua3y_;;Hb3UkR z-)hHzmZR1M%_;Ypl{sqHemcA4cD9|Nne+yJ$&MQJv!)9xdMB*Cd*$}-ZyVR|c{Zhm z;eA#dOOEal{8sMIW2oOt?d8)#9P1qoB8B#K0MnnG3dzhWpx1` zJSTelv0YhlGHipAK!Rr)XGBNXa@masTT%;BJnr1zch%?6b&udr3qO8;C~u$ByIfl# z@O4(%j{7MV``663I+ynE@6VrYFPc*mufDw8721>&4_I z&bpr4by@rUKE6?uW%wX>;(2l9ea5P%0^1biQVM3|EZLhX92X_6JhQ>`gU;eZGb|Tf zU6)su&HZv##%_g!bDp_fU0fdLYa@DKNB&wx;bpsW(|wb^8(j5kmrcz&Jxfe~>9VfN zX|ZQz7WgjA^>9v^JHh+mpy!Mqc)xeKuXG zSywVa<;toDc~3W7iNEdOGIh%0XG?OGofcnxljE>IWl?R}RY{KS=iy6r8YO0Cq}1!mw3FWK1X?fiqj*D)tzGhv#nq1gk`V4 zUv)2RijEG8cv?t+zo?zjy1KqNmfz_$V%hiJUNP2OrsKALrMcgKqq9vbs`C~f(SP)q zqxi{Dcm%$ zykW_)x_d?sI|>#*J+brN6DM1h?|%>1P2^_DHjCwOkyW&~@V6&5J$1=y*=N3SmMMqQ zyQD7ktm8j^Ork%5yQVdT_p{Fu*;&=P0@IJk3eDFIVr`J#pYKu`Bma=ujB%l{{pasZ zZ=~e;Esn`P*kF4~ie>5irHA<{p7H827+m`6DS2m?{@N?z%a^ki_AfMK-nNV9M-k7V z+nEnj+X{n|zO;t3-(!nvExB{=*kj*$Q|qi_D(f@n3HW%%{X1b4q}m(k@yV)3)Yrl1 zQ^=csc`@Dx(R(;6xo`U)I4t*kQom@obb~IpY?a?D<1VH97w+k>h0Cj{zVr4JEZnRT zY~gmw$@%r+smCfPvs}+ zyVzND=s0d#RQMpLUVqV)>pz5+@p@kFy?QSFNB!#yE*g=)KiXR~f4u*^{7*k$=dHi| zXKw6L?q2j`;z_eSzvf(qj#sTBS{ps*G0QqEUlg6^VYnsjmX`6V)X5&j8}t0v-@efE z&sO9=*MVkT`@PKnf{yH-7@4Tq{nS>>ta$fL%eOPWo}KaR|KG~CSCezwPRgw;RN2|h z^X1N@+wHqIX6fG!XPb7%YtEOWt!0bsFDIu7U$J4Dl zQk7Qj6UdTvSWw^Wd;9x@FFPg{>02{yeix@WNzXRw>l!HrwK={CM>co22cKL*EZmzGlAFxfHes!MNw&x0sm-Ch{ z$(8&rxxC8YG0$fH1?3Zd2$$_+I=x+V)_NgDw&11q4slm^ad3z1mi(V&{4jy<&&F3e z3s&lKbzO~75AxmKxx4Ae+6CXNypwLFADwbJDn8-2?~NsU6ZgLJooI0Cpwtt_9PTY8Nb6fB9 zkDPsNf&J0K+|hqj=ZQMrP4(J8CopQggJ-gLsI&G)U!#rFFUOtTS~XkJ=-WzepSYli zxyd)|8*I)cPW@3;lz6f{J#pez!8yqX%PwuYn$+wXS1Kcu^!arD1F@B&ez)!l>pXH_ z^Cx0feERtVZ$+})WLlh$TZ?6HGPBh?`QVN~z>F7MEh`$P-P!m$Ym4Pt$rtDMme#H; zDOG5wK6Cq1Sglaj;uKxcU%Y>6es!PB?b71gE_dmNjMYou>eo+RzS7$L`9~~!nR1Vl z>EYC_u1A9Rj_*<0VRo%tYnu$a)B9)p79Mh#m96nqT>F}S{JuE$h0nuMe504#=lah3 z<;+>#`BSFYd-of3+|)fKf34)9(DUa_^~*f>aIOk|GfUGvQ^-EQe2I9$p9lUQg1&wT ze=@0%&sO#O0p>p!lzq=G_!PG7jp&1$s?N%f6|5&IOI_SkTvl7ao5Y;{@5qG{x=p?2 z@!tfx+)TPlrk$U*A>iAMpZXuUe=P09OmXYZ44-u<)XSPxr?38^PPIp_rDz``xquv zaSGMVw|JoH7q{GCf>!vV%6m`xzUH1kefawCS8MGXj(Oy&EbHny_kqQ8rE>0)Jvwfc z8=K!9TQiAm_3}8cFzznV)UQtpb-L#Y7Cw2iQ8QD;_C#a8v@WCAgiWvBrB-NL-Tvwu zukv|K{)3$#URA!8g6}^)%xRzs?pjF1j7I-r+Fsj*3@hlg-|}I9mPo(@*Uh-}z5>KUg+(R+e_2 zwy74`}+PS`CpV|>m~i*y7w_%Ti`SmkwLNl8PgrH*!N0#*4P^d_=dHS3 z{H%9-eN?u6rRK`wHGc%HN>}F{;tAKb$qkQ>I>>1*n&iHpRa3@KfGKj1>8zIBTtdc z@oYBTohe~g?kJG+FYDTkxb-`}8X2wU-SBeWKK1PibL`9wpK?BGoM-LIZM@e1`y#hX zB5M3g6XRH4$ej%;WaBe<9l~(+W>fs+?{4SC3{NecmN$Pd<22Rl)t~#+68GqH6<&K{ zQZRRl|KERCpWd*UTvNb*41<$tR)5=CZ;xBdK_cSo*aF?&MXYqxrPsh20L&+$yJ zklwpAy6aYtjZEK%=}A*JhlgdKzjnSgPk!sP&KY~Gv#vI6c`tNY!J_VaJ#a{a*hu-IZ_Q5qG&2v{WN8%p8UCgf643p**cpX2j8hKG?ky8Ga=<6=0 z7^ZHzwQ<7MknTCNV;|>5JzBqVoyQc-vyJaIC@zaKd|JtMw?bD=@!JE7C#zJg3lCT( zFG$^Pv3Sv}_PQk;0&_zT3rNQGEWU9iOoZ8}Y%1rnUEQ6_EX0a;+h6vc>hje-kA>lX zQg2!Go3@Q1pLQ(1taYcWY5S2`OEM=P;rO>j?*E*oy(KvwG3j%<{m&Y{=l*ej&4CM_ z&XjSoFcdIwF&y|9zppk}UEDj_S(??kI9O3V*!lH;k7pCz!(4t$y!=jQqorDquuI^~ z-|mH1S$=7U3Y~CB_Dr3>Zgyq#Li6os@2s7F>fVCdcdQc|Sts((uKWF&&nNv3i>qfm zkNvF!{I5tD%)yi!eGFva-DL0&>XU+av^woMJ_f5N|Uf3!o9%aQ}IW1R2dY#tQ2~n#j z>9u~Hur~Vpu1A$SBsZsQ?hiZMxBRSHrgeXqsnEU#tK*W}j6VdLPJAm8&AhnlXiP|= znx|cpvMe1V14b)7siL>uiszrH)>A4iMqf_ z>)q13k8S>?p|L$KqtAbl|R`QKc+*L+vql6mQX;Nsqoae_F3{dh*(h^|b*SYYb2S;}WdykP+(q zxsFLZNz}-m>05uD(*mu^`MD{dIhMSi+~=W@^g+;U*^{c)+qEKgw(*?5?CQPi4-~bP z&R!t?=cL{x`$w4@`F%{1IfUmLbu5{Aq}#<%M)$m79($Gl?5bi#sZYlp#TIffue3ej z^tV|3rknQ7h%?H2-E&#CGPt_g9V_cOrTcsCtLP`4Uz$apeV3O!bh7b|j_ChC7M&CR zYv-)i=DvCR_8)7fh}+E7k{{Lgr3HCsZx)=s`@Z3%OOrB+mI#^4Pna_yDZ}H6g44>J zwMQmwNi$u&>*$KqhKtia$doE?EbZHUB(`hcOc8@lC_11o0di?t>ssD3VpPZdm zo92C- z%3AmB-8qr<SDXOkACz|zHKFC5swbCr!TG;0`7<8p-%;Gno_XaR zv*2_6@8Rp#sb`0n1n^}Evo;D}*!E-Ur4O5~_)eJlYIDq$?Cl3~l3TxR*i>|rYwGi~ z)vcA8+U@JgdX~O=#Z$gKT61Fa$F69f&9}HjwuUeFy;iw&>$S==KYbp1^*C&74PB*s zB%u59uCUnOsjKFMFD;y#l^W``{qC->#jS>7rE3plJ+53nTW#}crqVR8WKZ60S+|5G zPCqH~dvx;X@v7vBR-r5PCLNg+HEV5U_td2)vm4YdZ!_rHJh@k)@w9;Kq_)3YXD#=1 z{YqZG`NER2&rWgNC28Jv>NnqPyf{Pe@sC+;o0&^bwOl@CQ?h!K&%G%xCEe$k7fms~ zx-0f_{OzczxBSj+v9P|rVGeiO$Lk-j8-0`vxn{CJyZ6vy#Z~9L^VBXXOg1>`=>MPh z<}tk-)euc9{f%OBLEBk&^en!E8yW?2PZwU`p5I0XtB(=LP=$_5ws;uqjdn5Qg?>JX{OXC+iRCna&Zr^1=|Jn;* zU$%O5ZPv#b8$D`-E zb}wNq)HIQ5?6KUf7ckFc@{-lBq~4q`DQ(|=+(kyUeXVVYch%m_i_C2AE5sdne|S+s z=@prS@vAO<|IYZ}psi&aTWMv1-?xQj0oTfEYK*jW17nZ!hD|go`keN2!UpfM?(%f6 zqkZ|`Pc6PB6XGhkH{g%xyPIVkv#)#AN|n#sU9Bc*^6l}~_4i^Oi@j%wC8rlLSG(>Gn^7Y@&9Us6i|KB2k2gB2GG0VYcwwFyWm@6-?4|}ss%kNx&*tFuVSK3lCHM>v5F?4$D zSZ(C}eumS8zHPsco7PwDJsxCwHzvmPiWXCwdTPh5KuI%Iy;p6iGPe{(Z=}BzY|T<% zx9r}w1(&W()bW1#deaK)oouh&%J&-7#n0?ap5VZJNvf@+D(U^lb*t{{X0Cmp!YC?S z6Fp^ie(qh38CzK*i{pQZF13HB(4h6zCGU34qAv?SaOvBe)wE#xeA0kDDs7k4gL>_A z)%CHDAI{U+Gw-3=yMTGeMVcpn2%018bx+OiYIk>kqwV6vqvvlv(B|5dQhvzdobm3% z$Bo45avjv?h(E1*Kfzb_h3FxR6ATwc6zer}zc9-r&ENWYvr^ukrb12S=N%k7{RH(I znw5k$mIt{s6nuM@GP_Rm5x2a-=Jw<2ZI>!b^V=^AIOQB|7We1gJmbGm=#v>!*2mZN zom|WD*lvfuw!re~l?87a@Bf#4B=mddYSEnzhh%ry+a%0<498o)vZPAD0hCH{JNA^=Wlh?ofBWttO{6n;LY5F7kiX-Mf1W(^q zjTQTEH+|{P6Z7xR{k7@zZ`X=1-##v`pJJ1cUa@ge@1~jqs$HA44TK66mwhQ(VI^(m zBM?w+G^HkLNg0DfZo|}mktY+s?Q^-JFTVGby3)7F6_W4EYbvMcK6`bWOComO8?NX7 zlUoknXxL+^qA0_;U+HPHLpW!XZNZ9(CGCF_o{3FbdMDuOeSztjIrkind&MP%@zu|I z`s!SrSlU(1{ma)pS;ukgRddx08==ahjeXBn&yfquliw|Me@?r@gcSxYjV>Zx*;jmT zWJ*L@U)S!}`KN7TpY`X*n=PL?Ch)Dj?H}zvL-*mqNu3{S(uxA~=N+2b(A`<<zDtxiq_|4rYF7E%l|IFSFF2T! zc|@6+Cvcp&A)v@7}jJZP%UhlrLp2%i{Vo5ZF>?@c5 z3wvAb|5E?{&v_rtTdM4dPX5_j+nM~+w{~LkPv4rE$v@8)Tv;o3pe*^@MfSZDfAMPn zD`0)&v_i(WmBq!uH+SX?tF6z>8tiSCYIDuYzNEcDI&p4yi12c^sUf?09%L!_g|Vht zNY1!*CH0E-{gxGGD$8mgQ0Xx0T-4^9{ z<{ZkqFf(BR!>r|L6V7kx?(~g6e{AlVMDlKrIYCx?*0Ip^3|mTysp z7h6MbFYuY={n_Q8aiNae63?9Ut~nEu-O?&*ZM!#i&faWbe}2o`!;y#2ok>-zi;XQ< zZTZULtb=8Jt+jUk0<+-vv9WhIT5o)I)pA#z-9#@&o~?yXjV2bZ_dy*7bZ9 zg>mb6%w9}=6}G5>MfNMl)CpR_u4|v3`xxn~HF3$=>8Z_gnMIy{`J2*aa)|x<46&HA zA)6E@T)8=sC(Ws9uX@XsQ%2vF*L7*WRLbC;DssX}Z$~Ba89hqdk|e6kYGz?pJfLo5y(J3!~qP@|LY{OD|s1I^C%kopZ3} zaBi}0pwZpcSL#=NIqd7FG9}b!(`h!_0Ppoz-vxcVQn52)%i&8}&-dNr+OU6)si|1? zY@PQ}Ios}k`{J`hR$M-7JzL|s3F<1@a>Wf{ZM`q=tS~H+sgbL7=*K$H9x9=M}MjXHLljYdwdxp>UXBCt!Yp8vp|K{S- z^Q)}VJUMl$z8dJf-!OP2#iM$q4hSTSWA{L!;de*;-vRu+{vMS$s|JXz=>Z{=)TgviB(#hDV+%tvR22EJpZ8Y}cVmcj>g{ zw=^r2x#!z1wcfQ^dRzEgvHjPjx0Tm5?=)<@y|yNqJ9h70Wmm>BQO!G3u1ve)xMK4o z*77+g9F&hLH8yAY@Z1s#nKVKAz)^)6j1S!2PCg@3o|i1N;U0_OYraOQWo~POUtQb9 zZ*jsVp_j>h?PAvGj>}qCTqTu@A8gl7OAS_8t-ExgX46W&n6mg83D4K5=%B8QkeEYYx$ME7v^>?{?j^D)XZC=P4_Uf>Td!%UpVDo}NHY+zp1H9YUuHS=O!KOPk_g&+?}ILyp&ir_LPT zH6@HR18T)z8M5auX_Hi3&j0Z1k3!L^M^&FU$;!T)oP5`I^UKM?|Cgy*l;5=7`718& zdCcZlJGaeh+`e@|e(m#2p^CF;lJzX7LsnBu9tJyoKd$A;8GFjq zai!kHRi2!&za%9hlMgOb-FfaqYY*SWRb%sFCFhgJJNLGZI5ZJm6b7C=plbznEl~pN7ZKr zEy@o{Ud(P5%iBLed0Fln-CCDheA@p6HnQG{VU<4qs=#|Y|FoU?2i@2OeIoq^kNB+c zsZsA%tg&=jI=L-x{=%;g&mKHokXZ5Kfl17~*DNUq?jKuFYBlO^KI=DOOeX>{|CMPhE{A@q`<(CGJ%0X=f8AVP{F41 zpZx(#rietB<^)c;cz=me<5`+1vx@e8bv#XbG`p;W{w z*)s5i`zpCxhJ|N&O+sfeDb>_=nX3k_Q1hJn*u2dnI3$brCbO%`YgWSGh zT%6Z+^?K&wqkkV>vo$@wBSWn$>aoV5@2cJ!mJ=09d6pbqE4v z`uJL(?mpdXx#9Oil`?-n?K(YmgS5Ke4~b)Kksi}zW2WyvEq!Hf+U>rL>?ye$md~p9 zGdkNHF-dZf@_Li4GGC$5N?J1?3g zH#UXqdSTWH=T=6&2)5vyti7N9zP^yT{cS+aO5TaP*Hu@D``+H$6O+D$yFxoiHF@^E zC(~!KD>YZm(4NbYIp_DyTW?>@a`em(+7M$tNqy^Xi7xF!Hl^nyUK$2)J~hsX&^}=- z%*`L8F1;+j>B^l4r{8J_pR*1;-5fXN;hJT-yJKcA>ofjR+0W|c>B644T<6x~JOAUq zhZKIkCgdDaHp8^-RIIne&)GK?Y&!pB&i-&|HsSKHQy;5OeJS!jRs7-*`=+ddIeM22 z4}IsjV0XrB-=ssU92+JJUQO^k$Cx60k>l0WrAOs%{@lnvF{?KAK_bJ#>KTPP^LsW} zzscM2P}o21*vhNNT3(sFy*IGQMkS$!LKCky|O3<6dw@gl*U%6%Ko0}yo zpQ`vPS9VSh@@JIaVN=q7lK-&Y{If?Sg7;@z^qgMo^ie6kz-hM8(VDz=zg-VXZu_LV zf6aRF@chiu=Z$$2w6AYXbgMt6#dlNkhHs!)u*ieUitps5y|*-#UgMg0dyatS<1?b2 zlho%po$b+fS@Trijd#Cwxu7lo`wzwbN7`r4i{RO~xl_L3_Rm*$??&YE|Jf~T{Y2#a z$`%H{9JZ(58IK&g*dcfDl&qqSr-)uV7t1F{;RM-Tc2OJ3#P=R+Px#33J-E++&+~60 ze}P!cLf0w3Y#j?98moi`m0xb(&%(KXLkDxneo^aB=TG>v^&Xr#K~%DS&mn%h>APkf zKCa9#U*Xv27GAb3d%yjP{Iiv@M}Aj=;JVM|N>^2L3R|-;>=8Tq{KkUn3%dW#EZypT z2g-_mQQ6z(pe1TuKrnA>lpN1*p|c9 zzUOc1gQxYr?f)77e&6`^eVEb)MiYhx!+ZZP9a_2L_W#?5BBc`am7mS>UKexaa?vhH zMa9P_dM7P(d>4Iz^=W~@rc;Tn{}+Fex^!*c#H*`bUAy5GCHA~w%buSKQ6leHEE@jb zuyJZ>%vH74U0ZYOdS!-w!o8Yj=VQKhPM+0}@AmBW%Qf}$dSvdOH!b`gy`bUiYCE>+ z2c_F|D=Jw0*#z!dx3qllkW+mAsVt`&5MDE-HI3iex!|#V}pa z{@`Mhi7}tpvli`7;dgkwS3)t9nP*1cmGT?x^@-hncX(|LzKVPg*|_Vd*y|PV4>yVO zjf_0)DSxQQFlv4dSLy8?F`1i-)HzS21YO>{W0hazEbR+ZS0+Du*s(igium3aP4dDF zQ^mvAsE6(i4PB)#mfCPQR5zEkAbrcM(iw)KTHfZbPCZ*w)5N>*^0Z*yc?MPYR=<@H zU9jcK64R|l%clhW zHc?eSej>Foy#3y?Z^u{PEnEvr%!utjccH#{Iq}w=Z5T6kf)6_Sj#u4C^w9 zLk20|j5;S#ZR}SZsC&?neE9Tvccr+52lLnZ zFNylGcxLprqf3@$PfaOy>k)gCsBe?hvfX+^M!lKE#26?;%IVUyupl{ zv#qx6san1A@`vcX8I{kTm&mPZNt4vI%e`~%3+va%Z?DYTx@OI`_iM}UY*;+=_?lP2 z3yq_5DkjwXeK9+6uFLyk)S~S!=ilacg{U*lV7HeDYxDMKH&hGgJIuG>PVUO4$0kXu zcPv>MIz6ZO@!CZkT(J%MmXC$qLfV^K6}a+DM4m7HV(=ngZ^EZ__Hk!&ul$>K@buIb z)+^6Xe0?T%)t3XWnN3=Pe=MJ6oU*3kOM_YU6qOg;daom$*sRVTU-XWv>5>0YPx*(Fj9z zJyBQ9rz%rQgyhoR#2g8jzArwTizLO$n-KVb9H~H;nl1e`(3uocvtIo=KIODAHLLV+R=4lmd@)5UuVzH zTfp{eQq=#oYd+Soz1~&2-^Vx7%{unQnJa0VZ$95v%ziexhw*=`((Nq4wK|nIPXvV; zS-f_dXwZAsuCVyRpRGqGWY!t5NE@$uqiXHpX?EkUh=+M>4cL(>Dp(_uU4uzE$TZX zX5i=>AvRGtlV|b){|v#2%0)>|N!}A=XYf9Y+b#DcYT;`A+?B6BIW4~WY_Cm`!?Vr0 zd(wJMz6blIt^KaM$2sr0q_S|ldt_&UfzAf)MfP7B*RJYwf{buD({7t?Mhp01qcPxMRyrNlm+u|J?|IW5KV<_SMy@Nyf;P#AoYsvr57jM}h zysbNgKU3wTOSQOK@9k4s*}TqGmflq_wQn7$J@#?twS}uzOtCs*ZXutOv{Tph@kQwr z(NB}6eR*W(v-)EwuZCUDRGnzest30m|MchNJl@_|V3chyA(4CUJZsa*q=mivr5!%( z%sext6uf;rrN`*P)z#(O)LrTrI1Ajx`IZ~Z zvsC}`YnHfLj5p6YyZO5v75Hulan(-nZhDc^U@*b%Y1xwdPyQ4zti4#HY@e|-cAIsE zP0KqMe)gQM8*SDbOPGuwE-1)(oSNgbNOYp%lRd8sXX(DN?OmP}v(VDPy>|kW?Tn)} zPcAvCa5690vEZ;R&rC<khgIgmnE_Ih{-Jim>nX^@UWs@yK*B5`L z`*WG@Cu*#7n&Ew^iO@$KUS{Pzy<$9rifo>47qd0tuB`2N5LOnD8a?fw!9b#`WGTyeBT7JTay1 z>w!~Ao?BS#uT|Fy^87iVAbk+g$b;R-fagQMODDi2*KvottX_rNJvBOuH6-?f2S>Hx9i%ZAJy9o8rGgjcDl>f z7jgIZWOFx(>$iLoz1|+$FRGQx&!*e^`tN$i(jWh1ShxQ+=xMhuNs*cR`i5ZH5}!8p zPb~hoCQaD>JE6z8{DX@;Z`p?wS;6hUC-ih%?~7LX)Gt@e_od`V!HL6j?A|dOerh?m z*!`{fk2M!tAO70nePDrbGTZqJrx;goe`=b0VyblRGxaz7*S|DMx!Kl!t6{fE>D%rt zO8PMmdrd3fpWfnhe#X9U-M2Qp=DFYEAJ4e1_i<~_I?nrymC0`;j(x9<)0`&sL``vl zrK07;_dhB&TvUD+HtCv5`=e{(%$_N7UN(;+z8%i=nbLCZMTy{Lvu!-b^Z!42fAT2z z^3P1W;yjo6Kj9Pje8_CAq4AN=PS0aXRgS$^oGY}w`NHfyN86W+#+~lO~2gf z{vLHU+oE}S@6@YP4Q={^7H_@%D%jMfc>6B?Q<7EYE+^_v&E=K&c&%({#laW8?hW@d zJIj=>cJeGNJFjry{pz-gge!`Cg4GRC7iR61uG!eM#~?6fp_|DHah7ilC*yV=@=3N% zs8BvW^QLs)n@f(T%I=q3hoO;VRh+h$#u zVOtf_KYxo!%ciG_E#^1HE}Z?cFji*Kt0l>MtfaMGzTxIwRrs0bzb%_u3xjyd(bWf< zxxeTh5LxcKK4|ky9(#qY4Az+~e|??mn!g>puq%_N?8e{oGZR@`wi;^)Ffc@X_;1=9 zclYF_qahb=+_>`de&&}~+kR=R-m$0I*xY3DPoV_|7x?y=&XQ7F(xcTS)bQ8rqH-_e zDx-DTJ685Ihv((xv~Du;e0g-9S!c?&P2B!1Sy7QWpI)d%?MSlwA z>t0$f;uN~i?&!V;rzRabY;72{$kr)#$|aq14`M!NTwHQp%73YIY|HWF)5(r`Rwiz0 z^RrIwT*`Q~Y44;x_f~0bICovpB;V@dm8F(^nZ1jqF_#}WasAP@M;5=WXX)AddLoV=4VPok@5y)3@D z$WhR`)o54Gjh*~&mhH0XIHsM}>vJ(NtMAT1nK#K3Cx7s5<r@{+kebcCG&HYOd{SQ`VHLdt^zKs~^m zv+%p9Us zquCEEZE@^6ag_bhy=VP3ewl%jWj?)jD70$cxH)~Z;nTHZ;#&gyRc$SqC!XW8FE+ZH zlNY8j#fE>1i1DGLz4^l0?bnhImT6_3c`ANhzEG(C%37-~4Pi#*XTMk@rNs3Q%-&p) zKX30Tk9j}K`_+$b^pd((e^c;+{LMM_Pw(CRAo1TfWy_iZ+mhMc?-UI4#8`B-edpaN zE9N?_tKVIwR-3ly*Q3x#*Nt2cZ?0Tyb9`sv?paD^N4K0vs9ItF@Wq*g?d#7syt?V! za>UhG;C+OB%)vdDdvsWvs$8BZn5xeSobc%lZ@b9%jT@9#bgdS56uWnNYTA11GqYZ+ zf7+xKR6J+LI)%={Y%j5sbzk-x?YfpwByHqd+i_LK&C9cYl10Dl^z7i*cYOEW_2FE7 zyJpwJ7gGK*&NqA7Opo6*x3O;0oPS_-&mv{_!uI7wGu|kBUYa<4>$m1LI~FgvVCKJc zpVGw1_HzaOg6l$b?(`DZ-uSXgmHDYX(O%mIoytsPP z=`%Sj?X$|J?|2>7KGkJw_bG=r+gUm5%X=N~zg-+z=(~63^{AIFyC1IGXnrQG@J_a1 zs?+tAzO5ZIVwS`+dnkupTKdYucwgT;Kl^oCbY9$y^Q^rZ$+$uD|H;LizDzf^U$gqH z5v8^Kq8sPjj&Hl4eR%Vtq+{)O>l=?A_)a*ayr}b3|E02w4?S7m-oLQEBYHOH`tLVR z|M$*N{BKd(B{p&y#MVp4ymgCE-6&L|4WN)ujh%1g)Il{m2NB7EeMicA0o}jzTuW5 zoA`3?Yk#GWciM1D)}Gq< zLcdq);=wf%M>x+pFu##l`-1uZeP@>c9=gvY`q>`sR-SN^ov-}DBlC{M-)0E>dcn~p zvht(gjJ{k;=dXKq{PaG~-pDyerO9hU=BcKM#V?*^Jxj=up8x6beyi*5CWm~um%g~c zTi7PoJvr@9-jTCH580NoH$FVFz)elj_4=;)Qx;WB+IzS{jHjc&C067iqxT`sI>z{d zz1B~D`}H+_;JI@_YG>2xs+WGk4PHmQUwnObz~tJioOoaRbGzrU>b!cVnRwipUoLH? zo^;tJfzv!JyH_yYP1mp8aBOaP>`}2K@o4XfWQKcFO~d}-5fK`-Y}OZ`<$nLaOc-8L^S>h9}!yvXe0<;G<% ze~3I;m)krs&NyJ|)yMr>Amv%-?EaEXR?1e7RR?W z+U4=^_;tVyc}ImX*{k7?auF8+xS$FZ(pu&V72nTGpBECdvYr4b=1Xo z2Jus^Z`bZRyQ)r>bzkQU%b;KV`#E1r`(8G?;bW#4DPFMHN3D!?$-EgYC7HtEzlAPH zMI6q1mA>QtntKb@XEC1mJ>_8jn*Fswo0*bc))ag1^1OR4zN=of`k_N?!tCQGUxY=+ zvrH@a@_*-|HA|Btrd|DdyHhz^?!NIFt;EC=A45)0%s$N0#sI8}nC!=fsSTB-?-ZADXN%&#!Y^V`D>wb5p~Hzx*c0{>S<) zO#3iDeuJUag}x3i4*LV#qEpT-H(F_s?wY2uVzQa|CLVW@Pp0D0TXN6Ty-|K&y{GZ_ zxn%Fn_73|+^*`%wy%93u-_{*-?-kBI{dMNvdB(RsvtN{(;36!&Jgu|+%|VMCk35fn zTl`(!ZAV)u@LG?m7Li+XuXj!J)1PCmhz+o3&PkoY&@xZIGKlaiLvsUmMZ=Pqtqz5^#xKYyMn9? zg#6yj@;^`?T6t;PhK1iv677XA9Ftfc;4xca)5TBS%VyTRZPfqwXx)x7kNo2L()m|T z+hxu^pkQ>`)bgG9nfKhM+#0^WX5_x#_N8PlxZX*-&q#( zOw+Zu^54R%^F8-Jd{L>&6Kdl8SA+fdN@Z^2PA~i80tb_C`sihCTk=zR{tBlF2igB+ zdQZw*ynyTBj+7(9r#D6J@?2zp!OzP=L2s>3oKe$ zPbsROPo8}|w7A50=7K`^(uyi%aJiEqb~)ekovT4hKDWnKX~F3YwrcukoqXIs+>S3;Q#k$7!j?a6|GpQ=)@HoY>V5QP)`QSc?tE^4 zk898CZ?heGpTFVWPyV@Uz4@4we*Eua7S`4d=hhZ(XqBEk<4HZ!LEk6!d;hAdM3p4g z8eZE|*OC{pYgOR!6AlmAUs@_Zd#!OoTHruk;>Jy8jDZP9XNc-c{g|}j)!ks$9pc_1 zAN5b?8SWJM!0-L)QShw07bmx0jF6Ttx-MG0Ld4u(pZ`?K9DaA%&F!LZ1W(n?(Yf20 zvhe18jvT+;^LMY`>u%rT$DildG^gO0;_MlJyZ$U?|IoBgr!nJ?xpPiMrM~k;AG3Vl zhv{$jO=(o9>}M}O{@-LzO}f%KzkhpI?7MrsNo4O&g@14OIUP+KG<@e;-Q1Vib?IS`9|~S-c%*-wRgi6|4%smb)kr4?Va>e z>AiASG``F5d=xlecW=64ayUz4=F&@<0e(SB+chgs+U=MVV5Zl_KDF6*T7BxlgEK-- z#eZDA)JadcAj8v6cC&;aZ-YV^m+;(%ERm#}x77Hu1kT-AyFE7N*WL`tuRo+uX3kao zlw0~KEr0K}9n7{j-fz49=ZRf(r$YFtDdCevbnmFVytQnJzvzbYzL57Tr~Ub(qw2e- zregY*H3A=`{{FWxdLHI8ccE{Ikd(!p1l|a>zh|dinI0FsWY^5iUv?&KU2^{K-fNfM z+%UV>wS4lNv-4l>w(vF2RZsCbkQZO}`L>>m)q$nBAUfB62%s zF5FjhvQkOfly_R@6;8%dC#4TEo6j;o4-b~Co3#1zH8pd+Tn`Ipc5ivOjl| ziRQDz!SyU6>?&o;H{RrU`%cIxr8Glqy07S=f-0%Am6jo55+-#k6lVwTQJOyO_xCk^ z4?B{UFK6`pe@|v;=50>3V=o@Qd-89g`}vuFbQdmGJAQ9bTt$Y@G~0VG z>Utcm-mgUuehmA|IS{;?|(z>ty1*y&(91BrfFF%Jrj3+ zc~$HMo(ZCXVUp*=4(;1GM@m_J&0lU_R^I%wzthWWO-rScb2vYwK9TFF`E~JKF;hjp z4#VV~CHDUo$lu%IYWaWh)J~z|Lv5$0?Rq+IWBAPH`%Ug1D&oE-F=v{R%wHqXpMfjc zUzXg8H?a62J)?(tgRS*c=BA|L8Tyf020EPC(tH_ig3nsCH%e^dQ`fZm+C1TC182;S zpvY}OvgY0^7OuYf>1w*p%fyiu6*?JJ4~O=V4@ORn7;^UE*SA+Vtb! z?D(F3dgc;8J3XJ^;MM=m)G#DE9-yZPUxvl^Zy212dWcRXg~3utRbJLrkNqmcQ);@tb@_jh4KgH zN((#MM%FAT@y|*KSXG(XU77uIb-=y14$M&}H)#uT3QihY}%r`>gBI;En6^S&7&Jn_Ne_Vez5&ZyV;SSwa1Si zHvZk7z#C}mY+PsmKr`y<3xhP*m^aTm?ET7*Wk~eH3`5yau zHSGA}r{P5dgil(`9zM^= z!S%+s=a-HfT-mki#*$TH|7!o7VQqc8oq5{|iy4pBWs2lq3o&*n{CDeu_WEU24^0eK zoPU&Y@j}uLp7kYfF0PA?d>FHG)v@@(^SQInocqAQ^#8`XOqUqF>?P%=GCt0<-~E_r zwWw&^x!lv%s(hPnUAb*w`gQghlP#>fENoqMU(OF@m*RZp9;&;w`pNQF+-g0wEZg^} z%ii_PKhtMo5jA7dNk7X43(^f5N@o@xd-(3_s@bnE`owygRitT2MenXx4{NKiHMR`aW(9J#U71!~v z`#<>#-{bG@JtG;rEk;oLd6L@HhrbUxdI@j1c4@Kpx@FhIvsq?mUcI_8(UNnj<5g{q zr!&&-=)K?g_OQ~mHD27cYICAu<>!5=7nWXhsb0tZvEHAX6~_d(tnAbi>C8=Cu{hR1 z%BpmcF+1mF@wVOtKV}{gkh~QA@qvHyYP|z*HdSnr_$kI9^K!+XS=T?GuQB|z+R(4& zk4e4L^vc+>S)E3EPG;WVTe!8K-08qOUUg%+8yfbT6#%sh0>{b9();V_XfjJLUb2RjZ47J=(4d{9c@K`ykt? z*T!En?kZMaXSea#^kJK=^tN?%KXvbiOD125{j~Y8g7$)q_6ttDI*}w)DI~o`^ZJIl z580bqc=pAae$^^hocJ#wviSdw{WV`s2VT3GB*x9+Jp0`FKtIKEF*lv}vYaq}=fe1A z&BEWd&1%e*$KIbQ>52++QEr}|b?fYvJ$nq5Kc+~So9_7U7*p|QMrFbJ|64+@@M+DR zXR5rbeM{*7k1bvA7F{ytxg#dbxS#Fe%Kn`?ZTGjQYBGynsSad)dwS6|ACJueZt+`^ zbs1Y%K78A`X>IF?nBMxTLR&7*&Z7%i-R1vHHSiZn6TBmLPij?F?}0hqjiw$>(VwG_ zSb3=iK73!Se8*9(bmR05(+dj&*;8!p6O?Q$9=+O=ARdF{+VZ! z?sq!(gX%)*_m^32eyqK!$5k4k!=x#zzOgxU+TWkNOt%~l#eNnR=6U}-;a|^ZnaIDo zi{CeWSd#K-UOA_5cl~MEr(#aIrops1O|F0?&xw_l@ygT zr>Tfh(IG9&n=^W{hHZv#Ue#VEt@eG>E;rc|T{rF5hwN zGS|=Si(L1r@06K1S2k}KTCqfyXCj|gXIu9ky}a10hp{S7TbtFDc51&@b`e~7Dsk)C zV}Y%{##(LJfAVTVoUSWaZb=9b6SPqe&fCx~^tp=^all zg;qYj@aM_;*RnS}3qEwJSR7ih!6u7OLFcyQw{HbM?|u9l`Tl3)Ez`+2zRM-&RCCn& z&YBu<#UuKr8`l;4+3Rf|G)*ya`BE_L-6C0sGQZ-bFWuffo-xD8rCI%ceCNHKx2sn7 z1;$lP*~Tz$K}?%9^K-EaFYIPzq^KW0vSp(&cUFGhHQ>pVjxDSh2# zb=SoiDbwQjz4koTTDM8(ZRGdZS(90KGp-588)V1LkW;;PLe}cvLxB3s@y%urT%kC?R^V>u1`Z~vOZGwrMlcAt#j*`~Zr#Dvk-IbU6Z~Srd%f1K7DJF-nrPeehzgWTHSa;)n zP11|`2NZidEm@Bi^i)@TbzgFHt$^)4jT!1Iey#TCcr)po`|@h`_*|=lit*|zzfWH` z`$>*Zob^dI-jL-Pa@nFASUmZ=lGiL!eiQjILGR~Z#X>vvs>W2)kF^!wT;KStsX482 zzTj~Enitu59OYk+J=wd-=if%N>v5SAzt-#h?b@1oN7`^-MzUtiCEF|W#d|t+wc7^-IrS;1+3{2xMEjn@Cw7L5cN9dAc zDq>BKi-bQe^1pv*!|`3RO5b+m$jy-o{kzHYztFDJZw(t(hOhmZm=h5qb&r{KQ}aU3 zo=e?*oNAJCFDl|ZSbP_4l?#;h<)89UcERks)*rWtKNsk8Q=KZ(wX=^?_Ssj#>W4jt z?zCDQ-fdWIufnX+_xfl3{UdCe?_ckEt8h;)GufuCsqj`etLmQx_jlKY9C=-ndtmP- zo%T=3q7O=w-yP$ZtK80CSCs##@Q$9Bm3s4k-v>Nr`|NyUlvvb#ym=UdSKK)AUHNYE z;^V5S(B?`yTHNHkr>A_BL+aUf1_S=<}bD>u+b5tG_Fb`**#; zvsB{DbqSmDc0TQp3y+(_3WteTAt=U50$yDAFLajyOi`c zw%+aROc1V`z;N3{@5Qp}uEfTz^`&J6n4tBgGk?BSo~P&ecE1C{wR!&N7)(rBG_z(v@# z-DmNSvl}Kp-#`C<+3%9&J)2Efg;-cP8ChJO)#u4X%-+FtrD0hfLpZl^`+pO`f3w>I zR_}b=wyyExX6M3Svp_YU>Ooye^s-;7 z>ppGxs=y@6sB2m_(Pp=PZnL*AFL00Z%d{R(II3RgT{X%W%Dv&A4#_DJoA+r1SB9dB=1^hWKVl+)~~ zA7eT$SkzlBsS!xv@|RDv6H!i|5+*m(LvfoSe`<|s=<@te>H@)Y($YI89`y7-aPIH| z3->+pJ^^O_6GCKd)dQ1uPdmQx$(ln^j7L0O+mp|}SQDi$f1Ag*yWFwb`T47W?zaaH z7`3eblg8L}Y}rj?0quz8nlBVj8H9xI_Lot1Sz=j{!DHB35t4lO7@VE&Y?;wMa3W{qq&=7iEcRVXAi+f9g2bPUXC~##4Hl(Zb57H;v=PH_USCNt=$^kiCilpsd!95j-FJ_B zOLRMSNapqXpc5-UajyI*RU>IR;hbLf%&%F}cVbpQWXV{}czAE-58Za} znGSnX-B0(OzCIzRD7nk)#8QTkQ2(xrMVU{g&R3qjEMd+Emo@XdbUJk3bVf~GxjEre57dH+GqUb z_J$otv{Y{#DNWh7>GGGDc=x4dtKLlS_2|r8^{SWkZkU(fG%nlb*=3KIujyTz!20g) zzQz-lX%!xStm0m@FJ5E&?rx)ep17CbQQfKYSc_Eb^*+{x@_cem^07$?__r_0LXlnd z;)U&3RIJwt{meM*xp2wO{2wywUiRMzNL)QJZfED#f6vy$t`78$YxSP7qjOH*jS`2NH)Z`~;u-GWzMi0YhPm-zYJPhr1~^-))EX3X_i z=NT_VR0Xw-b(eVqu{Fy3O`S z%%57Txt@<(!g(giN_>=^VSgg6#^Bt#``hkwTe}xX<}KZ$-s)EUkAI3$_h0V3er5Kb z>~D@UGFUg1e}A;afiZF6gI4j7pZChm&YzWE$awLGqSbJGyPG# zxlN%+)?#7#zmIeHelPx(a)oKOQDx@sI_IgPVVA!9pWN*4vO~U$TTkf!4#B9*iPn?2 z&L=ne+3X9yyw5?(xGQ$w$88g4_m@qw4!<`e^IA{EmPU!W)&*VGpTx^GE+74H>!-qm zga=ctyM8z=w`EE_;S_wUucCfdxYf^Q>+pabq5D~;DlN15|33LV zv+(`FzPLLnAZyK=E%y)DrOI&DE;}avOSj2(3u|1=r_OmNR>@}Ri7lJ#e0uBh6Us523;gCE>t%22wt8u-{o+fS zxXI0s9a77MLz`yxnKz@VIu;BpzPl>F1rr zqwhu9OmOXzV6+`VLW{P3Du=cY>~pIn;T9{%t5 zER~LU^~N<`<$I{e?(0A9wYMj2-*O7`!5?pZr%+pw~{g{7uPBfT)Cj-#joqX-MpLm|8=;T zJEtTG_z8a(+VivD*htmt`Gr^g@>;cL7HIY+dM!Dr9IJC~h25&j=Gh@em)tc={r|;r zU3<0jR?dWqm2FvPEv{Lb7HfE)+4Cs%k>s@SxTe;fQ`Sy3G+podA-+!b@%?`9KW%pyw=hyX0}*d>*9MBHU1Baf{ga5YW{X* zesE`&Qg>ZtH@jBA;)sbs?EL>0FLAuBniA`<&(Qy9)>7}CRt~3(il>H6DxC1}wW5*E zQJL5M@o!SpwLY^y%Mg!tt7|&I6x%1UH*41qJO2NV;-|F>EIOdDBlL1j4F0D3Zep}*GUFP>UHJ!Lygj-H}Tuc#gy>KM- z%3Uq|m8Sgm@3de}`$GFIE{lgfw zsP<{rns{a}mpwdrVVj=6+Y`Q2=k6J`NUMO3Bg+Iiy5bIW{xw-!!Qvbfe{g@^{;Ag4 zm(-@NeB~c;^?0uLa#OV#sVugk+KbL69=n`VxN_MHRlnxHulaFP6&9x{$xF8}`R#OHEXJ`~TF|N8U3Z=wEK<8!A>_qH#K(dsi)!waMosq)zsrSe; z#)j*MlCP}YRnDlZeK23ergfp$dDY}qOKm^jz53MUrUc8WbxZ1}w#oF~?Z}mlI((A< z+mDk+`*u$X2@5KDXcrvoZge#4*|n>kyEUXE|9+B^E2%L0W~l1k-^aD5-YI5=wO)4h z$AZEo9}fy=3sovLJ*kxuOujK))Mk0Wy_6fq_V%-LPDIZBdY|Eud*fFAgNMbsyMNa| z-anD+(Hg7C>%<}teCJ!wwXrr{Z?^QohwGNBbZ@(+a@g?VoQD%$Gk=V<>Z)74`0VS| z1$WP~x+Wg&$`rP-`af&giP^_?uK38c%~C?|RNyD~{9yil99D77i*iJrIR=Dv&7xwd8O5q!RPTB`zISUU3#T99Pq&bh z_*3M^Z_{^t);kAjSElnF7V~0fM#w+&THJH?uEZL)oXM-QH%9d>|5ncbbiucZFH?4D zNbFy4bL2zFcc;yZ9-Vu%VMSub|EV11*JS+tv?9%>7IW75a((Ma*&q9);=;UX>u$3! zY07B)J0YES!_w}sX7XP*wlw#BoawF;Bs|Y;Pdcf0+A{3Ztc$WjbNs}XKK#J4;DyBE z;7@xJcYTX`{&zBC`PF5)qRSNJ)_nGRo;*26^jNgG`Gu%z%}w>X4>XQF?^c+9VV|yB zLtNnEqC>w7WioAI9F81i(dGVrL!$hJ=)Bj0Wj|7Q)t4yjW?vSxKvj-=^;^lyPo*S` z^q2TOZuGAElk#HOsi0#XyTvXhJu<&|GB}DsrSDB&M4VIfk$)`Kdb6h~eo>aGUR2Kg zq1K2a;|Xuzy=}z;zKWez3$2TP7WW+uyZ3a5&CdD3s_&N=eReWEHI=bJ?7mdo)Bh#8 zFU|hEmY%U}PK1us_Z8+_7C)@$S8^pC-<;qj?DOhN=JbQfhE8{n z<-NKTr#ZF#@Ls)cbJt@$xmz4`qYZ85-%7I34f-4Hk@JnG!{B&sGqYuhxU>43DhB1Z zDxEJ3d|G#IyxK0}aLLT^-lu5=4<&DJownt2@IB94Y|>}KEevn51y0G}Wf42;I!&bg z$JT$A+8Lag*M$|f9`5;AZeahq#86Y|vg|V#tfru` zO~qGqzd0;OejJ~9_VN~&V=AjAUzx^mCHrt_VdDRtXF?4h9}8dPlanI#*>KZRg(nYe zjZ!0L8EY-^f5B9uX2rJLc52k`4?=kX`$9C*=2tKG_;hXdWfA!XMy+`-^4`BUtbFY+ zTKu}-vcgtO=DP3aI-Xv`j>xzE#_X(Gr5D4^cfMW~^+3<;@9)Bc-TN(yU-QcrUyqqM zU9C0BW%?eD-X!s-=i|1mzT5GibNcKzlRij`+IxOmc5_F+W6WfaHIpKBr`O(Cxl$_b zmynfioJY4 z`(P=JSbYJx1!zu$lUuW-uxq{KfdKOAHIoK%-c z?YV#Dl?;>hDo=()!;_&eH`l(*=)d;#^qgiXmZE#RYxnxx7M#Z1ZOl0JZ{a@nEnN|- zFV60Y+FOT&zO*t=_~S%>+)vNzEUk7^=5 zu!c!K^{*AWE&24R!X?&YTT-sh6gvK)jpfnFZ2@;@bo^Yx?>yzAXoAju1N}cNzrUw_ zdU8L4CFPUc9XErbD5rBXq!~kXZ~FhZaM3`j@4kV0XX=BSlFRQpXmjTXb}QR%o|KTu z66BZ4?><4KfotNizb7AU5?s&ml2QNm;V_=a9X8Xs-iB>a72emAlAM`-@XVaK;q7)B z)oBI-cRP3PD|9svKV!RGxTxBpN`z^5`+|crvt08$`(qqbXD`jG-St7-{kZC+*}ad~ z%FVoIu~|F@T+_-qTA$QAqYp4uOIAHG`IY|7(P-(#YW?TOM|^6bsh;Ieh^ zL$C2|J5a{*NKI6(G2&;B|JkZHVPVaTpM=c9?mpT%aqWbaW{U)Qb5?qBhd)&oT<9x! zNZ_U?Uv%o@$jhhF8r4)+aG3NnPM_`U^wsc1cGOp=^5dsIZ+WufmLbD|EFGtrWln!X zrY_;Nah#|dwYjxZc?|4 zd%`&<%jgJY$FxiJ`fy8GTIwCP(YwkrbNUm84`-$L~ow5Q&}cY-k$5|PJLp(_M_5bV+WHd z2R43Kn$hdqc<#FT!{l!>ugme&rJEr-f6<^OA|F0 zCE3*5W&0kxz-eml7QVZ+uTSA;MP=5)+5rFg%CB!kChNaS_!Q!NHzhFUK&WT> z4p|G=IrgHvO?}S)wzNF0K3n5i={t$r)1zV@>6Km1ymYxo?r2x+^EqM*=gzHqSG)6F zm7LGwtkv;rr?mL`y}P>7F(IdZyUzXzR@1Hcx7_>m;kn2^rE9Y?#O)3DuX}uRWyUpz zsI8e-awJ|I;$BxE5|$XnTUNlZC3=qWyg*64&l7$yhWOq6pd!L-8GmY%O$YPURo|u6 zOwLDGlvPaIlc2r3z-_ltw$gRW-X7PPlW!?=%#r^4&9&CGHspQI;yw4SsC1vpUO8d$ zo27I|Ys=4n|7BT5 z*!lD8LYRLZygiR+d+m>vS48uCMBW@xui`cQep$8b%TAT8)hVoTbK*74A`EU8Us%-C zrR?!~-Zx=)9k)Z08YgDW`{UrY$ohqG(ge$-4zr|-uldvNhkx=o+|coH+K*79`r6j( zjhYL0lr9K3wg12k!|s2|>Q!~;bp5L}g0++w{gjyf7TwvrFlk!F3mrMTUY==A)l7>j zeAb5=dR%FGdHK;xcimS0f2-rB=G`#c>20Vf)iVFA>$#~P(n~U5bet|)bjT}HM)+UC zQ3J2j8`hX)xUVYZdiO2I@x&|nZx1T9XL+QC?);&c>1f%SzFt?m>xXb|?B!#RFYdS= z@5P_>;O~uV+qNjoIA8Tya}z5^LC=B>+au3T&D{8iS6YxqZqKe3zDLx=h^kWgh8V?lzY=_GS~S!}EU|uXDfK-6OZWV6L;$sb^t|6}v-n z1CGU?xnuQxzd`vF!Gl}vE$zAaJH6%YwI%;QS^VmGqkzW5uUxIBZ{5A$OLy-2%zkxG z=APcow#9V`?QW4XPn?~2iBs!j&4b3X>lSK#X}nik=^(`+n$i}#e`bV4s&@A;rzKy0 zPgkDzbX%LX>y|guZ1b$^F4#s4r`Fk9Y?n-C6=qp zU);XI?&S+N-IhPQxL=-FR-}AFZkbPfufl|1{CgL@Z9cT9IQGt|1Xuf&S=^tDay4sS zzp^;+;izqM_%1;~+2U2#>vo&+Z4(zsWqEi)#b{M&-m6~E3&}5=RWnqtHzsp) zaz00LYrah1rH0!6=0mv$*ME-e{L;k2C+x#~b3(LE&Zd`*$2Ly<7Ob2Oq`_4fAXGU?`^NN1*KWDWK3rsi&J!9+5B``;zr%#*W2Y)KYQ#D{2uhXc*ikO z!?(}YS7z;ht;ktQo#E%)avP(m)&1VQv)hLU7S~-dycd8cg6JO8hppk z@GYJ{t5V6Ta;nO04#&A_7G~;uwwio)(VA4f$brGj%YOY!f%TgE)~)h5dVux$p?mrp zb52ZOKjDGcg_}<}&TQbCqr=~F-}&O)!j<+atZ7DT?z;VpsQ;m@{zB+$yw;3GzB`|1 zXg~V0*hlN}1drdV+eAA5XU({A?8V39kyc+{ONyUdDQuhn>P)hIyJy%h;r;DjlFoJ> zaQq>vzqlg%_WCWo2bDhw+x=da#JhFHf-_tHK3!ELIP_2AdyJZwzx;}j$_dEq2jd>OqIyU7Un#8rN z#8~34^fcb*&N6R(HrZ_b!+rDn_9>GN?*G3s`BIL?)TUpYm5tNucEv@qY}~ZsL(YN< z^&4%e2WIa&w^{Ph0=~Tc4KXDWKT3B*c4+jLJ9r6i@PF{8`9=4cl_l4ve9FGgc{y|9 zk|g$()@=+zGU}XDA3uyU@>kz}_}s4rpJvNEG%>DGtZQ7lF8bOk>EL^T|66XJ&f`|L z?0Q_r9<^&>u}xQ5n~`W=$zhuxhpzFx4l))Eul{85CcEreZscKU#f_3DCgf{d&CN7P z&(?J;R}r53XV(Tpk>sLd?`B>o;(YUp}CJGYJa{%KW&-ZN5-~7^;wOvQ=M&!a>b5HHA_ZSR^8rXX=qbKN!{=NUi5vu*}N20A&!t-2y0(lMdQe%^9P z@t>yG!q08#KRQLh+vy$0I??|p6#wqpTEE~6i~Gm(jLYV}oVV}E?Snr%vX$k|NW_Qe zT##Q=V|{1pK7n<`^4CN4ru+SEwf<(l!g=4s z`mEV6Rm3y*R6M?4P*Qre;(r6HR9lW(+26GFBC&f6*4Q;&ntYh$z1%zHs{xnU1DQE5 zzl)N(y<_{G$H|N{>i9pD_OtffeNij_WJWgQw;#KMc7B(WIuo1m!9Q_g#ug42R!AiKdvdyE{kwj0!5W>XR-)~eq74y^{u|A#{dn(} ze06y|Jw#P8d2=pT{vDfTK@}ylrb+hKHShbhGH1e9t!58Py{V^kbb6~b8eFc#=bn1y zxGvzQfTWFKo!kfC#a8+m)n78t3OGFA5VXu+rWt;Z~V#wz#EQANMa5AjsV z-?{ih*thi%e=)C!Y;FF8wF)O=zQ#}W`e(c;EG}i<@fB8AkNnkq_Wjqt0J^GM!P@;TscL zB>jYGy;y$BsW|PU(6J$I9P|em9I2#9nT^QnjEX=W2&@Jjc~jdfe*1 zw?bCMX%*T&47#xH)-UJ9(R<}nr%h|mnDvp%^6as#VYAdczQieg6k4rV`(Q3>N=k4m z=NCoM-z^vRYR|b}w6UGV#d^PkBS++e^~n#W#2@)^?$hi~GCyBE-IMJ!&--s>$&Eu( zrOO*X)tJ-^Oti^|l2|`6^EOZB4W2nY>vZFmDepDUth~NEF6YrZ35C#L z<10&2y`>E}WJ?5GLMqQ6l=kSKQT?s_%=sl=ULnpmvR6!Z3|kR4U9})B>ei~r=ZRB2 zM3&s1@qoXI^_+gaUh}~vuUS_&^DbLHX@XnYno`YUrkzS(EDzeZ2A%S+oOQ;^@#M17 z1?j98PZ`cgZ+aE6sf{H`F-~~_cl~OQ{mD!!zi{2?t9?&}we-AoarNhK{ZV`$a;1~^f1ac92B$ln zufKKNsCxT5U)-AG+~Jyq4h~rp{_VecweOi3gS5K4aJ8p;IJ+>zfnyiF?jE`F@BgWr zymu~KFZladqb4uzgH%#+;F%K{5tjru#w2hV??^oM$Ut#cWQ3c>vuK7dJf>3|`h_3H zEi7F5MriigyU+L{wPW4ix89tzY081`ednW>X;YMc80s~M)WzC8>jod=e(B8 zD%yQWiRt9FnNh`oA)C&9+FdJJ`0{jn#jP`^=5Q;{jCggLQHsZ@%rQH`jqkw=Ytb#5 zLJxd)y!~>l?QyY}QLGA++p(hUuC~{nmN~ko<`o_>EI8X$qwL#q`p*{5s`dGoO5106 zzti6Q^4Z*7dfij1e|p)iapNyAi@kOJ8MlY(PnVzjx`N{`2Yzdq@l$f;9JMbJHxe^K z%{JWU-{d%HPP(PMqVJ)mzCEf|LO(@$?wkjs(lMX#pq-d)V_>Oaf=x|%mz(jPqhzjpHZ?H@jE zd=@FWvVou9sE&1>g#iw*9`7P^oe1Oj`4{<4Zgrx_*+WT#}un%dlj3Qt+{>9X>Qmytxay%ztk}wPSTGo+^8B%@M=Y*S~qXtOYA)Y%bg9&UWY@gwo_si1_IObonT~fa3-ct5L>Amf5!xTeVIGe&Idr!W4y~XBD zw07v1`m#7nE6%&e*XUb@PMf*=_Fsu__Qxb#Gz_!iS(|w`o;Ps5@vT9kxLxbtQS;-u zN5Z)}YVMaW-|{f%^JJzgPqG(mDqOO;g;(tRp2NSn4sUJ?iubz|FID#RZJ%p^=ug)B z(>4Xf`8L;BG`H~`Ju*M#uFt$8@sB2V4YnWtoDsR_roBOtpP^H0TKVT{?sX5g>R8II zjo1FY`|+|xRks%?hHH4uzh)+Rgwt$t{q(TJf0d^bGy6iyxi1Ag(q^^rWmRs0kJ9VCOiM;I9$gV$e!l!PmSM7f^>)P+# z60dCf#1&W_SA^NKes0{idQJDe$@xmpw|q8wUgUq(a=UgP&wn`+?z#5@UNd&{l-!MQ zWem#G(pyk_WoGZ!wMqROw4X$>ah{v_&T=qb;!(TmX5)UotC4fhEqpXp=25o6g(9wNrX4#Ms;)_!_+`S>N5P*J_!aFQ z86G(HRP;d2$)A6Z8QApfD}NWvx90TbPb(Ji9s6VvQnvdS1bxA71hQV7@zt zf&$n7;yUJCjB{lEea|k-68q1-edk~Mp2;^Y7kVdh%y7LSe~Ue6!3i(-!`D9Vu5dgc z8>7N8`9M-fWOdt7u7cAyua}o99_7AdVDMvU_N}04C(ix;A6C!ZHeq3Ct9jLIdF6cp zLhCB#m8mocDvHY1@0mCE-Nsp>1-p0utGZwOiupR_@MPYpKK=Fio7OD#ESq-Cb;p)nucWi5rK`OwVfZyG{^S3P$Cg&S z*fnAOjJ4Bak0~c@Z4O>LCq3Zo+GjE^;{;Yd_5D{FdE5K3(q8V67uy3bA2E3Tcj=kQ zJ7#CjPtP(wTPTsFu(RrE+0lucU#!WlnO!jPVZ_{5O%}6C^PM^}O6#6HoGX;VSnoGO z^75MHVs$Eaw|vceKey(I`*qLGJe>=S@9tgypOGvnc;Zjp@;4TH@6WQ6h_Mn_;Sd{Y zIw3yfq7z3?14rNN03Dw>ALkheZMqTWbkUZ>c@K^QdKX;m%JCR)C*gVA1n7OpSk+;LB!SFKW4P(#~#*QBBb~9SSYV*;=e{|#SKZm zs=r#|O}E}Xx-#2?r}>lBGG(3MS0}6$IyhfQhw*>mt$dVfbAekcc2X*z)zN8RmCv{x zy;65?T0_BmJ;(m9La#KZncK;haf$Dnw7TF>(aNQhlNQ`9{Bmm5gw4CPswIDhDyi;Q zV#zvnKI8cG^%~*!+SiwKxs=~ID-eHfSIXs0E1XkJt(ezmJ2g&={*<+kD}M4pIX1ah`S8Lo?b~#s>boR#oqO|@8NH8~I+%Gpkl%WATeDYXr|SB{uD$0o zO77Wj*}ZT{#eCi}mDc$ySM#j)ahrH@*HxWF{p!A1$%j6D*qXIr%Bv?X%O|foocBue z$@;VEjSeUC*XN%%3FN)C_R4{8iT_(3HEgZ8n7U3vDE&ucf6j~@O-w)a!%qb9KP}z6 z>&Bwb6?U_tojSWRe7(94`<{9HbZynFc{7q6mWdnI`KJmN?#+~$w`ntbx9pMm9FOXc zp4-l9XrQh>zyu|+e`k(iLE%gZ}ser3=BLDpZBljzL0js_d(;e zryh2_70L62WOyUytY&9f?SE!=-OO}x056o)oPd;dB3(W-CR)4 z$78#4xf6Rw=?xW+x9k2rGH(tje5GXfC}ly%f9cHkB1@yU=X9p6+mgF>OYZG$KbPj- z-j{+gd)iz4%@2EZuw0I<7I>Djn-MUm6`yv#`}(G~YX4HBe0W zNV0Xs{7drte>^y{C8prj0%?ut=bz^L-}sVHw>@ml^UR<-Myo^j&dGOhx{>U%H9b~b z#(3tY+|EO`nIB!wH|6PiJ^rA2p1VfuyWaTrun8@+X}1~X7d;v{H4cNkhtqu)3)ok->NvR-?LI~ zqr&91{V`2V)^2&x0Z*Pk3u<{#Gjm(s`PN@fR=3#_><=rNoHt9F8vg3Af;D5$H+TM& zUM9JKWs3@QU%asA_dK$f9>&V&*T;O{Nxw4_(epzL&C3{O9qs zmhav(^;nJd_KE*vuiNo8I}pd9G|cN81GvK7Y0) z6E}TPYg@_?J(rDb&qS6Ze%a2O7-rqNtRfrZDp}0Fjp4@QFMsB%b;owS&^~#pH23mM^E&f)Q>FNWE?;Yj{N*D(iE*purdfQK ze7=Qw&lMNge?&fx&wK98y1#eL`TZVy-7N}XJ$};l*q@s_gEt1X3&&^7O1BQWZFJ$+ z**}_7KQB>TIcsggiOSh)CaX8IWgXe+Kj~#y>Pvo6#D#5ietJkX;rHpCPxmNW7AiHQ zMcdzNwK)B`V;WnK%9*3H=lGVhpWArzlle47)ze$Ixoy;BeUj`q}TfXTDeCQ{KAQXVn#v3^5xA|JxV8S-z?W%$J>J zvcP}FB}SvGT<-pX*N>*&=4QO=`!qk-XOfGpM)cdp61DqDAGO?dPU**0>Hp*Ach6+` zFCoL5!l!=X!mDo*lg}>OsbMGcm#LY#p91{gxB5Xp4?*{-xXnT zlUL+O@elP=0(QKDb{Q`>&br!Fn0aCS!%s~dEQJ$nuPI%Bt7p)(dyC`wBZuQB-TWQH z)E@Cw#FjlhwIhA9hEmo3`-ZRmEoA&Pu3tQCx^11no4uYDYs!usas2-%zJA$*YM1>& z;e7Wut=%DM@nEVNcj6iA^e>f(LSh{OaP z-MnwQgTf;|Js19^C-ZE01)q0?DE1vmTv++kRI{XiX@>G~kz98n?oARYJCua`!`p2o zt65T#4CCX@b+J5^I3RY=R$<0#!{?s=T=s2>WPhSqsVcr8uS3!h#hi7u`_$&BF9z?lawQ>K#lg)LECs z=RcUY>5IY}<{-YGKW*3SS`=3u?>}Stg5+5-|7xASg=|o}#>B_5Vgd(;$BX@MLjNuH zd7PB{WB&4uQ33C)R%P5TTh{qT^6pWy&#|gT60gs7=A2_ax%J$nmX8Zxp9~6&s`AWC z-kfZ7@64$vrVcKpE~SsEPp^fndivSL(qYv!kEq%LE~bue2_DC~I_h2We&+8oQcFG2 zvT*PIzTNTbcKeytuZrKax7Kg_o^=N$j%3R*t~npJ);O^;zpGI`{+)w>&W`?S^?fI+ z@Auto6i|C7wD8yB?_bo`YqHoLE}MTdZgt_K?N6`X&w8;hwYrDpN2d0ZW9wr#e0se7 zC-*88sR73Xy?$o|e!Q1*WNN|s)wzmK--a@c!+TU^-i zYp%ie!={gx&0n%VP4WD$0`vT@UQG{{91`5{7COGTSzeqOVRl`Hq_o@II|M-JcUU9;@$lm(G)Sx;{-_ldeQ`TbU@wReyF zC@ZbkpMEd++8zUqkT;9&8U$aDT6WlTS;$c_MdP5~_PrU4MBQe#9R0O8{GXlJ1V5K! zcUTu6Z9BJn`Xa_@!n1>Cv6Wb?nCr6hmgb^ef&8IS5(N)WoL;WB=0Nu2hR*$E_l={T z{IaT;=DRW>cj3|HeZBrC#I~$iqx{xeTXVXu>$HtmOm=NQ_HO?F1t%|W5LRvt*yq?I zW7FGNpmEVZ!grURf#}r3RnYn?Wy^3MIe1&JyWhr`~w-IyzSJwv%W zR%UhA(xW=I{oakwr!+-JwsAk@Z`t1Ax9Z)_bnE7W(+p}1eT25_zu@>YsWvAeJFoQtlrp{ zck;qIiE~>Pob5B2{B^@6p_#sGb~ddO$=#&tEvqOsx!Y!Q$INEQ=NT%+zFW6>t~)sW zS+HUq=hqrf-kVpRa!z_DHk0Mua)o!&6aM^8Mt#$@Z9OA+nnTc%7&kNdw>=~MC^ zu?TU$uF`8u7wlWLppIi!*Yqbct|xaXxGOA}%n@!pW9=4+sjH?&#UH*mb?M!Sb;cGM zSyyr_LIML8&$d!)3Mx^KZ#KR4+^d`?P@%owvO4cflT5a?ZQ7ex`khvL9JRT_uLMNs zUwSq9>cyF7PZmh5IjtBjvv5z|;u`@6|FM@$?>61LTGQmlmiI=6FHfeV?rYUmWEbi! zmP{5@ka%f$k>50}aC>CSvbKjYq7rQDH<|b?W$5lQVY#58mp@}poNM~A8&zjyA)9~xsny@YTwVE@|EU!?A8-&(e_N5f z;=5BTM+L7_)7SfqM;EMDJKd0`uKwzyUrYX+Ej=pdHa?8KWAz~NtQb?q(`nNb^q)^x ziC8+NJ0{|2(zFRIC-c{oBu_c&Z}~tkCgS7GnVm|7LC=m@t=Lprb~Ue}xch=z>CTm# z{T0QV`7P!yo^bWqX7AM=cB6PfBhcC9pa=kV1uEn-XES#wN$dsE@!V{vi|F1sktUUq2W^qT=&)E`J~ZBV@a+nTfK zrO({xV?~{kZt+H9Ox)F32c*D0VjrA@QUtLo2yQn6ucEF8y;zJ#!*>x-vZoPbTb*T}nQb2c~ zqOXPd>nmrjt==4Tp~h&(l`qCZQ_8iMyk%9JuCNaDp~ufv|YgABnJ=I@6lMd8= zThPA2@V3^m_6Mt8hWO2!XDsUbJaNzNS-+;_1*y+pu{DQh?U~){KYy@1F;(%|+LP%o z!~Y*tpE%`0w_u`eBDfiyqdOca#zIgAVALshdyAfcjFG~ z#B=UDxS!4KoJ7pS{cO5>BozKR-;_{(q!hT)Z_kmv0>8fQH8_yZ;`8SI*|!o-9D60^ z+kPwZdnY|RoP6@C z;PS{euhXBBS)v8+MjZL-k@iu-{U76|fAOauM?c;d=K3IL`Ww%f^6ddeOxbZZr$bwg zvK~4l#Vom(Cs^9iRp(mGf{UJ-Xr z+FP$#dyLa}9>4L8Dci4=9e@3ZRjNV8=Etkh$CoP)FRfJbn1B43#^P|}Bh?;@w_WBs zWB2X(%l;hUs1iSSFG-oZPRwOrEH?G{_h@@nFx2*KwPawjzdg@;<6^gWJ5Ilxy+PMl zHvDy0xpUdNJ!=J$&0YU_@6(XT4)1xsDeKtwkKeBSX}c=AC8$Z~=ln?r+_N=iwC>>i zmM*+uvs``V-SRotdK)ME>pE9|i{MJA{jhWK#9dzR?tO@QIdl7JXEw=s#R^)<>$k0Q zm08fd`D)yjqs>!3J)FAPxwJhy=X~?C7oWMag&s^^ma%hkb7%OAD$z8KxfiTbZuZUE z?DFS@=Ak=E+{*(Kc31c9 z*}O+jcu?s%OhQrce33O#fF}TgJtA2W=OW8nh@+uRVD7@WMSW-ToeBm^sfS zFWBRr;KaSQn~oijnP0||nszCAO1jW4^b-#&4Did=%ji#5*6_#3T za(YeI)pO~OH~qTuwP2fn@!A=;A|_q*DZ06=J+P#78vjHcll~hLc0a8xkNOLxMMyGF z`*SFGUgFukTW>w>c^tb*aC$cL{6}i#`)AzRBR+4IsE*jm`EwUD&z_u>_}Xf*o2TE$ z>@@r2=?r?B{T7Dj&#V?#{F*&AIKV&UQhbAzB#U_XucNwmFF#$9?QlWol|!@)-@5-F z#R}$1?o{rvZ#%yH%cBD4I%%SA?Z+<6V|3c2Hx(uc{SwmmV%O3Y+zD^_%{B z87(W52%qqs?6y^RPny3}zjvnZQu!+G1B>(6l$g%jKHsd32qwv(_dl${?3G&>z zs`J@f%gghEBHXKdKV2_;&FQ($J%-QxmGNcP_9I)gb&HG=EW&m<2>+WX6~o4P_DjOH zwak%MFUi?nV~DZY_x6=|Uxm%Julh?r&d>hsI@Ljb+paxqtra)4s#o+n{JJtlzNvn< zW>{3&afYA$9V{$IKF6ySZBpw?Q#*D@?bf?J>G;hwXpUdv<_*l0`;ZMz@-;c`|@m!X) z&X#C87S1EH#97ci^U>CvOYI6@XK#_+BzTPV)q}p3hvZyt?pB%1qk7OP)sQ7vI`8!| zpOUg|la@9*u+-1TYx~Y5w?lb8BXharBHEQ#2K3CznaQHdM2G`po0_x{23L zKEK`PzxebGU-RaD;n(VV9&AeA=rXfP&wJtH!t9{EOLp%6C2~}JVZcU$QxA6X!nI$$Y-kRJKqUTRJyK3oI@9q;R+nsLS z-Q1I&NE=DlOJD z2-;fldGb6i?)yiz*qF^4&F2PA(y&T9rgrV{@;h@Q8`Qo$OkTm0SDQ1byT=L45o8A<~ZU{JCy0pujS=L51II2P|VTv$!qg(-BbDzSmL-Rcs z>DX>ak#X>wAjihev+Cr})7(on{9ewyI#u9+hSv_GdlL0rbs>(*o4-{o`LWo=&SQp` zvi!myv4uD7_O@&>`ZnRss~@p~x2CYXUsiHsuF${ECkY`@nkip5UMO47sCxco%I?0{ z`YV#_l-~b;`l6>)t4Z{6n=g5$O%vQuYE`Yy9kl(qkhG%QJjsOZ+Zpf4mNdWR zGb;W#OS+(#f$^O*ACJ=f_0~e{zdKL%Z}}zAf23;lAI;z&SH%|W*XEuyZ*1*`bzmcOM02 z#uc@0HMEmZ+vorEIm0F66>on`Q+lw~(|pR|$n>1ByQlI@O_mzpbz?nHq#RpvU;g*6 z2Ya42{XVj7^1s7%Pc)|gFJed+RPYJ7$|H74e!_?9Z|D9gZryk;#<+LSEoZy7=$_2J z&8)XWu0;IWa~b4 zzOh=)jXS(&-oMVY?#3l=zVEzLUiqx~)u*Po)S8#40%sUVPqzCrZL-(hweR*dZJR6W zv8>_o_2hF)-yW)8M;k#3hvd+9oOt?RD^mMeoyzVtY-}?^o;zW z>gr!9F{xmQO5eg-nMtdr96uB&7AmMy%wqJMGq*da`rNmKU%z;!%AT}+v_P+Wao?r0 zO!E)Q=D8LxFS8V=v-l(*p0~>S$H!;&et(63>{Cg~^%A)esvx*-XCM32giDL+7OR(8 z-JB%(E{B=*xmowk-z_(Om2?>Dt@@T{_* zD*BSaWXi@R9#?a;xY_pY4Oki<=xLztZ@OYuRL*R!*%_~vE}Z%}fAf-5PliW#HSVy6 zTCdFC8M5QOoRY|U$2~4VXUhMk9TaN2dv`+mC7}=gyXL&UwJJv`;nnQzzk(XK9o_$C zMeE5`rVB#PX&7YgR&DEqw2(V(n$&8SSsxQ~a+A-sE1z$d zKKIw&UUPL#^913Q)90PsaDC-Axf?c@pUL=c%-STpb#qik?;f*`YsTD_A(v(^@{|ZP zGkC=qaK}DsR{+0`oZ)ea)u~^$GM=2u6r|abT(6@T`GNm_#-3jam(FbIIltBWn2*?J zokcFbZf*M(m1iwHzcjQ?#`FK8u%*#6ILyO6^ZIw+bNlPL($emw$4;f=fy6dW9c{--Ga`Tx|%<=}-gPwIQ!IU;W}uJMrgAHLe_a;78i z*WK54MfnKEa#Y52DzUkp=a}j=E5M4&&sd1n)?;(M(y`eRY~?)>=C7qMil4~)Bv#Vc zqQYM1F!RCQj_z>TIL7H`TCdmM=)L^%*4n3R-(SCcdW_GadI87(i92*k4{nkZyS8Az zxOVkRJq?BuscvPyWvfl+9B^$vDW}c3NAYh>$I&Z4H~%=mb6$DN>@|H`R-NK}mw)&L ztImlF9?v6uS8Nuw5|I?!bfrO8nDuIOzH?S4;m zM7u9U#&*4n753a{tY4{qZ)Tr+?81hVLNP*IIa1;o*Cp=B+RgoUSk!XM#~+jVo*&RX zE3|q_*=oD93yRqm-qYP0aPraR1wsehM6SFI)oOEzD0#kPCa2@^RQAk>P_AO395&Yt z2^9{B+afK`g_=xtmw0_=+1`ez-Lnm=Cr3`(ruLPg&Tj*6_m-R)-K>=#$hAEZ{~a9Nb-+c7-L@}k zbL~10y^_dTdoSG3F}iJQ_Aqs5kfrZp08 zi+O{&o?i&vSo)aTcI%tnT(Rj%Nvf$t=n}uKuyVZ)}+)a z@}5(QoD zHh=Q0iY@;v-W1(iyJWNOq6=nKVuoCnd#z^d_*?k=rXT+wu}wSdq~9ipF&BMy+$$Zw z?o#iHgE!}QCCJ@4ct%#Jv~ZuvoLY1q)6wJowtRVbPp#KKl~h z=(p6auGE`o)c;M8yD2mITii0{Ig!iEb~vh8yV%=sHwA?q{2IB}_JmB~qXg$WipTE9 zOtG4oB~x_%*3&QRxYBqdSJ!{uwI@08+8vcOt!2NiE;foe!*AyIJnv!q)OAk_J5@6O zxxHAsexZNfroEeUwCtIM_AzWuzF)@Ut9S94#SHG-yHDyST#`QQd;U@TtA!>T_d5r~ zC9i(`%u2%ZT!rnsUtt^eJf6hIuccs|A}*xNoGLa)fb{}@ob%HbPrW1hHx94V^sw3A z`2Xs**fvI=!~buXy|>?{`}P0fZK5et{_o9QvTJeA;;vu0w++Oyd}f~c7Ofho{poDW z-HuCau9@>#j3z6@GM39evItC9Fs*wvN$*$Y+4bL-f6sfdWRsmu6vLf zY*x_0`Rx_|A#c6+-rK^@_in#=`upAVS&{*78|4-iSe>!^Vc248Q{CD9Wdd*1(f8*| zBo0X!_&q*cZNnXT4oT-@aDUi^nRwdPSLs+aht{VEYkaQDtooZ!L6s&UI%0q1=$p|e7u|g z<%x2o%ZSNP?Y@PX9cvF+<_NZ|6ujeB!q%|&bmRrd5_V#oCqi^T(Z5*M~5V8;B8GikH(IkjGT6?ZkgYC3S}f<~W} z^A;QKGa;rXVJ6x)w!0O#UN9@uTGV*bc-@)3XLpKCzBq>=JHk7aZ?g3zZS$~{d#cu5 zt}4nOFCBexVHNv}8Ger8eLvTWtv$EaH7l3pqORw~*{yr(w&g84<>m1E*Ba?{?R(EC zD$8HL68_Zsvd_2I_a49h_)y0_@oGy_Q@%?qkL}DrJ16alVv{ugm>$f|IHuSoap1A> zv1swrelq$IS0=>2;0#gcetKYL>|gD#>U}kiuc~uIM6SthH)mP$`|WM+zvU*HHqP&L z`?lLGI;$u|}~i`!TA zX(eCW*MCsG@r<^r^MdL->ejDPCDp}#zBA)k^E`h|$`i?DxiXr)J^mFAN95Jk^YS!J z-^N+{Duc7`Iw#ku8FhsW`xLaEsBFp;zOj-meuKW4!O2_(KQ8}*yp5MKH$2ea^Fa7q z-Krxm^dq?w@;T>yyB+j7Xad@cEtf(e`AKUW?t z$F|SbliD;YG$PDDl>giCq&8{Gl9&HdJ_Ps{Km1emG<=EK?_ucy2#IevQC1?ReACx6lt z*{pMOX*f&!+G-89rL%QsExVvPjcu>1o|KAM^6EuXp72OdKAH8BVZkh^v*D|MY|8DA zyB{;<@L?y{DYJSPrd%|)D`ng8;!>yAmiHGwbSOve=rMd~GHdaTB~q@PE8Eqtsfn-H zZrC=<%fjR_gI7dwwrp3*79Y8T8oM>yW=-9rs;u7?zOrrJ6tnW3aUV|oJikq&?S{tg z)z7cY^gB7>-Kw0`GhOYsUf7=UZ=2um3&pY)*|SO)EfQJYZ6M8mO#?2B zYwx*TnYTXg>V9@7;{0^~#+%vPdADRDO0}QGEx32wJ4SBHmX;%nUi7~Cze&-E!#3x~ zo4<}q&1;<*lEZnMuU;?npLw_?)m6%$S$tXO+i92CLp1dgZC9DM^ZBe4vNMgIc7<1y z$LFl6(>~jyUu>@*`^GgP^JmE0NJCE6^Q&W`^qwVOx?WP8EIsw|JUo93) zNWFXISYwg6sn&D7x%0QJ%ZuCBE;T_RzU}l?&y8hkH|uWO8@$7jw9QO*n6xwETc)^FWCrr~XM~g|$lGxob@r|+xYj`fp(HlHFA3fRB zry?w`)Ujjriuo2k(la8S`}-!>s~r$N^Wd3gtz}87PI;f1k9u|3)x)Ows`t9SUg@tr zZnN=z#{xC>`wwO*Oqo=>>c8Z*+&@g;jN9~As4ZO6W$H0&^WIg9UZ>|Xu9%z1ZuL>u zq0p znaSc0=E=;G7GL8PA;od%rbny7GBGjl;|kLz&NMq+&)vUmg5jpjgFXShJMuCWG*=$p zxuyN&j2|isi!T?jpX$`qShsd+aPjE_=TkyuGH)JiE&JOn^+#jjhAVCnE_bZjPcG=Q zI>mGNpWTD%9@&4pPECrG4K-JP`zgKUgo4aq`jG{}Q%bddBCnU`;J&L(Bv9 z2j&-#Ha1P{e{$g8r}VX1K{pOOt;^Ir@oz#%+lq44Wg*iOJ$W^m%Hb{8QD*9mh zNrv;#vS0`QLtRfwg1I)ZJnH(*K40jckfFA#`3qSc_F1bV7Jt0X8-1Jmht%qhg@HPf z;vVl$an773_eb`K;jVdq4hpFqEnXb3S#Ltf{%tFoqK+um>a~7szvO!O`5foGjYsc( z`snYf?Rqge$y(xSR!5d)XQtY$x5B%3@azuRwR}Q!Y4@z-FH|ZHPLj~E`Z_In-KIVJ zYxXWJ*->P2a@&pN3cG$WvmDPn@rvz{$G*+;8yD95rH9HJNw43!zF0$S&*S)Gp_gJ# zHA;TcPW`bhuE5Is)~VQ^X`2^qbeVoI?!-Kyv^UDDT_k^U{B*INdH->v2ICxMH`n5A zmn+*R|8CN9voeif|NMW0spxO!#!Cm*oZ8T17iIT|lWD6=^BOzdnoW22W$2e2dDYnXNF)y`A1cwPU8ZZ|F{;PR8496Y)I-sOi* zEr)Y9N5pWZryWbaD-Kk-E=~H&*l~Y#x9-jb(7JqFFUXzsk zWs*_Au~t`3g}(3(*U$4ya?&@hxwz8xY0s>KW&2Zi)CgwJcYYw&_poDP;EY$ZuIs#h zVC=noUh(y7d%s?)(lP2eXc3(v$rJo{dw>Lw`L*7Cs}IO-&WSOvVG3G##K`LRr1v{C z^ux~x^2BmyAAT{ZP}w{z>})f8+oTguPiAabVNKMuFu`Q_=EnP zjd@}67s{^5+^BNbeEjr*_?g0k?~R^4nEs>T-kC>%b27NPqrzJbGS4iy`R(cfrYB|V zTinBb?X$LX-L`YCxwH9{w>Q2AwYcBNPi<{mP_g#y;hh^^1opUXVL3 z&)?_hrOR@}bO+b|+i*VYh;95Dw-;>Z+0*A3r}8Xl=6qb*|IPns$5ht~-4iRt=3M?+ z`XxN4`Q@{iN@3yFS!aKJn)c|Kl7IO5l#;AzjW)}=YYS_SK3+e^>FI&<>aN)yJ1g9t z>D_O9w0=%v;MsYd#Uk=OJ6=zlxz=@?ZRn{;i+1~f=LhT?<`-2xyCpy0ghcf*%n@xE2Q@QbR{p}=1uohkOlk6$Ut-l}LZyK-@1{=Qwa z-h8~Mt-q3M(@o8{Ac2DL1RS(z|WVIrQW2NY9+bd4E<|M*KV91@*PJn|2oNaP_fNbN=t3_4$y)%LCv3dY7Er7kA#E z?d`?vpG*fcWy->D9y+dYJ?)~?JxPyxgNFjq``In0bpCzfuRcHV$y3qV50P;~A3E1; z2-mx)VjsdL?~yp)Y2M%6&BDDA1|0_bC6ztwY7WXLx0Sj!e`9U?8Zt*GX?pcSqZN;o zf7l%V?AI5v#KnQ_15w&Uv!rK=>)hVjqjTYb$#d1gky=^2rmj=S6o-@V4&c8N>v@{f(3?ML46 z7hgMURMxu3pDRQ2nbIV&?<=_2<-?{*M{s%X)iYTXbm2zT>f(s(zfvXFghg&H5zpAS zLE7uXuAL|DStc#Mm$>q%W#TcOvm048Ju3Dt+_u!T(|ODHN2lLMx|kk+blrQ#3Hwc# zubez{A<}r}n$U|psdtvfo%nm>PRo(VADDc}_U=8n`O@Lq*d41DJa!8dJJk6>>|D_v;U&(zzvACY zE?+d~MRs*fT3z@(p}BQ>mhJmh=J$F{p4KFK{83{;8B=!h)1ZQIx1H*Tgda{*$;`}> zTAcPx&ogYrai=A|JOBNvtriyCR}h)ObZ$fHuUV!IJQfAQhHun4G`~zwFb`RNr*zt) z_R!@f|9GwA*x@l_Q+)e(w9!v}oj96=0zPsD|#fFr1p=qp%iF=RT&-hwZe7gF& zbUI`I<&VCfFZoGa``&-!+2a>~CS8bYG;m&UV_KzW?W^L*nUnMVGdzX$bx+I+xOY3> zVbbN!BdLWi4qDCNZOLkN-Qnx36#U)oM&SR8PhFjEs9&jW(3sl2mz|fJH+iqmUrG1= zifazf-adaQ^GbW6iY34Fysl&BWic~mtvY6Zcg_{>tisoQ^a-1qZ#6ySvT2l7;AhUz zrTI4YTUQ6&Wz@Nwva@9!-!7l_vya`MtuegvZRfV77vdVWhwS^b^^InnT*k@XhTaM5 z`_fJ1zsWz}w=KCaVqha)oWwem~svug?@<6|#GzRdRjsnNFWVlwl(#a_mCTacoF;A=%!rblc6;YA^Bc2 zxgI>8B7J?wEp3rg_hocmZc@3Kyl}SUlMifH#FFBicFcJ4LG6fGa+uROv5v;@>S}S_G7=-^Fk}Sv2+Je4d^g*}c6sKbKB>KWk-W<12?XR?jk8 z7JqA15BqEVYU-(e5naJ!)-p+tSAOeO&NZE~@={P7m+nq!tNx11=F9&{2~PREg}Y)M zxBvEO52XG!*c#`rsmkq}Ub*3a&X-#G(ibta|Ck&(Dc>5ab=dq=HOr5l$XdCjA8j6# zD&M(tbdS>;o8xQKKJoIXxaWv6zqnX7al_&xx&^lGi@)p$sF`!~L3(M$ktOL*)!$iU z{R-e?XVLvVb@qfO;uq`>XSYkqhZb^g%`e=}!-akO}igo@|$RtT5&h{gZr9I z^LIZvl7Dcw(v9;uR;krID<&q!)gAwGq*Jh>vu*7y{YlmV@#>v|_ZLJ2yVoyVC@25Z zMJdt#w`=tFgHCsr?fxQIoy@y!>5>PWksqdq#rLe(!8J?vR2)xgNW6(1^NxS_{N=@y z4E7t_NaWm-y)XIywo$woy@Yi%NKCLrSn;1!HVU57gaBY3ti`XEX6yq=1Bd#W8AWvSAIUSqAIjHZFN$H zeP_tYkH4!~W>>U_OzcaxVEXYY*)Zc3&x+EpTDi*i8>W>nTwSzwdfybcWiple4H26n zg%^LD^jK(5=~7*X<)5cYPEz`>(k*%DD9_}$Z|QpzoqO1hS`=S>7hBPMr02&97v~xO z59#-PkW<=Uyzq5$Sm%+5;x!ZH)~X&_e4ju4ltS7S)fbb?;*+b6oy^s*JI8&kF( z-*)fac`dfX?ESK~yL@L{_TATcLw8@prfN6W=PIXH8vptmbtXXS>$||UzgTW%X(_B* zaConFzPR3LWucc(1Q~V*f1dDa--DGE8(I&od7|>}i&o(shKZdQ7xq5g`!KpQV#(ZW z{)-*Pg_)h#3`Mr=I#Bvbq6YGv-VkKgB>zOeN@3&+{57GaCa4nH{hbi$>xxhv&- zFKtv_I?Ls6&9$;C&f&Ko%<=4cHi`Yr{4$=^o~LKM_!haz@N8hPrxo+br))w!ZSSAj zhOFJOQ|&=>u+q#!8m=d|#Lhe=_&VSMyWb?&R)w3jr$c&UckG>f+WBUO)~u@{yY`pd zeR=6&_cnf`^p)uzkFNfj<*6=}X#TyAtzzeLk+&Z&7mMs`-uklq?e?&ZoV?rbOg9!V z=&Tf3yk=5D{+4~2Mjz)ZHElcAq+4<5W8NIekBW6HcMi$!cU5LGHx7OD^X+QY4iypZ z`uvPz5mAp6|x_o7%D3ieuVU#nPa%dB7bR}_4Vl5 zM>Wg$2GsPl#%ah$?WENzwVfZq-T8+3rg>vql_oiI%_1ws~oU%2Iv)ZL55> zXEIMY0T^hX5d)^cK#UZCbn#4oKf;?_40%c5J~JQ_|N z4UuvYd|LBxb-vtznZfxx0{2bySi#_EvGKdRG24DY>*bAQXIXDg2~a#9$X4>lJaox{ z>z~|~?6@`a1^cNj;Y@Ff?{Picn7fvD!=`Po-(`H*YO4@Y;o`g}RqMcEj+=AYy4qSS z4RW>G!WZoFJiazeTVC10!Zh_oqckte^c%}Ab6$9va(U+l^I3+9;x*5YmfT(O#9_kp zyNqGXiT26Yj+{K0Q)iHQKwhG75zC+L9VZWmD5UH>yCcp^Eql*Ft4n_-6e{+qcs+9| znUz0dg-;4&VueQ?%Ur>S?x_`TW_av;W^!8Kd^pF6(oJ$X=C@>4lrRcA%-j5V*@gd- zN|i$DH~+=@7CGvlewuFkKgDg;P3Q7wy8P1n?aYm=EVekQ`ApEgJ~QD>#*TUpbx*l+ z2jdxU?=l{X^W1gR^H5#w`$vHX#CsmBXtgr?x=W{h*TxS%$8&_I=Uto_#9usfV(sqA zV-wELoLP`)=OXBKp(A~AUD7}E!-rFYR!zE`&Yt^Zx3B(J{^OrBtwUc~bWWeP>c})^ z9^rTQ*=CeUGir&bADm`1W9zIn=0ESA?POZa8aQiKV(slGMUy1u=3l**)ui*iZ_O5y zqK!{>|0+=Rd$#V-hrQ>otPfLMG*g88$%9<2yzm>}JOuWZKMnKGvy9TTPbq!*s9W$_ zx1Y(yD7*JeJhd@L7P!7##k?ibI~+BR)c=`(xIq~YNDscDM>_iuw$!i8R~yJY9>Ql4#XS-SE6 z9EKTM6W<6Zb)ArPO-=E!ww|pzSw6~Z&4t~P?mY!9Gd6Key=JZ2z4nZIRfKAbx0<;B zg)e$*{?4~sdcbbkyEL6ybGU@Wf7f;?KVP1E?uPnPht<|W+tjq1^Y0lLe1AKIDcjtzwt!rn_I%@yv z|2^LY+Wm_g>EnJNG9(Hk$h0 z^z>{&i?;WoPl5|~oIT6ccE-;@fWRc%aa*v}>|^ ziwU0>Yo6e=_LpXJFR*^(?9N#p%O||vwdL65f(s408_b{0(dRpm_v&7c+BEB{8!NB9 zI@R~eOHR66bK{m>KOMFd9XNfjY0{i)pSz=C8)Y{$CTZW3=9JmCOMgGR;e#t}ovmC6 z8S57DRzG`LcdF%<(x&X$(=TrdwcB=3U20{l!G~5k@jIOY70cA^q~BZ-G?~-+L`{7Y zclf4TX<5(MU7C&sJ=D{1zkcg*uh*u@ZLF-;1?&3NZXPJRA@z3UXW8Y>BKx+=`Ym6b zp(%ZK+7GAilcQHADc-qO>iu}fPNkHSzcvWwnqIP0?*4Ur3P)Pvge4+nQ+3Sm-{SbM zA7fgq9yV3~jnkt`n~%Sf`YxLAw5PD}$u}24)tBEV&Y$wc$79nK_4l!P8`|~P=6`h( z?Pl0spRv%ZCXaV!hT-Nnch_Iq`1TL)KE>4ZFRvt-x2}$#dG;M+_oG!@Dz}dAFFU;Y zDC-9%!Dv-sudc+Imk&<5c{DP`#^d;N_tP#9&lpe6er6&)FI`Bhw&mW(SEhbxx?dkZ zm-x1MO4Ld5)lUzfR$6;Q>w`@2zaQOPGqI-{W4qKKEMJr9@q<2ox0!IT(NG_xhio zIy8C%k`EiE@NUzYx%XOx?4h7bum3vQCQE315#+e7MdkP^AI7q66TeY^I!+oZkH!Jbx&?i^Qr(NV$pex=~1eXoA<>fV-k zs_SW&v{W|bG{;5`ftYa7CMDx*ZvwQsUx|J_zj#(~Vv5GIn$Jz0*FC$N+pLeJeDXSA ztDziY_9#SH$Mbrgr_RaeLJ5bq6rMPeIP1LA(gd%mJVts?`z(_?#c#h-e*9_en@K;O z&($|Okz+h7<cmvXTh$NXEEcWq0_ z+pnr|+uC$>?6vCUr_;X+ZYh@CBg zP-gyf|K`!J^O>K=D@;~C&T&`2VTSDF%(#pV?MjzQ+GB%tn>e&qC_FU(BO<%zveZ%Y zyZj%$4Ba=aT6oc_g!lZN8xrM3toZ^G(qU51`d2U?u)Nrp`^bewJ|k_i)Ko!b_wyaH zQqlTJ3QLzpZE|z{cjl!Zzkl%y{%gW>eG*rh&9lpRGsS7c%lq<)wcZ!@S?>ybzTjar z$K2Z2`-9HrTu_;L{a5=B<%!Da0aw>QE$nmF{bKRz-z(ve5XJbA51X5hn-$)Et=TPX zrD2hE@prgt=8iRoJO2nvd~*129i9Cz*7KBFpIFi13bXng8|C$}cAxub4PBK5#$u z>~x;MF~Pq|)3?8>Yd0*Eb1D%#zkC|A1JB%7=bL+07WppgF1z}N^D=Xqf#inQhMt$A|u8G-=w@tMEUz~r~CH~5XS8q?f zje6+ZI)C-KZL)1!%~h3WPkNK{&QiXwU3D{Gj=DW7Gl*-d=~XRp22lB3`0{6(o?q3;#Z)7#jRpD0Gj zM84_FDiM!*>s$ChewIMNvq|NbO0NB?_o!a3;Co=1_lBI3o7+HV7?j-H_H$b9?RQ0c zQ*UqEwX5gvqxo}h{80avl&=10=c(JzkDNSnVsd5IqQcKJdhSL(*N`rAe?4LGuc8S{ zjy7%+xW@TmiX%tFNy|4i480GJKaJY8;6i_>)pVnp6TT}2Q;r_{b3{{QrIOE{`byF6kTkT)auuXA0&oyt7;X-KOKgvx-b#etLC1 z?6lAQ8>=Tw>NK|5qBZlt{>0j2lbnNN@YjZ=c|32KZo93Aw zkKHrndxP}e?-|#m-Orr4zwCO%GKa^yD^i$RBK$s22s(1OI&g>S*AS2GI;+=bmPv9f zKYPSTGnTW<@9G1!&*F*hTV!57j=2-s&+}+b`kDzFjw^Z{%02O~^Mrhr!}L=c&v(cy zUVko6{_w6p(SM#qegFLSys6<7uN{m0Q#x7Zu8YuLoGugg<;$D}v3CS-Y}0zHv~mZ3 z7L#+@O~aLcrL_+}W=k(+dl+$CPyNRI_OER_1-w6|94l@z4?Xkxy7?q~kF-^ytjVO@}f$vJs19O z$$8FE_r6YXvCawhHNFc=eNU(UQB60J;MtZx*Cz3@Ws`GQmB-12k5BB^*<4aX;#=d6EPKRfRAlr17URXYx({&M9$pBV8g zL2CX();Y|sX~+zZPQ%bB~<6_^*Vai^uH!S3S~o#CCrz-MVD`G&%DOt`|D%Zpz)yy4$kiRhHM? z+kaSQmd!}Gx9HflJ*!GYWc_BUoqr;?+r;#5slnHkW$RA;OFY6KGp(>LefQVv_61*= zCjCh)*W@aTuwLRfKi6J#M&6`d94@g7nV%}vsjoezUv~OM-G=Y4WnQM56&JS1yUzZ+ z{kiMy)Q`_6bX|F}DvUlxqjx6@O>vrns(;2ddr}4jV67Nvd+4S?s<@G|_9|Ygad6iW#k>JdpA2QQtSH)ED%QPEn6u#IRC=-wpuE^i(U#b*#R;187 zK;~6|{`uH{rnhg5issd> zhTj?g924;lO{#aeV)8NbV?=Mkccn!NCl(y-y0uB_?BOlx9g0EwaXB@=-#4)OMF)5rz&@SeC@&X^@Q~{ z?v+vE4k3!W{#8gn*r9Q6_L3s2-wQd8UT}#C(tD?|(u-@p@=vwM#l0uximN%9k3G>$ zTKv5>t*$6wq1T@SA2v#@6Rgrn%?M%Sj90LomwSc1!_{_n%fg)&nyOlj%-)x7P5fUM zcFfY^vWeU|ZI3U1Ufy_pVY9I1&I3J*nc`#$ME<$hZaq*bI(gP=XVrO|&s_@>tNyqB z;XSjnO#C?+O8T-QUKiNfH~(l2etqnQpXsenUyiSjI_k)pzsXatbhb*)!6}B4lY1{c zND1BcccRKv`!`Qbesq|m&*Hw&Rk6ThbKv9I(NF$7UA-jlQ6b+XfxUCyK6amUnxjrt zEaule$6A|cclM>eUw#x=Xe9=!B>PFE?&UMh*(@F_zO#aU5i@ zy_i&Xva8$2;8~$mdVoFEtEy-RT z3C=CapDw9w{`UFau8mrsZRg6rHkVP?lliydke_II+UFmIpPwbHIygg@vun|EsfA)Y z`_{HeIhQUM-u!BwrlH@>hdGMhTj#6`GFm>f#CFM__>$UtPS2;!h_{HGc4E`}fB!pX z##+jJl?W5dzS!l+vOKcA|KznRnW10b)SOh0dhdL3b6`le=su5!qI3U!Pz_C$Uv|V< ze6359O>#*|i@x9FtGGdew6Cn=4+^LlsT@h4za6S-7Cre}6(} zf2rYD@n+^L{B0@h_fMr8Dt~>n_Mpdw*3~aQUdh!vbt~JjBj%SCOE_o!=H>1IIVuA0 zf{na?D0+Q4^KNd=&hqEgK65XA{FPoEvn%k(=MXxl`UVE0=fTgpJPAs<>+}-Fb6U)@f;ZjLpM6m#sGm%Q}SWuC=Lb@7-*j z(Zi@2qBY~0WyRmcuT@K={_WeN^z^Rm_Z?rK-)WrJc`)wNujgN;>saa>-X}1tTl7oI znRlTUtJb%DdT@M+^~T^cZ*FI9^-knF_;O|Mow*ICH*5Yo>6sR}$fSec`HtE7lECkd zZxs~3zY9G6^6-?Evo=mUt}6MVPoV4CTvM&`qo1~X)}GN?$KCP0l$%3INdC0WU+r&^ z7TtfQtH}L)C2ZsHr-#Gz?&D9BbsYY7^n_>lWPD9JrJHY7*x4VR5s;~|F885*OOLJH zrGEZu>HbXrC10ozS00|Yr=e?Fxg^6|s;@9HW7V)7sF-&jy(UiNkUlc2Nhvv$1l^L%rB zR$j%gKe^gRM4mJ9+?y}qd~x5c{k-`TJm=Rx$x3Gr_)~8(lU?qt#0HHCcB0yLE}w*- zU98yepw_)4Ve%@w$!^l=>{@3k>Rl%N^Qv8b&gkG-)@Apl_L_b8C4Oh!p1LP^au0mNp|kf+0Ry}sFk0ycHp*kh}=*% ziA8o>|My6{-_kqyoF#nC)m0~-`rT|cLzOk!q+&(PhQq&=mrKmp+-~%1arw0;?W?|t zSvsEkt?c@D<zcnFj@tPbnnW!(?u5(MJC%f*A5p%R%pdS#{yWjfCLB?Yf zZpm_e-LUzEW`DHDg0tWB)hv7W{Ve1;nQxVu)va@X>Y=!K;(O9cL#j`3o-Ao{xKp-X zWSUr;X;@z7wOF^6(g&BFJU@T4&9}DQLi3_BcGfSv7^=JN;KRPZTT^>dZ`vJq(|!`Q zezwtrrYp6@pjI%Uq=KU ze9|aPU%ff~)IR@n!k#r(J9PH{FHR7fc+Fv7*Jq)n2IUO+7*87r%hLdG5-*Ldu!FTTRLoqBX0kAxuNkDyMpW-7yV~j#OyoG zGxI9*CuKH$iC|O-O6|-4YMj9Fzh`E=sDxL<>?g9nY_?9-*wtYzw&>X9LOwskz5SBg zwM3846wG1eOPrziNxL;BIa~DCsbz1x9-UU~es**3lg>A%I6lAH@lW^l#}vP6)18d3 ze;Ldb44GNBU0ZfO>($A8r#MaaOKB@Eo-#Y_v($dk$uhIHmlqml=&2^XS#a3(`?`C* zFGYGjw6{$V-cuG``y_T{`XYP%=M!#8ZfsbY^iw_ZeBQR0X=Xdvx}x?^QZ0>Hq4M&{ zEBAQGNl#ux{1JW3dx%w*JNM&tksABt^ZkCS&8+*sTVIH^_U*SbnYU_Ydi;OKJCp8C zyZ&vBkC{wNuaWMKr=QxtsV}jMK4x zO0fBP+g$ul^Te;s_Roafb_=D*X~i&3S}m1#vRqE+8|Si(&%e#LRBU8EbyM}r2}ZAu zS3izA_w3M?mRCI_6!UTW^?$v(`u7bFzgoL-(`kdL9}h73Z{BTnVbQEF_gc1#G%qPX zeDdLY5w|;QdE>b>mio4a%>SJ1()idTII`kschc5_oqle2T+TXj?9a;%UT4Bs&EBYG zFRs&iI=lJHRoQ#To97w)4J+~9ccDWyESr6vjjMK`+OAe9L+ide>uk2O_m{4ldUADE z!%ZRndrZfKDkhX^2t>_LK6fgpmRxV-Go2KcdDkG+VG~k z?~S)>5PO)6`GarUPc5DBM9BTSSMO0z8ME`!rMX(H!g6V9X`G?Ij84A$o2>E6W#jAW z7mHt{ObkELRn52MpmW7phWce@zur%)m3<*0m-f)SzHE+xRgL*kg(sCIa}*E6dnK7D z%C2)>yHUY-x99h1IpW+u*B$kBjBvYHX&cbaH8nNhh_pbQ;thRe7Usoo99Qp=)Mon6 zbG+|ocL!s(N6dWw_CN9!ZS$)4JXw1A#-;~LJVTcMy5yCYxmE1(l!faeFBwmHqjJMX z+Us%A`BsacVGLsD-y4ZVUw@+7u#o-OmR&}x95h|cZis6|DAfpxPBYp1L0+o!>zV~B zTW{E(Enr{%r&VxH3kTUk!o%FL^v+CMW<;(_qQ6=FOC*|hs zSbXiuMW%Kao5i1BE8SGhdnd``c2IA9_%YdV6Bk#%DU*Z(nD5QxIlN-AO##bQ*9V&f zYo}dlnv`F+Wy;;D(d~Ip6Ic|sh_)<^U3U3D|7*eZT3>?`cu?#a6)Jmu_|6g51Q|A?!op=&V%p`U;}=+ZRGzz)bg*0hcFWT+mJK#S zvFdjxD~d5R<_Fz9y?6U@D~EmCxA$)lx*m2-Qg-9R39h`So45by@cZpz@kwaHrHgJ= z=Y1t2y}T?oO3qv;esgobOsC&#Gr^9t0+M|)6AZ60ede2Y*?HN_xTRZV=XfcnuKoY~ zMwCHmnsLZo?UQ1Q7Akn;ZIZrv`sv%<(Q>CXIKQp5yc8)@RCrMB)w(%%*G$+S@#?(e zB9lbxw>v*?Nig_Vt9iJ|_H6`@;M)_o!akp>pXc|P*Zrif_t$-TkAgoJUNm{Nv@Ire z_e#+p9o|PW-SU(62YltINm?b|KfQ709QipsxeQn2_0N3spZ9&I>ZeQHlhqB*>TArs z-S;io+U(PPU6K9KC!VWRSH6Av>8Q||I}fHr9c?|JvB|V8bN(!MTlY_vXPRzjYD;W$ zDRIAX-A^mlZrj;7v3H)=T}qbUO%vUD;@_vx&5twq3#*TxIod6JGnTn z`RaH^Y+QYN$+1t)w_haevge+s<7lE0bmyghcPD$>6G{u;~IhGxv!v+Kvx=O-q- zdTJbcIBWU$*JMa+VO`fGrzdT`@4% zbDQG2nsH&C$7S<|Yp*QgJnxoBH46vpcH29pW_-&?;NaG}vs#B?;cnO0pBJ4G%dXjX zDu(&n1=-Rg`oDs!?_Jqm6gnDB;oA}cF<&&XdnGGWGEqx#y9 zF6v^9j$P_sTzWs{Upkc5^eLa`=cL59Tt?G&8_c@#zFPNhdp`H3BGU!y) z$!_tzVRf%MuP)tPoHF6%no|enYltoLYL4(P0OuqJY{_|r3j8n}%ZK^LhXxJgM zIN>kTn*|DoU#q@Z{cWnzv2OQuOI)w#otHcRxAo>*-;hhKzxj_Z-_Vd~GV937QwFPA zwf-zvrYRj|G=Kl;!Yx;4&w7@-W=2W5orFZz42~FyzdVMQlYTX_S*Y=@n9Sdz?y9(~ z=bhT)innKCZe2Y0bVb1J%|4Ubt{?pc5^SC>wvAcnaBF6(r9t=Sp5DZ5sxwb|yls?~dU{rtKj-lc?$<^3q4t;A z-!f$Ud;6@9t&NGf&#<1aAi8Suv4+RRrW01E zGvC?y&MVP(xAU<-mnI*1k(9S{2d~9-$C@a+QzhyCk<8);Ruo|pY$q7XY@9A4u)pj@F~5#^(t^w#^$WgRBz#>Q7WC(-iiOJ>r`1JESGDZ75%c5q zs{GL)e#!C`+x)qie|`jC(JtcCD&m=Y@5tq7x%cNUvFoj2?P+GWX6W_{xj*^jH=`V# zdz$-={MYu0&OR7Urm5Jh^t;4SofinvbdHjtLvCoA$T))ZKmm_T|mmDt&Ta_~#`; z+y5med|a2->pY*UJ-+PC!`I2l@{Ctbh#W|0F!(oR5r0oEYsH~M9{uOk_09io(T;-;`3x1zF4=i(TF`HFVYA(TzCHd&x`2+;MHe z_2jTaD^C4+=U4qGT(%%Mko(CiUY<`+ymtqtCE8_|oT(~GUbgJb>Yg)UiP_QDW*o@q zm95(2^tZsHZc6o?&-uBtuk0v$%CKQ|x!{ab;gSh^^Ubr0JReMxOR`v1J#Fv$U8^tj zUi@jfH2C-i1#c_;o!d4_?+$gytTdOq#_sX!FiVZ`{dMk9${e0-EDvVaoCuK*k5J}3 z8aDrP!vD`<(`Q6~__ri@dP>l-a@7sTYgQ}HEWEt7?Q`IPhZ{5cL&Z)>?VY$nM{c8f zPh`?+o#XwBj$P)k7x|uL@p*H`^iXrDYa0~g4~JfOsl4sFs6A8kqA8mibDwffyd+z~ zQFeajQ4xlURaf4{CjM#QtF?T8+pwlY>-a^sStULN8S>uC1OxNYA01IKS9&~aqFI)Wi{Nta5R1*)w~nl7bWdes5cnce&a?dN z^BGfC%Vpa>F>CiquK8Qpx>hxJ+fMx#2J8ST?9D#WnGC<5GN_AREzu~_6n>y$xy0E;?)mS4?pVQRn>h6g^Gp}*kdF#v_X)=i=Y9%VAy}{e4xX|RTTMKy~zG>Cn?rgT9@WTpg$+Q~7 zGy&f=)|JP&0&YH+RGp;T{X3ME!D{C2E4n8yMcrZcnR~OUU8PQp_5P}2F?sU>na3JQ zn*EnmHvGMk5;o(t%csUO*Lymb-DKaJI?Z_zi@H&tA5YI-sq1n766p?A%0o_o>#i zRhJfg$~kg%`KkW(CCeE8uku*2GB5h|-6w0Ua}!_geyp0j;}+k^MVdFSOxI89+UdVq zZrhX-=e%yE_S{@(r1vU7MS8yU(mqx`iO!TKKFRy`0 z<@*b#eO6BQ%DDM|ZRYqRSLwZI@0!9g{$L)nDK2V0J3F3-)-1Fvy6#_i?4lL_h8Mig z4t?|}?=((teGv64_ScHw^~y(09@(ybC3k;zjr#~m0mx(xVV}Ti)G<&qS$ws+b$F(~0bX%%2 z+>|Ul1ULS6bncnVZd|H&OECPh<&_ufKknh_wmk45e`@LdNQWo9yDmSe@oC9-)%;`X zH+}!d6PhblyqaNJ-8=8__T`Vww$3hSD*LR@y0SK6XIYyzLuk{J6QcHy88^un%oj@+ zU$icD&Zkq}rC2McD&$Ik};BNbj@0+yx9u&AHM=cEcG;jCi=A@&+nWedc z)BU##rLSG&^lu5j=d?e2QsQdfEQ)7(EFE?D`Kx3eUSGuOsEb&4;w#xtQnc^zHeUtJ&%3M9T?xEA7C7h;u_HJIk#B7Y618e_%%a!w)e?a_P zW~QHS#gxaL`)(W+NiAeq^L@9}ne`>k7FRlo99?h7PI+uSZ|=$q%va`mPkHdZ_Q~gx zjH2Q?2fnO-tqOYgD&4QWWUs%dHRY1E`0q6{@3c51&7CmI@_O;BuN)y>@i#O-KWz$0 zTV!}beESk^7me~CKNc8U@iTP>@qaPhWFp6(I5T^3s7mkZr+2KkiiO=(=F_EC#v410Ue2>vVm`6^+k!)nOFuThwVYNP&tjDnlPXwWwm%~7^y8YZ zv*nnAH@b$+T$bsn+Pra|bNYp|8J@3&P5$MTwfzz}*mHRI@o(!FeeRq5eY)4-iIF$v zSDm=_LbgpQ;_9CCN)zEGwUF+$pT&6cT*cqaTM;zZLRe*~^QA}29~b_X@UxSyGTpw# z>;43hlA_GzyUVu}#$?L~=^YJ@YKjlKdArs)f%`;Ws(@>(sN;p6ob&FbmLdv_%Q9|E zT)&1_^jyi5mkaMckG?l^{R~;|R~$Zyvzq^J__BUtr0?N9(HkwFde3;x)w`d2-Rkn5 zEYoj~^Gs|6l78vCGx5s5J6ZaGw?@9eRdK!Kch`_ruIF6r-E(DaR^PtBtsLTbI15Zo?el+e9oxQmX}Q(~9=U@q)g2N2p>9!;*VLAnuGqkJ<=U3a z4S(Zq8K_EV%%AO=^X9^_i0jv`iJjiirRg5Nl5u@s)~USQ>&IUF+s(K6?6$McYnScS z&HA`*diJe3p*)EmFP@}otye!^`p)qEk)Ox6KbFr(^EBOEcbHK`Y5LpjP#3@TMbF*V z%qq@tX*~O@wPnHM=E7sobAKI_eE99DLgKXc?~NYqpT3^CX>)S}^E&_ge;e5sEuZcc zVSnRm!Mtv7x0Z?G+!^ifo9~!4|8h9RsQ9S+{9ak%8v&+gxG!Wr5VtSX{Pd)jPoh3T z<&P~-;w?t+>&egc6(@By);k}pKJYteO=F>{^S=tk^=gYO*R%inb7gYKHGfgJg}VzX z)V|bm{(D_udb+<_%SG+|?=+phvKa@yD6f4Su6C_|*30};=jD$jD%P!^dcpMDy{e~Q zD^E{+d3h6S?*0EM0(@s?XFsj9HWJxZmiK$2vUly|(r6&eRav$O4nVeGDoC6iXoy!Cno$E~%8+rOMVbJ0qC za?bUc0x|hklcSEzS;cqL^3aa&FV&k}UH{77I$o&L?)lWyQTGk&(kgDxj2pi?b7j6( z)>K)qn0J5e+vLl$Qq+=HE-m@!CmMS>@J8vhZ@b=V^O*nlT9|bBbX&y%|ENp8C&Wri zKcpC)y=$ksVr}xK6QyG1ldpTvWcQkXfW1XG-CbPg>Wj`Kqvb!gUE377?979_`&~;` z&Tg7i8ma9ZTgsBu$!RSTbzM+teVV~d9o5at*S}rjR5mHVWOuM!$VQon_7{(~E}a-; zwv%5n;?QbulOwK&;u>#OsrKTQ40wyJ7z{bsle_wQ7dx>o;AzzAe)sWwW(z*z6W} zmPNDN!{vlq;~idn*p+!rDxxsx#;I*vGTzTScVOy{ykL`*M|TvLr2W~OcDZQZ!P7SH zmRKiz{=079miqQ30#A3y%chk-v34{6!`ISnAiX8@q1$!Mgvo}N5>om5E50^XarW0V z9uxX9#eSWEsHtSInzT@$AKQN0Xlx!kd%@o&`iD0?NO>x~>_FADb|!6+d0eRzz1jn~ zrWveGQk~bjBJbwT4SQ>!%ii-*O7Gq{ZKvao{+&uG)jV`-mDq~@*_YNbD*U*r)F=DS_efkvp63Mjw!l6Q!O4|^f&X^)e`Q>y z>$;3{kG_17^Bqk+#`Z#jfI1Z*x86r z=N}*UKkb}ztb6s#o!tGe_ogZQi6}euIpt^n1>rwDdA9f1cJ-^Ax3_qHZT82EpyMZ# z=IR`+eE9HSX(gAujcn?>*0~>Up5FDa|H}t1w#|v&@h(OyPM#8#;}CFJr!2oDD_nNr zt8im(tCl_Iy(a5f+ilmFyP_@ZmeNG=W~TFw?Un}x45j*SJoilwl+wI*DP-^N*cIAB z3yQj57{#nhxym8xw@xklfsyT<(^)>d3SX<9&-E@m-S@)k>()cL(XWrM;C^*H!}?V6 z9Sf2B78X2PFHAcsDk5e&Yg6{>rdOx6FW#{*krBPfGCfQ{ByF1MqQciRDwpZK=?~a% z@nFKUm6=RmH4okuGtDTw_}F<@=G7a0iRtR53h5$TSt-@&Lc+=uqB5ohdTzdQxw(zu z(3O_JM;Qk_QeGN7s!Evj*@$OEC_MH06wJb~5X+7g!*W{FYEvU3~E4TZBAD^07&!tXb%Kjq~!DS)d z&${fQO>Py(qt8mY;hx6p7Q8cfUCg7_z3p)BuFK`Y0V~Q+$QYI0^;|L2(r|rFi~q5; zYXnpSqs43AZ7EdYH7NLW_<~8}pAM$}_p*Uj5q)liE9BCQ;rKg>^YZV`iSLD|O%4zmP`0=A!`))-hiVTG+mw{Als4FW_srP})$J{u|b^ifIko!?s8@HuUXXdL!v%W7i$+<2zPA z*!w{2*wv>jhN>slM>D=@)V#(bQMV>BkAJ#Zz@a-4Q@(0M|2DjI=fu)#xhQo<7W+fH z!Z&=}e@>_8Srxy~POht7S*5dH@ayL+WqWv}X`}Y5msgi{gdQ_qebnLFN#WNVGaq)| zDlk{s9qQ?yCs{9YG3a}{om{TwT0iNJl`gmRw(hh^JO4@XxyFXPzOdc3{-UKDPjFnn zZf`qttIAW4))#H!68R0`?o5kBG%Mn#DNXyj^+!f|_rZNW=4W-*OA5W z8OkVnJc_kb_4nU4(`zhA(*HO1ZhYEXR3d*)_19)rb3cB+Q1w*~S}*!feh)q19eZ`> zy^Cg3n1g%NWAZwVa<=iDv0oD$IsdTCn;-Y9oCWx1yyQ_cR(?78=0%?R?9JE2eM=e^ z$lQFK?k)EAg`{8b%cEN>R!W*0n%`Kx@lYB&!|^-E+8)JKnC{9;V`~e1TfQOu!UuVw z9d0}a{bwvzW83&9@nB75^QMotXM!@7a!|eYa=$eA1P?b}*>W zqy6P>cU_(sTmFl28hkM~j2G6pvq`u07ZoPw>X%5)kt>eMdKe(LRqru}*25y-_YNjVuzaBDgqTP{;4Lvr6|3dahy4mah z@L}b@yH5Fi?4r2=`4)i(ChypgY8Csg>+u1xm(^F+>z$8&7q)nlj2zIaUVVoZr^Eo^7j&UfPNKs}f~b z1wP4U2-#N6=>4~(afeXGv7|3ruVk`BPrZN7aJ6Ww$nvLw`3GE2miY9q`Y?Ij)w?!! zU)(oz1;wwFQ?=UsaKpZhtK)wxTBGc9v@Tg+Gsne;$0{xFKxD+0gRiZgy)OKB&n;ue z{biHHZ8fzYx>j_4o=}m(8JE+4`N`w**}`u`6SFoYs_$m(h_cT8Rb8mJRc)~<%XLlD zM_jssqOzBlRu$aT__t)5P3)P{u9E`2|1WGw^}TCnBUR`-mDzEwesi{8+*Il9f9E|* z`|rmh7#dw~HvLEF*4o${?`-QE@{)Z_rUhZQRHv)O7%s5iI?E;PW`yKwUGBTho+Z6n ztFAFl^(pBMmTN6`$up>^N@$mR=(pirh$~M!pZAp;|6d7M8l0BC$i~Oi#QAyu=BZ!f zbN6&m3ntGyc_i`np=R!cEeno5$)?zjhy6RP`Xsa@od|MJBQ|~$fZ|(`l#&`!spGLE0*qkGa**z+NNU<+GkYEy}G>_)etX`rzCM>V`T9xKwHDqxWtU_g-o99m$@DX2nV|#upz{?s+`xyC>iN z!tSJAUEkwI((7w3i?1mZ|B$V!5ak+oRs#86xVG&<>*u@t~RXLTPnIri9p=$)MqJI3GSOE?D&FoI|&sr_o z|2^Db_5b3dOP?7$PyZ!yGEVVM0PHx{~vaBNh`=sus-#l6O-lU&>7#UgD zBK6IvSi_b#b6boc*| z;4pbN!;3GC4_(VyJiBGhzf(4s+b&$Fxbd{VUCc);{PxDX>D6gBl)7_^Gh29b7hP07 za=>%m%m)e4(lZk`$6vhqa?}4P<9q3fr?*V#+i!Sw{bt*PC3D;pe#9rfGwzQ3d}(u> z6>|cuWnr{y{{%Z*Z2yz*M(|{ z*s>$?Vn1BFpD3sAwUTUGu<+TTKSEp?x0MwZE;4!bJ#*v^>Id~3wx4N zo0FF53B~72&AX?uv+VqW!VNFpJ#|Zqx%f<`QkSzWW7^VR%$vT7$$g8w&(u0g(Zsj) zvGnr4QyN(&`8)}8etyUQdC&Zw|HZD4&L(W~{t^~((!B2Q--c(x8mXrz3Qw4zFS0nx zd5Z1Xq{Y%VeRsx8I#syw|EyINpC{Gqc{wxW)RqNLUe38|e`K+B*FIyP_~-YY9kMuN z_lmVY*UeY0sj@Qd;+8E>HtpLoH#ki6!IM2RCf(7WR`>d*$!)iEJI(j!^y3A&(x$xr zqg3ITr+a+o<8!_iBGogzYF3s-8=tl2W|iD)-nGF*>&tz~Lz8vSdvma|9GNJ@;_~Ew zkK(`OH2&7DhTl(_tuY`bTt z&#avZT+Mvpzw9@!PUBV*;$}^fmEG&hWo;ao9rCtM<=ds1-^ym{cFoM=-m6>PzSPL& z#)kFQ^-G_*H5K;F-2GAY|8&{=(evc5-<*F(d-1>Tx0O{5a(|VqIhdgBvS0LJ+lhz9 zb#E{1*XzHRzkZjFA^*GlxaNh8&Q2BUBOX-yxm&ix@$)?Jxy!G4!JD5a=C673yq)!a z%NG1v-!$=jS=`opcC-Fg@gI-dw%24rU7C}B-0x=QcrL^9e#@BD#oolsbNaAf>%)Gd z5BsgAonN?+=^VT8``yj;li2Itd^^s0lYgaL{}h30PbOx6*9ZHbKiXLqxBE|>N`w%f z#DR@JwmMr0RG$>FTKheiA^z)a#>f*3PRuZ1*YIF(Xv+~Ye^RA$j4!Q)+3#aY;)BhT z?;rV^^Q~1lUF_LjcF|Q!`Qg6Hd{GWn&`=j@ohyxA!GP>sc| zvf@jh=O2#xd1l)2{kP^`zV}kTV@CO9?n=MQ8*Z%*?#dDh~Ss%Yflyz84eKEGq^ zi?PsL@iMgZTIfBM2f?%T_Pm=F9Db_7ZN7Tw(oVtcnSb?{@3P>!%*(ss=JyWi4QF$T z8`k}~r@!;e91e~1bGX}^WuHejG;et#Q02vR;c|E>SLTt^&wcJ_eR`aH(rCi%b3x*9 zwTsHa9CeM}-apqTwfn=;y0lIlnuXp; z8nfl9Pq%No&9(5da-3=I+7Qb*hZnl@R#=8HJz!sJAr->M5#k&_ZMNa` z?Z`Ob{9Nthf!IJ*`8_P?+V?RiApIuG-NQYmOH)qH+f@61hyID(_xYmksLq|@+V6NVBTY@>igiS= z@+*(%Z)$-n^f+_FZ0AoYS~l;W{*(A=e3!E?-itC=wZQ!NHgR7Q2ir-?$D8bDyItIq z_wuOhkE(Z{xHY!i+4ODl+o_ULlO|l`kUVOTb)>BC`s^*oy8bW9ON?a}WZUDZxO(Tr z`Eq*K%+GuaY|`((!Z`i46|0r?mNBBfPld6 z!{kz7hu%A7@5P~1A@T&b>%MG{6?JhfBu}A1+N#D{eW%XKK=I3{1Wycgv>EC@h zGjA9^4qZ95_5X>0+rh7VopssMH|MNu2)Pj~urf*d*jb;M%UAup?lb=d=gNmiFDzVs zY|B2+FRg#AD$`$AN~MJC;uFd~^`#~A-mKj#*QEIVooUgreD(pSwc#I)>`SL5uus-` zo66#y@w3Ke>Fpk+WQ9vwllS(XoPD;|=h_8XH*cY=)V_ZQB#(7%+1~PD({vW*ko$`7 z61uO(^Vp^Tn3tlU?*DeRV)vCTM?Kf=yuo?wzM#GH{9hfDgVwFS=l6u^i_gMU6J`gl zuAa-5n>5Y!!J&kEC2Qo4UPxK9P=4XX+Me@==C3Sdh}jq>!6LjN)t`I)L8;PAWsi;0 zUdMEnua8)CH9h3YPQTTrQNca`4AZWdM6EX6_GZ?$c~>5tIdD@=c@pE=V5OU<;(KQ5 za@xC{GR;<*e>5;iKjp&AM=Zr!G8`SdKjjw%#c>{965zC_sdV24Ijg2GOYN&xq_02r z(Z5FZ&Y~aEhqo84&b7H5;F0z!LF~5ewfP@BEE(fXQ&-zZ*_OJ}N4IY~hyGr?wc7LL`#ZPyhU)H{kWky|Q~xsA z=x~q6%6mKSGbmLoovD;>cSq#d=NS_}>wi6#{hj^$ho+Zyoln&F`ovE!J3etq^TKT2 z32WADJ$@(jUe=%LZyRiGH9Y@2W#K}H{1-}m#}7=e5V_|R^tklkBew?s_Y*W8USqlG za`J1|->jb9yV}lOyS-^Ut9P84$DeO|pG9qY>@j_}AXkrf#hiQmPr9Cqbw%fYVCAnf zH~5#nchf7!Ps)cIEGDcoJ|w^2;eD>C$-FoG^SHOKiFLdX|0!(cQ*Wn(lbfDA2z+H2 z^83oHTie22s&#jle({}t`|q5Md(T$RES~gHNIgNttF+2fz^+|DhC5SSE#%6ZHMbjDO7jeA-5jV}31aw6%9x zZxHIS$h<&xjr^mB5v_K$4GOnUgik$Db@sk`-Bs~}fd#MQCkctR{3>ETaqjUhzo zUzYZShdnd9BwqjZEbU|6-811hf6f$z=i5Q{#9Gx_vYyke;P-#tUC|GoG24V|y}ug~K8C34YX$K*R(_nlreeG^mO^qv_nTX%h1r&2ZHQCdFF z_C%Gn`-GaNNhW^((-9v2>u^%R>>s8-F7G=3u|{HGQkT;=k2rRy|_)w8>Wf^2Uyf^}Cm? zXyD5}VamOVn~~9)>)H_s$v*-;(>jm*;6M8=Vs%Vv6lcvcw~0>2oaDvD`odo=zWx2( zB5@(tqX+xCmT|udsxywzoNZ`wrs2=Lu4VjM(REzW1-lQOxoJ9K>T$K0#m`GLf9IdQ z;<+T1acTdP=SfVf5>9?9TY2F6UeAC!9j4+zSx z)t4;k<>CEj;C(}Ic6fhGA@^L-G;iN0iOT10Tu8H+cX)NCFh|i-QNN46M&hZ=ud{zm zKC0hRQ1CUMKZgIs!}i3l(dSJjZn>)U{zB-aMIv)w-FnC^{mOZ#NM>&I!H>dM5|$X> z?3(RkoSkre;#ni}!|6$Zd8zFTkEA#`C!Kxx`lOW6`Pa+O?|%^&EfnQ(vgU)sLzn#q zE#Xs-zbs74P}2PHUS*#9v}^6U*WT{=`0ve`1`UhoTISu0Z?W$@dwCB_UByuVs#B=#- z@GCCAIsE^Yb^jA~r|j~Wbb_T({J3%L4zvCjK7wH)Yp(_$?V2h2vH0Mji8J@jeJdws zQ*cZA&S(8Uw$D_49uR-?ebaGfuXFQWtU1QDT0p|+<;CSu zlVbYHQnww-mQH`;xcs-M;_FH8bo1^#^KO{dbEo;amx+|g6|3Am(SS3{UDjr7-uiCYjq_`_9$Ht_xcGqL`-}t6Z4@8N zSM=`Rz-FG&de-W?&Xc(bk0!4Fd{q8Z*Xf5-|JMhW^*J8;5mOz1ds}Yx`>mkU2yTPU zBzSwbI`{pz|NGwh{I+@fCD&fna&pb-nLnR;6|HMBKWMLz))V;Qisi8d!s2^B^-L*! zx^Cf}YxbuDzch!w^?K+bSzGb`#e}HuZ$vgZ=uSB%D*9Y-;;t6~XDyimO;&7me`c_t z!YT9|qdv#fsX=?@7TtJ$-D<|~LuYgQWo)!Bg(})!(Q32Y!V+4rGT`?O8}&$o#1~@6 zgABfwd2Zb6)Foe{WhW`A9}s+f{p*vqll%7D^@#_Wu#~D>X(_eJG+#c~r+)3;q&ddU zKVz#m+Zs*2^+`WQJ><&zWzFhy53O!f7kN|uS4lz2$tt66hg$s>txNp79qL~BXXxf_ zXK$3r&H6h#c~Wx4l{nR`lPc0TMJ;punjMvD1(>yR7rZM!w?oP0)T`@^mM6EYH_jo#usk553@TDZuu_IRe9KxcpKz51mBQlF(V ztJt#6pN*(XVR=87Eq+1x^IKPHUp&hEc0zA=dq&mqt<`PI?G^HU?wmLH_Hc*aD>DK0 zlC_%}OinG@7FZhkO${;)nZo%y z=+r99+)sXsBd=H3XtvB=c*ZDCR`PcJ)?b$o@7Vujt7`Uyi~p65w7!ZyY!QDd^!=~1 zld7uA3quvcD@q*RvaVHVD34#T=FE`?!F^}$DEyyRRLmKv^yR#w}0#qKAe;x|?= zDO8A8arZP`f3efQEWuT%LnZ0*O$%RN%hb*F+Urj4`m6cKR`7Rj^<)jFnhQStHp}|A zac7^AZ+|Fy|2W-H#J@_f529M zMAWEMzIl*BI_U)0_7IvR0c7>&H$FnUC#aRLq<)#O5q?_`j^m5!@C)iW) z>s57gXVB-oSI(~r7fd)Mm!fFj`lV~*2Gxoawu>5em|6zyd|0#oYS_+eH*zjdN#&on z^;@R1YVjL|-R~!?J>^(e{z&$3*@cXZn6BNmv;FtBACY#rr>JY?`s7i1$$9bOmu25C z|0{Gj+nd|)?2Ou{Ns8eIvyMG%dzLP~EqR5g{+a&Qsa9b9{ULEf%};|JAHTtDg3(ZQGS>(wKTwDDjAH zb%fUm4PnpIGdEm0GyjO&qX}E=-fVJt*wk*MJI7isQ|R!~H@iLybbS+C)uC>DC6uYn zHQ++h*$XmER)Q8xeg9QIygvWk{eRt?4T*VCwii>5G&%&oDxLnh^g8={)7#Ily?bt* z$y;C@#2nVW@qvRwREeTWPb+WTD;=Mk(Q{eiAI3dwTL0xk#zp^vmYAc_MJ*EES2qY4 z_=Xfmvc_G3wXY$F*Cng(D_o?T13e__2HT$&SsPC{%CQnHlJ}X z>)*cWnroM29GPRw?dqG9E_8Oxw#mO96CkqlV@K7+=+qS7o6+eBn-nfAJ6tmP`i3dj zyki$sub&vX$YXy*&aH}sNj^N!&s2UqYNFXw_110Uz2Z5iRZR*wW^FXi-EjAfT;B?| z%Y_$9w(s*4Eu9*6YQd3DvjRSQ)E%&s{xet5&a-wSo5`x?^MO6O=a2SE9Xcx6$Mq<* zw!`P)=97m#@Bh}i$uvLoTg#zG%W?y+n9a+%)61}|JHk0fVS5X!w(_lGB57wW3ww@b zOHM9)W_xePv(@I-tm|2V-4^HYbVuE7j?@oYvvSntgIw{_c4`eInB=H|+%TT)oqwdeiO{8Rkwe zS=PiXa{tS==>LKqwR!VTdlx)-E|jt6%Q$wZmya=LAgs)RPFNV-~G>UbJ`r4$n*v5vv<+L7HlRXO-2a6)!K| zoI2^V!EHX3j}Z@qlS7S@d;8hbb9q)B;>|XDG^ac%E9>!#(#`CQr6s2uRlIid1YQm7 ztBzW7_rAG_%$>DAQrQ^_roa1OQg~G}&i&5ZuTg*3ik+LKyk+%Yf$LKJvyOB9UUMK) z_{-A6)0CsH+pB+grT>!Myz)}y0>KUazA@_hhG~AzT?fC%F1{dpZD!(E@vodcUQ4I< z&HmmjE1Z2-)G;sF(%Lg-uVJRvCGq@%y`k-KF}s-MmOo3~xZVAMhyIWH+ZT_{+4}fx ze(R%SFaPag-V;~gvL|lK>&{QST??-LEp3l|)a4VO!1K0`wQKH*l)NnhzNu1$zrO}+ z^W6ER$R0ee{E)A|*X^o|ev7b_8IcSnQB!6vSew~mAtvRayK>c4GjZJu_D@Bx%w2Z6 zQ%G({fzhv!$c8DUk6s4#FG-nnU`?m+Io}1HZvxgn-oue~tHxeWys%|$>RaP7!P$;$ zGiR#xOTFE<=C{^9{qVv?QO_^hHvZ5(ZFujC?tS&oT6vA#cCTk%yPonlr|ec9%k+oe z9&NgHXVvNRQEp|6x-Og!<%*iGTOIOtudJ3kpN+vf=Hit)iz--_w@8b#>zp<5hCE*4n)b_{PO|Kybo;(QSSAw~J4l|5H3j zFMYkvi}r6xFMM9)DEGLxS1EgJ{>-PpdAn~w|J*Ctf4@n7|0ED;QdGM(>PK(LSAQde(@~%K)3&a(-;5F7Cpklc<$y4cI%|J6_z49JW{hb-%P5B-0SzzX>rlC z6~9V_4vgOwZ83~^YDQPC;OXOA`Ket%qe}7 zcQq@@Y`s%b*WAvvh{t<1yOb_p_S}_|KB%6_+V0%EFzz z*`{^#9<7sM&dZ#7#`^r9_SkI3kI<;x_6q{Ine_^MK!M_&mH;AiDociD? zV^U8+A-~DJ{9~erp1oJ>)b1#HzFOqN0!NuuZhmLy^&c}fPL}*(zx>FOWREk?;@E5U z-)wq1n>TgF+O+4deJ@xdlaPkzg|qNVkM z*4&+m6Me6W`mI=3dg0sx)-cw_`9Z8VerK9YYjrO%TZYS7gU?V#`mHy5Do{I=byb6s?)8&e+CfpU87}f3uNqN5$>*Mc?Y%*8e@R?W@-J z*t>5ZPFB}0+mdE?_kq=P?E~FY@7iC9y17YPGU9&tF+0@*E*@I><-bL?eKTsSKdm@r zI-B`ov9H%>?A>(v(j{++Nw>IuPT2SI|5>hY0UNe+2{Am75@u+4`rpsQZP}Nm|6A1h z{(oF}_<{Z1`~R#DE?MEcE4hEcFR9!$S+DX;AEod*zhh?TJE&;Hw#BN&J)+q?aDnTS z5Am9_E?!%k)|)MK&4))}k#?4o>h?trH(7L+Ey^_$US`SpWPU(H#<6#crZ?P<@yM9> zdQP=zWaNZnqVMnPRoedBU_bBK#{RSW)@HXJW&A3=>K@C1wW}F!-BEOTv*b$ievPOn zjr(~fx-dvTo@mj+FRjqo`PoBWNvYHGgNK}v(#xqc-#yir)2!w@bgJ^%GdUY>ruWyS6vt55IgsV&aE^}li9o2JtFF@`pel`_}b zD)CQ9{CU=Tfpo{lTOkWJEjGRo#Oi4LaJ})@mp5;+KFn$Q>ct%I9WhU4g6zg?6C=*6 zY%AS6u6a|D?Za7_$(=hnrvTO;r{FRxyt3tFn#fl|X z9m(Qx+jsDnqQ%px2}`P6pXxk2bn4iZntibe4rd}g#Fka;nl*2w@u z;wwtCiucXxvsSZBv^r+9;`W7pwRtUU>~U*Ol(y`jb-ro!{-z0eV&?<8dner%>bvCQ zzkKtDloP)my1d$XciOp(`$pUK!wxL!F}xsC_Ebh(KHBtU^`yk7hALJvo~wI~EWNm_ zPBPtAolQ>H(ZME9- z@28Hon~Oc#qs*|J&%m;S=WWQ=mT=$ph7VIZo=)oCnN?yvX+lZZn`+xQ=f!))Z;M>) zek624XZqKM*33XP7R^}}>feG^3L3XhOVnF4HNkqp)EJ(FVFx>#_iQ)w6k8SQq$KYb z$#ShOq~2b5+rB+A-k&O7Zd=~H{E3a2<-coR_5>+LE;<_A)>76~HL-nt<;3KZi84zM z_rxA7H9ns)u}Mv?cqaRYZbBzo;!qaDeC@MG_c*|tX z{SOAYXFg25d|^_giRH)m6*4;>^yj+lN~%@s`BA~lvF&4(%eHUKmdo_dTn%NlrpyOLRUaetgkV*_r3C+mr3&qvE*E#LaT)7M{hifW8M7t&%6t~-(m`RI8|dht-Lq5 z-~4>q;rS6SwIvzK+&7st1EP<-J-7a%K|!KATVc-GqpmFS@-4ruA5Hzhbuz~^r>QD) z=kqS{k`+6n+%K{GROVrCJg%N{y1!|P{mN-)DvpOvJ3Ar7$Ti8@M{l{d+k;l8vYef7 z-@E6m2-fIYeCoS}Y~+IjO!k(0`VVhpxzxS<=(eeM&xVUo>01ToByyPkqzeZB8#{TNlJFnEhf-c*R-Ag86M{vtq(I zW`|m=`!bs?(Qd-*&>i{_XXjh2tC=0PLqF#17rob+thT$^KK$JC{A+cfzIwrYyL@M_ z7r}<-R`>1TJ^#>DD=Nv%RC?a&)iK#i&VBQX^E6DpwrAONnQTAaGMjL&U5u;VtaW=D zHmiUkjPH7)hsRcHn_nKPA0~0>w;DJtSehE)?b(|3Put*Gr>vRmTHkc7&pxhc9$znRa>U)ytIDK%nW)i`uN>bc)r)nx{LibIJGJ+G2oztxjwK_( z;gwcf#t9+0bu|tzCW-AgQqB3nz2pj`grla=K4+IDvy$DOI^7Up7u?w7G(jsT!qFtB zyDP#}vBdSOzlhc$W~qhT`j2KgeK^%|qF{RZ4Kd!AlapunI9y%TXXtOAre5|VE#?K+ z&3Uu$nD!hDQeW^VwEm{HSB1*!*Dn)7C*Sh@a_pa&?7OLcihCxvUl8@mxW7_9Yr&T9 zB|3foe=}Fe9sFe3&N^x4y=Rqf1+AP$Y%&Ht)t$9I0qaWRRu(#TZks7&eSFn|GfP(Z zyp}0`JcoVObjjJ}UIwc(AIjz$8!ij|Y!lFQnA_`e%mMK`l76}?|Lr-j)1b7TJ>{;M z++(&yqJOs>Ot1TvdSVi!NalzV0`hZQZ4V z%3pjdJ-++nzT*{nH|?L7OsTND@`(TUrYFfAp%$ml?NHnNJ=&Kge@(d_!(Q=8naPsp z%)MVe|JxAR{NcMuVo%6*1*ac*4!= z{dcDIuAWsFZ=ATgxP00p)-AU4=e>Q+@ayZES78B9BL&n?L~=3M$^8BL=IGAjv9`PH zW?W}Ve$~GD#%I};)(*R*pTC@XU~*ISe13zo0;>G+Lie67tX(|O?^c^*e#!hr1^Ew- zxVh;I#Q#@y*s@#nPQvx>1#G$Bb+#M0fuM~QC*f+=d5@Ae;{69;@2xD?42XO{NJST!Ty7KN_y^d zjb|ANIf+TH|Gej!u~_Wkclr4n%GMiIT$sSBsPcu8No~njPoBUA5jCdXLoO{WKUP07 zy3}W^wo8B6#=xwOpo?r-FiUObAD6)cH4d37aliUSsdSdsy%-}2HVFUIe~H~e&k$~3sT*#{QA)G zD{gwZHQV!#71VAwY*sF3*qeH6cUylRL!QF-Qpw$~C$Mb$*u3$fV%n<%{B8}b>)e`H zDw+;AZ96Z_QN?^@-&Mi(UY1zp@;K!e-vhdiHQi}^qEuKc->1is5_q+??=)@<2hxuI?4 z{S?7(ZgKnXRW;r*TR%l&2Cttzk7?-AI6diAx@`-Cgp;yMCOo}VTVs=*%JglSsk5=# zil?EP3MTt4E5E<-n!3qyj@;Sx^?Rys22Y>l^DLOtE5CRp{(~^&%lhe2(7iOx?7pp3A#~OJDmXyvtu=ySldZ z&VHSOyc=_xjC>7@|D`B7F59?Ca>eSbdwybvFDRXtbY7iy^|Zmhk5|9VmRRibnX@Ay zHQ-RsEfWnsmdCDduj!iUHBEAT^!eoJ_fs-0xAXe0E;jnUW|P6nS6p0uf4;ukaC+__)$&DGnG@NwX?nOUu_RH z-ZRG{_s$~67q0(=OV`iSI?LNsb(G_7;GS&e!mN*MN~;|YD!gwf_b|0SrTKTll?67J z90QEM9Z!k8X=#6Q_lJO`yT2H`(N+AU@?YuM3Q|Qe zOqxiRl1B!Ie#FJe|7;H>u|L<(;@V+z;=ib-v6%2pfu3WY1?nS{>@>(`|zvrFU$1J&T{w?P_>la#> zPkm>w|Ja5Xe_apl*WOm?SM*eo_mkh;mG$~J<_3AHeRO)deD!r-^JVH&=IffRdU;Bg z^-iWvlApv$<11ei*Z1`8$xb|edHnebonWnJ3tUZJ^?i|%D`F1<3j ztoO>vDb5QfW;Fk@o?`lI-%8tGk0)3iH*W}Av0wV4gVqxbqv-cO>l{jDraI4gbfP(U z?L>3kU5j^~c(SGRsp*LWcPE`Oy*11Dx>)kVd>8X~CS1Dp^YuF0ZOVPTXSWDRE$qE~ z?Zb*2;`f#}ISGp#Kdut@o3)}v#n*q;Le-ro5|s4kPx6U9B>X6o_wiio>(3U&s_9F& z3-^@tzxJaLPZR>s|prti97#eIHKHUf66K2sPeY`-3O)T&79qw zzUle{H<8O(rY>(6pPl(db8XW62Yp;iqZRU9@A{rf&}TK)ZkrX}#?d3uaBa3Sce9(! znKKP>i{-AT^v{gy$ag;Yp?&tJsSo|7m8XlR-IH+RGvM3TXx#C(^ow1?N=4nfb?as) z>KRYei&?eMcwzbuO}%-J=5y`36Rhj*o&0e|dH-2mWtsl zqmq;Hf!Xc~@oR)SL@XDnryl!eKPTGC<5E@6%Sb+6*ZUz(QyQhUzG$y+wcYu%wB0#& z*5=bcn$NBh+#4%x|R8 zjO)t%YeyW?Kd;|3SMp=cYTH}c6N6rgmu%g2u=smqWK91zQOByRj@pt%#~or=zVbJ{ z|B@N<`K$8xDa%>fSFGCpW5MIa9)IpC{pox(XR_SZbzGYQ4^_EM+wQ~@b5K6(GmFLj zmxU*$FtLP+>20}g^mt|xNNwX7m5oW?Odl{4A;I z^Iux7<^Sh)|76$n8&%8(spe+Ej(tWGS59BDs%XlrJxV^tPhRbD6qvTy$bS%nvg7pt0eHNN7#yMf*Q9>@weOog*)_SMb}ZqzRE>0=}7VZeOU4`(d*) zbVW00u z*GZ%xR!0prQaN;f!>D` zxpWkSv`$xsuX&oGnWETzCE{c5r3ka5FOAn$WGt-`+mR=DA?NY(`!9uqj%}Hct)xD| z`K@_9*Yu3VAKwJ>@7g%&j(&0Snj_NJ#PrvBwyiO_v{Nx}elzcZ-|PB*zfk?r*<{Hc zH1$^~d$9kxg@w5BQyfv*eHWv5xU3|4fe6>jl)6XBjWs7;GJ68H#4pE=z=>3 zGA>3Pyms?MpNn(+i6+?@Th%h>>xBz9ZYiC2YSW$7!IiJ7kIBE?!Cm!6`mNcypW$Y# zr!KNu?34DLu^{hp()9U4u8XXWC?1c^3x6DNtkUcMjpFxrU&Mb?UHP6X&R?GRqT5|k_ORiK1Kbjd)=@$KP>YAgb8$WTh zRH^sv*=!PZMhh<}If+aNWRz5WRs^eL|&dkokAocVtlMgY{ z_bw!IZK{6!JKRdHFD}21fr;S*3p2xmU;h^;rxv>ls~1~mKmN~n+$*f;1e3-d@AYnq z0gtpNK6Ka;^=koV;vddWIw~7p{^8l@CtYy8Q!iC|o8A4C6FpoLX8wQq_|V>~o4B@C zravg#efP7~*`HQ#|5n#Gy*(f4J8%7Y5$?dOGn0g6ZXKN>nRr62K=I;5zje=5HrigZ z_0_)9VA!M*;`?p;6)r7p2GPkKyRIw~HVL_Z&7gn7%mSm`3(i(t-u?RDh55H%D?6wx zHlKL#rq_AjU5`~eH=HdJ{T!0D;n1Dnw!J~Sxq?<^eKpc4=J=*C^Q%W4x8hZ~{@cZm zcWm`OdvtI6s$Y$o8lOL%+O>C!ifh%{r)xvn&mPTQHLdivOH-Kq%Oh62VrfjLbl2~+ zn8>ZUde>W@4T}qQxLdfSq`PMA-WI#`oMqRAsM-lSN~@HWRtZH3hOMZ+cF5$b?biPf z%hzU~yvHx3XH=4PkF|>9Kx28}`~0+%Vyn*Htg|o+KDTT8+1O{B%I+v8^v*sZ@K}1| zq%^DaYyO`%IQ?0`sqwzDiz$2wr^Z(c*XkC>4EK;NCm2LUuJqb@t7vQ3B!9G<_2S2_ z_&{!kW9{>=l-bB--&weG#_F)@@SbHn?6S4Dg^RazcW>XRap%^Q6Nh4L3o|Ouvl;nJ zif?0{cP8flU*EEcmw&4)KKIT{X7gsTS2ga2mX0%GZpjC_@i*SKpJmGOsN>_OqQ9qi z775(@sl{;L-<-AXFHe)sYMDhmf3B!X8D5b%T6$>G{6|Zs7JPoAy1aw|IW|2bvS6M+1chTv)=F=fAiv* zm#o<#V|%6)b~78LJ>F)AT(-D$l-=qSu>ABRZ1oclS2jg2-t_G;Z!e$a6V!eCS<-)g zrTmdebxOyjC$uh^GxgQ3$u8U8yJy_`VQlg8$;So!+cLl+DD4H=mN z#hB$LZrmC_F_K$J*HLt~lh%LHsqr#>`o~LH{msv5yvXv>58oJcDSG9U3$p}w$pzij zN?qzNx-RDB)?2&ZMNhh2w5u_5)~=nx^}NNqUKY-JeCP9}T3MCV;?KGMs(uDs!%=e^!C<$7THW>;C|ouwc=qSnb!V7&23zSGU$m18+*D_{d7tIuk3GV>V{f`IN`5D?CFpa9Wcpk-Pl?ri z`&<@9S>^Iyb22l1syTJ-jD{tt#y@XQhz&|p5n!MskM?k571 zCe6q!*een&@laD^#U_opt(-emPike~Nx330_tc@7h5KgAJu9?$AG_w!H7g=#su{^; zX(ZpN5uKyReRJ{DWoJ6Jg)YrpXsjt>$S%1e{cC0g-_q;vB~F^&XuF*&P8T^3JOhGn5j5V@8GM$_QmHO zw>{e|HD`74XV>q~PM?WcI5SJSS4L-FUyja=u)BM*!rts@IvDV3MOR$N%Km+qwK+H< zMZHeHdN}vE>#FrTEbi$AY`DS_BVBsWrzhp+jFpT2Nhpc&=$@USB4zV0Hu~ASlm%Lj z?n-AwVLd^epd&cEJOEq?yn^!`rkd#qo(4rQ+S$hb^#+5<0t zIsNpm2lLeSUEZbiIqKDmx;R0-Gs`3Qz0|wR;>R6)iR}{Cqe&NCjhDF`?Kr-LkMs5Q zJJ+IS?N~GGn=p6m`ptV6M7VWCwN5-79Ca!%JagI?sfJ9m8zxcQGc$}M6I_+uChctV z|5Whs$f>S_Ic%|ORTg(HiL$LIGj^X9-8SR!uPKL~9)8N^bL>cJxq?rfUEjP#vXSnV zB3b1+)&c$TnRab_Q^J4wUzy{w`=pDuuj6|o!=Ps(`K~jA%G-VG>z==f@AZtzde~@M zv|PpM(@s(LD6z|zGg3b?e%Stlvnu3k;jtqYlM`_0w%OR=!XM+c8!2Hrz%E}k^9kjZlzril3K>yQ?1o1=sF_&eXTy3-_{AFbNBW*6E z<8B|5&pI!2=B*8p`(C_%H~IS04Gu51&9rqn6np*SUGV~sTaH&>E-hVl>v);Rls9$k zn=T#Lxcgg%-70ed`=i#zMtd1kmd!u(ch~kcFYI2Ke~>@b)b>{(*6NG@sR-Sz%SY|7T~E|5!m=Zi{Y3!i_h^XP0&rg$5)iy|pge)p9IV`|M}6-2ChXlb5rX z?6oyhvvrhLJ~G3)+hTpc;Nu0_ZN>$E7b?g7shxTDvVqlQ?c<*BcYc<-==;WWnXi@F z3nl4(^R=q?%x8+WoH?*)b(f*a0e6Nka!1^5*j@^4VSB;NlB+Y%EbCkJiM!G4dkRvQ zwa94J{^nzLyse4Qbd{j>7<~@)U zQPSS`B<+*-neEFTo(g<$Yw{Mxw&RRjMOxU-{5)x@|E%c7x~||I$HjL^xbPZz{oeYS zbJx757RbLb;6uF7)vp4}buaox zKICH*?UY><_h&jEAfgM2R? zxrLXX@BCp~$Z_n=_Qs?AUK2QsPCkx2vFuN)cG^;=C65&d8pA)#;aMFftrqQg~i;L}B z7N1$yInUvf$E-ccfA&63h;G@Ydj72Yv#B1@;X!`awHrUZX!+sB^8MrVk`r@eEvMhs z=lj*k_o}oxSm4cLl_yORiAAseto8Z7yjH5O9c#?3lT7rMdo#Q%l zw2#a-UT{{oc{lT~yIre#9p-Z^bZ6aD#8?t5;lQNyAoSSR`ln|yb#HD}<~yD{bK~Q! zcW!;nndV>K=k&qzLI__nCK#uYX~M`#{RcuXRfxo+sl99yENxyRNcL$RRU*D z8+~(}sndMntN4>YOK&T*K3?z5Xtzj$`vk3+Nb|I6j(-)>(?izt5jL&8H~#ayXF z8+M;|5SrQ7_;#&+Nkz(8TmOhnSJsGZQD3=Tx980Be*2esx0V^cl|1-)%UjEA^V28y zJb(U|Z=3(lRc9~enF>j$H0=v|V6t43wfykfysUGJMGih;-TbNOlt#*8@o5nSfvP?2 zWyfYeRC0>9x);OV(;=_A_9FXct=KmbQrE1tZ!79GDNM|^3_5bSd;;U+o^KoE@3br3 z>RoWqF0-fn;Ktmddp2pTp(z#4xhXFM<#jxRre8U8;cAqiX6M0gm!HHpn4bwPXuf_d zZu{zapAMU>t(f@G@4esT6<;pDa%0nZ%H_{Kr7?8U7F&j|de8+d6+$kv?wWF=z zpURSBIe%ZDdVYLv0=Hnf-l3KA=e=L%rsF*4itg_2JrZy4Y-ahVsl(N!KJi%4d3(XD zdJ|6R*?LTh^qIY$>5J3Gl2gZ)K3#0XWx4du5tj|U$+MV}RFfZMo-d3|zvH~pFgW~P zb!5q^)K|roEC*E|vJ{*&VpH32_4$0)S8^4zd}Xdq>fZD3@{<4RpBp8$*VayHcx=vd zNl$fEaGJjRgXiAw;^ps5IVGESMuCALB$$E0;P3R^u2@|D8KAm_4Z8tvM`1Hx@^1~FX z*>B6O&Sr|u{{6Q?h5bhUOI!Y5YwNUhj(aSub3P)X!Z>S+V(zIKhRHnBuPFLXU3g}O zVcH+{m71|LBNyMFVc_W^)w^3vT>k#sgu}LCRe3DkK3aEelXn&d3C_)X;qpuWn8uaf zYb}OZmn9b;J7f51+wJ)(FG}7PCRsVVyR9_+ZR@+~d8S!g-vds)qHX7Dc4(%)J{;C7 zXmZv4*wRzZ{+E59sxQ}T6x0-*@#$-nbAh?Q)YXrtFL^ar=DyDzW>>apeeXLVx9cqf^PaCphZC;wPt9-!W+>XQFS#r{y!6&3~shYE*FS(Yn26=e~QhbS`S?E6nrW2eH++X`W8= z@QLp&y+wAPGT;F*7{LaPlhZ4?R zaLI{-EvAKsU9St(ELk={Mt7dfRj&RBIpdRv;vp_b>ruNiQ4d%UREpBE#w z<%s;kYGn)OTg8i4`pq(Ht-G`8;r+I=OJ1E;`mtcq*>QY}m0{&+h*)9ldG=bP7`dXxI#Y2ps2yK$~l z%J`}*=iO~oJ7QTSxmj8A<<5ok*{*ElvB}$!;5EG=R_lzX(Z6f12X(ejP^^wJ+*%MG zZ^m;vYuVBbT1V$7AN^psDWu(2b8|`cK_ULcnE$Kf51Gt8GIhhDSec&d`|ce5e0l|| z!gbMA_uc;MN*MIHWSx+I%N@6N*@Kjhe%DpnQv(e;ZqCkj+HV=aRcPk_Oj)M-@fzio z-Y1s7i}OA&J+W%_GOde$FLQ1&(0Q%QKS|KN)$~k;py?|v^_54JwoRyiGjYwN-3gYV7Y3R9}BmLGa^A%HU_T2E8b520EDCU*TCJQgVvrT1j8{@nSb%mn;x0!`JJbF>% zX-?V=3&C80y7Pj+4Ch%}=rpP-f4nqP|9I2PV>&F3anC)Iljlv^Fi%WcChSHi%gx8B zGId_crQfuKOJCi|Tc{s?VtVF|v^B>987WSSr~P3=h4YlnJE{$Ccd<@74ENjw5H9_a>Lo2d@r^aET>}r%<;YB zk@98vn*Ns>@1-VX_a2;LXT6fwGx@RC-N~Abd%R`eR#&GgT`Ea2^sFiRRr%_wXQ!Kx zF{^BEMPnP!8^;yj*0;Rj_BfkXqL#_~+qtA1{sqWj6n5y#s zhP$@pb=<#YryV)}V)KpO@Ea}DzpT5-Y$<7{tp4KOseMPJW#92n(+`__dZE6~y$h<| z=JW3Uu}j&0=)#?SXM{5%`>KO8?wy#^YW*eeX+y7V{e*apeLrPC&X!uU_9nNCWW}-Y zCo}bXG+s;Z-F@uBwYp-BA9J;JVh&H{xwlt*o_J+$4si=#p_+rBJ2dn!2k)I=w~ zH#@SURzz2XY`0FI>D1la_G#9vt8?$ja+~~dYKuCX%ahZ|cTGGYFR&meeX-)DC+{;7 z9&Twn_laS%O_oHg>gmTt(v^#rpVmC=_V&QEtkA_qld|G&NFGb*V>4XF+S|vw`oW)d zoQ7)EU*b=ees4K%ymPhXpL~baBAe5eT~BDUUZSz(F^9W!@~6FPIGlo>OB~?{nxe8M zuBBL!w{gc0#Wi;)>@lrmG~6QN$5vKXvn=7v#FfhoZ;IXASnxl5MP8=)_PAMlH}06U z<8q72HFn)?ZcLVsy%#^&)v{lr`bb;&jq=_Th0or-*~hr?!iK{3J$Ik2@A8>=GBh}N z&Xavy&hyKIBBs6yKRkcUJ%-v#YyFA@nj)`HTkiB&gd=r!znto9g;+@^KE93C8;@2* zR7AA4o6IiTDRlPUv7fbKhYBZ#S%#EOi=CFj;eGzy>CESaiYM-Fj*2|Qp6a9Ey4$a> z@~Mi!l+1T3E0*m1C^*S<+SD##5xbe4!tYL|u?F;Ah@5hie@RH7?UqIFWx1bDk-dGg zvi0`yInGW_+zOJjR(aMfIbQ7{8Taoa=lLnhQA<5C)s&9&oqJNbXvw_ZEpxy4TC7;7 zpM7lAW&xiXjeNe(D-724JGW$=T_kb6<%5?oyN=jSFV9l9J3(4T{in)J#m{uEc0I|Z z%zi4w#zUyUkmX$%e_2kgQRb_5C9f@fVKS{xypHuAvU!l7miXvo*t5Fbws&|ZF4X+_ zr-tPaThF`vjjnmow!OtEcIT8FLuGtCHp@t z_$*_) zfiK_rMe6h4&)8wH*lG|I_O9Ax!1|+{5zI;e_3+I z`(x4jXlIs%^-m59UQJipE9@!P;3+rDOKw9Z-)^Uu3#Z?ivL&A}bA1r^%0ox2YHIngF()WY(sce;5CpVo`HHHQnIR2@ryzCCQ$q8Yp1O?_{E zXLIrv&bQBAoygp@=t=2Ti#bw#ZnQh; zM})kq$`bTj|KwAfk*T+|LhDYg>W5DMf+upSh3b5Gyz*{b&i;d}mM3pICLU+B@zk5l zBe5}K(s|}rPgFK&*QDHj^?uIBMZRkD*n|q(AL%ZSjGmGul=OFB!{htQIzx=~=iU(y zE8CR+D8l}V^S*1xe3e_Owccx*#T7)(dls=GEP8x%XpO+$s03p(X71 zHqPF)iYxT_`LJhOn-|tdz1YZS;>GFxbE<@Wi2DJCQ9oN)`9%lY&u`PaY?*a9o z4_m#Rel8Pf_&?9dBzUsNid)7jUM5M;y>7JTT-U$UZ%O^z?)~TE{9Wmo^xnJtKr(x- z7{lzj+f82>HkfO7oV^&H<1nAuLi%b}|F)a|?>Wt0yWMU{B2Ue+uCJdyp65E%oR^%j zndQbCv)Q#>>knK}-k8k)Y~QhaC+Eg9P3b#-dX?uKt2lw1htgxs*G_r2D?{DhD5j!e z@p_$gDNOfdS{eF3S3SA1*0cwP$~QMR?ESFYTIfnm?#V5leQShFf+o%vY>F4+ zezQPLeZdAb>BuDy;>{l1Ub1j*ENh&=#Ck`bE5*7gEOb)1)EB<}+;&y;*X6fyU-rxz#UM`Zo5&!9ixGTSW-ouzF z3)tOKo1&Cw*p>ZqQ=D{p&bKeqSEx3snuzgyj;t#6Wo5G#IUV`y&kc_S-BOdoops)R zQuwfeY034vMY&o3rM9i^soSEsmfc%-mX%qFsJsE&kNjs}9WqyGEt(Qvt1lJhldyZX zgY0a*+Wl#EmpJQY&-Re5(25M5Di^e~(`+{LtZ59()o$f%U;Y10B7ecH=E6I9d|5M? z<{!PBw*Q}S9#;X^z5CyOs_&V)G&Q@V`S_EvZp*ie>vulxsI9*Itwz~>n(V!~Cz7*v z9=R2htm)Bmw$@XlQl{+V^R=IzEKU@c>EW$CW>Cpt`7x5?XWyB}wv~-bEi*#Dez`V7 z!f(CKbL}}I=Z;M5t9cZzzjKm}%ehJix1K^LpOdRoGq#=5bJW!f?ES;O_MQLh#ZMzP z>8)Rp*YoC~*F0bTuzP7!^~+=R9OvdtnstYN%{r%-yMA-Ucg~8LbSv(5_LHk^zdhuw z%Y;~M%*+Dr$U98mGNaMspVVgIu2;TKz0X;!IcL3fhhxz^WAzfZk~snsr^RI4;1o1$ zOwY}i(1=_8Y2mVv={FkHeRt05bh)b7TC((XUt*72w202L6H&f9m!xu==-s*yvD@k9 zs#M;p=e`nm;vdRH@P21HyK~ZoNI!vG5vlLi4hlMa8^kWZcRGL8qEX~|ud36BHx5km zB@P-VZnqcHOAY!fFyqMFIXO}id%DtGKT98ber@MdKgo{UTdsL+j@4YgXF@aszr%<9 zi`edb-=X7$+<#|zp8XuphH6EP z{Q--=zvlT-cOdEe%C{fuFMMFT&L^{HVzK+}Z-(8A4}5pJ_`c*$;P}G}>>vxP9VhKRq*{Uuk2!rth7fn#XrdGBodL@0wvYrLxKKs^+Au z2KD1SNg6IiN6vBx%lw#p<&dSAiHK-uTYYU?tYVN^+=@xkD=#dokutimFnU()!mMve zjKAaxqL;Kkwm8kPWpmBEMH$-57(G4|rw+da) zF57KnH@)|p<7xDRDV`i5>sF-9{L8fA;*L4*1B;lC-{z^>8nC|c)|Ocdmw)+v?@I6S z%SY~uYJLq8e({qd`=Qh8$AS%8e{Q#9wf+0G#W&1t&hf}!)^8NKOO6V;GD{Y7blbiB zAL^yNL2$ocD+@!13oFBepZZ4yIhC!WCB?JTxmDAd(4=uy?|7gW9V?)l$1} zevx#$?#QBGpvJ*gxOVGn_D|El^6or&gUcr~dz~YvrMU9fquXbta;Qw3QQ5jJV&12N zxfY4dtkWmmsLHcX&HwnkvPQ0{dgkt+Le(25?p=C&CdPkr+}>Y3K40(nTdiUU;s5+k z<$bqu(oJ(`pSw$EKVJBLf_C|9i|3bmiteA(EAj7@-QjAwXWH)TuG2Kj&$ntmx+7o5 z{m=Z^y^WUF^IqTT?UlT}?QP1jZD+MXrxWC!zp*X%_RO2#Z~4DnwfEZZFx%IsBNyM| zmvGNs{JpL$-Z89cIkRBm{jDoD3B;LN{HXVh7oPD}`txVDqoHdrs(p@=vVOVY+232! z{_j})=~~j#fRA#V)#Ce1`G1}|cH(e_#<2_gtvigQ{C@wP+!Lr)CDog#_iM7;%a9l5 zBHucG27TaGzQm~c_It9~<4Wac>B@_C{Vj^PJCA+VzE^QNH`#AZ=~a2T{Dixmo!H_6 z0Tb_{*HhYBcZ6Es{IgE>rE1nrNzF;J?7Fk|S+;JKUUhWe?`bT*KTJN=!ZP*f4X;Td zCzwP%+Zlvr3kEhXHQOF}taO#`wUQ$f-Ru0$KGkRcM%6rccKBFV>$Q@V57+3JrEEFr zVquzUdOY#vrUlbfcS(Ph)eeeQ5S@GTTGYF9>qIrrU*=o(qeaX}=)Mzh5&Ecd(i zr)--lJ3&~#%3`IHP+O>o!{n1UIO-g{3;P;9};+mq9k zpT>#*>He|#t4#)Dii+MPy?-~$3z{y+ru=gFy|by&H>aFM{HUMa@_p749qCWD&p7+V zG0es1QBbIqv+J?xsm|xu_;8&5v*E$cS%*S*xz1@%UH(#dW#^yDRbSXP3s_d(IUQ#5 zKW(Gbwc{qid?w<}@+&OU{HsR~%_oKznNQukPiC>t{K*Sr)9`lsVE#y2ookds3eevwG zU$jTy#IAML;Soqe6?S0SYtd13ia-b|C?nVGbvp^RttO5c;MT+Sk8 zVsd8rH$ubm=iL2iJ>lLerk3Zr_Zz#Vn7zMQNo2XlE}rPLxZUaZn~9HBrd(FsW#1FL z*}4Cb;UAqZhg7w9X9_KL-S=U4^ZG^o3$|5n-(+*@;?rNB9%nKw`L$16Xl7E7(uoj8 z{YM5_w~g#}G&jw#dADxb3}%-Pm$O^jSln)$nBo0309mUQ|zlUb(-!Htf`!UZV*10Qybv;*Kv~ zj~!-A&N$IDWddX4>C)@&T;Ib!)c<;WqoUbT>wb|_Ilth>|3PV7A}9FL?p}B2ir9Pb z-&z}i*6-4HTqi3kXiqme`JM5%kl?R%j$0YZC+}1+eYMqk`<^Rv;^*Y&zIbpeD$3u=QNNwREo8!`lzc4i$clWSz1z@X?}9?|n7~<9us3zwps) zdyBBA>JxWm*gccjc(y*0X?NY)MH}C~u3BK$wer+z9uK7hQqy1l`;g1pWu~HhaZTi@ z2~w@+YBDr*)?JJYc`D*=vT4@oXJ0vIS1(fhcIW-EFpjwHkjrK4i{|x*wuR9*D1;v{~GG*QoM6aqD@WM>n6h z2L5@}QuEa5s^G2f8v5Fj4*98pZ;DeNwVpaIGD&dhW?7eQb~@&(r3!Mxy0#R?-d-{% z%;KGm$*Eh)#qPVcmd)X)&)eEC>s7<4*Ty@p{%(stDV7yc%A|gI@6088-hEka6v~%8 zY3f0d%Q5B8!re{8EI<#G2_5x=jC%)^5BGcUZS zvSay@6@Q&QUn}YEt*Y-_p{S~R=}nKR;zQSIRub)D`{tK%1?%c;*u=ia^v}g!h5ZdC zUNgg;E?MPm=eRUCX|L#!x{39@2MPij+tY)(WW-f@r+s{r;x=*nRVJzuZVkVslMlIH{bX2jLnOhLFT3eQPThHaOEKMw_O(Sk&+g`1 zJndeuwf&0Wt?QkeZzQ(u65!35qJlDa z(X!*o_J3>Zv!uREng35ny2y>cYRZ~x7TbhRoi2M6(@{N>_1*Kwi*%ajC%w0;ewFwr zdTHG3U#Y>fEH|Brcu@T<$>=cS>nZJLic5|5Uil?{?(or-rPTuB8>6IJo))ZmmGJAu zRg>L|#|i@t|#O_2f^YHEUgTo;2N?C4O2V%4>No*tt@Ov#gc6N2PIEBbk)9ewt9GW4#Had=UX>*dY#_8QmL+dD3W z3YouKwLtCKQW4E}%MQG%aG%5VvwvcqYAp-jlnRDP1quzVt((%7y9A?eH$)pfowLYc z*Xw&vx1A`x;^=q%(uvt-+%wI*4GW~seVta={%g$L8tHTug4E}OYywol60 ze_h@#yQk;p_oUoABRYr4TER6uLQG1$ukjA>euJ}VL>l#IVGdvUCD}MaXO!Kx* z$GFat6K9L|OJ7_jkhYk4ZE*U9!&RPQQnSP~?LMD8rqgvY!^$(iWNqgw*ZP3lA?v~> zy<56;TGKqmtlJZ(e+!d3-#d}vua-feN|uvR_DkOQ?JGaL`~JS}{g$U}kxU{S9K4_Q zOFH~2-~WBS?KG`0zwWI4Kf)xhB~Rqsy)c(a?#9kq%4dE6+PBS-491q@mO7Jx}%TN9>D}%?tg@QBtq;tua4P+IjAw z*8xJTj<;Vt_%`w78VSwRmHst1Uq@9R!v)C_L};b3T+ZjKjj#uT_p-49j!9`#Xd( zR4w?Y%`Q{8Hsz7S7Ri^@F1{L8VGnw5f3nHcZr1Vs85#EZo!O_U73-ZdpDxU((R z)!6VO{oK3{_Q|F7T>UsBj^*%uy}yY~=9UUB4bwixwN5zr_Hh4BZLSXvjpx%!8uTZh zjk9pL@-RSTu2_sr)BPmVEkz9u$^WXpy=i3p_()>qMyUu#8@cEEMfKe6r!4O9+g4Ym zx@o(J{nQi3r|2YCi@HV4-<)zX{}%VzgA?>#M5j00T5*>zF6xP)pOx)Jn?ACIHL6OP2nlg?l68w8=duie`9$Tsm|@3 zaMb$aq2JPTSt=&nG|+ia7jfQB?$fCUUZ)N%t2(qy>1-6wM}xq1`^vX9SC~4hR%9i= zTj`)3)jF~KXXYKnN}Hp7Iae>Q($I}w@G&ZX^|hQ7e&Hx7`#(2YDo^~-U zXwvK3rb;}Au9-Lg=(}dgdXnX}$gb13Qc7I@D_2ad_R0G5^^ohQ}eUrn1XsH@1KpkUPUe_3(x!})(wUuFER|0D18HdfYM^lQF`fJxv< z{fIB8MAmABct3u6PV5(h0jJIsp9LbOGYy2FTnZBNn|ZFxdb-qV@3msn&;Lt4ar%JN zzQD$P_K(}Y$9cA$`MAPohjrX;+wHgK-=1$CS5|ND_n4(&yV9$sTOZFR-0W?MxSFA6 zaq_5Jvjy`cF54-;PSx3)37=_FWKI5RD*Ef<@A+)1|9_f_JoS4zpY4=qnLG0x-@hBV z9<8%}YASJ@@!Yz%4Y}Xn{ck@d{rub8ebXLC2jlh!d%yX+m#hRoR043JR>1#ayOxcQ@?M^8qb1#6ATo$?%_-kWOzP#%gr2? zT|tu438_a;9hudo9^LdJ<5-T_%%z{#9Xh>y#v#SKab7+Gy#meRaanuTIiB%d^N4$| zyyVR}Tnvh-{>Np^r4O!N?0l{z=FB#oQ~Y(;Jg*CC6-<0{PE5;Q;rbM_6P#`r@}fQ* zE<6<@eqfU9*2cYO9M&J1{@CgMlqvnD>Dxjdsj*s@rKjGUF6Hp9<>ZxF2Iafw&0OfI zd-6-k+vnFpUQKARTY1KRqLs^M4b^)Kj~XUx%~|yFK~nOz%^n##o{D^@QWo#sb&Fm4 z?&Y;_&xfVVTcu|k>$a1Dv&ce7@Z7(pEOT3T&zt|^YHnlhsq)=t>UO`ed8;WAk^X(A zjE$3vl7C&M*6MjBF;_xPh8nOYXYa6c3w1Kx!}3f@X7eQ7u|~S)0GH zi@r^FR@D0)BB*!3c;SPWrIK;Et=m>rJlVPX3(u|P*MCW^l$sq{-f+%q`TORDLB7iv zLyIl5RHgZ)Q(&uwrBc5f%ZhN$l&DREV4}n7ywi+u&pC6sCu-r|zjpN^Sh7yKCZ^f+(rtO84|Vi>@WK7ceIS#m!_Vll2(Mcur~TSrJePSO zd-Q}*VqwwF%py&lCB<7rb|y{Zx!Ci?k->1DgZ<`!}oqUU#?^{p8gTmOq)jW>Pgr z94f!<>J{DoLTvJ;SI$9f*A+5%=X!^*oGVGat@o{~(avzSDG+jaWP zxjnnS#c|(WJF9y~)+L!(Zq@4BMw@RKb#1B06guSU=XPyXlee*XQ%_HA5}Y?H zc~zpG<_nLgz5lG%oe(oj+q%5n(Cyyar`An#Z|3owyYs~M*WZJUHynBQnV+(?PRc(f zZS{!vB}-vu=4$}h~8deo=#?(e;{9kY+${W@Xx@7Qwz;`gQh9<-PL!>qs0{2#O3 zpLbi#<6Ywan=889FF4ozZ-JsHMa-!o~C_5FGmy}13(iqG!9Fjt6Mq_H7+&D6E-&s$Xs#rE;VxB70JarrfCk+snbtK}2S?0O#N-9G$ex7z6s zkHnPTv+&7ZTkk71eWumnjlF4i4@XGYOf7i;tCOKfu ze}<2Ok>3(aFJ@=Fs+N3c>(r9`plRU+pGo2+M#t;T$}bB_1n==}mypZkkX7LD^ZS?jq4)N`-q!K1d_U=5vP8UKW5bJo;c9=E`-ZUZc(@|@XP?R@(@(n| z744KOxcxvW*hQ~X^8m|wU->HwY`bG)ch1R9@b{W|B;lCOmgyGaCgIbkgfQ!yv~m63 zKF#w{VUWO^$KUR?7JjpRmvC|Es-W|&m3Q-MzwN7fv!mnZ-!;$fHtle}+hyoBUEu?p zLC@Wp4*PiAq!SoTd^=yi?p(b_^NP@@Bf$ z#%`X;p0}7!v)$V0ZgcPnzp+HM=h1ZM_rAuT^xEa_wmKR1Ilo@;Zi)Q8kdG32cU@hd zl}K*cFni_$d!_ZOgXO%PYsI1`rx?3NR_UBv6!X$_<;i{Q{gW&o>FE5EnCqi=^u$Z! z>r4B~v->6n$JkoDlaYwpu&TebXH%18>)Ag>w`TRs4cd7Aw{d3Fjux$9z zYhi5{bJHgp6P+z;p3_#TyM-QIm9^C-NtQ?YIM0ltB_~hMeN}Md z``GX!GZNyMAHm<{i5)FOl<}Dm`=ZmBkU&lV+=&XIcNO zt)A=aoY}{0Ei&}H&gd!hX6t0w?coiHyXAE8BDi>amO+<+JwLY~L+v66*P7x?PxD+|({Vk$2or`a8WM zp3XnWYCQS(?jI4gYs}5=J3cIUedV`G=SN+)V>@D_>%Qi1%vDmbo+d3ZuT{q z&uO@O_*;X{vp0!)0sG^9>kqTe@Y}k0wsW!Z^|@-7S4H;T+&;zZ`MYFik{#1j~}kU$R>ASzS`q)^dD^S>q9+X_|JYJR>;cVy|x8yk*z=Ry>%R zsx1G?MTRVzpGtKQzPDbcnWXaV)){t zRH;eShbuP|;`KhQ*SVzZwWX$IR{drpwbW&I`dIimHsAyz18Vki}9{BRL~pT{GeT z_&qAs?*F{E^DDf%OxO9oekNdY?g@h$gTx+jmQ~A~vLbKVoz*^lc1wwKr*5u-)U57G zo!_3;;bN|0tiFyL^hN&ucOdh<`qt8cAu^YeKtF1AU%dvxNyXx-&fK~EF08xM9_E|rcE?mqW(ubzR z`aRwL!?yVw`VKFASGtbn{%4KLV)JwbBEIl-%$_WBbvE>*cp_ zhZ|b-gm>N#n5-XRcW`3EoKKS4m#uer3%*(ZW^?_UH>}G=P8ly>De;)q@0MV0hIEeq zv{f}HE_J%}{cPh;OxsfU-dS{ORFTLdra*yNo1~j=UA@|<+P5pVW#3WDKkqrF?6+Wv zwJ@tc^y&Mw^_I#t2B!^9EVNMWx>J9C{@!Qd`;JVTd`^9NjB~7R*}|=|pSH^`N^1E0 zG1yDXi@h!Xgkr4q&OLED)jQu*ur6!tl@51b!g+twE@m(7OKvLVQ){1J5nLpfGcQ6v zE&Tl9Rd$mu$bO%S9`swa!)il@Re)-f@&`MfanXxsAoYSN{!@ z{(I%`Gr8;W8b_SPzD%@HO%yC&^V+;=f00>IWbAv6kcZu6?uQ@G->iIoVw&;ao zskgiBHFMu;pTOfDRBcYc`#>*RbdvTkn4_?@f1DYoL(?)5tZgZ2ipJvg`0>8h@T%=+g) z^Tj`^E^s-o+PZW`eQ}gK+q^IZV~ca_hP&@wk32N{Y4UM~^!tmKykh>byr9PT(TdBJ z*Vt;;Z}=0p(Rw0tg@JDKte?5!&#JzhvYlA$`6E`*-tm;L_SyYA`Z;7ci+CMtgJbs< z2p64A{h!ejW#%8DHvQF9{rU&rmoz3Uu{a`|70jQg9~ZZ8t_#Z_hQHQ%vu6tKs94a@ zP!ibKVDV4?C#%*3h^ah}i~!Y8eL?(t-w?OkIXb@#7q{DN|(BJ;O=U%Cwgq&(SU9jiMf zRV;4SU;ccuI_~L16}ySc7P$tnMlRHgJm%iDa_P-_sV&Bi(}d>qtZ$N8W<1r%xw~$k z+G2I%;!Bcjr(Vf!IKvS)H`!pZ;V!Y9=yjTh3eFsQu6evr?N@EF-Q@=k-*Wf!Xne}t zvg(|_{#F~N`^E=%yY-*b*^!-`V<#l2gmY-SR<)!!d*rjg4)w#FNo?)F8&vZrB zym19@y5qS3eJ{c3vZjvdzD~);Cr(XSJa4DV$RquDVy!CB3Z`ZWh0EgPIe}!>azId3n~Q&1-NL_Ag()X!;i&y*1P9Y9Afl zt;qFzcKNnh94WJe{(e%t8_;-@-TcqazGY?K7Wp|kXRElrN(@;L8dTxcqIEx@@!KU= z<2#`hX)$kYo)^AMI`yRf)qjJZ?+(_?pK*!HUZ+oU-`QKoo^4`hUFZIo(`~22qHV@+ zqo1iqU5<+nj;^W5*movM?fBWbOW2~d+?<3wg5NmIczi@xxzx`s=yTG}qp@GlvKpAD z_1)dfuv)tOxOB?9E#VT1msZu2tGj;y20!h91g>$7I^W18;GMs7EVlQE};@g?R*?wwu0$USTu*io^ zxXE{4IQ?7ivjYvkZ6Y~MjyRc=h)bO`$XKB=qbIMcs;0ZaMr>J7ktC2)uE>L8(`=NH)OJU_BrCu>I6od0i~(da-))I^L?f_Wp8-zO;@|myt;c;@kC3b zg%7LjTsv2>$j|?$TJ`;rKz(7J=Urx+buT9W?dm;bUE$L`$Kdp2QquZ6tp>MSo*T8>gOoQ}rftwu7WY?BThYs#7LNiGF@wRcA!c-D6!kKgh+_pV#UF;5t0h&yUr*fNJmrG{%U$(B2G3b!vg64%wIM(@YS-9^mr^wCsHSWKscpjJD zdyQr3+6_0Zi0VJD(=7{g{J23*#)xKLYcW>J* zVGA*TF`waWKJ(oz70>5OcZM*{>RfPL|MAl=u57GpCzZJ6uw|!Y9*VpvCN|~B9Knox z(#LEw_~X4oqp$1jSS5XD&5r~O#_T@wJzvLpm%~NA3oEW zgZ8$tDMf2ePcd7{7-Mw8&R@nzbg~z}ao2;(Ui>>*{cW2b#|k}=ioqAS?BbliNmd%e9GW zol~{X&)ci2UAp?@=}$6+nHA+c?%QkopY^W$pf@G=?!0NMmS%6hFShAav)a?NRr7W> z-P{o^IBBZX?{41?HuUyVsawOhVbA$csuB0t}#f_OOrvJK{a;iD&kf_4e_n!r$xLZH0 zX=mPfJ6foAm(wW*OQ(~4u^Yu*7Cs8uQP?)&M{3$WW{r*aH_U3~s%f&(|9#P7<3XF1 z0ULLVZeUb-?sP@r*889BT5p%B$g#6b+stX)|D&Z%hNms8lRuEfAmIf60y&@khbBJs z=vR=RaK5y};aG>l@mrgHBpE} zo|)w&Gjm-%=R1MtTb44aTK%5gz}E6xsHlPEghPW;E%&ce#lJHfJhn9cYhw-G)moz= ztYX5?74eJb$EkvUw>iZ6`7O;(c%`g;ySc=pJMFUI3$1pI>i^LOzuj{_{uSHrRd`h> zw9+T~Z45)!7bg3QA2{vG=H2|N`&>JxL?)^9j^=`XYtbLAj8C3^W3S-iN@3;nTNWeT zXSVrA?A$Gnk~Eh-G%Vca<@~|vS)YLK!VUA^-U{F1+8ue}2Gc@s|0CM&Q)b8A-mqt{ zZj0Tjv=hlEitAq4Kd#qn{%vT$B5*;UML}WN|7-n!{?GO3k~+ZcDtdLhkJ)6=?8n!= zS6^(2OyASA%iI(WX7@>ytoT>~NpV!kfPWoEEIV--QVgHr|?EB{bKi_cR z;KJ#Z8VbfCA0}>pT)OP>mfus~n_NHn=Kb&7yYdfK|I1u(%{g7+v$gjm-rrL3@7DcA7u`z}zdb0uz`mL9-OCvz6L!5(crQ>k@4L2O;za#~tw)$93%}MC zO}m(K;!N_&YusA}nzwqaHl8+ZjsKeT>#Ex?hb|XdH8b?__pUE?o0hUI{~xH7X>;O7 zmYbaQMMW<5P&gUE<*o&n&+bpQS<1L@r&OVSnJIpw5nE>pdRn zxLrP&_PO|b?A$48+Ffne7f!eIPW4%_Ky%(~;g3@urc_q8Jl>Hdv@CszfS5Cz&o&V; zYhk5Rr!KH9jxW@boj&35)F-opnX`h9_boo7)^&Y-P3x+sYO05`mpx%BpKcWhANai}}xP63oiT zpSNA;dEIt(n;8*7s~tX`Qx_I`@_84>nNR1e1#F)smGo3Uo|$dJUUo7{Eqpq!_7;om z=?g>s9`GoioLKKL|I)IzI^r$~8!xghN_gfKUa29SzUS`4%ZeiAC-*vNRH|K>oZ{s( zuj86zb4Tw5`@MI+x+xo75<94+b@fNyrE41X-R-sKnr2qCAD?K}z0Y;&f|vZY_T5XD zm(86q!6=Tm&*<~_&7OkVQgtC2I}EnXp3;9H;+5e-t>TLPCwu1XX_KX~nUXlZ;L#W;{9WKfQ3_+@qJ{lKa=U=NM#9 z)8F@br)9{d<+Ghqi`HB?sJ?pZ65Zqzy1a+fV*C@lcdoTaVskFO`f%ixR z)DEBHN!s@DQP?xnONI}Yg%;hhJ-=a-%9iXa7uCac6C(_t&s(kiKB4N_^jp*IuXThf z9A0;J&5KPFPb{|YtvTcac;5WJu-`iGn}X}d9rw@1 zf46e=w7%)Kd1ub@)mmz2+1{)ET<@PD8y8c~G{>Cz`m&k7HZ;wzi&S1^evRe(n%*p? zk8;ctrv+QCcK&_-ic4AofT93<73+(ilXl8H zIlKDof8(vZcB`}<*2iprb)(JVbZPT}TIP#K->Uzcn;xiKl*9GB#h;bydL{qwfcM;w z4r+LG1n<{LAg~zZ|x4% zJe4~1?3$mp-r>t#iRp%ad-s|iUuWpkrBI&0Rq45+dts=-;`<9E`4`;Yzg(|9K{Jfw zXjzCzW3*C}@5;%|C5Z)$zt6B=71E27m~J+;`NGnUVCCqG+)=@<*UH+n0uqgPxv7+_ zU6^MO*1KV)z^+GqH~zWX#qe$a$dGknRu9L|6Dy44E}aTd+x#xj^vGI|kYy|6ymmKx zR%zY)^LN$B+@iaJsh^K;$TTfJoWAtu4pH5-icImg1y>vSey_dzbjc(8(G! zu%Thzg8$#;TK+%mv_9a;mXQ6c{^X9V`(8I*t+3zKBqgD>MA`Y}(wR$N{B64C85QQX zWS`=>2OF}EnFUEmEh`D%mZ^IB&m|Vtx}!QJlOiSmG_g$W_RGuNaHRcZ?br49cJGc^ ze=|0|fBUbx1#df)oO7;Cd^a(?MY(*-L7x2wU#(=}*9-o;`R{I3t=tJ;xH&%`@2hmE zn)o`iM?Sc?-X9s(X1;{?xzPWd5+GTd7s2H~DZn9OeowUdh;#zU{)AEO()n z(;NS|h3H;fJloIODf4B)rX?-G>GN`>;%5B({m3#dDkpb#Ft3c1V7BLHkJbK}&G#~< za-T^Swg21mw=MED+xJ6rRyfTzkey}IeQ}@h@6)^QY}(|y?C*w^+L+LPBqD zbn}^f^6d%3_9>p5^4>(2$F{x}V+--U);2S2(Pd>z(S6RIm5N)oUCH`&q`z2kOW zDzQAebXk$p>gyt$Ov_#G`w8ovy(-YvkfnOLD&|Uet95%=M~Lx4-o=S08BCULHalp@ zc(Yjash;LS&*CFlXZC4wmuYmFFYqii($!;C>se*y&srL=GAUBUuIXXZx|J7p?TK#q zb6D-O!$ga{@pCk0F1gd7_2H`Bi4C{&WxaVW%0As#lFqYu>df{;j#Wngdl$dad3jiW zeSYU_%u$xD4QqcMK0CQ3c=;;R zuoY{kT`}Sh%5aZn+q86U*i(aT8I5s5drsJd%s+QMyx5F!;obaC{?pB$CQqJ~daNjT zmrVDCRjO0p2UI`1Bj*cV8`XbMY!xi8Ku-#o9y6K8rZkozGsjKrgyJ%J;ahQq3Wj z*9XH-td}`>(02C%y%4X!g{;@B+Ar4qn8+2vpzfrmaa^={?J-N66X~+biZcuCcW<~} zv1`GWQky!K-xsu|2>*6m%zLLmBQE$*mc{p=N`K=?*DD>>YyS7-$!C0-SM=1{*YfEWvk{zuW9M zMfnrUzVj&E*39d8ypF5+kWX6LzerIV81*D9v}f1J{N z^+aDF&maD;zkbe9v+Q3f%+y_RVphbb`-17uJot^Cv}teNz4hRf>1Q$?iVMsNpIv40 z>dWDG+5!eo zj?>rPPyC;;_0)!Y)0-MunNF!PFg^N{zuvO)cfGE5@vrUHdVl}Nelz^#Y_xOH(zGq- zp87}0ba=mv($_ScAY`*7FD1WUw`C4*nqPSF*=sA*0#hGcnd7@e;h@6~e)V$;RF0~8 z&$!dIYU+QMXPPPHYA#nN^G9CFd2SW8HOEuyQ|+77??!L0emUO!{G!gyn(NO`GI~_y zc5c`lr%?0l!?8_O9EU15v*vROn^a=8OO42`~%J5&Ua@MP2Is6=Q=6nWfgN zTl7*USkKvaNj81<{Iva6tIVS<~!_;dKaQONr_-qv2<&v+My+&h`hXL9f2bF+~5 zYfeX>GXHfo_Nn#!TQ*;|Pv`@@(2 zw>Fxy^s=qZ5Ak}B2YF&I^rP;p$;?uVub(d%Gbya+R9DxhPKoGaN?Z5a9()k^!RxN) zBTn;p&PSOV(`HJCxiv^epXEq7?ODutd?nBQUtx)2ap|jkz6CC6`Vm^O$574K_|CuZ z9XC8nHtB9Y_0#J2C!u9e^Z%|m^R&G|N@tSJ<&va7eA<#?k#=SWMJM)`>+AQVx14=2 zOI40pc;lQq59c|Sos9c@E?50l`i{~aQ&ZM-ua4MM-V(^KwZB1=|Li@5qR(ez}vz(&btLWRDBK+BNm8dP)C{V?tMxi(VLN?+~8peOc(3Ec1lAJ9b4t% z7gk>1Iy?98)yp=!UOf4*E7z~}vrh@zG#$D6BaeRzuR8H4eaglrp9^kAE*VE{cC0(W z>ck!Hs_C+fx3~S&=a0wLXN!eO{3>3}c7I~gxlKpApP1(_Yc~uE=gyq|c~Q^PQrCjq z%;mzClaC3_ipY87zpkTIr>XUO1?%OdFNGVVtq#swdHtQv!O(M4!~LR$jj|^J|);%Pjsnb@s29^BI@gwwo_-yZ`DzL*K>4$+cQFF%sfO zZ*orf;BYE`+r>98Gd@<@+~-kw)%PoLUe}z<{#HkMuYXvq7`C$eXwyCMzP1elsd699 zI)C_1T~oE4$*56ZJJU3gGeP^5i1Pd2N8Z~hYgg=e zeW&<^Yy95tZ8_l@W+lB(jK6F;fAdtu1%_g=Mmt@TLW{GH=2kvb4*ex{cB6O4>?+f& ziYMnpl4?f7C#*7>$)tkj4(vEc2jnO$YRM<4Cnbzs)HJ1f3FTtD|H%LPgO zH!1&~WL?=~r<&ervi-!Jy1ly|iR{{OvukQ6lb`t0$gZZCD^?r_;#T+^oNah?%9Qhg zSB~`j42x1p7nh52=bm-viIvQb>9-hftG!!y$8>iHU(}jM&CZ}CM{7j_6I3syskX=wb#Zy9QxO)q@~zP&v+gsQ z&*#iOcX#r+MzcGgm)&{HY|+dgXSwQr!bTUlD=VTRb+tq|SS@2JuN*!zRU`Ci(N)!o zdL_NKhG~cAp8C01TdRnl;^~N_FvpR`q<$sdm_L++sanvlz zp1tPe#MKiwY*ns}c63;s*t{llPWYpaAogqPTRgAdG&sBGQLi2EtG$oTKH@8kkC?gs zgwM4?iSy=0@~Q2DWulhhcRP;m(U;UWOO~&7xXt-rr^?$*XVI%>2EM+^7fq`)>lNFY zO{SQ<;a>THZPCa3OW!et?95(q`of#7O5)nFTU$4^6)3G;sCebE`y^W2`ds<>_UkemH&e}+~|@iw3S$4aY%eyqs8 zns@5a5mE#i?;|qFa;|OT#)WH(WWB zIiGRs@-;G_vX5@n%)7B`Y6Snj!k!@0#qD9$FXsA|t}R~awD$9z@~HtnEq5iAO0`dx zgiB5GUtclteER+4hsFH&>|V8wq5pNY`U1YYP1Pq3SeQNd_j*Fc6mQ-;D_*U4=85|# za>ASO-omB@C4BD$6PCDh-_dxz-kC4%qreSc?t2TH7nJb46HHp-&i-Zw*A_okzPEZy zri-m`X8CzOak<4_-&6lN)#AcmUN?B-tn+H3Nca!Ng2rj*EVgdhZ_2iC*OCBL`Gu#N zG!-44CUi{?(EJo(Y?P=P&@RUFDfmH1(gHqCl`YFJaDIv~H(JQw;VGTVBvgER`@=H_q<~;T|c5!piU#`su%_3Iod)Ues|K-}`7}nVs-r3lj zIiKr9s@MflmT7HfCANZBqk4k=a&K-_XQGyH4D784EkFf=jcqxmW(MCz7ch4!@+->ijRt~Vwd_Q6ufQmT*b%V!d2e5M(&T5 zjEQr+)>nCs|Mm>A`ujiP1J0#Ccy%gGbhVwT^x=oCumAoMn#ZW}((1*oW6OE-WQEP% z-Couz_~6E)zYKaSERUT3_{HGB8X_8Ew$;13xW4bR`}RDN|K}yqmM_2V@$;*@+SgWAJ5JsnY?R87 zH@)Fw=hyRZmW8joTdHqA&%R!s{b}Ql_p%0+GBX}t2#C3sw0OGIRIz@Em4{aB=xce- zcA8!F;OVZtsV!fA&Aq(US>j>9#fq2VsRvIUxN6|L`Rbdad1=S@nI3$4{Mh7#B4K%k z2hUXRCH?i~-Yz?DPoac+xmy6wV@uDzcQFTF9hxJ;b&A_p;YiBY-q}-5Zqa2keEPmO zYr+0Nhi9s#>Sx9Gis>!-x}o@`j^nBc?!wyh-d*E)W2e(`{i!Pp?>crJ?b~}k{SPqM zIB7d8_cM#m&g!X5AXZzoo1E#X}L)w>%O>#{9^8Br~M{3 zu-usBaX7Trj&kDRd(FIAn_h9QUg^y~-6uU{{f@3ot#21sa+d`ji&DL}Y08`CqecL{oL5A!c#G4nt9B<*Tt6m?5zp3Rld z#yWaEM`X|Qox1gG#Tj*TOEuN^*2}62X0vkU`7@pJJ0o}U+`=V}n>J5hcl1qTnA{T8 zwL33tGP-K;#gFgJw*}8_PsrSE|1aFmV*Ii1;e*@B1%D;_9L^M`FWF+6|7-pOg-31^ zjWU2SgsrMV_w(MI zTbQr4Dd*+W3CaodafA?;Zn72_bUgPL(#}gvKDGQV9&qwlR zPQ16X)G4O)@?~@NWwU(W>%0sI+1Df|@_MV~-^&-;mk03cW(V#vRtRWIE0nn&dx!h3 z>)uT#MVDJW{id;R)5D!pCk5|LHRaqmv7))U+CkghHFN1*>2GF-?oCad(|6|d9rfDi zhIazC;*Uz-n!n#%)_q<>m-oe_WAmdQ@Hu-2s~Fx*b}KQQ>8%*FyzS@)K~D3&V>|fv zKH9-kz94Xq+MWb;Ki}2Gi?^qH+-A6EWUuo6;8B}|Mjqbl!Z+ipTdQ&t<7cTR-Mg{E zU&q9S+xzLNcf301*Oh7%Z`yEShtK+#TxSk#{m3cFvo!MZjrH&2O+)x3Z6w`Jd^(sN z`f$s&y{qEm?%FqUZtgskUHkl=QP-oSuY1M5vK)MPYv#Ni5*tK{Swi#ty>3Wdy)kpI zsZ61Zt4YJnvg1!DZ%mtUQ~gSu>Zf@((>x@Cp7LJb&i;9|`tLrCs^-6ShZ$AB@&7*i zJao2O`;$u{OrlBecI~X&D6eRKzPeBE_T8d0o0k~JIA`bIT=Z^2D9btba+Z!Y3%%zV zGC%HG8!mi3MgHmpBfWV_3(xNF&*}MKpfZTyvNh`qO0bH@35>H*)rWiTe0aI(4&I{!YtmD-i}Rhp+o>B7#*) zb{y(?Ucx&0z~4V=Q+JCzJ8o_1H9wTkKEdd5hw$V?M&@!E{dOU#ugj)eeBSC(_qD#) zH=eak>xY8T_egOL{>zrEdj&a{T;_ZK_RDF#*}RR4B1s1XUY(NY=X!lDka6XT#)^*A z4tL(a-{OOqYx$p@U(EjZt=8K@`y1L4J9KVTv!APJ@L0uI@A7%!VpheCtmkSNy;m{S zFInqv@k>-7Msh*0iL^Oq$vYW=zkG`#BtMk0R<}HH*ElM+zxvyclR6bH6Qum~CcZ6j zWl8O$7emHhN{h=ht_mRojI7 zG=9auyE2I*&ND>B{pVD@$@AiZOrzGBM0VQwNqk?lurBR-M#8cy6U7bAD(#tZAk(Jg zda2B<(BL*P)_c3F0v8q~ePYP^t|alt*10LX$y((5A9H`>v^O&Xr!r?vxA_O(%V`?w8*D{6dZA z_R<~AEGbKP+#Kr-Svefc^^cqU3U-Q2HVWOD5uU4(IaOo}WB7;0kb=%Ds_v|vw|b_Z zzP!$gJ%>N3;~<~=9Q!hvp1Xhd?abU^Zy!;-Up#D20~>30>Q_bn>KfZ`=YCzi$F#sw zO0b;ie(rSRj8B)ew_23ne5d2rJY`F4l6HKS=k8frZC?Lcj0b#LLFC5V+iPx=wTj*@`*dVmuAQgWx);}O-`{)p{`-AMS#a$aBtFI+)whPbfn$X+7KPjK_K#qBzh}_$<6Y(2X z-#jdTGVxvEzJ^?vcLs|y&o0>NA)T0BR9sr7BPDJSnH<&qz3|YEB@^#0xGI10nMUkI z-~1D^*N5xIE{ohUGw*8Vs>q*93s)Xln|G__>kOII2W~CfmT=o@fyRFG)$OLD>-K$+ zT`xGd`|!l+I~vXYC5S$YO}cR*GTGw6!b{x8g3k6V{h=TzUsxo6D?9&b4rkw;LvMT) zg5UOiEoR}cx$(BXWJlxQGq%Q^%2$F5(`GH))7y7#&*7&R#2x-#p81OT2Q0X|NgA^_Vu+z^VjV?@nCiA2eEs8GYYk) zDnI)#bA55zb?u`J5id2D&*U^?6X1TDzrVl6MS7jkoK6E-?tOM$T&!`Oejh9a#RcAe z6v_~k{b_Lh{GGmMJLNmy{#cu;Ua&jp=lb}E>K4moFBfmO{oQ<5RkrHM47JUkllvHC zPIp<0?raW9TN1ajar>O8rK$W(M`F^aw=vHx3DaB`z9Ht_^0zS|cW+&5IU8Z{G2mYD z5s$}i1s2z*Z2p&4`!o3X?_IYa+-(ptUscc~YyGXKVEsiQp{X^G``NW#PByo*>t#CX z?%%$5X`jl**a*K`&PX@C`<^`J{d1fBe)na>)@Daf_?3MtOk;v?P=MVA`JJZrMU(4Z zG=F0@{ndEsZ>54;Ux{1alj>>4XAf?j%y@Jf@6L9eD;u9rQP!()eSP^&i`biIf6R}) zNxiZ8o+W$yL7OT5Z`hn~#~Hqyr*ko$J?8Dh9Q_UV-g`_dZ){q%``Cxw?RO_0tIA_7 z4t{y*-fOLe&GLF(YrEFPg@%yF6L`BOTGv)duiO| zY}3Un<@2>{>8(xYeG|o^9(f1|Pnj;s^)kXj#PNoYo^p!b-;(&XSDcJ;g`qnKk9G$ z^jNHX`6;u?eRuaet)60BesoUfvWW)k>+=QM(qcUm%Lut#uCKbNjQ%`j7 z`cJJXp9ljqHt zyl=w$`2|P&b22AyP#9uv;#ZyRSW& z_ielPkB`?`E3%*jJMYO-(35=TW|IK z5b8Ud{rjc!_rU1Y$1fF2w8rh8mbvGB!tXb)U)+yOoSqw{|M1A3ZQF`2e-F64d@9Q( z&Lbu}W=F5*IK=Lg!gSVtZH|Ok`7_tdHQl%Gt$*97Q|IT-&*ryikL|av{kK+q&RnM! zu&(NLX`R)9GxA3&7$Vji@=QGJct`x50;4F`4ZWJGFEg9p9F#ou%S^yC?co=mZ=!FR z`d=>V{{3V^o_}=6^O;I2l9S`R4_%x0O-m>#!D*&xrs=G^J-hk&MFlXJm7r5ht z=O%X3O%p3>^b>T9V&9g!K3j0peBr09iaVb~e3`^0<=gea|ICuU-pRK-uO?PP7^%PQwCUy?josVwNe&J`&r4N-w%M`m@zw@z9m?*JwUG3@#ifn22e*_lYmOF7Elq>Q^ zhiJtbkAH!ErOVm+A4u=N`tkI&y?V(u|J48R+-K%H5an816nXfO^0~XhS9P@hxA=UC z=`AdH>*Uj@&(Sl#WPXfs;!BnI3s0D@9&F;{JQsV7<5b(BLsLX2EaU&w>-e%c#LO4+)t-*jubAxy%$a)Nlk$| zQ(D6_UPn#!Zz@zwKd8`9zWq?GUa|}Ocjh`(mlG~6x-6~I=7~~2|LlD$D%xmrA$g`q z>emDAo_C_G`{KTS*&fqk8#aAz7W3i7^CQLUW^4*?>UhJwgrTIR_uH@X*tIJ=LNb{0 z|8>78dSdi4{>jJtJG_0rlst)y-LvufKNE+N)~gfc(j2o(KmGoD!EBqMPhWJqin_*Q zl^tho?Uu@|w%)Jg=fZRUAbYXpF||06%%frcA#FN8=lt3}M@#FO@)k7_4h{<~4vx?D zPA-d%>HSYzc=y9J!)?C$k(X9Jn#&=Wy5uNl_DjXYpnZ`K^*gllQvbaXYk#iCnDx+a z(afW%j{+)7PXwbtW;%CsdvV38&lSzBgn#xVpll3odEWOxY`Z&%ixpZ>eq~vLdx7VrZKit^2 z;c{-;A0PLEHG6s7=cU!ny4qOkvU{-yd)%oj+Y*#LGW0bVzdV$5o_@bQFEsMrQ{&ym zzh1`e`S@Fj-#DOFqUwcfM(WlZGSgm^W?vJ}jjFS4>YaSR#gS>+i~@_2?3C*kXN@oK zDm8ifprlInT-@PollO|-KR=7g+4I!3*v{MS=KhzN>#qD*@%r+9aG^JvaLm6)WVe>PRiexu#l-UGoOaz4#jwxyQmdVW~Ih2!qo-z$Ge?lS$WH9156 z(XGW3L-aKcyjrIbP#%;TJo(MdOEQ*c3yV%Iw2J5oWX+U3_Hw@6qE$aNj=z7y__DAn z@YS}+Y~|GKb@7w4x0-DUXLxcTm-pyrk6FfZ_A9MkbMVaEZ;L!Qr(O$>J7jX@+WhcH zz4A0k*85?%KfJYI(7JnT+M7e)ymUNRKAu`~$2RxGiwi3o&HuMti}%7cZ(AC9e!OqN6!2em(o1xxwrI0SC;E(Mk`IP zjg^@7I~cJ05^K0oyK*l@vdPVR-YO2)Qp3=OwyX9Y>* zB}gT6Syk_zUUqd!;M-oEZTv2^@BO*H_04^4YwCQOv5VPt=U)!buUfCU^4Hj{mOCfq zt^4KS>8kQ$rakhhdjw*ub!4@)ulE_Onegm(ch@8N>l-AhjwWJiCt6P+2S=P*Uq zXN&iwWm`N;jwUZ>yUE}9dCS^wDQ@)_b*~7XzW7W+^Nz&#z2AV zeHGt5UCm1Cyket-_rKh|dQZ@Xbs@hkPxAcIDrqTVw0hye&!OvlW2@~-gQv@W?c`@NL8I+w_DBhb&1$a#*pt?Pq~zq)=kc{I(_pDm&!jc>3Gvgzoj-^z9qF` zUh2sTpZe^~6>ez-!F7_sn_CwzD2}=-w{FkY)j_^D_HwT^>{58_tbhK|%6Rj$*0;^H zryo&M%HE@$?U0i-|7e0^&M6C@+xqS9=UI&Rzvy)O=TQ54_etx&=@z~58dugP`_(Tn zUM(y%@xAfKg%_NsNf+23SY8|Yp-B2eO1aaA3(^y{8}5i`iX6VZ#i-{?wGxL{^lhPA z;^o4-mZjc(oV}1Ym#?PV=7+(T69<)@Ht$HU;niPYzxjo_&#Kh9iE>jvx4hm`o;xXT zQ$$|A@Qb`BXPWS@h`s?+DX`1y8r`aalIsg}LFVMBL?RYJP;bJZ#a$<(X8IXS1!>CfIWk?7-r|>vG~t@rKpX9m{LK z%U?V8cTK25e$bV#>%H7w_xx>I^0kpIAWGyzl$?ZHyp_S1dox%19t!nW>r>l&ykmLR zCEn>LqD6lHSnsYAAIj!eX8&gLneFc^4tGD=xcG-ha1iIFD!wybDrr9g{Pw#!*!Ud$ zeIh_R-7b0Gf`6KqzV*6w7AGhu#83GDTz=i3=^nGAqpbfpFT46>|6)yL?k$EpE_$5k za=6o&Y%+bzfrX2&KXBqx*`%J;x`D?vCvN%+^Ek^bRmbiY?){hGHO05IkOhl#~oGw$+!`TZk}WoDb)Ivwp_b5(3CV-DFg&zsD@&H9y3#nXkR}u;Rs{ z8^u4g4(D%P^`lXWG2vQk1NYLKOJt+7QvbXPI-U~qYtFwHliqy|77$=7XuoY)KVkb8 zt&KNwIHt052QW_RO5T2}{A<|hn*F+6>y~W4!66gxWiVG;Y_{%Qv(qxx>$)n~<5LSB zRLz;}%vt#VmhiWx@UQv1WgH~h@*8WmoIj;+FKW8yU26J^jT5)_1-&pT`xtvRKsdPQ z{;tIg9G!{n>D}MtRM)f3-njhMWwoD$1s*@9d{9XGZ~FWA5*hxV&GB2A`Q*KBY`JFk z-BqRP8aLw;-bv;%i_d@HeKu8P+T1IfHdrd(=>4F%e6o;z{wtYk^RhjkQ~3iqf@|*8 zxJ5eUJZ#^uRq?pyctqcfU(?rUeb|=c?0D!s&*e8Owb{-V>%VWf)2kl4wcY4*I{$s& zm~cZ2=?k&;dg8xao;~heRAt>Wv-|wcM*&|vex{VaeNbrCn;Kc^emqoD{kXu(;-wgQ zE8H>zRpLNPj6E6pSC>a-Oj+Ihc*FUb+?!pMl%;Zm)_DKFDHyoLVPUB6wqyKLWP&-T z_M6Us5ovujUbubI;=@Mg7F@i!ZQGp5|GvJS@FAA@G{ZYRZtapV)6x${*RAGPNb30? zC}Q+$dE)4?<~)n#hwfMN@4M@GH_X0#KSSzGzRB5d^K0ajj^%wiruP5K##?>=vp$5( zHcUNcwfE3HpLw%R?0A;5+KWeVt@hl@hjhz#xHJkZtGKEVaQIl|3z^9;N>_OPkzk1q z+{rRkW36&cgVVoGsh`!>r++GJyxI0|MqPM)TYC6|$d8}Te}1KxQSOtz!^5zBPoX-a zW7?!nHxvG|o}Sh#rvyxDQ(@o{ZoYSy!+rCTl@oTn5}#%2HnnSE)}=+lj{DXuJ!HUi zOm*#oRhwUZ(9F$$q|2PLqhL2PTg#4P^GcSVU1fLRaOkEZ7BW+sxo*1hZ+Uvck6YsO zyl2|xIh$g84tmAz5Y}A7T@Vpe5aIQ5!~I7A2N?{enaG999ov0RY}RY0v&|2ro=ng5 zN~%{gObvgbb9z~<-7KFCcUDhVeRW5-^!4p++3PnQ@x5QT*i|gtah2GGnd|1yn6ZoL zj>)4(36sm7Sjt?DIpmw#;&4Ldn)bsk-U};vEI;nNWU)O-`kVXNN1keiOF1Q3LoVHY ze6Lus+wYKH^NQ;e&ac?qu=4kgThq5Keev<|^2ZB!ucp~cTFboJw0swz$ddIw-rq_u zU2%)qwz%@m#utoiW^X@CFW1;QC;5Dl&+p%|uhh4_7IEAgb+c&T{#vH9)puBON)JLeG1cK!20?yd$&wsgA@&4*>4(2sEI~FB%1Twp3z0ug+vqSN> zNOO$xIn~#*u63-tn^3;2TO?=IV&(kT+UOgslFQYck-i-IWp2^Z`>?L6vcWWwD!-I24^^Im{uf(P4fhX=C` zFK*GFW4}m%=VQRG=YP{)u&MN4h%h=WG}l)DUF5=hVT+^h1y0F3es-g#(xr-*?-nzC z{I0y_#>(E!FAfz=%YJk(d45Y>tI)(n-)yP^Qwyy2H5(sgP8Z};*fm2*_om{!rAzWZ zI?bDDxc-wNX-2PA7^Um_6zv_0z9sV-Y^)16&`7itIZC3U?ekL1m-QvdMpWW(vqGlTA-Vr(b zea=PBye&zb4BaU&^^91I&$E1+sP@n1`Y)Z+Hy<=|GtQjcZ|7ieTs_iy?j@FAY^k$n zna17aVT?)sy=(r>b1vKT7sOa)-+S@Zm3?1JdeDNJEzVAFORJaFUnrB>SO0JJf%hSz za_N714@LiXd+79Ev2kX!)vk)wvvxji&2^1C#}>_)8ST(*!q%(*?83PPg}G{W=6%v?ZV!(C z*s;oSQ+AP?->FxEyrBx5!sk~vFW22YCpX8-VfXIGWvR;_7WqC+doVw8h24ti6vw4I zI}!}GB=&7xQ9b#W;^G;NE1HrXJ$MkYBf(KC`02za2WLq{9Nh4Jvi`>EMk(d*YnoE4 zzsD&l8>+?EAI^WZna9}v?auwpM`GM=?0)t^m%UFhtncv+?@Y(LGp7GqyYTIcr`>Ev z^qz%$=(lD%aW~OMSU>bvY{-Gn0v{wF%erWk`Exyu_1<#oUq_4-`?1X_RzGfWT?$Gy zdhFONVV-&}y5*m=7}NaPu+_G|ICsj*MfudcN ze!M#JG<(X+`DfJCSqyqr+lqO1Ek8AVTB3Jee4chpT=Sa^FJ4!dyI2};%dum0=H4vH zzevugc}m~1&1aXTZD#4dy6)9J7HjLIZn4ig7upu-vz|I*$zc9V)=p|th+p`<#}jWn zXn2?QOzG~XXF7FqwZYuIC*PaBRMBqAaSyIItK(%}efQhurC*q~S;=O}vH4nNS*_!@ z>9!J1f4Sexll5Z599whFm{sSUClwq%sd?_puU$7zoY}SU;KIF}OBX-gGiCXKnC*f0 zFG@pZL7@_>^G3?F;Tn z^z{{f7cBDdd2aOgE@ObV(-&R#4*UM|1s)bn?cR$2W=|Dab(m-K)j#)?G^`)xygMzr zj?Gqd=aX}1?ff78n$1=!$92K?=;~P?r+$yR)bKiD;^QMrdJ}w_qZXK}n@8{N3ius_Pe4x(0He-thFQ<>gfdr(JrsI<$SbyYy4)_piKW=Ek=#@YpPW z<-f%-{Ngv~pI*mIjr6}gxO?i`1Fb8|*WY~l>Hg#B3T7FJ)#a5J&!3Xw_1O37&zFY= zX-nSj=hKi)Irk=Z$zj=0(b+MdrWm%Tig&4|<(I}is%$*h{dna?p>93?Dv_Nc;q$MU zzGOQ2L^3i}V$K)SDDMJ+uQk@$dKIyLs+;)?%rt}g52vUmE}48=$7cEWWVRRHk8_=a zZf1X!y8h+$$Gz44(ityrdGiSV3R}%`?A_)_GxelDx6|gW-pM2o-m>}DL)ZNB51(`V zV@)qJZkf3=oNa4!=QZ_rg|o6}Z2lzc^YGZTyxkr7zx~DJCY}9K!1&nE_-THu<}>c- zl!LSRQ}5f|i`92>x_I^t+rh6-_6RXMOI&kW=E+`B_EOx;Yr?KssyBWbHJpFG;Ah9% zyp(TWWAy$6pKj3#Jj-+L0r#s};Tb<9w6>?8@c6ed=X6H%k%yNO9nbc;Ii6f3mwKl2 z(#y~LSxf&E)<>t;vtMw$>A8-Rqr-TmEQ9yPlJo2W+#46ju7bbjiv3vXt#y}#S?T+P}?-(Pv35`C|xkb5JU z`;Dpv+j6Pi*sZ^$%6`tt@~mxb+n9B5LF?kxGJSayb^6l1PH$ORUutq}@3qZQ%oqL^ z7U?cv`FiWp@1pf7Heupj?EKFI?7u|?e3Cr+AR_WpWZDtqy10aIt%fh-ybc|o-*}opA>W8;n4{#sTiv}XO~RhU>5r-Q)26{qbuJ|7W!)Q zocZ{2=bVq(i*~h%u3N3CTe9~**BlR?O*-9irMh!;KgC6ctJS)1`^YGI!l}b~*V8|x z-@YlnlQ1t_EGWHh|D$Dccb6^v#JBLr@=N=#FPp==J*zb8ug#oom(L&Yum3djwq(El z>J`~8`C+rSluegQy=rFrX_9Z>p2J74De&#yebjW4Nn=5arcBQ4%~{?PGcTWJbpG)wd*-DFM*B@Qlw7SRHQOJEHYjh-GPrU}apCH)r03CB6%sGH zCo;Qmh{xr;EIMR(TQ$F)=aG5+qy7A5dQH0w7xX`wDI8tfVSMWS{ESw?_?FKCiUHXR zV=5*bzrohRF5j9x)&KtmuKLf)^HTQ;UYL67mB7-!H|74ZHU6FQ_-k_I=dK0oR|#%+ z(|)Ir>bL&Y-Jc8DB80T}a34w5$hs{l9`rcUyddpp)3W*P5vSXCCMhvZc4zXw-V}42 zm3!7dHnroNzn*Y@Gm~PR#LGTy9sAB}?b0fYTi+EpEuObFtM2ORpf-MUH|Dq(8i#9N zPAt76{wAJ#z0AXc50y9L%zXt#HK(uHnag@Nb@w@u64}b#xdtbfCQoY2I{BmT>;H_p zkMU=(%l>h+_+*|@`A>Swhkx#~{;v-_bkOI@xr)8x6+!A_s<`TCqD!qe-&m>t}p3+m@rdiq3oGU^<19Of%IpFusOLx(a;J}Eg35Vx< z&R!Sit9v%`uke~B1^yLxWXmsPuDJE%EK_No&pmIG6<-@1Z@bvdOiayuxZKQ5+PQ`I z+&fvh)GHUPKYtHx3k=!#OlO&9)XObv=ZmuHmf5Hut=*eum!o`=t1IZW=??#^zi;jT z7#ZR_EqBH3uQpYexTfyZTCF41V0HNPq-C<{k*`*VN`!_!47n&`5VTYJ>vbs?u7H@; zFDy5kr&?U(y7R6rYvHsV(^sc0G?;wq%yvGztE+@=oDQ0|(e8vzjjLK_;w_!S6IC`| z?Dzh#_b%W2=E7UXTP6>yHl@9MfBaeZs$$*ga(CYDe`1}xOTf9xlpF&g*CTj+d4`%J$s$Ij8^sj!c*KuOAPbE1E2^F8b>Kc{eZd-C&v+ zyL9cUuah%lR_&j4`K|h{?dRq6ckXB3G3U&;yz9GXJ*`}7JUKLUPx~rOr;o>#PFgUfTONz)_oR~sBk&bx{&`SorS`#n$73{R`C-C3MV7ftsFIF=@u39V|Kegb&C9(c__Wr z;e@=&k>z2<8;X3pwTQcd zQ8QI?_7S1ftP^RItd-P4qK1m;|-TQGtbfw zlOFghnx{ndSw44dVD7wWr@8Nn`_kR+EgiDr1$lGMIeiH3Yn{IOPT(p_CDu=O9s!JaciY`nmUXk1wuY{L9XSonBJI%+A=@{Ey%J)_-y9I`fT& z=6|<;eerEo#j6*LeAaRXy9_QZ)6k9D#&zNAKi<}a(^CWrIEq)WYDe`?xplHg@^-K~ z-@o-H#`>>)7{BJcTq~}BxNrVb?RE1cKiqhD?RKQ)I*02w`!3J9yyxxr->aY7O?cOm z`)%T{BZ7SP*W?$}O?7@Ja&gm2Z{^k%&p3({^*_X{jMDyk@}c7dmYB?~=}}zEIHsGO zD_Z=GrDD(24btAcs>RAJ%y~la`(1NgeTbi!@{xJC)+o2l1gRfNGPe~Zp!pT5HCxjS}k+S{_I(LX}w7$cXV&xOPN$JTXj*)elr(Akqk*2+_h`Q_r!Vr~%xup-BhYl;Xx6XY+oFmV z@iNK%2+Y}{{kP_A(UTkc36dOl6VE-EmO0al{hMWu7XxR(VP>ZTpQi6N%hP|Y>#pzp z-{|D8g>zUppDjH7;c;V*`)2dWwT^$x59qcqM91-M7gw{kZn`$hD2cbig=2-9(v@5K zGo_PP{JvHGBTYy7V2?SFf}=J44p(<@aQdEUgFQ~M?7Jexc8qSYD0q6aez3(L-J)hqg}F1LSm zt*TvL#NO@lg`xKo>b@wK2;OC%y4d%epKrR<8xgVDxF~` zj)zAI9NxLcfZ-;;>otyWU(d>kZwkMiU=Dk`S+h=3%1NUog{fx!jk4aaoY^VPDLW_T z>8;VM4`Ft`C>hl;>EDBvmfrVjc`h|-U2@yF{~s&&w)538a21%kN7*NNx09S@|TsRR^-;C8Z1fq&>=7Jmd#%AcR;S0wzfeI zOaBw@%Nplix+L_J1EKfl$>zrbNrwa26Y(E}4 zhx0EVndKS2MId(_ijC zDq*vH)cZoFRdfk+f%Ki(VkOIhrpsJN#`^fg! zzPNu1UpB}3^7oxsq;PlY{{s)_OZq5Y&DdbT>amPBLb&R=m)YH^ao;RA7(M@QB^9Rk zMep0w>HL!gkMgW6oV;2jefFYzb`Kx=`9>uj+7|h3#k`BcHWC3@`j=j<@%X=W<~rfP zj%J5>AM&PF2^#rI6xs0D9oRE_-Vxp1zeSGi{y)*9`b}efwEZlzuhD6Bjym3*>(1SM z-*DQ?U&HFl_6)ho53Vi>;)+izT&G$Tg$l^k9Cyk+R-ohf?!=4N2U@RP?Qe7uIpCqy zz$+WdBJfRG#_{p%Y_;&W-s#F=Q?H(56H7S0bcNrV!>7_}wtGJ?{CtYt#OchlEslF4 zif?M)(B|On+uZ)Bc+>u*r|(~jG`3$p_Q-11`CB&U`+q(>7_(I`WA!RsNq=L8t+_F_ zMn^e*JZ_uGQ8#&8iqVZA$qkP_vRY?OVSE#IB0}0}tuB+N-drI+p`0c1x{~MpwRX85 zU-WJ23xS_nHxI13{*&Q1+lDh|Bz{j``D%d+zs41uCK|2D3CGc&{b=9gA(6%H1EJMV@47kya1=92WCt9n;|@K)U7 zUCMT<=v(5H)ux&(zs_?`kA5I*__KV|+rL|X*!=&mcISW5kN=@TOFK@@dgK

      F;1J9zBAZ)+4|1YlP-OIG5KrOBi5VVQM3Ke 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

      g3lZB+DYCnI$l|wy|Q}q;=Ol% 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

      }(%>kmGzYKWd?O`-=*D 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

      vT3wy25Vk#X!*Olr1mxxWf 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�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

      S8!Qa?O#_&|crY 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%0A=v-MFXj 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 z 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 z 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 z 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%0Dv*%}CqhLL6YX0<|Ee8c+%NFIurOUloFz0X- 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

      (H=hJ} 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

      ZZa{nX>ku-uzoZ?m2lzY14hQoH!c-OFl6B5yBw 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⪻wxY{sH*>+dEU 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

      8rO> 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%0A*ZC>ie$(^@jdZ_naWrvgV)J?OB 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

    yXBzE~HQP;%_y_V`6T6N^Y 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%0DGTl(m-gL%-$g%@-~c%@#Ltzr|| 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�!>U#3O|`WerY~1Q>l}F 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%0Al!rmN+y32cnf666^ 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

    4Us`aH|8 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