Class QueryRequest

java.lang.Object
com.veeva.vault.vapil.api.request.VaultRequest<QueryRequest>
com.veeva.vault.vapil.api.request.QueryRequest

public class QueryRequest extends VaultRequest<QueryRequest>
THE VQL CLASS TO END ALL VQL CLASSES

Available query methods:

See query(String) for example request and response methods, including reading of the resulting data and handling of the X-VaultAPI-DescribeQuery parameter.

Vault API Coverage:
https://developer.veevavault.com/api/25.2/#vault-query-language-vql
  • Field Details

    • HTTP_HEADER_VAULT_DESCRIBE_QUERY

      public static final String HTTP_HEADER_VAULT_DESCRIBE_QUERY
      X-VaultAPI-DescribeQuery Set to true to include static field metadata in the response
      See Also:
    • HTTP_HEADER_VAULT_RECORD_PROPERTIES

      public static final String HTTP_HEADER_VAULT_RECORD_PROPERTIES
      X-VaultAPI-RecordProperties If present, the response includes the record properties object.
      See Also:
  • Method Details

    • query

      public QueryResponse query(String vql)
      VQL Query

      Perform a Vault query request. Subsequent queries and pagination are needed to retrieve the full result set if the total records returned exceed the "pagesize" parameter in the response. See queryByPage(String).

      Returned records can be retrieved via the "getData" method in the response.

      Parameters:
      vql - The fully formed query string
      Returns:
      QueryResponse
      Vault API Endpoint:
       POST /api/{version}/query
      Example Request:
       QueryResponse response = vaultClient.newRequest(QueryRequest.class)
                                      .setDescribeQuery(true)
                                      .query(query);
      Example Response:
       Example display of query results, including sub-query results
       List<QueryResponse.QueryResult> results = response.getData();
       System.out.println(spacer + "Total records = " + results.size());
      
       String spacer = StringUtils.leftPad("",level,"\t");     *
       int i = 0;
      
       for (QueryResponse.QueryResult queryResult : results) {
         i++;
         System.out.println(spacer + "------- " + i + " -------");
         for (String fieldName : queryResult.getFieldNames()) {
           Object data = queryResult.get(fieldName);
           if (data instanceof LinkedHashMap) {
             QueryResponse subQuery = queryResult.getSubQuery(fieldName);
             if (subQuery != null) {
               System.out.println(spacer + fieldName + " = ");
               // Get the subquery results using subQuery.getData()
             }
             else {
               System.out.println(spacer + fieldName + " = null");
             }
           }
           else {
             System.out.println(spacer + fieldName + " = " + queryResult.get(fieldName));
           }
         }
       }
      ,
       Example reading of pagination details
       System.out.println("PageSize " + response.getResponseDetails().getPageSize());
       System.out.println("PageOffset " + response.getResponseDetails().getPageOffset());
       System.out.println("Size " + response.getResponseDetails().getSize());
       System.out.println("Total " + response.getResponseDetails().getTotal());
      
       if (resp.getResponseDetails().getNextPage() != null) {
         System.out.println("Next page " + response.getResponseDetails().getNextPage());
         System.out.println("Previous page " + response.getResponseDetails().getPreviousPage());
       }
      ,
       Example reading of X-VaultAPI-DescribeQuery results
       The X-VaultAPI-DescribeQuery can be set via the setDescribeQuery(Boolean) method, with an example response:
      
       if (resp.getQueryDescribe() != null) {
         System.out.println("Object Name = " + response.getQueryDescribe().getQueryObject().getName());
         System.out.println("Object Label = " + response.getQueryDescribe().getQueryObject().getLabel());
      
         for (VaultObjectField field : resp.getQueryDescribe().getFields()) {
           System.out.println("\tField Name = " + field.getName());
           System.out.println("\tField Label = " + field.getLabel());
         }
       }
    • queryByPage

      public QueryResponse queryByPage(String pageUrl)
      Get Query Page

      Perform a paginated query based on the URL from a previous query (previous_page or next_page in the response details).

      Note that this does not support described query, which should be read upon the first query call if needed.

      Parameters:
      pageUrl - The URL from the previous_page or next_page parameter in the form
      POST /query/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?pagesize=10&pageoffset=10
      Returns:
      QueryResponse
      Vault API Endpoint:
       Example query URL format
       POST /query/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?pagesize=10&pageoffset=10
      Example Request:
       QueryResponse response = vaultClient.newRequest(QueryRequest.class).query(query);
       // Get the first pageoffset (assuming correct response and an pageoffset exists)
       QueryResponse paginatedResponse = = vaultClient.newRequest(QueryRequest.class)
                      .queryByPage(response.getResponseDetails().getNextPage());
              
      Example Response:
      System.out.println(paginatedResponse.getResponseStatus())
      ;
    • setDescribeQuery

      public QueryRequest setDescribeQuery(Boolean queryDescribe)
      X-VaultAPI-DescribeQuery

      Set to true to include static field metadata in the response for the data record. If not specified, the response does not include any static field metadata. This option eliminates the need to make additional API calls to understand the shape of query response data.

      Parameters:
      queryDescribe - True for a describe
      Returns:
      The Request
      Example Response:
      Example results of a query describe
       if (response.getQueryDescribe() != null) {
         System.out.println("Object Name = " + response.getQueryDescribe().getQueryObject().getName());
         System.out.println("Object Label = " + response.getQueryDescribe().getQueryObject().getLabel());
      
         for (VaultObjectField field : response.getQueryDescribe().getFields()) {
           System.out.println("\tField Name = " + field.getName());
           System.out.println("\tField Label = " + field.getLabel());
         }
       }
    • setRecordProperties

      public QueryRequest setRecordProperties(QueryRequest.RecordPropertyType recordPropertyType)
      X-VaultAPI-RecordProperties

      If present, the response includes the record properties object. Possible values are all, hidden, redacted, and weblink. If omitted, the record properties object is not included in the response.

      Parameters:
      recordPropertyType - record property type
      Returns:
      The Request
      Example Response:
      Example results of record properties
       if (response.getRecordProperties() != null) {
         for (RecordProperty recordProperty : response.getRecordProperties()) {
           System.out.println("\tId = " + recordProperty.getId());
           System.out.println("\tHidden = " + String.join(",", recordProperty.getFieldProperties().get("hidden")));
         }
       }