/// <param name="targetNfType">Type of the target NF</param>
/// <param name="requesterNfType">Type of the requester NF</param>
/// <param name="requesterNfInstanceId">NfInstanceId of the requester NF (optional, default to "")</param>
/// <param name="serviceNames">Names of the services offered by the NF (optional, default to std::vector<ServiceName>())</param>
/// <param name="requesterNfInstanceFqdn">FQDN of the requester NF (optional, default to "")</param>
/// <param name="targetPlmnList">Id of the PLMN of the target NF (optional, default to std::vector<PlmnId>())</param>
/// <param name="requesterPlmnList">Id of the PLMN where the NF issuing the Discovery request is located (optional, default to std::vector<PlmnId>())</param>
/// <param name="targetNfInstanceId">Identity of the NF instance being discovered (optional, default to "")</param>
/// <param name="targetNfFqdn">FQDN of the NF instance being discovered (optional, default to "")</param>
/// <param name="hnrfUri">Uri of the home NRF (optional, default to "")</param>
/// <param name="snssais">Slice info of the target NF (optional, default to std::vector<Snssai>())</param>
/// <param name="requesterSnssais">Slice info of the requester NF (optional, default to std::vector<Snssai>())</param>
/// <param name="plmnSpecificSnssaiList">PLMN specific Slice info of the target NF (optional, default to std::vector<PlmnSnssai>())</param>
/// <param name="dnn">Dnn supported by the BSF, SMF or UPF (optional, default to "")</param>
/// <param name="nsiList">NSI IDs that are served by the services being discovered (optional, default to std::vector<std::string>())</param>
/// <param name="smfServingArea"> (optional, default to "")</param>
/// <param name="tai">Tracking Area Identity (optional, default to Tai())</param>
/// <param name="amfRegionId">AMF Region Identity (optional, default to "")</param>
/// <param name="amfSetId">AMF Set Identity (optional, default to "")</param>
/// <param name="guami">Guami used to search for an appropriate AMF (optional, default to Guami())</param>
/// <param name="supi">SUPI of the user (optional, default to "")</param>
/// <param name="ueIpv4Address">IPv4 address of the UE (optional, default to "")</param>
/// <param name="ipDomain">IP domain of the UE, which supported by BSF (optional, default to "")</param>
/// <param name="ueIpv6Prefix">IPv6 prefix of the UE (optional, default to Ipv6Prefix())</param>
/// <param name="pgwInd">Combined PGW-C and SMF or a standalone SMF (optional, default to false)</param>
/// <param name="pgw">PGW FQDN of a combined PGW-C and SMF (optional, default to "")</param>
/// <param name="gpsi">GPSI of the user (optional, default to "")</param>
/// <param name="externalGroupIdentity">external group identifier of the user (optional, default to "")</param>
/// <param name="dataSet">data set supported by the NF (optional, default to DataSetId())</param>
/// <param name="routingIndicator">routing indicator in SUCI (optional, default to "")</param>
/// <param name="groupIdList">Group IDs of the NFs being discovered (optional, default to std::vector<std::string>())</param>
/// <param name="dnaiList">Data network access identifiers of the NFs being discovered (optional, default to std::vector<std::string>())</param>
/// <param name="pduSessionTypes">list of PDU Session Type required to be supported by the target NF (optional, default to std::vector<PduSessionType>())</param>
/// <param name="eventIdList">Analytics event(s) requested to be supported by the Nnwdaf_AnalyticsInfo service (optional, default to std::vector<EventId>())</param>
/// <param name="nwdafEventList">Analytics event(s) requested to be supported by the Nnwdaf_EventsSubscription service. (optional, default to std::vector<NwdafEvent>())</param>
/// <param name="supportedFeatures">Features required to be supported by the target NF (optional, default to "")</param>
/// <param name="upfIwkEpsInd">UPF supporting interworking with EPS or not (optional, default to false)</param>
/// <param name="chfSupportedPlmn">PLMN ID supported by a CHF (optional, default to PlmnId())</param>
/// <param name="preferredLocality">preferred target NF location (optional, default to "")</param>
/// <param name="accessType">AccessType supported by the target NF (optional, default to AccessType())</param>
/// <param name="limit">Maximum number of NFProfiles to return in the response (optional, default to 0)</param>
/// <param name="requiredFeatures">Features required to be supported by the target NF (optional, default to std::vector<std::string>())</param>