All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.seeq.api.ItemsApi Maven / Gradle / Ivy

There is a newer version: 66.0.0-v202410141803
Show newest version
package com.seeq.api;

import com.seeq.ApiException;
import com.seeq.ApiClient;
import com.seeq.Configuration;
import com.seeq.model.*;
import com.seeq.Pair;

import javax.ws.rs.core.GenericType;
import javax.ws.rs.ProcessingException;

import com.seeq.model.AceInputV1;
import com.seeq.model.AclInputV1;
import com.seeq.model.AclOutputV1;
import com.seeq.model.CacheInfoV1;
import com.seeq.model.CalculatedItemOutputV1;
import com.seeq.model.FormulaCompileOutputV1;
import com.seeq.model.FormulaUpdateInputV1;
import com.seeq.model.ItemDependencyOutputV1;
import com.seeq.model.ItemFinderInputV1;
import com.seeq.model.ItemFinderOutputListV1;
import com.seeq.model.ItemFinderOutputV1;
import com.seeq.model.ItemOutputV1;
import com.seeq.model.ItemPreviewListV1;
import com.seeq.model.ItemPreviewV1;
import com.seeq.model.ItemSearchPreviewListV1;
import com.seeq.model.ItemSearchPreviewPaginatedListV1;
import com.seeq.model.ItemUserAttributesInputV1;
import com.seeq.model.ItemUserAttributesOutputV1;
import com.seeq.model.PropertyHrefOutputV1;
import com.seeq.model.PropertyInputV1;
import com.seeq.model.PropertyOutputV1;
import com.seeq.model.ScalarPropertyV1;
import com.seeq.model.StatusMessageBase;
import com.seeq.model.SwapInputV1;
import com.seeq.model.SwapOptionListV1;


