Skip to main content

sendRequest Method

Zuora

sendRequest Method

Use the sendRequest global method to send REST requests to Zuora. The method takes in an Apex HTTP request, adds the authentication session header using the credentials set up in Connection Settings, and submits the request to Zuora.

The sendRequest method uses the Salesforce native HttpRequest and HttpResponse classes.

Signature

global System.HttpResponse
Zuora.zApi.sendRequest (System.HttpRequest restRequest)

Parameter

The sendRequest takes the following parameter.

Parameter Type Description
restRequest System.HttpRequest The request header and body in the native Salesforce class.

Return Value

The sendRequest method returns the System.HttpResponse Salesforce class. 

Sample Code

The following code queries the Zuora product catalog via the GET Products REST request.

HttpRequest req = new HttpRequest();
req.setEndpoint('https://apisandbox-api.zuora.com/rest/v1/catalog/products');
req.setMethod('GET');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept', 'application/json');

Zuora.ZApi zApiInstance = new Zuora.ZApi();
HttpResponse resp = zApiInstance.sendRequest(req);
System.debug(resp);
if(resp.getStatusCode() == 200) {
  Map < String, Object > productData = 
    (Map < String, Object > ) JSON.deserializeUntyped( resp.getBody() );
  System.debug(productData);
}

The following code creates a subscription in Zuora via the Post Subscription REST request: 

 req.setEndpoint('https://apisandbox-api.zuora.com/rest/v1/subscriptions');
req.setMethod('POST');
req.setHeader('Content-Type', 'application/json');
req.setHeader('Accept', 'application/json');

Map < String, Object > subscribe = new Map < String, Object >();
subscribe.put('accountKey', '8a808255575bdae4015817d070cc3ec0');
subscribe.put('termType', 'EVERGREEN');
subscribe.put('contractEffectiveDate', '2016-01-01');
subscribe.put('termStartDate', '2016-01-01');
subscribe.put('invoiceCollect', false);

Map < String, Object > subscribePlan = new Map < String, Object > {
    'productRatePlanId' => '8a808255575bdae4015796d893ac71f1'
};

List< Map < String, Object >> subscribePlans = 
  new List< Map < String, Object > > 
{
  subscribePlan  
};
subscribe.put('subscribeToRatePlans', subscribePlans);

String payload = JSON.serialize(subscribe);
req.setBody(payload);

Zuora.ZApi zApiInstance = new Zuora.ZApi();
HttpResponse resp = zApiInstance.sendRequest(req);
if(resp.getStatusCode() == 200) {
  Map < String, Object > subscribeData = (Map < String, Object > ) JSON.deserializeUntyped( resp.getBody() );
  System.debug(subscribeData);
}