Skip to main content

Post Query with Retrieval Time

Zuora

Post Query with Retrieval Time

This REST API can submit an aggregate query to retrieve those records that were either newly created or modified after a specified time, defined using the incrementalTime parameter. This can only be used in Stateful AQuA mode.

Zuora highly recommends you use the stateless mode instead of the stateful mode to extract bulk data. See Bulk data extraction from Zuora using AQuA for best practices.

Request

Environment Request

Production for US Cloud Data Center 2

POST https://rest.zuora.com/v1/batch-query/
API Sandbox for US Cloud Data Center 2 POST https://rest.apisandbox.zuora.com/v1/batch-query/
US Performance Test POST https://rest.pt1.zuora.com/v1/batch-query/
Production for US Cloud Data Center 1 POST https://rest.na.zuora.com/v1/batch-query/
API Sandbox for US Cloud Data Center 1 POST https://rest.sandbox.na.zuora.com/v1/batch-query/
Central Sandbox for US Cloud Data Center POST https://rest.test.zuora.com/v1/batch-query/
Production for EU Cloud Data Center POST https://rest.eu.zuora.com/v1/batch-query/
Sandbox for EU Cloud Data Center POST https://rest.sandbox.eu.zuora.com/v1/batch-query/
Central Sandbox for EU Cloud Data Center POST https://rest.test.eu.zuora.com/v1/batch-query/

Request Parameters

format

The supported values are csv, zip and gzip. The default value is csv.

version

Version 1.1 required for retrieval time.

The API version you want to use. Supported versions:

  • 1.1 Supports both modes
  • 1.0 Default. Supports Stateless mode only

See Stateless and Stateful Modes for more information.

project

Required for retrieval time.

The project field contains the unique ID of a data integration project for a particular partner.  

It must be used together with "partner" field to uniquely identify a data integration target.   

partner

Required for retrieval time.

The partner field indicates the unique ID of a data integration partner. It must be used together with "project" field to uniquely identify a data integration target. For example, if a continuous AQuA session is to retrieve data incrementally for Salesforce.com, you can use partner as "Salesforce", and "project" as "00170000011K3Ub."

Submit a request at Zuora Global Support to obtain a partner ID.

encrypted

If enabled, you must supply the formatting (zip or unzip) first and decrypt it to get the actual contents.
Supported values are: pgp and none. 

incrementalTime

Allows you to override the time from which a Stateful AQuA job incrementally retrieves records that have been created or modified, using the incrementalTime parameter. For example, if you set incrementalTime = 2015-01-21 10:30:01, AQuA will retrieve records that have created or modified beginning at 10:30:01. If this parameter is not set, AQuA continues to use the Start Time of the last AQuA session to retrieve records incrementally.

The time zone of incrementalTime depends on which Zuora data center you use. For US Data Center customers, the time zone of incrementalTime is Pacific Time. For EU Data Center customers, the time zone of incrementalTime is UTC. If the time zone of your system is different from the time zone of incrementalTime, you will need to convert to the appropriate time zone before setting incrementalTime.

queries

A JSON Array object that contains a list of query objects. The list of query objects are name and query.

name

The name of the job. 32 character limit.

query

A valid ZOQL query or Export ZOQL query statement.

type

The job execution type. The value can be zoql or zoqlexport.

apiVersion

The API version for the query. If an API version is not specified, the latest version is used by default. Using the latest WSDL version is most useful for reporting use cases. For integration purposes, specify the WSDL version to ensure consistent query behavior, i.e., what is supported and included in the response returned by the API.

As of API version 69 and later, Zuora changed the format of certain fields. See Date Field Changes in the SOAP API for more information and a list of affected fields.

deleted

Required to export deleted data.

This indicates that the AQuA incremental load will retrieve deleted records.

column

Name of the Column in the extracted file that points to the deleted records. 

format

Can be set to either “Numeric” or “Boolean.” If set to Numeric, deleted records are marked as 1. If set to Boolean, deleted records are marked as “true.”

name

The name of the job. 32 character limit.

Response Parameters

useLastCompletedJobQueries

If this flag is set to true, then all the previous queries are merged with existing queries.
If the flag is set to false, then the previous queries are ignored, and only the new query is executed.

batches

A JSON array object that contains a list of batch objects.

full

Indicates a full or ncremental load. True = Full and False = Incremental.

name

The name of the job. 32 character limit.

query

A valid ZOQL query or Export ZOQL query statement.

status

The job status. Status types are:

  • Submitted: The job was successfully submitted upon successful validation of the JSON request.
  • Executing: The job is being processed.
  • Completed: The query was executed successfully. Click completed to download a gzip archive of the results.
  • Error: There are some validation errors in the JSON input, and the job ID will not be available.
  • Aborted: The execution stopped because one of the queries failed. Check the error code and error messages for more details.

recordCount

The actual number of records retrieved.

apiVersion

The API version for the query. If an API version is not specified, the latest version is used by default. Using the latest WSDL version is most useful for reporting use cases. For integration purposes, specify the WSDL version to ensure consistent query behavior, i.e., what is supported and included in the response returned by the API.

As of API version 69 and later, Zuora changed the format of certain fields. See Date Field Changes in the SOAP API for more information and a list of affected fields.

batchType

The kind of batch job being submitted. Possible values are zoql or zoqlexport.

project

The project field contains the unique ID of a data integration project for a particular partner.  

It must be used together with "partner" field to uniquely identify a data integration target.   

partner

The partner field indicates the unique ID of a data integration partner. It must be used together with "project" field to uniquely identify a data integration target. For example, if a continuous AQuA session is to retrieve data incrementally for Salesforce.com, you can use partner as "Salesforce", and "project" as "00170000011K3Ub."

Submit a request at Zuora Global Support to obtain a partner ID.

name

The name of the job. 32 character limit.

id

The job ID created for the AQuA API request. The job ID can be used for querying for the query status.
The ID exists only if the JSON request can be parsed and validated successfully. Otherwise, the job ID is null.

version

The API version you want to use. Supported versions:

  • 1.1 Supports both modes
  • 1.0 Default. Supports Stateless mode only

See Stateless and Stateful Modes for more information.

format

The supported values are csv, zip and gzip. The default value is csv.

status

The job status. Status types are:

  • Submitted: The job was successfully submitted upon successful validation of the JSON request.
  • Executing: The job is being processed.
  • Completed: The query was executed successfully. Click completed to download a gzip archive of the results.
  • Error: There are some validation errors in the JSON input, and the job ID will not be available.
  • Aborted: The execution stopped because one of the queries failed. Check the error code and error messages for more details.

incrementalTime

Allows you to override the time from which a Stateful AQuA job incrementally retrieves records that have been created or modified, using the incrementalTime parameter. For example, if you set incrementalTime = 2015-01-21 10:30:01, AQuA will retrieve records that have created or modified beginning at 10:30:01. If this parameter is not set, AQuA continues to use the Start Time of the last AQuA session to retrieve records incrementally.

The time zone of incrementalTime depends on which Zuora data center you use. For US Data Center customers, the time zone of incrementalTime is Pacific Time. For EU Data Center customers, the time zone of incrementalTime is UTC. If the time zone of your system is different from the time zone of incrementalTime, you will need to convert to the appropriate time zone before setting incrementalTime.

encrypted

If enabled, you must supply the formatting (zip or unzip) first and decrypt it to get the actual contents.
Supported values are: pgp and none. 

JSON Example

This example shows submitting a JSON request with the retrieval start time.

HTTP request:

POST https://www.zuora.com/apps/api/batch-query/

POST https://apisandbox.zuora.com/apps/api/batch-query/

JSON request:

{ 
"format":"CSV",
"version":"1.1",
"project": "aquatest64",
"partner": "gooddata",
"encrypted":"none",
 "incrementalTime": "2015-01-21 10:30:01",
"queries":[
{ "name":"Account", "query":"select Id,CreditBalance,Name,Balance,TaxExemptStatus,AutoPay,Currency,PaymentGateway,PaymentTerm,SalesRepName,TaxExemptIssuingJurisdiction,TaxExemptEffectiveDate,TaxExemptExpirationDate,TaxExemptCertificateType,LastInvoiceDate,Status,TotalInvoiceBalance,CreatedDate,UpdatedDate, ParentId, CustomerServiceRepName from Account", "type":"zoql" }
,
{ "name":"Subscription", "query": "select Id, AutoRenew, CancelledDate, ContractAcceptanceDate,ContractEffectiveDate, CreatedDate, InitialTerm, InvoiceOwnerId, IsInvoiceSeparate,Name, OriginalCreatedDate, RenewalTerm, ServiceActivationDate, Status, SubscriptionEndDate, SubscriptionStartDate, TermEndDate, TermStartDate, TermType,UpdatedDate, Version, PreviousSubscriptionId from Subscription", "type":"zoql" }
],
"name":"DSEXPORT"
}

Successful JSON response:

{
    "useLastCompletedJobQueries": false,
    "batches": [
        {
            "full": false,
            "name": "Account",
            "query": "select Id,CreditBalance,Name,Balance,TaxExemptStatus,AutoPay,Currency,PaymentGateway,PaymentTerm,SalesRepName,TaxExemptIssuingJurisdiction,TaxExemptEffectiveDate,TaxExemptExpirationDate,TaxExemptCertificateType,LastInvoiceDate,Status,TotalInvoiceBalance,CreatedDate,UpdatedDate, ParentId, CustomerServiceRepName from Account",
            "status": "pending",
            "recordCount": 0,
            "apiVersion": "65.0",
            "batchType": "zoql",
            "batchId": "2c9080214b08c3a0014b08f0a6d70042"
        },
        {
            "full": false,
            "name": "Subscription",
            "query": "select Id, AutoRenew, CancelledDate, ContractAcceptanceDate,ContractEffectiveDate, CreatedDate, InitialTerm, InvoiceOwnerId, IsInvoiceSeparate,Name, OriginalCreatedDate, RenewalTerm, ServiceActivationDate, Status, SubscriptionEndDate, SubscriptionStartDate, TermEndDate, TermStartDate, TermType,UpdatedDate, Version, PreviousSubscriptionId from Subscription",
            "status": "pending",
            "recordCount": 0,
            "apiVersion": "65.0",
            "batchType": "zoql",
            "batchId": "2c9080214b08c3a0014b08f0a6d90043"
        }
    ],
    "project": "aquatest64",
    "partner": "gooddata",
    "name": "DSEXPORT",
    "id": "2c9080214b08c3a0014b08f0a6d50041",
    "version": "1.1",
    "format": "CSV",
    "status": "submitted",
    "incrementalTime": 1421865001000,
    "encrypted": "none"
}