diff --git a/obp-api/src/main/scala/code/api/util/APIUtil.scala b/obp-api/src/main/scala/code/api/util/APIUtil.scala index 3a2d93e77..16105575f 100644 --- a/obp-api/src/main/scala/code/api/util/APIUtil.scala +++ b/obp-api/src/main/scala/code/api/util/APIUtil.scala @@ -118,6 +118,8 @@ import java.security.AccessControlException import java.util.regex.Pattern import code.api.util.FutureUtil.{EndpointContext, EndpointTimeout} +import code.api.v2_1_0.OBPAPI2_1_0.Implementations2_1_0 +import code.api.v2_2_0.OBPAPI2_2_0.Implementations2_2_0 import code.etag.MappedETag import code.users.Users import net.liftweb.mapper.By @@ -643,7 +645,18 @@ object APIUtil extends MdcLoggable with CustomJsonFormats{ val excludedFieldValues = APIUtil.getPropsValue("excluded.response.field.values").map[JArray](it => json.parse(it).asInstanceOf[JArray]) def successJsonResponseNewStyle(cc: Any, callContext: Option[CallContext], httpCode : Int = 200)(implicit headers: CustomResponseHeaders = CustomResponseHeaders(Nil)) : JsonResponse = { - val jsonAst: JValue = ApiSession.processJson((Extraction.decompose(cc)), callContext) + val jsonAst: JValue = { + val partialFunctionName = callContext.map(_.resourceDocument.map(_.partialFunctionName)).flatten.getOrElse("") + if ( + nameOf(code.api.v5_1_0.APIMethods510.Implementations5_1_0.getMetrics).equals(partialFunctionName) || + nameOf(code.api.v5_0_0.APIMethods500.Implementations5_0_0.getMetricsAtBank).equals(partialFunctionName) || + nameOf(Implementations2_2_0.getConnectorMetrics).equals(partialFunctionName) + ) { + ApiSession.processJson(Extraction.decompose(cc)(CustomJsonFormats.losslessFormats), callContext) + } else { + ApiSession.processJson((Extraction.decompose(cc)), callContext) + } + } val excludeOptionalFieldsParam = getHttpRequestUrlParam(callContext.map(_.url).getOrElse(""),"exclude-optional-fields") val excludedResponseBehaviour = APIUtil.getPropsAsBoolValue("excluded.response.behaviour", false) //excludeOptionalFieldsParamValue has top priority, then the excludedResponseBehaviour props.