r states the presence of a required field The name of the payload and response objects can be changed to whatever suits the developers preference, as long as the references within the code are refactored. foreignexchangelookuppost_payload - type object foreignexchangelookuppost_payload Fields: r destinationCurrencyCode - type string r sourceCurrencyCode - type string r sourceAmount - type float * (or best representation of 12 digit number with up to 3 decimal places) markUpRate - type float * systemsTraceAuditNumber - type int * retrievalReferenceNumber - type string acquiringBin - type int * acquirerCountryCode - type int * cardAcceptor - type object cardAcceptor Fields: name - type string terminalId - type string idCode - type string address - type object address Fields: city - type string state - type string county - type string country - type string zipCode - type string foreignexchangelookuppost_response - type object foreignexchangelookuppost_response Fields: r conversionRate - type float * r destinationAmount - type string originalDestnAmtBeforeMarkUp - type string markUpRateApplied - type string * You could in place of primitive types use type string to store all the non-object fields. It is perfectly functional from a api querying stand-point, but may require adding methods that account for conversions into numbers, in later business logic.