import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class ItemsApi {
    private ApiClient apiClient;
    private long retryTimeout = 5_000; // Default of 5 seconds

    public ItemsApi() {
        this(Configuration.getDefaultApiClient());
    }

    public ItemsApi(ApiClient apiClient) {
        this.apiClient = apiClient;
    }

    public void setRetryTimeout(long retryTimeout) {
        this.retryTimeout = retryTimeout;
    }

    public long getRetryTimeout() {
        return this.retryTimeout;
    }

    public ApiClient getApiClient() {
        return apiClient;
    }

    public void setApiClient(ApiClient apiClient) {
        this.apiClient = apiClient;
    }

    /**
    * Add an access control entry to an item
    * 
    * @param id ID of the item to add access control entry to (required)
    * @param body The access control entry to add to the item (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 addAccessControlEntry(String id, AceInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = addAccessControlEntryWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Add an access control entry to an item
    * 
    * @param id ID of the item to add access control entry to (required)
    * @param body The access control entry to add to the item (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse addAccessControlEntryWithHttpInfo(String id, AceInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return addAccessControlEntryWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Add an access control entry to an item
    * 
    * @param id ID of the item to add access control entry to (required)
    * @param body The access control entry to add to the item (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse addAccessControlEntryWithHeadersAndHttpInfo(String id, AceInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return addAccessControlEntryInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse addAccessControlEntryInternal(String id, AceInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling addAccessControlEntry");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling addAccessControlEntry");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/ace"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Archive or delete an item
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional, default to false)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional, default to BY_USER)
    * @param note An optional note for why the item was archived (optional)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase archiveItem(String id, Boolean delete, String archivedReason, String note) throws ApiException {
        ApiClient.ApiResponse localVarResponse = archiveItemWithHttpInfo(id, delete, archivedReason, note);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Archive or delete an item
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional, default to false)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional, default to BY_USER)
    * @param note An optional note for why the item was archived (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHttpInfo(String id, Boolean delete, String archivedReason, String note) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return archiveItemWithHeadersAndHttpInfo(id, delete, archivedReason, note, localVarHeaderParams);
        
    }

    /**
    * Archive or delete an item
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional, default to false)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional, default to BY_USER)
    * @param note An optional note for why the item was archived (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHeadersAndHttpInfo(String id, Boolean delete, String archivedReason, String note, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "archivedReason", archivedReason));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "note", note));
                localVarHeaderParams.putAll(customHeaders);
        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse archiveItemInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling archiveItem");
        }
        // create path and map variables
        String localVarPath = "/items/{id}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Archive an item finder
    * 
    * @param id ID of the item finder to archive. (required)
    * @throws ApiException if fails to make API call
    */
    public void archiveItemFinder(String id) throws ApiException {
        archiveItemFinderWithHttpInfo(id);
    }
    
    /**
    * Archive an item finder
    * 
    * @param id ID of the item finder to archive. (required)
    * @throws ApiException if fails to make API call
    */
    public void archiveItemFinderWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        
         archiveItemFinderWithHeadersAndHttpInfo(id, localVarHeaderParams);
    }

    /**
    * Archive an item finder
    * 
    * @param id ID of the item finder to archive. (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public void archiveItemFinderWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        archiveItemFinderInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private void archiveItemFinderInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling archiveItemFinder");
        }
        // create path and map variables
        String localVarPath = "/items/finders/{id}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null);
                return;
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Change the owner of the specified item to the specified user. You need to be an administrator to be able to change the owner.
    * 
    * @param itemId ID of the item to change owner for (required)
    * @param newOwnerId ID of the user to become the new owner (required)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase changeOwner(String itemId, String newOwnerId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = changeOwnerWithHttpInfo(itemId, newOwnerId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Change the owner of the specified item to the specified user. You need to be an administrator to be able to change the owner.
    * 
    * @param itemId ID of the item to change owner for (required)
    * @param newOwnerId ID of the user to become the new owner (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse changeOwnerWithHttpInfo(String itemId, String newOwnerId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return changeOwnerWithHeadersAndHttpInfo(itemId, newOwnerId, localVarHeaderParams);
        
    }

    /**
    * Change the owner of the specified item to the specified user. You need to be an administrator to be able to change the owner.
    * 
    * @param itemId ID of the item to change owner for (required)
    * @param newOwnerId ID of the user to become the new owner (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse changeOwnerWithHeadersAndHttpInfo(String itemId, String newOwnerId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return changeOwnerInternal(itemId, newOwnerId, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse changeOwnerInternal(String itemId, String newOwnerId, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'itemId' is set
        if (itemId == null) {
            throw new ApiException(400, "Missing the required path parameter 'itemId' when calling changeOwner");
        }
        // verify the required path parameter 'newOwnerId' is set
        if (newOwnerId == null) {
            throw new ApiException(400, "Missing the required path parameter 'newOwnerId' when calling changeOwner");
        }
        // create path and map variables
        String localVarPath = "/items/{itemId}/owner/{newOwnerId}"
          .replaceAll("\\{" + "itemId" + "\\}", apiClient.escapeString(itemId.toString()))
          .replaceAll("\\{" + "newOwnerId" + "\\}", apiClient.escapeString(newOwnerId.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Clear the cache for an item.
    * 
    * @param id ID of the item on which to clear cache (required)
    * @param clearDependents Whether dependent caches should be cleared. Should always be true if a cache is in error, but false may be valuable when merely trying to recover disk space. (optional, default to true)
    * @return CacheInfoV1
    * @throws ApiException if fails to make API call
    */
    public CacheInfoV1 clearCache(String id, Boolean clearDependents) throws ApiException {
        ApiClient.ApiResponse localVarResponse = clearCacheWithHttpInfo(id, clearDependents);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Clear the cache for an item.
    * 
    * @param id ID of the item on which to clear cache (required)
    * @param clearDependents Whether dependent caches should be cleared. Should always be true if a cache is in error, but false may be valuable when merely trying to recover disk space. (optional, default to true)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse clearCacheWithHttpInfo(String id, Boolean clearDependents) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return clearCacheWithHeadersAndHttpInfo(id, clearDependents, localVarHeaderParams);
        
    }

    /**
    * Clear the cache for an item.
    * 
    * @param id ID of the item on which to clear cache (required)
    * @param clearDependents Whether dependent caches should be cleared. Should always be true if a cache is in error, but false may be valuable when merely trying to recover disk space. (optional, default to true)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse clearCacheWithHeadersAndHttpInfo(String id, Boolean clearDependents, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "clearDependents", clearDependents));
                localVarHeaderParams.putAll(customHeaders);
        return clearCacheInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse clearCacheInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling clearCache");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/cache"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Create a new item finder
    * 
    * @param body  (required)
    * @return ItemFinderOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputV1 createItemFinder(ItemFinderInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = createItemFinderWithHttpInfo(body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Create a new item finder
    * 
    * @param body  (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse createItemFinderWithHttpInfo(ItemFinderInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return createItemFinderWithHeadersAndHttpInfo(body, localVarHeaderParams);
        
    }

    /**
    * Create a new item finder
    * 
    * @param body  (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse createItemFinderWithHeadersAndHttpInfo(ItemFinderInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return createItemFinderInternal(body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse createItemFinderInternal(ItemFinderInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling createItemFinder");
        }
        // create path and map variables
        String localVarPath = "/items/finders";

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Delete a property
    * 
    * @param id ID of the item whose property is being deleted (required)
    * @param propertyName Name of the property to delete (required)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase deleteProperty(String id, String propertyName) throws ApiException {
        ApiClient.ApiResponse localVarResponse = deletePropertyWithHttpInfo(id, propertyName);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Delete a property
    * 
    * @param id ID of the item whose property is being deleted (required)
    * @param propertyName Name of the property to delete (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse deletePropertyWithHttpInfo(String id, String propertyName) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return deletePropertyWithHeadersAndHttpInfo(id, propertyName, localVarHeaderParams);
        
    }

    /**
    * Delete a property
    * 
    * @param id ID of the item whose property is being deleted (required)
    * @param propertyName Name of the property to delete (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse deletePropertyWithHeadersAndHttpInfo(String id, String propertyName, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return deletePropertyInternal(id, propertyName, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse deletePropertyInternal(String id, String propertyName, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling deleteProperty");
        }
        // verify the required path parameter 'propertyName' is set
        if (propertyName == null) {
            throw new ApiException(400, "Missing the required path parameter 'propertyName' when calling deleteProperty");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/properties/{propertyName}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()))
          .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Create, or find, a variant of the item that is based on the specified asset. For example, given the ID for Temperature in Area A, find its equivalent for Area B. Or, for a formula that uses Area A Temperature as an input, create a variant that that is based off Area B.
    * 
    * @param id ID of the item that is being updated (required)
    * @param body Asset swap information (required)
    * @return ItemPreviewV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewV1 findSwap(String id, List body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = findSwapWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Create, or find, a variant of the item that is based on the specified asset. For example, given the ID for Temperature in Area A, find its equivalent for Area B. Or, for a formula that uses Area A Temperature as an input, create a variant that that is based off Area B.
    * 
    * @param id ID of the item that is being updated (required)
    * @param body Asset swap information (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse findSwapWithHttpInfo(String id, List body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return findSwapWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Create, or find, a variant of the item that is based on the specified asset. For example, given the ID for Temperature in Area A, find its equivalent for Area B. Or, for a formula that uses Area A Temperature as an input, create a variant that that is based off Area B.
    * 
    * @param id ID of the item that is being updated (required)
    * @param body Asset swap information (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse findSwapWithHeadersAndHttpInfo(String id, List body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return findSwapInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse findSwapInternal(String id, List body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling findSwap");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling findSwap");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/swap"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get the current access control list for an item
    * 
    * @param id ID of the item to get access control list for (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 getAccessControl(String id) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getAccessControlWithHttpInfo(id);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get the current access control list for an item
    * 
    * @param id ID of the item to get access control list for (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getAccessControlWithHeadersAndHttpInfo(id, localVarHeaderParams);
        
    }

    /**
    * Get the current access control list for an item
    * 
    * @param id ID of the item to get access control list for (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getAccessControlInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getAccessControlInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getAccessControl");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/acl"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get the current access control list for an item with details of inherited entries
    * 
    * @param id ID of the item to get access control list for (required)
    * @param forceAclInheritance Show the ACL details as if access control inheritance would be enabled for the item (optional, default to false)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 getAccessControlDetails(String id, Boolean forceAclInheritance) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getAccessControlDetailsWithHttpInfo(id, forceAclInheritance);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get the current access control list for an item with details of inherited entries
    * 
    * @param id ID of the item to get access control list for (required)
    * @param forceAclInheritance Show the ACL details as if access control inheritance would be enabled for the item (optional, default to false)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlDetailsWithHttpInfo(String id, Boolean forceAclInheritance) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getAccessControlDetailsWithHeadersAndHttpInfo(id, forceAclInheritance, localVarHeaderParams);
        
    }

    /**
    * Get the current access control list for an item with details of inherited entries
    * 
    * @param id ID of the item to get access control list for (required)
    * @param forceAclInheritance Show the ACL details as if access control inheritance would be enabled for the item (optional, default to false)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlDetailsWithHeadersAndHttpInfo(String id, Boolean forceAclInheritance, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "forceAclInheritance", forceAclInheritance));
                localVarHeaderParams.putAll(customHeaders);
        return getAccessControlDetailsInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getAccessControlDetailsInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getAccessControlDetails");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/acl/details"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get the formula dependencies of an Item.
    * 
    * @param id ID of the item to find dependencies of (required)
    * @return ItemDependencyOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemDependencyOutputV1 getFormulaDependencies(String id) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getFormulaDependenciesWithHttpInfo(id);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get the formula dependencies of an Item.
    * 
    * @param id ID of the item to find dependencies of (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependenciesWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getFormulaDependenciesWithHeadersAndHttpInfo(id, localVarHeaderParams);
        
    }

    /**
    * Get the formula dependencies of an Item.
    * 
    * @param id ID of the item to find dependencies of (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependenciesWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getFormulaDependenciesInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getFormulaDependenciesInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getFormulaDependencies");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/dependencies"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    * 
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getFormulaDependents(String id, Integer offset, Integer limit) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getFormulaDependentsWithHttpInfo(id, offset, limit);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    * 
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHttpInfo(String id, Integer offset, Integer limit) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getFormulaDependentsWithHeadersAndHttpInfo(id, offset, limit, localVarHeaderParams);
        
    }

    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    * 
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHeadersAndHttpInfo(String id, Integer offset, Integer limit, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
                localVarHeaderParams.putAll(customHeaders);
        return getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getFormulaDependentsInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getFormulaDependents");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/dependents"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    * 
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getInterested(String id, Integer offset, Integer limit) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getInterestedWithHttpInfo(id, offset, limit);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    * 
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHttpInfo(String id, Integer offset, Integer limit) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getInterestedWithHeadersAndHttpInfo(id, offset, limit, localVarHeaderParams);
        
    }

    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    * 
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results (optional, default to 40)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHeadersAndHttpInfo(String id, Integer offset, Integer limit, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
                localVarHeaderParams.putAll(customHeaders);
        return getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getInterestedInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getInterested");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/interested"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get all the properties for the item identified by the supplied ID
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @return ItemOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemOutputV1 getItemAndAllProperties(String id) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getItemAndAllPropertiesWithHttpInfo(id);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get all the properties for the item identified by the supplied ID
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemAndAllPropertiesWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getItemAndAllPropertiesWithHeadersAndHttpInfo(id, localVarHeaderParams);
        
    }

    /**
    * Get all the properties for the item identified by the supplied ID
    * 
    * @param id ID of the item for which to retrieve properties (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemAndAllPropertiesWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getItemAndAllPropertiesInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getItemAndAllPropertiesInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getItemAndAllProperties");
        }
        // create path and map variables
        String localVarPath = "/items/{id}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @return ItemFinderOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputV1 getItemFinder(String id) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getItemFinderWithHttpInfo(id);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFinderWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getItemFinderWithHeadersAndHttpInfo(id, localVarHeaderParams);
        
    }

    /**
    * Get an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFinderWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getItemFinderInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getItemFinderInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getItemFinder");
        }
        // create path and map variables
        String localVarPath = "/items/finders/{id}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get a list of item finders
    * 
    * @param offset  (optional, default to 0)
    * @param limit The pagination limit, the total number of item finders that will be returned in this page of results (optional, default to 40)
    * @return ItemFinderOutputListV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputListV1 getItemFinders(Integer offset, Integer limit) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getItemFindersWithHttpInfo(offset, limit);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get a list of item finders
    * 
    * @param offset  (optional, default to 0)
    * @param limit The pagination limit, the total number of item finders that will be returned in this page of results (optional, default to 40)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHttpInfo(Integer offset, Integer limit) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getItemFindersWithHeadersAndHttpInfo(offset, limit, localVarHeaderParams);
        
    }

    /**
    * Get a list of item finders
    * 
    * @param offset  (optional, default to 0)
    * @param limit The pagination limit, the total number of item finders that will be returned in this page of results (optional, default to 40)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHeadersAndHttpInfo(Integer offset, Integer limit, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
                localVarHeaderParams.putAll(customHeaders);
        return getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getItemFindersInternal(List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // create path and map variables
        String localVarPath = "/items/finders";

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * 
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page (optional, default to 500)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getItemUsages(String id, List scope, Integer offset, Integer limit) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getItemUsagesWithHttpInfo(id, scope, offset, limit);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * 
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page (optional, default to 500)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHttpInfo(String id, List scope, Integer offset, Integer limit) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getItemUsagesWithHeadersAndHttpInfo(id, scope, offset, limit, localVarHeaderParams);
        
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * 
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page (optional, default to 500)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHeadersAndHttpInfo(String id, List scope, Integer offset, Integer limit, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "scope", scope));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
                localVarHeaderParams.putAll(customHeaders);
        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getItemUsagesInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getItemUsages");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/usages"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to get attributes for (required)
    * @return ItemUserAttributesOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemUserAttributesOutputV1 getItemUserAttributes(String id) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getItemUserAttributesWithHttpInfo(id);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to get attributes for (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUserAttributesWithHttpInfo(String id) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getItemUserAttributesWithHeadersAndHttpInfo(id, localVarHeaderParams);
        
    }

    /**
    * Get user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to get attributes for (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUserAttributesWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getItemUserAttributesInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getItemUserAttributesInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getItemUserAttributes");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/userAttributes"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get all pinned items for an item, ordered by the most recent first
    * 
    * @param sourceId Id of the source item to get pinned items for. If not specified, the current user will be used. (optional)
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 getPinnedItems(String sourceId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getPinnedItemsWithHttpInfo(sourceId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get all pinned items for an item, ordered by the most recent first
    * 
    * @param sourceId Id of the source item to get pinned items for. If not specified, the current user will be used. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPinnedItemsWithHttpInfo(String sourceId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getPinnedItemsWithHeadersAndHttpInfo(sourceId, localVarHeaderParams);
        
    }

    /**
    * Get all pinned items for an item, ordered by the most recent first
    * 
    * @param sourceId Id of the source item to get pinned items for. If not specified, the current user will be used. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPinnedItemsWithHeadersAndHttpInfo(String sourceId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "sourceId", sourceId));
                localVarHeaderParams.putAll(customHeaders);
        return getPinnedItemsInternal(localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getPinnedItemsInternal(List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // create path and map variables
        String localVarPath = "/items/pinned";

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get a property
    * 
    * @param id ID of the item for which to retrieve the specified property (required)
    * @param propertyName Name of the property to retrieve (required)
    * @return PropertyOutputV1
    * @throws ApiException if fails to make API call
    */
    public PropertyOutputV1 getProperty(String id, String propertyName) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getPropertyWithHttpInfo(id, propertyName);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get a property
    * 
    * @param id ID of the item for which to retrieve the specified property (required)
    * @param propertyName Name of the property to retrieve (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPropertyWithHttpInfo(String id, String propertyName) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getPropertyWithHeadersAndHttpInfo(id, propertyName, localVarHeaderParams);
        
    }

    /**
    * Get a property
    * 
    * @param id ID of the item for which to retrieve the specified property (required)
    * @param propertyName Name of the property to retrieve (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPropertyWithHeadersAndHttpInfo(String id, String propertyName, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return getPropertyInternal(id, propertyName, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getPropertyInternal(String id, String propertyName, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getProperty");
        }
        // verify the required path parameter 'propertyName' is set
        if (propertyName == null) {
            throw new ApiException(400, "Missing the required path parameter 'propertyName' when calling getProperty");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/properties/{propertyName}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()))
          .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * For the Item to be swapped in, get a ranked list of potential swap-out Items from the paths of the Items whose IDs are passed as query parameters.  The ranking is based on the number of matches found among the descendants of the swap-in Item when the listed Item is chosen as the swap-out Item, where matching is established by comparing relative paths.
    * 
    * @param id ID of the root Item to be swapped in (required)
    * @param swapOutItemIds IDs of the items to be swapped out (required)
    * @return SwapOptionListV1
    * @throws ApiException if fails to make API call
    */
    public SwapOptionListV1 getSwapOptions(String id, List swapOutItemIds) throws ApiException {
        ApiClient.ApiResponse localVarResponse = getSwapOptionsWithHttpInfo(id, swapOutItemIds);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * For the Item to be swapped in, get a ranked list of potential swap-out Items from the paths of the Items whose IDs are passed as query parameters.  The ranking is based on the number of matches found among the descendants of the swap-in Item when the listed Item is chosen as the swap-out Item, where matching is established by comparing relative paths.
    * 
    * @param id ID of the root Item to be swapped in (required)
    * @param swapOutItemIds IDs of the items to be swapped out (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getSwapOptionsWithHttpInfo(String id, List swapOutItemIds) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return getSwapOptionsWithHeadersAndHttpInfo(id, swapOutItemIds, localVarHeaderParams);
        
    }

    /**
    * For the Item to be swapped in, get a ranked list of potential swap-out Items from the paths of the Items whose IDs are passed as query parameters.  The ranking is based on the number of matches found among the descendants of the swap-in Item when the listed Item is chosen as the swap-out Item, where matching is established by comparing relative paths.
    * 
    * @param id ID of the root Item to be swapped in (required)
    * @param swapOutItemIds IDs of the items to be swapped out (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getSwapOptionsWithHeadersAndHttpInfo(String id, List swapOutItemIds, Map customHeaders) throws ApiException {
          // verify the required query parameter 'swapOutItemIds' is set
        if (swapOutItemIds == null) {
            throw new ApiException(400, "Missing the required query parameter 'swapOutItemIds' when calling getSwapOptions");
        }
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "swapOutItemIds", swapOutItemIds));
                localVarHeaderParams.putAll(customHeaders);
        return getSwapOptionsInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse getSwapOptionsInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling getSwapOptions");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/swapOptions"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Pin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 pinItem(String sourceId, String itemId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = pinItemWithHttpInfo(sourceId, itemId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Pin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse pinItemWithHttpInfo(String sourceId, String itemId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return pinItemWithHeadersAndHttpInfo(sourceId, itemId, localVarHeaderParams);
        
    }

    /**
    * Pin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse pinItemWithHeadersAndHttpInfo(String sourceId, String itemId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "sourceId", sourceId));
                localVarHeaderParams.putAll(customHeaders);
        return pinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse pinItemInternal(String itemId, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'itemId' is set
        if (itemId == null) {
            throw new ApiException(400, "Missing the required path parameter 'itemId' when calling pinItem");
        }
        // create path and map variables
        String localVarPath = "/items/pinned/{itemId}"
          .replaceAll("\\{" + "itemId" + "\\}", apiClient.escapeString(itemId.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Remove an access control entry from an item
    * 
    * @param id ID of the item to remove access control entry from (required)
    * @param aceId ID of the access control entry to remove (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 removeAccessControlEntry(String id, String aceId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = removeAccessControlEntryWithHttpInfo(id, aceId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Remove an access control entry from an item
    * 
    * @param id ID of the item to remove access control entry from (required)
    * @param aceId ID of the access control entry to remove (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse removeAccessControlEntryWithHttpInfo(String id, String aceId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return removeAccessControlEntryWithHeadersAndHttpInfo(id, aceId, localVarHeaderParams);
        
    }

    /**
    * Remove an access control entry from an item
    * 
    * @param id ID of the item to remove access control entry from (required)
    * @param aceId ID of the access control entry to remove (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse removeAccessControlEntryWithHeadersAndHttpInfo(String id, String aceId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return removeAccessControlEntryInternal(id, aceId, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse removeAccessControlEntryInternal(String id, String aceId, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling removeAccessControlEntry");
        }
        // verify the required path parameter 'aceId' is set
        if (aceId == null) {
            throw new ApiException(400, "Missing the required path parameter 'aceId' when calling removeAccessControlEntry");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/ace/{aceId}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()))
          .replaceAll("\\{" + "aceId" + "\\}", apiClient.escapeString(aceId.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Reset the Change Data Capture of an item.
    * 
    * @param itemId Id of the item to update. (required)
    * @return PropertyOutputV1
    * @throws ApiException if fails to make API call
    */
    public PropertyOutputV1 resetCdc(String itemId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = resetCdcWithHttpInfo(itemId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Reset the Change Data Capture of an item.
    * 
    * @param itemId Id of the item to update. (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse resetCdcWithHttpInfo(String itemId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return resetCdcWithHeadersAndHttpInfo(itemId, localVarHeaderParams);
        
    }

    /**
    * Reset the Change Data Capture of an item.
    * 
    * @param itemId Id of the item to update. (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse resetCdcWithHeadersAndHttpInfo(String itemId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return resetCdcInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse resetCdcInternal(String itemId, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'itemId' is set
        if (itemId == null) {
            throw new ApiException(400, "Missing the required path parameter 'itemId' when calling resetCdc");
        }
        // create path and map variables
        String localVarPath = "/items/{itemId}/resetCdc"
          .replaceAll("\\{" + "itemId" + "\\}", apiClient.escapeString(itemId.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Get a collection of items
    * 
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use <b>\"filter1 && filter2</b>\" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:<br><b>Empty</b>: returns the first ceiling number of items<br><b>\"value\"</b>: name or description of the item contains the case-insensitive value<br><b>\"field==value\"</b>: specified field exactly matches the case-sensitive value or regex<br><b>\"field~=value\"</b>: specified field contains the case-insensitive value or case-sensitive regex<br>To search for all items in the desired scope you may also use \"\\*\" character as filter.<br><b>Example:</b> Find items where (name or description contains case-insensitive \"bulb\" AND description contains case-insensitive \"area a\") OR (items hosted by datasource \"Example Data\" where name exactly matches the regex \".\\*[ABC]_Temperature\")<br><b>bulb && Description~=area a</b><br><b>Datasource ID==Example Data && Name==/.\\*[ABC]_Temperature/</b><br>To allow items with the 'unsearchable' property to be returned, include <b>\"@includeUnsearchable\"</b> on its own line<br>To exclude globally scoped items when using the \"scope\" filter include <b>\"@excludeGloballyScoped\"</b> on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to <b>\"@allProperties\"</b> to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 40)
    * @param orderBy An optional list of one or more fields used to sort the results. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit, List orderBy) throws ApiException {
        ApiClient.ApiResponse localVarResponse = searchItemsWithHttpInfo(filters, scope, asset, types, includeProperties, offset, limit, orderBy);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Get a collection of items
    * 
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use <b>\"filter1 && filter2</b>\" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:<br><b>Empty</b>: returns the first ceiling number of items<br><b>\"value\"</b>: name or description of the item contains the case-insensitive value<br><b>\"field==value\"</b>: specified field exactly matches the case-sensitive value or regex<br><b>\"field~=value\"</b>: specified field contains the case-insensitive value or case-sensitive regex<br>To search for all items in the desired scope you may also use \"\\*\" character as filter.<br><b>Example:</b> Find items where (name or description contains case-insensitive \"bulb\" AND description contains case-insensitive \"area a\") OR (items hosted by datasource \"Example Data\" where name exactly matches the regex \".\\*[ABC]_Temperature\")<br><b>bulb && Description~=area a</b><br><b>Datasource ID==Example Data && Name==/.\\*[ABC]_Temperature/</b><br>To allow items with the 'unsearchable' property to be returned, include <b>\"@includeUnsearchable\"</b> on its own line<br>To exclude globally scoped items when using the \"scope\" filter include <b>\"@excludeGloballyScoped\"</b> on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to <b>\"@allProperties\"</b> to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 40)
    * @param orderBy An optional list of one or more fields used to sort the results. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit, List orderBy) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return searchItemsWithHeadersAndHttpInfo(filters, scope, asset, types, includeProperties, offset, limit, orderBy, localVarHeaderParams);
        
    }

    /**
    * Get a collection of items
    * 
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use <b>\"filter1 && filter2</b>\" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:<br><b>Empty</b>: returns the first ceiling number of items<br><b>\"value\"</b>: name or description of the item contains the case-insensitive value<br><b>\"field==value\"</b>: specified field exactly matches the case-sensitive value or regex<br><b>\"field~=value\"</b>: specified field contains the case-insensitive value or case-sensitive regex<br>To search for all items in the desired scope you may also use \"\\*\" character as filter.<br><b>Example:</b> Find items where (name or description contains case-insensitive \"bulb\" AND description contains case-insensitive \"area a\") OR (items hosted by datasource \"Example Data\" where name exactly matches the regex \".\\*[ABC]_Temperature\")<br><b>bulb && Description~=area a</b><br><b>Datasource ID==Example Data && Name==/.\\*[ABC]_Temperature/</b><br>To allow items with the 'unsearchable' property to be returned, include <b>\"@includeUnsearchable\"</b> on its own line<br>To exclude globally scoped items when using the \"scope\" filter include <b>\"@excludeGloballyScoped\"</b> on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. <br>The following item types can act as a scope: <b>Workbook</b><br>If the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to <b>\"@allProperties\"</b> to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 0)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional, default to 40)
    * @param orderBy An optional list of one or more fields used to sort the results. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit, List orderBy, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "filters", filters));
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "scope", scope));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "types", types));
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "includeProperties", includeProperties));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));
        localVarQueryParams.addAll(apiClient.parameterToPairs("multi", "orderBy", orderBy));
                localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse searchItemsInternal(List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // create path and map variables
        String localVarPath = "/items";

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "GET", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Set the access control list (list of access control entries) for an item.
    * 
    * @param id ID of the item to change access control list for (required)
    * @param body The access control list to set (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 setAcl(String id, AclInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setAclWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Set the access control list (list of access control entries) for an item.
    * 
    * @param id ID of the item to change access control list for (required)
    * @param body The access control list to set (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setAclWithHttpInfo(String id, AclInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setAclWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Set the access control list (list of access control entries) for an item.
    * 
    * @param id ID of the item to change access control list for (required)
    * @param body The access control list to set (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setAclWithHeadersAndHttpInfo(String id, AclInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setAclInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setAclInternal(String id, AclInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setAcl");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling setAcl");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/acl"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Turns on or off access control inheritance for the specified item
    * 
    * @param id ID of the item to change access control inheritance for (required)
    * @param inheritAcl True if the item should inherit access control from its parent, false if it shouldn't. (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 setAclInheritance(String id, Boolean inheritAcl) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setAclInheritanceWithHttpInfo(id, inheritAcl);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Turns on or off access control inheritance for the specified item
    * 
    * @param id ID of the item to change access control inheritance for (required)
    * @param inheritAcl True if the item should inherit access control from its parent, false if it shouldn't. (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setAclInheritanceWithHttpInfo(String id, Boolean inheritAcl) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setAclInheritanceWithHeadersAndHttpInfo(id, inheritAcl, localVarHeaderParams);
        
    }

    /**
    * Turns on or off access control inheritance for the specified item
    * 
    * @param id ID of the item to change access control inheritance for (required)
    * @param inheritAcl True if the item should inherit access control from its parent, false if it shouldn't. (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setAclInheritanceWithHeadersAndHttpInfo(String id, Boolean inheritAcl, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setAclInheritanceInternal(id, inheritAcl, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setAclInheritanceInternal(String id, Boolean inheritAcl, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setAclInheritance");
        }
        // verify the required path parameter 'inheritAcl' is set
        if (inheritAcl == null) {
            throw new ApiException(400, "Missing the required path parameter 'inheritAcl' when calling setAclInheritance");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/inheritacl/{inheritAcl}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()))
          .replaceAll("\\{" + "inheritAcl" + "\\}", apiClient.escapeString(inheritAcl.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Update the formula and formula parameters of an item
    * 
    * @param id ID of the item that is being updated (required)
    * @param body The formula information (required)
    * @return CalculatedItemOutputV1
    * @throws ApiException if fails to make API call
    */
    public CalculatedItemOutputV1 setFormula(String id, FormulaUpdateInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setFormulaWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Update the formula and formula parameters of an item
    * 
    * @param id ID of the item that is being updated (required)
    * @param body The formula information (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setFormulaWithHttpInfo(String id, FormulaUpdateInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setFormulaWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Update the formula and formula parameters of an item
    * 
    * @param id ID of the item that is being updated (required)
    * @param body The formula information (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setFormulaWithHeadersAndHttpInfo(String id, FormulaUpdateInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setFormulaInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setFormulaInternal(String id, FormulaUpdateInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setFormula");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling setFormula");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/formula"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Set user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to change owner for (required)
    * @param body Attributes to set (required)
    * @return ItemUserAttributesOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemUserAttributesOutputV1 setItemUserAttributes(String id, ItemUserAttributesInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setItemUserAttributesWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Set user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to change owner for (required)
    * @param body Attributes to set (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setItemUserAttributesWithHttpInfo(String id, ItemUserAttributesInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setItemUserAttributesWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Set user-specific attributes of an item for the authenticated user.
    * 
    * @param id ID of the item to change owner for (required)
    * @param body Attributes to set (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setItemUserAttributesWithHeadersAndHttpInfo(String id, ItemUserAttributesInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setItemUserAttributesInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setItemUserAttributesInternal(String id, ItemUserAttributesInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setItemUserAttributes");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling setItemUserAttributes");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/userAttributes"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Set properties on the item identified by the supplied ID
    * 
    * @param id ID of the item to set properties on (required)
    * @param body Property information (required)
    * @return ItemOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemOutputV1 setProperties(String id, List body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setPropertiesWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Set properties on the item identified by the supplied ID
    * 
    * @param id ID of the item to set properties on (required)
    * @param body Property information (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setPropertiesWithHttpInfo(String id, List body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setPropertiesWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Set properties on the item identified by the supplied ID
    * 
    * @param id ID of the item to set properties on (required)
    * @param body Property information (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setPropertiesWithHeadersAndHttpInfo(String id, List body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setPropertiesInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setPropertiesInternal(String id, List body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setProperties");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling setProperties");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/properties"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Set a property
    * 
    * @param id ID of the item to set the property on (required)
    * @param propertyName Name of the property to set (required)
    * @param body Property information (required)
    * @return PropertyHrefOutputV1
    * @throws ApiException if fails to make API call
    */
    public PropertyHrefOutputV1 setProperty(String id, String propertyName, PropertyInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setPropertyWithHttpInfo(id, propertyName, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Set a property
    * 
    * @param id ID of the item to set the property on (required)
    * @param propertyName Name of the property to set (required)
    * @param body Property information (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setPropertyWithHttpInfo(String id, String propertyName, PropertyInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setPropertyWithHeadersAndHttpInfo(id, propertyName, body, localVarHeaderParams);
        
    }

    /**
    * Set a property
    * 
    * @param id ID of the item to set the property on (required)
    * @param propertyName Name of the property to set (required)
    * @param body Property information (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setPropertyWithHeadersAndHttpInfo(String id, String propertyName, PropertyInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return setPropertyInternal(id, propertyName, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setPropertyInternal(String id, String propertyName, PropertyInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setProperty");
        }
        // verify the required path parameter 'propertyName' is set
        if (propertyName == null) {
            throw new ApiException(400, "Missing the required path parameter 'propertyName' when calling setProperty");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling setProperty");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/properties/{propertyName}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()))
          .replaceAll("\\{" + "propertyName" + "\\}", apiClient.escapeString(propertyName.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Update the scope of an item
    * 
    * @param id ID of the item that is having its scope updated (required)
    * @param workbookId ID of the Workbook to which the item is being scoped. If not provided the item will be moved to the global scope (optional)
    * @return ItemOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemOutputV1 setScope(String id, String workbookId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = setScopeWithHttpInfo(id, workbookId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Update the scope of an item
    * 
    * @param id ID of the item that is having its scope updated (required)
    * @param workbookId ID of the Workbook to which the item is being scoped. If not provided the item will be moved to the global scope (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setScopeWithHttpInfo(String id, String workbookId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return setScopeWithHeadersAndHttpInfo(id, workbookId, localVarHeaderParams);
        
    }

    /**
    * Update the scope of an item
    * 
    * @param id ID of the item that is having its scope updated (required)
    * @param workbookId ID of the Workbook to which the item is being scoped. If not provided the item will be moved to the global scope (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setScopeWithHeadersAndHttpInfo(String id, String workbookId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "workbookId", workbookId));
                localVarHeaderParams.putAll(customHeaders);
        return setScopeInternal(id, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse setScopeInternal(String id, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling setScope");
        }
        // create path and map variables
        String localVarPath = "/items/{id}/scope"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Unpin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 unpinItem(String sourceId, String itemId) throws ApiException {
        ApiClient.ApiResponse localVarResponse = unpinItemWithHttpInfo(sourceId, itemId);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Unpin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse unpinItemWithHttpInfo(String sourceId, String itemId) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return unpinItemWithHeadersAndHttpInfo(sourceId, itemId, localVarHeaderParams);
        
    }

    /**
    * Unpin an item
    * 
    * @param sourceId Id of the source item. If not specified, the current user will be used. (optional)
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse unpinItemWithHeadersAndHttpInfo(String sourceId, String itemId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
        localVarQueryParams.addAll(apiClient.parameterToPairs("", "sourceId", sourceId));
                localVarHeaderParams.putAll(customHeaders);
        return unpinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse unpinItemInternal(String itemId, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = null;
        // verify the required path parameter 'itemId' is set
        if (itemId == null) {
            throw new ApiException(400, "Missing the required path parameter 'itemId' when calling unpinItem");
        }
        // create path and map variables
        String localVarPath = "/items/pinned/{itemId}"
          .replaceAll("\\{" + "itemId" + "\\}", apiClient.escapeString(itemId.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "DELETE", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    /**
    * Update an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @param body  (required)
    * @return ItemFinderOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputV1 updateItemFinder(String id, ItemFinderInputV1 body) throws ApiException {
        ApiClient.ApiResponse localVarResponse = updateItemFinderWithHttpInfo(id, body);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }
    
    /**
    * Update an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @param body  (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse updateItemFinderWithHttpInfo(String id, ItemFinderInputV1 body) throws ApiException {
        Map localVarHeaderParams = new HashMap();
        return updateItemFinderWithHeadersAndHttpInfo(id, body, localVarHeaderParams);
        
    }

    /**
    * Update an item finder
    * 
    * @param id The Seeq ID for the item finder (required)
    * @param body  (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse updateItemFinderWithHeadersAndHttpInfo(String id, ItemFinderInputV1 body, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();
                localVarHeaderParams.putAll(customHeaders);
        return updateItemFinderInternal(id, body, localVarQueryParams, localVarHeaderParams);
    }
    
    private ApiClient.ApiResponse updateItemFinderInternal(String id, ItemFinderInputV1 body, List queryParams, Map headerParams) throws ApiException {
        Object localVarPostBody = body;
        // verify the required path parameter 'id' is set
        if (id == null) {
            throw new ApiException(400, "Missing the required path parameter 'id' when calling updateItemFinder");
        }
        // verify the required body parameter 'body' is set
        if (body == null) {
            throw new ApiException(400, "Missing the required body parameter 'body' when calling updateItemFinder");
        }
        // create path and map variables
        String localVarPath = "/items/finders/{id}"
          .replaceAll("\\{" + "id" + "\\}", apiClient.escapeString(id.toString()));

        // query params
        Map localVarFormParams = new HashMap();

        
        final String[] localVarAccepts = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

        final String[] localVarContentTypes = {
        "application/vnd.seeq.v1+json"
        };
        final String localVarContentType = apiClient.selectHeaderContentType(localVarContentTypes);

        String[] localVarAuthNames = new String[] { "api_key" };

        long apiClientInvocationTime = System.currentTimeMillis();
        while(true) {
            try {
                GenericType localVarReturnType = new GenericType() {};
                return apiClient.invokeAPIWithHttpInfo(localVarPath, "POST", queryParams, localVarPostBody, headerParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
                // Possible exceptions:
                // ===================
                // * ResponseProcessingException - in case processing of a received HTTP response fails (e.g. in a filter or
                //    during conversion of the response entity data to an instance of a particular Java type).
                // * ProcessingException - in case the request processing or subsequent I/O operation fails.
                // * WebApplicationException - in case the response status code of the response returned by the server is not
                //    successful and the specified response type is not Response.
                // * ApiException for exceptions wrapped by ApiClient. Most likely all WebApplicationException are wrapped
                //    in ApiException(s)
            } catch (ApiException | ProcessingException e) {
                if (e instanceof ProcessingException || e instanceof ApiException && ((ApiException) e).getCode() == 504) {
                    long elapsedTime = System.currentTimeMillis() - apiClientInvocationTime;
                    if (elapsedTime <= this.retryTimeout && this.retryTimeout != 0) {
                        continue;
                    }
                }
                throw e;
            }
        } // while
    }
    // OVERLOADS START

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @param limit The pagination limit, the total number of collection items that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Integer limit, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "limit", limit));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset, List types, List includeProperties, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results. When using limit or offset values to query different item subsets it is important to sort the results using orderBy. Otherwise inconsistent results may be returned. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Integer offset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset, List types, List includeProperties) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset, List types, List includeProperties) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param includeProperties A list of one or more case-sensitive item properties to include in every item this search finds. Use a single entry set to "@allProperties" to specify that all item properties should be returned. Specified properties not present for an item are simply omitted and do not cause errors. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, List types, List includeProperties, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "includeProperties", includeProperties));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset, List types) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset, List types) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param types A list of one or more case-sensitive item types which will restrict results to only those items that exactly match, or are children of, one of the specified types. If no types are provided then items of any type are returned (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, List types, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "types", types));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope, String asset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope, String asset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param asset An ID that limits the results to items which are in the tree below the Asset referenced by the ID. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, String asset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "asset", asset));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters, List scope) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters, List scope) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, List scope, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems(List filters) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo(List filters) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    * @param filters A list of item filters to reduce the result set. To logical AND multiple filters, use "filter1 && filter2" on a single line. To logical OR multiple filters, put each onto a new line. Filters can include any of the following options:Empty: returns the first ceiling number of items"value": name or description of the item contains the case-insensitive value"field==value": specified field exactly matches the case-sensitive value or regex"field~=value": specified field contains the case-insensitive value or case-sensitive regexTo search for all items in the desired scope you may also use "\*" character as filter.Example: Find items where (name or description contains case-insensitive "bulb" AND description contains case-insensitive "area a") OR (items hosted by datasource "Example Data" where name exactly matches the regex ".\*[ABC]_Temperature")bulb && Description~=area aDatasource ID==Example Data && Name==/.\*[ABC]_Temperature/To allow items with the 'unsearchable' property to be returned, include "@includeUnsearchable" on its own lineTo exclude globally scoped items when using the "scope" filter include "@excludeGloballyScoped" on its own line. own line. Use a type filter with only one item type for the best performance. Some combinations of item types are not allowed and must be split into separate searches. (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(List filters, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "filters", filters));

        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items
    *
    *
    * @return ItemSearchPreviewPaginatedListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewPaginatedListV1 searchItems() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = searchItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items
    *
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHttpInfo() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items
    *
    *
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse searchItemsWithHeadersAndHttpInfo(Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return searchItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a list of item finders
    *
    * @param offset  (optional)
    * @return ItemFinderOutputListV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputListV1 getItemFinders(Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        ApiClient.ApiResponse localVarResponse = getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a list of item finders
    * @param offset  (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHttpInfo(Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        return getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a list of item finders
    *
    * @param offset  (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHeadersAndHttpInfo(Integer offset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarHeaderParams.putAll(customHeaders);
        return getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a list of item finders
    *
    *
    * @return ItemFinderOutputListV1
    * @throws ApiException if fails to make API call
    */
    public ItemFinderOutputListV1 getItemFinders() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a list of item finders
    *
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHttpInfo() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a list of item finders
    *
    *
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemFindersWithHeadersAndHttpInfo(Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getItemFindersInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get all pinned items for an item, ordered by the most recent first
    *
    *
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 getPinnedItems() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getPinnedItemsInternal(localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get all pinned items for an item, ordered by the most recent first
    *
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPinnedItemsWithHttpInfo() throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getPinnedItemsInternal(localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get all pinned items for an item, ordered by the most recent first
    *
    *
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getPinnedItemsWithHeadersAndHttpInfo(Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getPinnedItemsInternal(localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Unpin an item
    *
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 unpinItem(String itemId) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = unpinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Unpin an item
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse unpinItemWithHttpInfo(String itemId) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return unpinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Unpin an item
    *
    * @param itemId Id of the item to unpin/unmark as a favorite (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse unpinItemWithHeadersAndHttpInfo(String itemId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return unpinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Pin an item
    *
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @return ItemSearchPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemSearchPreviewListV1 pinItem(String itemId) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = pinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Pin an item
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse pinItemWithHttpInfo(String itemId) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return pinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Pin an item
    *
    * @param itemId Id of the item to pin/mark as a favorite (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse pinItemWithHeadersAndHttpInfo(String itemId, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return pinItemInternal(itemId, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase archiveItem(String id, Boolean delete, String archivedReason) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "archivedReason", archivedReason));

        ApiClient.ApiResponse localVarResponse = archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Archive or delete an item
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHttpInfo(String id, Boolean delete, String archivedReason) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "archivedReason", archivedReason));

        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @param archivedReason The reason for archiving the item. Can be one of OBSOLETE_SQLV1, BY_USER, DATASOURCE_CLEANUP, BY_MIGRATION, BY_PARENT_ITEM, BY_AUTO_ARCHIVE, BY_SANDBOX_MODE, or NONE (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHeadersAndHttpInfo(String id, Boolean delete, String archivedReason, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "archivedReason", archivedReason));

        localVarHeaderParams.putAll(customHeaders);
        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase archiveItem(String id, Boolean delete) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        ApiClient.ApiResponse localVarResponse = archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Archive or delete an item
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHttpInfo(String id, Boolean delete) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @param delete Permanently and irretrievably delete the item (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHeadersAndHttpInfo(String id, Boolean delete, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "delete", delete));

        localVarHeaderParams.putAll(customHeaders);
        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @return StatusMessageBase
    * @throws ApiException if fails to make API call
    */
    public StatusMessageBase archiveItem(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Archive or delete an item
    * @param id ID of the item for which to retrieve properties (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Archive or delete an item
    *
    * @param id ID of the item for which to retrieve properties (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse archiveItemWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return archiveItemInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get the current access control list for an item with details of inherited entries
    *
    * @param id ID of the item to get access control list for (required)
    * @return AclOutputV1
    * @throws ApiException if fails to make API call
    */
    public AclOutputV1 getAccessControlDetails(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getAccessControlDetailsInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get the current access control list for an item with details of inherited entries
    * @param id ID of the item to get access control list for (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlDetailsWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getAccessControlDetailsInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get the current access control list for an item with details of inherited entries
    *
    * @param id ID of the item to get access control list for (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getAccessControlDetailsWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getAccessControlDetailsInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Clear the cache for an item.
    *
    * @param id ID of the item on which to clear cache (required)
    * @return CacheInfoV1
    * @throws ApiException if fails to make API call
    */
    public CacheInfoV1 clearCache(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = clearCacheInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Clear the cache for an item.
    * @param id ID of the item on which to clear cache (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse clearCacheWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return clearCacheInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Clear the cache for an item.
    *
    * @param id ID of the item on which to clear cache (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse clearCacheWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return clearCacheInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    *
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getFormulaDependents(String id, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        ApiClient.ApiResponse localVarResponse = getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHttpInfo(String id, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        return getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    *
    * @param id ID of the item to find dependents of (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHeadersAndHttpInfo(String id, Integer offset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarHeaderParams.putAll(customHeaders);
        return getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    *
    * @param id ID of the item to find dependents of (required)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getFormulaDependents(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    * @param id ID of the item to find dependents of (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items dependent on the item identified by the supplied ID.
    *
    * @param id ID of the item to find dependents of (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getFormulaDependentsWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getFormulaDependentsInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    *
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getInterested(String id, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        ApiClient.ApiResponse localVarResponse = getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHttpInfo(String id, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        return getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    *
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page of results (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHeadersAndHttpInfo(String id, Integer offset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarHeaderParams.putAll(customHeaders);
        return getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    *
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getInterested(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Get a collection of items interested in the item identified by the supplied ID.
    *
    * @param id ID of the item to find all other items interested in the parameter (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getInterestedWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getInterestedInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Update the scope of an item
    *
    * @param id ID of the item that is having its scope updated (required)
    * @return ItemOutputV1
    * @throws ApiException if fails to make API call
    */
    public ItemOutputV1 setScope(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = setScopeInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Update the scope of an item
    * @param id ID of the item that is having its scope updated (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setScopeWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return setScopeInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Update the scope of an item
    *
    * @param id ID of the item that is having its scope updated (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse setScopeWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return setScopeInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getItemUsages(String id, List scope, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        ApiClient.ApiResponse localVarResponse = getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHttpInfo(String id, List scope, Integer offset) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param offset The pagination offset, the index of the first collection item that will be returned in this page (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHeadersAndHttpInfo(String id, List scope, Integer offset, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "offset", offset));

        localVarHeaderParams.putAll(customHeaders);
        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getItemUsages(String id, List scope) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        ApiClient.ApiResponse localVarResponse = getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHttpInfo(String id, List scope) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @param scope IDs that limit the results to those which are in the global scope or are scoped to the items referenced by the IDs. The following item types can act as a scope: WorkbookIf the scope is set to the Empty GUID then the scoped items are excluded (optional)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHeadersAndHttpInfo(String id, List scope, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();

        localVarQueryParams.addAll(apiClient.parameterToPairs("", "scope", scope));

        localVarHeaderParams.putAll(customHeaders);
        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }


    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @return ItemPreviewListV1
    * @throws ApiException if fails to make API call
    */
    public ItemPreviewListV1 getItemUsages(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        ApiClient.ApiResponse localVarResponse = getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
        return localVarResponse != null ? localVarResponse.getData() : null;
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    * @param id ID of the item to find usages (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHttpInfo(String id) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }

    /**
    * Finds all Threshold Metrics and Formulas that are directly built off the specified item.
    *
    * @param id ID of the item to find usages (required)
    * @param customHeaders a map with custom headers for the HTTP request (required)
    * @throws ApiException if fails to make API call
    */
    public ApiClient.ApiResponse getItemUsagesWithHeadersAndHttpInfo(String id, Map customHeaders) throws ApiException {
        List localVarQueryParams = new ArrayList();
        Map localVarHeaderParams = new HashMap();


        localVarHeaderParams.putAll(customHeaders);
        return getItemUsagesInternal(id, localVarQueryParams, localVarHeaderParams);
    }

// OVERLOADS END
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy