/*
 * Swagger of Opencellsoft Api
 * @#Introduction
 *
 * The version of the OpenAPI document: 7.3.1-SNAPSHOT
 * Contact: contact@opencellsoft.fr
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package org.openapitools.client.api;

import org.openapitools.client.ApiCallback;
import org.openapitools.client.ApiClient;
import org.openapitools.client.ApiException;
import org.openapitools.client.ApiResponse;
import org.openapitools.client.Configuration;
import org.openapitools.client.Pair;
import org.openapitools.client.ProgressRequestBody;
import org.openapitools.client.ProgressResponseBody;

import com.google.gson.reflect.TypeToken;

import java.io.IOException;


import org.openapitools.client.model.ActionStatus;
import org.openapitools.client.model.BomOfferDto;
import org.openapitools.client.model.BpmProductDto;
import org.openapitools.client.model.BsmServiceDto;
import org.openapitools.client.model.InlineResponseDefault;
import org.threeten.bp.OffsetDateTime;
import org.openapitools.client.model.ProductChargeTemplateDto;
import org.openapitools.client.model.ProductTemplateDto;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class CatalogApi {
    private ApiClient localVarApiClient;

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

    public CatalogApi(ApiClient apiClient) {
        this.localVarApiClient = apiClient;
    }

    public ApiClient getApiClient() {
        return localVarApiClient;
    }

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

    /**
     * Build call for dELETECatalogProductChargeTemplateCode1
     * @param code  code productChargeTemplate code  (required)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the delete action  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call dELETECatalogProductChargeTemplateCode1Call(String code, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/{code}"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call dELETECatalogProductChargeTemplateCode1ValidateBeforeCall(String code, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling dELETECatalogProductChargeTemplateCode1(Async)");
        }
        

        okhttp3.Call localVarCall = dELETECatalogProductChargeTemplateCode1Call(code, _callback);
        return localVarCall;

    }

    /**
     *  Delete a single productChargeTemplate by its code  
     *  Delete a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the delete action  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault dELETECatalogProductChargeTemplateCode1(String code) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = dELETECatalogProductChargeTemplateCode1WithHttpInfo(code);
        return localVarResp.getData();
    }

    /**
     *  Delete a single productChargeTemplate by its code  
     *  Delete a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the delete action  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> dELETECatalogProductChargeTemplateCode1WithHttpInfo(String code) throws ApiException {
        okhttp3.Call localVarCall = dELETECatalogProductChargeTemplateCode1ValidateBeforeCall(code, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Delete a single productChargeTemplate by its code   (asynchronously)
     *  Delete a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the delete action  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call dELETECatalogProductChargeTemplateCode1Async(String code, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = dELETECatalogProductChargeTemplateCode1ValidateBeforeCall(code, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for dELETECatalogProductTemplateCode1
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the remove action  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call dELETECatalogProductTemplateCode1Call(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/{code}"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "DELETE", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call dELETECatalogProductTemplateCode1ValidateBeforeCall(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling dELETECatalogProductTemplateCode1(Async)");
        }
        

        okhttp3.Call localVarCall = dELETECatalogProductTemplateCode1Call(code, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Delete a single productTemplate by its code and validity dates
     *  Delete a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the remove action  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault dELETECatalogProductTemplateCode1(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = dELETECatalogProductTemplateCode1WithHttpInfo(code, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Delete a single productTemplate by its code and validity dates
     *  Delete a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the remove action  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> dELETECatalogProductTemplateCode1WithHttpInfo(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = dELETECatalogProductTemplateCode1ValidateBeforeCall(code, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Delete a single productTemplate by its code and validity dates (asynchronously)
     *  Delete a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the remove action  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call dELETECatalogProductTemplateCode1Async(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = dELETECatalogProductTemplateCode1ValidateBeforeCall(code, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogCategory1
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of categories  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogCategory1Call(final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/category";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogCategory1ValidateBeforeCall(final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETCatalogCategory1Call(_callback);
        return localVarCall;

    }

    /**
     *  Get a list of categories  
     *  Get a list of categories  
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of categories  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogCategory1() throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogCategory1WithHttpInfo();
        return localVarResp.getData();
    }

    /**
     *  Get a list of categories  
     *  Get a list of categories  
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of categories  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogCategory1WithHttpInfo() throws ApiException {
        okhttp3.Call localVarCall = gETCatalogCategory1ValidateBeforeCall(null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a list of categories   (asynchronously)
     *  Get a list of categories  
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of categories  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogCategory1Async(final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogCategory1ValidateBeforeCall(_callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogCategoryCode1
     * @param code  code Category code  (required)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single category information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogCategoryCode1Call(String code, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/category/{code}"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogCategoryCode1ValidateBeforeCall(String code, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling gETCatalogCategoryCode1(Async)");
        }
        

        okhttp3.Call localVarCall = gETCatalogCategoryCode1Call(code, _callback);
        return localVarCall;

    }

    /**
     *  Get a single category by its code  
     *  Get a single category by its code  
     * @param code  code Category code  (required)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single category information  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogCategoryCode1(String code) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogCategoryCode1WithHttpInfo(code);
        return localVarResp.getData();
    }

    /**
     *  Get a single category by its code  
     *  Get a single category by its code  
     * @param code  code Category code  (required)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single category information  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogCategoryCode1WithHttpInfo(String code) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogCategoryCode1ValidateBeforeCall(code, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a single category by its code   (asynchronously)
     *  Get a single category by its code  
     * @param code  code Category code  (required)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single category information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogCategoryCode1Async(String code, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogCategoryCode1ValidateBeforeCall(code, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductChargeTemplateCode1
     * @param code  code productChargeTemplate code  (required)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productChargeTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductChargeTemplateCode1Call(String code, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/{code}"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductChargeTemplateCode1ValidateBeforeCall(String code, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling gETCatalogProductChargeTemplateCode1(Async)");
        }
        

        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateCode1Call(code, _callback);
        return localVarCall;

    }

    /**
     *  Get a single productChargeTemplate by its code  
     *  Get a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productChargeTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductChargeTemplateCode1(String code) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductChargeTemplateCode1WithHttpInfo(code);
        return localVarResp.getData();
    }

    /**
     *  Get a single productChargeTemplate by its code  
     *  Get a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productChargeTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductChargeTemplateCode1WithHttpInfo(String code) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateCode1ValidateBeforeCall(code, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a single productChargeTemplate by its code   (asynchronously)
     *  Get a single productChargeTemplate by its code  
     * @param code  code productChargeTemplate code  (required)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productChargeTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductChargeTemplateCode1Async(String code, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateCode1ValidateBeforeCall(code, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductChargeTemplateList1
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  List of charge template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductChargeTemplateList1Call(final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/list";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductChargeTemplateList1ValidateBeforeCall(final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateList1Call(_callback);
        return localVarCall;

    }

    /**
     *  List all productChargeTemplates  
     *  List all productChargeTemplates  
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  List of charge template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductChargeTemplateList1() throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductChargeTemplateList1WithHttpInfo();
        return localVarResp.getData();
    }

    /**
     *  List all productChargeTemplates  
     *  List all productChargeTemplates  
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  List of charge template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductChargeTemplateList1WithHttpInfo() throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateList1ValidateBeforeCall(null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  List all productChargeTemplates   (asynchronously)
     *  List all productChargeTemplates  
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  List of charge template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductChargeTemplateList1Async(final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductChargeTemplateList1ValidateBeforeCall(_callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductOffering1
     * @param validFrom  validFrom valid From option criteria date  (optional)
     * @param validTo  validTo valid To option criteria date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product offerings matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductOffering1Call(OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productOffering";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductOffering1ValidateBeforeCall(OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETCatalogProductOffering1Call(validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Get a list of product offerings optionally filtering by some criteria  
     *  Get a list of product offerings optionally filtering by some criteria  
     * @param validFrom  validFrom valid From option criteria date  (optional)
     * @param validTo  validTo valid To option criteria date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product offerings matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductOffering1(OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductOffering1WithHttpInfo(validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Get a list of product offerings optionally filtering by some criteria  
     *  Get a list of product offerings optionally filtering by some criteria  
     * @param validFrom  validFrom valid From option criteria date  (optional)
     * @param validTo  validTo valid To option criteria date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product offerings matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductOffering1WithHttpInfo(OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductOffering1ValidateBeforeCall(validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a list of product offerings optionally filtering by some criteria   (asynchronously)
     *  Get a list of product offerings optionally filtering by some criteria  
     * @param validFrom  validFrom valid From option criteria date  (optional)
     * @param validTo  validTo valid To option criteria date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product offerings matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductOffering1Async(OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductOffering1ValidateBeforeCall(validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductOfferingId1
     * @param id  id Product offering code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single product offering  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductOfferingId1Call(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productOffering/{id}"
            .replaceAll("\\{" + "id" + "\\}", localVarApiClient.escapeString(id.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductOfferingId1ValidateBeforeCall(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'id' is set
        if (id == null) {
            throw new ApiException("Missing the required parameter 'id' when calling gETCatalogProductOfferingId1(Async)");
        }
        

        okhttp3.Call localVarCall = gETCatalogProductOfferingId1Call(id, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Get details of a single Product template and validity dates
     *  Get details of a single Product template and validity dates. If no validity dates are provided, an Product template valid on a current date will be returned.  
     * @param id  id Product offering code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single product offering  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductOfferingId1(String id, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductOfferingId1WithHttpInfo(id, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Get details of a single Product template and validity dates
     *  Get details of a single Product template and validity dates. If no validity dates are provided, an Product template valid on a current date will be returned.  
     * @param id  id Product offering code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single product offering  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductOfferingId1WithHttpInfo(String id, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductOfferingId1ValidateBeforeCall(id, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get details of a single Product template and validity dates (asynchronously)
     *  Get details of a single Product template and validity dates. If no validity dates are provided, an Product template valid on a current date will be returned.  
     * @param id  id Product offering code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single product offering  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductOfferingId1Async(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductOfferingId1ValidateBeforeCall(id, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductSpecification1
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product specifications matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductSpecification1Call(final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productSpecification";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductSpecification1ValidateBeforeCall(final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETCatalogProductSpecification1Call(_callback);
        return localVarCall;

    }

    /**
     *  Get a list of product specifications optionally filtering by some criteria  
     *  Get a list of product specifications optionally filtering by some criteria  
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product specifications matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductSpecification1() throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductSpecification1WithHttpInfo();
        return localVarResp.getData();
    }

    /**
     *  Get a list of product specifications optionally filtering by some criteria  
     *  Get a list of product specifications optionally filtering by some criteria  
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product specifications matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductSpecification1WithHttpInfo() throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductSpecification1ValidateBeforeCall(null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a list of product specifications optionally filtering by some criteria   (asynchronously)
     *  Get a list of product specifications optionally filtering by some criteria  
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product specifications matching search criteria  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductSpecification1Async(final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductSpecification1ValidateBeforeCall(_callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductSpecificationId1
     * @param id  id Product code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A single product specification  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductSpecificationId1Call(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productSpecification/{id}"
            .replaceAll("\\{" + "id" + "\\}", localVarApiClient.escapeString(id.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductSpecificationId1ValidateBeforeCall(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'id' is set
        if (id == null) {
            throw new ApiException("Missing the required parameter 'id' when calling gETCatalogProductSpecificationId1(Async)");
        }
        

        okhttp3.Call localVarCall = gETCatalogProductSpecificationId1Call(id, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Get details of a single product  
     *  Get details of a single product  
     * @param id  id Product code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A single product specification  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductSpecificationId1(String id, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductSpecificationId1WithHttpInfo(id, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Get details of a single product  
     *  Get details of a single product  
     * @param id  id Product code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A single product specification  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductSpecificationId1WithHttpInfo(String id, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductSpecificationId1ValidateBeforeCall(id, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get details of a single product   (asynchronously)
     *  Get details of a single product  
     * @param id  id Product code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A single product specification  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductSpecificationId1Async(String id, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductSpecificationId1ValidateBeforeCall(id, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductTemplateCode1
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductTemplateCode1Call(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/{code}"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductTemplateCode1ValidateBeforeCall(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling gETCatalogProductTemplateCode1(Async)");
        }
        

        okhttp3.Call localVarCall = gETCatalogProductTemplateCode1Call(code, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Get a single productTemplate by its code and validity dates
     *  Get a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductTemplateCode1(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductTemplateCode1WithHttpInfo(code, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Get a single productTemplate by its code and validity dates
     *  Get a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductTemplateCode1WithHttpInfo(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductTemplateCode1ValidateBeforeCall(code, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get a single productTemplate by its code and validity dates (asynchronously)
     *  Get a single productTemplate by its code and validity dates. If no validity dates are provided, a product template valid on a current date will be deleted.  
     * @param code  code productTemplate code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Procuct template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Single productTemplate information  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductTemplateCode1Async(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductTemplateCode1ValidateBeforeCall(code, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETCatalogProductTemplateList1
     * @param code  code Product template code for optional filtering  (optional)
     * @param validFrom  validFrom Validity range from date.  (optional)
     * @param validTo  validTo Validity range to date.  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product templates  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductTemplateList1Call(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/list";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (code != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("code", code));
        }

        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETCatalogProductTemplateList1ValidateBeforeCall(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETCatalogProductTemplateList1Call(code, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  List all product templates optionally filtering by code and validity dates
     *  List all product templates optionally filtering by code and validity dates. If neither date is provided, validity dates will not be considered. If only validFrom is provided, a search will return products valid on a given date. If only validTo date is provided, a search will return products valid from today to a given date.  
     * @param code  code Product template code for optional filtering  (optional)
     * @param validFrom  validFrom Validity range from date.  (optional)
     * @param validTo  validTo Validity range to date.  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product templates  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault gETCatalogProductTemplateList1(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = gETCatalogProductTemplateList1WithHttpInfo(code, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  List all product templates optionally filtering by code and validity dates
     *  List all product templates optionally filtering by code and validity dates. If neither date is provided, validity dates will not be considered. If only validFrom is provided, a search will return products valid on a given date. If only validTo date is provided, a search will return products valid from today to a given date.  
     * @param code  code Product template code for optional filtering  (optional)
     * @param validFrom  validFrom Validity range from date.  (optional)
     * @param validTo  validTo Validity range to date.  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product templates  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> gETCatalogProductTemplateList1WithHttpInfo(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = gETCatalogProductTemplateList1ValidateBeforeCall(code, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  List all product templates optionally filtering by code and validity dates (asynchronously)
     *  List all product templates optionally filtering by code and validity dates. If neither date is provided, validity dates will not be considered. If only validFrom is provided, a search will return products valid on a given date. If only validTo date is provided, a search will return products valid from today to a given date.  
     * @param code  code Product template code for optional filtering  (optional)
     * @param validFrom  validFrom Validity range from date.  (optional)
     * @param validTo  validTo Validity range to date.  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  A list of product templates  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETCatalogProductTemplateList1Async(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETCatalogProductTemplateList1ValidateBeforeCall(code, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for gETIBaseVersion96
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Action status with version number as a message  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETIBaseVersion96Call(final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/version";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call gETIBaseVersion96ValidateBeforeCall(final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = gETIBaseVersion96Call(_callback);
        return localVarCall;

    }

    /**
     *  Get version of application  
     *  Get version of application  
     * @return ActionStatus
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Action status with version number as a message  </td><td>  -  </td></tr>
     </table>
     */
    public ActionStatus gETIBaseVersion96() throws ApiException {
        ApiResponse<ActionStatus> localVarResp = gETIBaseVersion96WithHttpInfo();
        return localVarResp.getData();
    }

    /**
     *  Get version of application  
     *  Get version of application  
     * @return ApiResponse&lt;ActionStatus&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Action status with version number as a message  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<ActionStatus> gETIBaseVersion96WithHttpInfo() throws ApiException {
        okhttp3.Call localVarCall = gETIBaseVersion96ValidateBeforeCall(null);
        Type localVarReturnType = new TypeToken<ActionStatus>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Get version of application   (asynchronously)
     *  Get version of application  
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Action status with version number as a message  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call gETIBaseVersion96Async(final ApiCallback<ActionStatus> _callback) throws ApiException {

        okhttp3.Call localVarCall = gETIBaseVersion96ValidateBeforeCall(_callback);
        Type localVarReturnType = new TypeToken<ActionStatus>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogCreateOfferFromBOM1
     * @param bomOfferDto  postData BOM offer information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create offer BOM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateOfferFromBOM1Call(BomOfferDto bomOfferDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = bomOfferDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/createOfferFromBOM";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogCreateOfferFromBOM1ValidateBeforeCall(BomOfferDto bomOfferDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogCreateOfferFromBOM1Call(bomOfferDto, _callback);
        return localVarCall;

    }

    /**
     *  Create offer from BOM definition  
     *  Create offer from BOM definition  
     * @param bomOfferDto  postData BOM offer information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create offer BOM  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogCreateOfferFromBOM1(BomOfferDto bomOfferDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogCreateOfferFromBOM1WithHttpInfo(bomOfferDto);
        return localVarResp.getData();
    }

    /**
     *  Create offer from BOM definition  
     *  Create offer from BOM definition  
     * @param bomOfferDto  postData BOM offer information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create offer BOM  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogCreateOfferFromBOM1WithHttpInfo(BomOfferDto bomOfferDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogCreateOfferFromBOM1ValidateBeforeCall(bomOfferDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create offer from BOM definition   (asynchronously)
     *  Create offer from BOM definition  
     * @param bomOfferDto  postData BOM offer information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create offer BOM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateOfferFromBOM1Async(BomOfferDto bomOfferDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogCreateOfferFromBOM1ValidateBeforeCall(bomOfferDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogCreateProductFromBPM1
     * @param bpmProductDto  postData BPM service information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BPM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateProductFromBPM1Call(BpmProductDto bpmProductDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = bpmProductDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/createProductFromBPM";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogCreateProductFromBPM1ValidateBeforeCall(BpmProductDto bpmProductDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogCreateProductFromBPM1Call(bpmProductDto, _callback);
        return localVarCall;

    }

    /**
     *  Create product from BPM definition  
     *  Create product from BPM definition  
     * @param bpmProductDto  postData BPM service information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BPM  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogCreateProductFromBPM1(BpmProductDto bpmProductDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogCreateProductFromBPM1WithHttpInfo(bpmProductDto);
        return localVarResp.getData();
    }

    /**
     *  Create product from BPM definition  
     *  Create product from BPM definition  
     * @param bpmProductDto  postData BPM service information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BPM  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogCreateProductFromBPM1WithHttpInfo(BpmProductDto bpmProductDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogCreateProductFromBPM1ValidateBeforeCall(bpmProductDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create product from BPM definition   (asynchronously)
     *  Create product from BPM definition  
     * @param bpmProductDto  postData BPM service information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BPM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateProductFromBPM1Async(BpmProductDto bpmProductDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogCreateProductFromBPM1ValidateBeforeCall(bpmProductDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogCreateServiceFromBSM1
     * @param bsmServiceDto  postData BSM service information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BSM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateServiceFromBSM1Call(BsmServiceDto bsmServiceDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = bsmServiceDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/createServiceFromBSM";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogCreateServiceFromBSM1ValidateBeforeCall(BsmServiceDto bsmServiceDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogCreateServiceFromBSM1Call(bsmServiceDto, _callback);
        return localVarCall;

    }

    /**
     *  Create service from BSM definition  
     *  Create service from BSM definition  
     * @param bsmServiceDto  postData BSM service information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BSM  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogCreateServiceFromBSM1(BsmServiceDto bsmServiceDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogCreateServiceFromBSM1WithHttpInfo(bsmServiceDto);
        return localVarResp.getData();
    }

    /**
     *  Create service from BSM definition  
     *  Create service from BSM definition  
     * @param bsmServiceDto  postData BSM service information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BSM  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogCreateServiceFromBSM1WithHttpInfo(BsmServiceDto bsmServiceDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogCreateServiceFromBSM1ValidateBeforeCall(bsmServiceDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create service from BSM definition   (asynchronously)
     *  Create service from BSM definition  
     * @param bsmServiceDto  postData BSM service information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Service BSM  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogCreateServiceFromBSM1Async(BsmServiceDto bsmServiceDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogCreateServiceFromBSM1ValidateBeforeCall(bsmServiceDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductChargeTemplate1
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplate1Call(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productChargeTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductChargeTemplate1ValidateBeforeCall(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplate1Call(productChargeTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Create product charge template  
     *  Create product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductChargeTemplate1(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductChargeTemplate1WithHttpInfo(productChargeTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Create product charge template  
     *  Create product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductChargeTemplate1WithHttpInfo(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplate1ValidateBeforeCall(productChargeTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create product charge template   (asynchronously)
     *  Create product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplate1Async(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplate1ValidateBeforeCall(productChargeTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductChargeTemplateCodeDisable1
     * @param code  code Product charge template code  (required)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCodeDisable1Call(String code, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/{code}/disable"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductChargeTemplateCodeDisable1ValidateBeforeCall(String code, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling pOSTCatalogProductChargeTemplateCodeDisable1(Async)");
        }
        

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeDisable1Call(code, _callback);
        return localVarCall;

    }

    /**
     *  Disable a Product charge template with a given code  
     *  Disable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductChargeTemplateCodeDisable1(String code) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductChargeTemplateCodeDisable1WithHttpInfo(code);
        return localVarResp.getData();
    }

    /**
     *  Disable a Product charge template with a given code  
     *  Disable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductChargeTemplateCodeDisable1WithHttpInfo(String code) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeDisable1ValidateBeforeCall(code, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Disable a Product charge template with a given code   (asynchronously)
     *  Disable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCodeDisable1Async(String code, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeDisable1ValidateBeforeCall(code, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductChargeTemplateCodeEnable1
     * @param code  code Product charge template code  (required)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCodeEnable1Call(String code, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/{code}/enable"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductChargeTemplateCodeEnable1ValidateBeforeCall(String code, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling pOSTCatalogProductChargeTemplateCodeEnable1(Async)");
        }
        

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeEnable1Call(code, _callback);
        return localVarCall;

    }

    /**
     *  Enable a Product charge template with a given code  
     *  Enable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductChargeTemplateCodeEnable1(String code) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductChargeTemplateCodeEnable1WithHttpInfo(code);
        return localVarResp.getData();
    }

    /**
     *  Enable a Product charge template with a given code  
     *  Enable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductChargeTemplateCodeEnable1WithHttpInfo(String code) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeEnable1ValidateBeforeCall(code, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Enable a Product charge template with a given code   (asynchronously)
     *  Enable a Product charge template with a given code  
     * @param code  code Product charge template code  (required)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCodeEnable1Async(String code, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCodeEnable1ValidateBeforeCall(code, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductChargeTemplateCreateOrUpdate1
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create or update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCreateOrUpdate1Call(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productChargeTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate/createOrUpdate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductChargeTemplateCreateOrUpdate1ValidateBeforeCall(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCreateOrUpdate1Call(productChargeTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Create or update product charge template  
     *  Create or update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create or update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductChargeTemplateCreateOrUpdate1(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductChargeTemplateCreateOrUpdate1WithHttpInfo(productChargeTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Create or update product charge template  
     *  Create or update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create or update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductChargeTemplateCreateOrUpdate1WithHttpInfo(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCreateOrUpdate1ValidateBeforeCall(productChargeTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create or update product charge template   (asynchronously)
     *  Create or update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create or update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductChargeTemplateCreateOrUpdate1Async(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductChargeTemplateCreateOrUpdate1ValidateBeforeCall(productChargeTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductTemplate1
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplate1Call(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductTemplate1ValidateBeforeCall(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogProductTemplate1Call(productTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Create product template  
     *  Create product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductTemplate1(ProductTemplateDto productTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductTemplate1WithHttpInfo(productTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Create product template  
     *  Create product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductTemplate1WithHttpInfo(ProductTemplateDto productTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductTemplate1ValidateBeforeCall(productTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create product template   (asynchronously)
     *  Create product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplate1Async(ProductTemplateDto productTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductTemplate1ValidateBeforeCall(productTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductTemplateCodeDisable1
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCodeDisable1Call(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/{code}/disable"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductTemplateCodeDisable1ValidateBeforeCall(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling pOSTCatalogProductTemplateCodeDisable1(Async)");
        }
        

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeDisable1Call(code, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Disable a Product template with a given code  
     *  Disable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductTemplateCodeDisable1(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductTemplateCodeDisable1WithHttpInfo(code, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Disable a Product template with a given code  
     *  Disable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductTemplateCodeDisable1WithHttpInfo(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeDisable1ValidateBeforeCall(code, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Disable a Product template with a given code   (asynchronously)
     *  Disable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCodeDisable1Async(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeDisable1ValidateBeforeCall(code, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductTemplateCodeEnable1
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCodeEnable1Call(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/{code}/enable"
            .replaceAll("\\{" + "code" + "\\}", localVarApiClient.escapeString(code.toString()));

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        if (validFrom != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validFrom", validFrom));
        }

        if (validTo != null) {
            localVarQueryParams.addAll(localVarApiClient.parameterToPair("validTo", validTo));
        }

        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductTemplateCodeEnable1ValidateBeforeCall(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback _callback) throws ApiException {
        
        // verify the required parameter 'code' is set
        if (code == null) {
            throw new ApiException("Missing the required parameter 'code' when calling pOSTCatalogProductTemplateCodeEnable1(Async)");
        }
        

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeEnable1Call(code, validFrom, validTo, _callback);
        return localVarCall;

    }

    /**
     *  Enable a Product template with a given code  
     *  Enable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductTemplateCodeEnable1(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductTemplateCodeEnable1WithHttpInfo(code, validFrom, validTo);
        return localVarResp.getData();
    }

    /**
     *  Enable a Product template with a given code  
     *  Enable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductTemplateCodeEnable1WithHttpInfo(String code, OffsetDateTime validFrom, OffsetDateTime validTo) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeEnable1ValidateBeforeCall(code, validFrom, validTo, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Enable a Product template with a given code   (asynchronously)
     *  Enable a Product template with a given code  
     * @param code  code Product template code  (required)
     * @param validFrom  validFrom Product template validity range - from date  (optional)
     * @param validTo  validTo Product template validity range - to date  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Request processing status  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCodeEnable1Async(String code, OffsetDateTime validFrom, OffsetDateTime validTo, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCodeEnable1ValidateBeforeCall(code, validFrom, validTo, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pOSTCatalogProductTemplateCreateOrUpdate1
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCreateOrUpdate1Call(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate/createOrUpdate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "POST", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pOSTCatalogProductTemplateCreateOrUpdate1ValidateBeforeCall(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCreateOrUpdate1Call(productTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Create or update product template  
     *  Create or update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pOSTCatalogProductTemplateCreateOrUpdate1(ProductTemplateDto productTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pOSTCatalogProductTemplateCreateOrUpdate1WithHttpInfo(productTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Create or update product template  
     *  Create or update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pOSTCatalogProductTemplateCreateOrUpdate1WithHttpInfo(ProductTemplateDto productTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCreateOrUpdate1ValidateBeforeCall(productTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Create or update product template   (asynchronously)
     *  Create or update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the create Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pOSTCatalogProductTemplateCreateOrUpdate1Async(ProductTemplateDto productTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pOSTCatalogProductTemplateCreateOrUpdate1ValidateBeforeCall(productTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pUTCatalogProductChargeTemplate1
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pUTCatalogProductChargeTemplate1Call(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productChargeTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productChargeTemplate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pUTCatalogProductChargeTemplate1ValidateBeforeCall(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pUTCatalogProductChargeTemplate1Call(productChargeTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Update product charge template  
     *  Update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pUTCatalogProductChargeTemplate1(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pUTCatalogProductChargeTemplate1WithHttpInfo(productChargeTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Update product charge template  
     *  Update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pUTCatalogProductChargeTemplate1WithHttpInfo(ProductChargeTemplateDto productChargeTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pUTCatalogProductChargeTemplate1ValidateBeforeCall(productChargeTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Update product charge template   (asynchronously)
     *  Update product charge template  
     * @param productChargeTemplateDto  postData product charge template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Charge Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pUTCatalogProductChargeTemplate1Async(ProductChargeTemplateDto productChargeTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pUTCatalogProductChargeTemplate1ValidateBeforeCall(productChargeTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for pUTCatalogProductTemplate1
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pUTCatalogProductTemplate1Call(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = productTemplateDto;

        // create path and map variables
        String localVarPath = "/catalogManagement/productTemplate";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            "application/json", "application/xml"
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "PUT", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call pUTCatalogProductTemplate1ValidateBeforeCall(ProductTemplateDto productTemplateDto, final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = pUTCatalogProductTemplate1Call(productTemplateDto, _callback);
        return localVarCall;

    }

    /**
     *  Update product template  
     *  Update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return InlineResponseDefault
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public InlineResponseDefault pUTCatalogProductTemplate1(ProductTemplateDto productTemplateDto) throws ApiException {
        ApiResponse<InlineResponseDefault> localVarResp = pUTCatalogProductTemplate1WithHttpInfo(productTemplateDto);
        return localVarResp.getData();
    }

    /**
     *  Update product template  
     *  Update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @return ApiResponse&lt;InlineResponseDefault&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<InlineResponseDefault> pUTCatalogProductTemplate1WithHttpInfo(ProductTemplateDto productTemplateDto) throws ApiException {
        okhttp3.Call localVarCall = pUTCatalogProductTemplate1ValidateBeforeCall(productTemplateDto, null);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  Update product template   (asynchronously)
     *  Update product template  
     * @param productTemplateDto  postData product template information  (optional)
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td>  Response of the update Product Template  </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call pUTCatalogProductTemplate1Async(ProductTemplateDto productTemplateDto, final ApiCallback<InlineResponseDefault> _callback) throws ApiException {

        okhttp3.Call localVarCall = pUTCatalogProductTemplate1ValidateBeforeCall(productTemplateDto, _callback);
        Type localVarReturnType = new TypeToken<InlineResponseDefault>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
    /**
     * Build call for user95
     * @param _callback Callback for upload/download progress
     * @return Call to execute
     * @throws ApiException If fail to serialize the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td> default response </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call user95Call(final ApiCallback _callback) throws ApiException {
        Object localVarPostBody = null;

        // create path and map variables
        String localVarPath = "/catalogManagement/user";

        List<Pair> localVarQueryParams = new ArrayList<Pair>();
        List<Pair> localVarCollectionQueryParams = new ArrayList<Pair>();
        Map<String, String> localVarHeaderParams = new HashMap<String, String>();
        Map<String, Object> localVarFormParams = new HashMap<String, Object>();
        final String[] localVarAccepts = {
            "application/json", "application/xml"
        };
        final String localVarAccept = localVarApiClient.selectHeaderAccept(localVarAccepts);
        if (localVarAccept != null) {
            localVarHeaderParams.put("Accept", localVarAccept);
        }

        final String[] localVarContentTypes = {
            
        };
        final String localVarContentType = localVarApiClient.selectHeaderContentType(localVarContentTypes);
        localVarHeaderParams.put("Content-Type", localVarContentType);

        String[] localVarAuthNames = new String[] { "auth" };
        return localVarApiClient.buildCall(localVarPath, "GET", localVarQueryParams, localVarCollectionQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAuthNames, _callback);
    }

    @SuppressWarnings("rawtypes")
    private okhttp3.Call user95ValidateBeforeCall(final ApiCallback _callback) throws ApiException {
        

        okhttp3.Call localVarCall = user95Call(_callback);
        return localVarCall;

    }

    /**
     * 
     * 
     * @return ActionStatus
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td> default response </td><td>  -  </td></tr>
     </table>
     */
    public ActionStatus user95() throws ApiException {
        ApiResponse<ActionStatus> localVarResp = user95WithHttpInfo();
        return localVarResp.getData();
    }

    /**
     * 
     * 
     * @return ApiResponse&lt;ActionStatus&gt;
     * @throws ApiException If fail to call the API, e.g. server error or cannot deserialize the response body
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td> default response </td><td>  -  </td></tr>
     </table>
     */
    public ApiResponse<ActionStatus> user95WithHttpInfo() throws ApiException {
        okhttp3.Call localVarCall = user95ValidateBeforeCall(null);
        Type localVarReturnType = new TypeToken<ActionStatus>(){}.getType();
        return localVarApiClient.execute(localVarCall, localVarReturnType);
    }

    /**
     *  (asynchronously)
     * 
     * @param _callback The callback to be executed when the API call finishes
     * @return The request call
     * @throws ApiException If fail to process the API call, e.g. serializing the request body object
     * @http.response.details
     <table summary="Response Details" border="1">
        <tr><td> Status Code </td><td> Description </td><td> Response Headers </td></tr>
        <tr><td> 0 </td><td> default response </td><td>  -  </td></tr>
     </table>
     */
    public okhttp3.Call user95Async(final ApiCallback<ActionStatus> _callback) throws ApiException {

        okhttp3.Call localVarCall = user95ValidateBeforeCall(_callback);
        Type localVarReturnType = new TypeToken<ActionStatus>(){}.getType();
        localVarApiClient.executeAsync(localVarCall, localVarReturnType, _callback);
        return localVarCall;
    }
}
