Here is my initial apex that currently functions and will return json.
public class samCall {
@AuraEnabled
public static String samQuery(string accountDuns) {
HttpRequest req = new HttpRequest();
req.setEndpoint( 'callout:samAPI/entity-information/v2/entities?ueiDUNS=' + accountDuns);
req.setHeader( 'X-Api-Key', '{!$Credential.Password}' );
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
return res.getBody();
}
}
Here is Js -
import { LightningElement,wire,track,api } from 'lwc';
import getDuns from '@salesforce/apex/samCall.samQuery';
export default class searchSam extends LightningElement {
@api dunsNumber;
@track samRecord;
@track error;
@track data;
handleClick(event){
let inputDuns = this.template.querySelector('lightning-input').value;
this.dunsNumber = inputDuns;
}
@wire(getDuns,{ accountDuns: '$dunsNumber'})
samData({ error, data }) {
if (data) {
//console.log('RecordId is'+recordId);
this.samRecord = data;
console.log(samRecord);
this.error = undefined;
} else if (error) {
//console.log('Error block');
this.error = error;
this.samRecord = undefined;
}
}
}
---->> Final Apex
public class samCall {
@AuraEnabled(cacheable=true)
public static string samQuery(string accountDuns) {
HttpRequest req = new HttpRequest();
req.setEndpoint( 'callout:samAPI/entity-information/v2/entities?ueiDUNS=' + accountDuns);
req.setHeader( 'X-Api-Key', '{!$Credential.Password}' );
req.setMethod('GET');
Http http = new Http();
HTTPResponse res = http.send(req);
entityApi parsedResponse = (entityApi) JSON.deserialize(res.getBody(), entityApi.class);
Object entReg = parsedResponse.entityData[0].entityRegistration;
String pretty = JSON.serialize(entReg);
System.debug('Is this pretty? >>>' + ' ' + pretty);
return pretty;
}
public class entityApi {
public Integer totalRecords;
public List<EntityData> entityData;
public List<NaicsList> naicsList;
}
public class FinancialInformation {
public String creditCardUsage;
public String debtSubjectToOffset;
}
public class NaicsList {
public String naicsCode;
public String naicsDescription;
public String sbaSmallBusiness;
}
public class EntityData {
public EntityRegistration entityRegistration;
public CoreData coreData;
public Assertions assertions;
public PointsOfContact pointsOfContact;
}
public class PhysicalAddress {
public String addressLine1;
public String city;
public String stateOrProvinceCode;
public String zipCode;
public String zipCodePlus4;
public String countryCode;
}
public class Assertions {
public GoodsAndServices goodsAndServices;
public DisasterReliefData disasterReliefData;
public EdiInformation ediInformation;
}
public class GovernmentBusinessAlternatePOC {
public String firstName;
public String middleInitial;
public String lastName;
public String title;
public String addressLine1;
public String addressLine2;
public String city;
public String stateOrProvinceCode;
public String zipCode;
public String zipCodePlus4;
public String countryCode;
}
public class EdiInformation {
public String ediInformationFlag;
}
public class DisasterReliefData {
public String disasterRegistryFlag;
public String bondingFlag;
public List<GeographicalAreaServed> geographicalAreaServed;
}
public class CoreData {
public EntityInformation entityInformation;
public PhysicalAddress physicalAddress;
public PhysicalAddress mailingAddress;
public String congressionalDistrict;
public GeneralInformation generalInformation;
public FinancialInformation financialInformation;
}
public class PointsOfContact {
public GovernmentBusinessPOC governmentBusinessPOC;
public GovernmentBusinessPOC electronicBusinessPOC;
public GovernmentBusinessAlternatePOC governmentBusinessAlternatePOC;
public GovernmentBusinessAlternatePOC electronicBusinessAlternatePOC;
public GovernmentBusinessAlternatePOC pastPerformancePOC;
public GovernmentBusinessAlternatePOC pastPerformanceAlternatePOC;
}
public class GeneralInformation {
public String entityStructureCode;
public String entityStructureDesc;
public String entityTypeCode;
public String entityTypeDesc;
public String profitStructureCode;
public String profitStructureDesc;
public String organizationStructureCode;
public String stateOfIncorporationCode;
public String stateOfIncorporationDesc;
public String countryOfIncorporationCode;
public String countryOfIncorporationDesc;
}
public class GoodsAndServices {
public String primaryNaics;
public List<NaicsList> naicsList;
public List<PscList> pscList;
}
public class GovernmentBusinessPOC {
public String firstName;
public String middleInitial;
public String lastName;
public String title;
public String addressLine1;
public String addressLine2;
public String city;
public String stateOrProvinceCode;
public String zipCode;
public String zipCodePlus4;
public String countryCode;
}
public class EntityInformation {
public String entityURL;
public String entityDivisionName;
public String entityDivisionNumber;
public String entityStartDate;
public String fiscalYearEndCloseDate;
public String submissionDate;
}
public class PscList {
public String pscCode;
public String pscDescription;
}
public class Links {
public String selfLink;
}
public class GeographicalAreaServed {
public String geographicalAreaServedStateCode;
public String geographicalAreaServedStateName;
public String geographicalAreaServedCountyCode;
public String geographicalAreaServedCountyName;
public String geographicalAreaServedmetropolitanStatisticalAreaCode;
public String geographicalAreaServedmetropolitanStatisticalAreaName;
}
public class EntityRegistration {
public String samRegistered;
public String ueiSAM;
public String ueiDUNS;
public String entityEFTIndicator;
public String cageCode;
public String dodaac;
public String legalBusinessName;
public String dbaName;
public String purposeOfRegistrationCode;
public String purposeOfRegistrationDesc;
public String registrationStatus;
public String registrationDate;
public String lastUpdateDate;
public String registrationExpirationDate;
public String activationDate;
public String ueiStatus;
public String ueiExpirationDate;
public String ueiCreationDate;
public String noPublicDisplayFlag;
public String exclusionStatusFlag;
public String exclusionURL;
public String dnbOpenData;
}
}
Final JS ----
import { LightningElement,wire,track,api } from 'lwc';
import getDuns from '@salesforce/apex/samCall.samQuery';
export default class searchSam extends LightningElement {
@api dunsNumber;
@track samRecord;
@track error;
@track data;
handleClick(event){
let inputDuns = this.template.querySelector('lightning-input').value;
this.dunsNumber = inputDuns;
}
@wire(getDuns,{ accountDuns: '$dunsNumber'})
samData({ error, data }) {
if (data) {
//console.log('RecordId is'+recordId);
this.samRecord = JSON.parse(data);
this.error = undefined;
} else if (error) {
//console.log('Error block');
this.error = error;
this.samRecord = undefined;
}
}
}
Final Html ----
<template>
<lightning-card title="Check SAM.GOV" icon-name="custom:custom63">
<lightning-input type="text" label="Enter DUNS" value={dunsNumber}> </lightning-input>
<lightning-button label="Check" onclick={handleClick} class="slds-m-left_x-small"></lightning-button>
<p>Displaying SAM Information</p>
DUNS Input: {dunsNumber}
<template if:true={samRecord}>
<p>Legal Business Name: {samRecord.legalBusinessName} </p>
<p>Cage Code: {samRecord.CageCode} </p>
<p>SAM UEI: {samRecord.ueiSAM} </p>
<p>SAM Expiration Date {samRecord.registrationExpirationDate} </p>
<p>Purpose of Registration: {samRecord.purposeOfRegistrationDesc} </p>
<p>Registration Status: {samRecord.registrationStatus} </p>
</template>
<template if:true={error}>
<p>1. Whoops! {error} </p>
</template>
</lightning-card>
</template>
Map<String, Object>
, where the objects are either primitive values (like string, integer or boolean), arrays or other Maps. See the documentation.