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

com.unblu.webapi.jersey.v3.api.ConversationsApi Maven / Gradle / Ivy

There is a newer version: 7.51.0
Show newest version
package com.unblu.webapi.jersey.v3.api;

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

import jakarta.ws.rs.core.GenericType;

import com.unblu.webapi.jersey.v3.invoker.ApiClient;
import com.unblu.webapi.jersey.v3.invoker.ApiException;
import com.unblu.webapi.jersey.v3.invoker.ApiResponse;
import com.unblu.webapi.jersey.v3.invoker.Configuration;
import com.unblu.webapi.jersey.v3.invoker.Pair;
import com.unblu.webapi.model.v3.ConversationData;
import com.unblu.webapi.model.v3.ConversationFileData;
import com.unblu.webapi.model.v3.ConversationQuery;
import com.unblu.webapi.model.v3.ConversationRecipientData;
import com.unblu.webapi.model.v3.ConversationRecordingState;
import com.unblu.webapi.model.v3.ConversationResult;
import com.unblu.webapi.model.v3.ConversationsAddParticipantBody;
import com.unblu.webapi.model.v3.ConversationsChangeParticipantVisibilityBody;
import com.unblu.webapi.model.v3.ConversationsEndBody;
import com.unblu.webapi.model.v3.ConversationsOffboardParticipantBody;
import com.unblu.webapi.model.v3.ConversationsSetAssigneePersonBody;
import com.unblu.webapi.model.v3.ConversationsSetAwaitedPersonTypeBody;
import com.unblu.webapi.model.v3.ConversationsSetContextPersonBody;
import com.unblu.webapi.model.v3.ConversationsSetLocaleBody;
import com.unblu.webapi.model.v3.ConversationsSetScheduledTimestampBody;
import com.unblu.webapi.model.v3.ConversationsSetStarredBody;
import com.unblu.webapi.model.v3.ConversationsSetTopicBody;
import com.unblu.webapi.model.v3.ConversationsSetVisitorDataBody;
import com.unblu.webapi.model.v3.EConversationEndReason;
import com.unblu.webapi.model.v3.EConversationLeftReason;

public class ConversationsApi {
	private ApiClient apiClient;

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

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

	public ApiClient getApiClient() {
		return apiClient;
	}

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

	/**
	 * addParticipant Adds a participant to a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsAddParticipantBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsAddParticipant(String conversationId, ConversationsAddParticipantBody conversationsAddParticipantBody, String expand) throws ApiException {
		return conversationsAddParticipantWithHttpInfo(conversationId, conversationsAddParticipantBody, expand).getData();
	}

	/**
	 * addParticipant Adds a participant to a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsAddParticipantBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsAddParticipantWithHttpInfo(String conversationId, ConversationsAddParticipantBody conversationsAddParticipantBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsAddParticipantBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsAddParticipant");
		}

		// verify the required parameter 'conversationsAddParticipantBody' is set
		if (conversationsAddParticipantBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsAddParticipantBody' when calling conversationsAddParticipant");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/addParticipant"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * addParticipant Adds a participant to a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param connectedViaExternalMessenger (optional)
	 * @param hidden (optional)
	 * @param conversationStarred (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsAddParticipantLegacyGet(String conversationId, String expand, String personId, Boolean connectedViaExternalMessenger, Boolean hidden, Boolean conversationStarred) throws ApiException {
		return conversationsAddParticipantLegacyGetWithHttpInfo(conversationId, expand, personId, connectedViaExternalMessenger, hidden, conversationStarred).getData();
	}

	/**
	 * addParticipant Adds a participant to a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param connectedViaExternalMessenger (optional)
	 * @param hidden (optional)
	 * @param conversationStarred (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsAddParticipantLegacyGetWithHttpInfo(String conversationId, String expand, String personId, Boolean connectedViaExternalMessenger, Boolean hidden, Boolean conversationStarred) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsAddParticipantLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/addParticipant"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "personId", personId));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "connectedViaExternalMessenger", connectedViaExternalMessenger));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "hidden", hidden));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "conversationStarred", conversationStarred));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * changeParticipantVisibility Changes the visibility of a conversation's participant.<br>
	 * 
	 * @param conversationId (required)
	 * @param conversationsChangeParticipantVisibilityBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsChangeParticipantVisibility(String conversationId, ConversationsChangeParticipantVisibilityBody conversationsChangeParticipantVisibilityBody, String expand) throws ApiException {
		return conversationsChangeParticipantVisibilityWithHttpInfo(conversationId, conversationsChangeParticipantVisibilityBody, expand).getData();
	}

	/**
	 * changeParticipantVisibility Changes the visibility of a conversation's participant.<br>
	 * 
	 * @param conversationId (required)
	 * @param conversationsChangeParticipantVisibilityBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsChangeParticipantVisibilityWithHttpInfo(String conversationId, ConversationsChangeParticipantVisibilityBody conversationsChangeParticipantVisibilityBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsChangeParticipantVisibilityBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsChangeParticipantVisibility");
		}

		// verify the required parameter 'conversationsChangeParticipantVisibilityBody' is set
		if (conversationsChangeParticipantVisibilityBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsChangeParticipantVisibilityBody' when calling conversationsChangeParticipantVisibility");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/changeParticipantVisibility"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * changeParticipantVisibility Changes the visibility of a conversation's participant.<br>
	 * 
	 * @param conversationId (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param hidden (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsChangeParticipantVisibilityLegacyGet(String conversationId, String expand, String personId, Boolean hidden) throws ApiException {
		return conversationsChangeParticipantVisibilityLegacyGetWithHttpInfo(conversationId, expand, personId, hidden).getData();
	}

	/**
	 * changeParticipantVisibility Changes the visibility of a conversation's participant.<br>
	 * 
	 * @param conversationId (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param hidden (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsChangeParticipantVisibilityLegacyGetWithHttpInfo(String conversationId, String expand, String personId, Boolean hidden) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsChangeParticipantVisibilityLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/changeParticipantVisibility"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "personId", personId));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "hidden", hidden));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * create Creates the conversation in the system. The conversation ID mustn't be set as a new one will be generated. <br> If called with the
	 * authorization role `SUPERVISOR` or `REGISTERED_USER`, there are a number of restrictions regarding the conversation to be created:
	 * <ul> <li>The `initialEngagementType` must be a conversation type initiated by agents <li>The `assigneePersonId` must
	 * refer to the person entity of the agent making the call <li>The agent making the call must be the only participant in the conversation </ul> If
	 * `sourceId` and `externalMessengerChannelId` are set they have to be unique for any active conversations. Ended conversations are
	 * ignored.<br>
	 * 
	 * @param conversationData (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsCreate(ConversationData conversationData, String expand) throws ApiException {
		return conversationsCreateWithHttpInfo(conversationData, expand).getData();
	}

	/**
	 * create Creates the conversation in the system. The conversation ID mustn't be set as a new one will be generated. <br> If called with the
	 * authorization role `SUPERVISOR` or `REGISTERED_USER`, there are a number of restrictions regarding the conversation to be created:
	 * <ul> <li>The `initialEngagementType` must be a conversation type initiated by agents <li>The `assigneePersonId` must
	 * refer to the person entity of the agent making the call <li>The agent making the call must be the only participant in the conversation </ul> If
	 * `sourceId` and `externalMessengerChannelId` are set they have to be unique for any active conversations. Ended conversations are
	 * ignored.<br>
	 * 
	 * @param conversationData (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsCreateWithHttpInfo(ConversationData conversationData, String expand) throws ApiException {
		Object localVarPostBody = conversationData;

		// verify the required parameter 'conversationData' is set
		if (conversationData == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationData' when calling conversationsCreate");
		}

		// create path and map variables
		String localVarPath = "/conversations/create";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * delete Deletes the conversation with the given ID. <br> Calls with the authorization role `SUPERVISOR` or `REGISTERED_USER` are
	 * only permissible if: <ul> <li>The agent making the call is the only participant in the conversation <li>The conversation never had any
	 * participants other than the agent calling the endpoint <li>The conversation contains no messages except system messages and messages sent by bots
	 * </ul><br>
	 * 
	 * @param id The ID of the conversation to be deleted (optional)
	 * @throws ApiException if fails to make API call
	 */
	public void conversationsDelete(String id) throws ApiException {

		conversationsDeleteWithHttpInfo(id);
	}

	/**
	 * delete Deletes the conversation with the given ID. <br> Calls with the authorization role `SUPERVISOR` or `REGISTERED_USER` are
	 * only permissible if: <ul> <li>The agent making the call is the only participant in the conversation <li>The conversation never had any
	 * participants other than the agent calling the endpoint <li>The conversation contains no messages except system messages and messages sent by bots
	 * </ul><br>
	 * 
	 * @param id The ID of the conversation to be deleted (optional)
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsDeleteWithHttpInfo(String id) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// create path and map variables
		String localVarPath = "/conversations/delete";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

		final String[] localVarAccepts = {

		};
		final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

		final String[] localVarContentTypes = {

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

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

		return apiClient.invokeAPI(localVarPath, "DELETE", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null);
	}

	/**
	 * delete Deletes the conversation with the given ID. <br> Calls with the authorization role `SUPERVISOR` or `REGISTERED_USER` are
	 * only permissible if: <ul> <li>The agent making the call is the only participant in the conversation <li>The conversation never had any
	 * participants other than the agent calling the endpoint <li>The conversation contains no messages except system messages and messages sent by bots
	 * </ul><br>
	 * 
	 * @param id The ID of the conversation to be deleted (optional)
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public void conversationsDeleteLegacyGet(String id) throws ApiException {

		conversationsDeleteLegacyGetWithHttpInfo(id);
	}

	/**
	 * delete Deletes the conversation with the given ID. <br> Calls with the authorization role `SUPERVISOR` or `REGISTERED_USER` are
	 * only permissible if: <ul> <li>The agent making the call is the only participant in the conversation <li>The conversation never had any
	 * participants other than the agent calling the endpoint <li>The conversation contains no messages except system messages and messages sent by bots
	 * </ul><br>
	 * 
	 * @param id The ID of the conversation to be deleted (optional)
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsDeleteLegacyGetWithHttpInfo(String id) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// create path and map variables
		String localVarPath = "/conversations/delete";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

		final String[] localVarAccepts = {

		};
		final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

		final String[] localVarContentTypes = {

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

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

		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null);
	}

	/**
	 * end Ends a conversation. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making the call must have the
	 * necessary permissions to end a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsEndBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsEnd(String conversationId, ConversationsEndBody conversationsEndBody, String expand) throws ApiException {
		return conversationsEndWithHttpInfo(conversationId, conversationsEndBody, expand).getData();
	}

	/**
	 * end Ends a conversation. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making the call must have the
	 * necessary permissions to end a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsEndBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsEndWithHttpInfo(String conversationId, ConversationsEndBody conversationsEndBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsEndBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsEnd");
		}

		// verify the required parameter 'conversationsEndBody' is set
		if (conversationsEndBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsEndBody' when calling conversationsEnd");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/end"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * end Ends a conversation. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making the call must have the
	 * necessary permissions to end a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param reason (optional)
	 * @param comment (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsEndLegacyGet(String conversationId, String expand, EConversationEndReason reason, String comment) throws ApiException {
		return conversationsEndLegacyGetWithHttpInfo(conversationId, expand, reason, comment).getData();
	}

	/**
	 * end Ends a conversation. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making the call must have the
	 * necessary permissions to end a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param reason (optional)
	 * @param comment (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsEndLegacyGetWithHttpInfo(String conversationId, String expand, EConversationEndReason reason, String comment) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsEndLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/end"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "reason", reason));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "comment", comment));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * getBySourceIdAndChannelId Returns the active conversation for the given source ID and channel ID. When called with the authorization role
	 * `REGISTERED_USER`, the agent making the call must be a participant in the conversation matching the search criteria. If they aren't, the call
	 * will fail. When called with the authorization role `SUPERVISOR`, the conversation matching the search criteria must include a participant who is an
	 * agent in their team (or one of their teams). If it doesn't, the call will fail. <p> Ended conversations for the same sourceId and channel are
	 * ignored. These can be retrieved using the <code>/search</code> service.<br>
	 * 
	 * @param sourceId The source ID the conversation was created with (optional)
	 * @param externalMessengerChannelId The messenger channel ID the conversation is connected to. Can be null for internal conversations. (optional)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsGetBySourceIdAndChannelId(String sourceId, String externalMessengerChannelId, String expand) throws ApiException {
		return conversationsGetBySourceIdAndChannelIdWithHttpInfo(sourceId, externalMessengerChannelId, expand).getData();
	}

	/**
	 * getBySourceIdAndChannelId Returns the active conversation for the given source ID and channel ID. When called with the authorization role
	 * `REGISTERED_USER`, the agent making the call must be a participant in the conversation matching the search criteria. If they aren't, the call
	 * will fail. When called with the authorization role `SUPERVISOR`, the conversation matching the search criteria must include a participant who is an
	 * agent in their team (or one of their teams). If it doesn't, the call will fail. <p> Ended conversations for the same sourceId and channel are
	 * ignored. These can be retrieved using the <code>/search</code> service.<br>
	 * 
	 * @param sourceId The source ID the conversation was created with (optional)
	 * @param externalMessengerChannelId The messenger channel ID the conversation is connected to. Can be null for internal conversations. (optional)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsGetBySourceIdAndChannelIdWithHttpInfo(String sourceId, String externalMessengerChannelId, String expand) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// create path and map variables
		String localVarPath = "/conversations/getBySourceIdAndChannelId";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "sourceId", sourceId));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "externalMessengerChannelId", externalMessengerChannelId));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * getConversationFiles Returns a list of all files that have been shared/sent within the specified conversation.<br>
	 * 
	 * @param conversationId the id of conversation, for which the file list should be retrieved (required)
	 * @return List<ConversationFileData>
	 * @throws ApiException if fails to make API call
	 */
	public List conversationsGetConversationFiles(String conversationId) throws ApiException {
		return conversationsGetConversationFilesWithHttpInfo(conversationId).getData();
	}

	/**
	 * getConversationFiles Returns a list of all files that have been shared/sent within the specified conversation.<br>
	 * 
	 * @param conversationId the id of conversation, for which the file list should be retrieved (required)
	 * @return ApiResponse<List<ConversationFileData>>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse> conversationsGetConversationFilesWithHttpInfo(String conversationId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsGetConversationFiles");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/getConversationFiles"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

		final String[] localVarContentTypes = {

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

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

		GenericType> localVarReturnType = new GenericType>() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * getRecordingState Retrieve the current recording state of the given conversation<br>
	 * 
	 * @param conversationId The conversation to retrieve the recording state for (required)
	 * @return ConversationRecordingState
	 * @throws ApiException if fails to make API call
	 */
	public ConversationRecordingState conversationsGetRecordingState(String conversationId) throws ApiException {
		return conversationsGetRecordingStateWithHttpInfo(conversationId).getData();
	}

	/**
	 * getRecordingState Retrieve the current recording state of the given conversation<br>
	 * 
	 * @param conversationId The conversation to retrieve the recording state for (required)
	 * @return ApiResponse<ConversationRecordingState>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsGetRecordingStateWithHttpInfo(String conversationId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsGetRecordingState");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/getRecordingState"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * offboardParticipant Offboards a participant from a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsOffboardParticipantBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsOffboardParticipant(String conversationId, ConversationsOffboardParticipantBody conversationsOffboardParticipantBody, String expand) throws ApiException {
		return conversationsOffboardParticipantWithHttpInfo(conversationId, conversationsOffboardParticipantBody, expand).getData();
	}

	/**
	 * offboardParticipant Offboards a participant from a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsOffboardParticipantBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsOffboardParticipantWithHttpInfo(String conversationId, ConversationsOffboardParticipantBody conversationsOffboardParticipantBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsOffboardParticipantBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsOffboardParticipant");
		}

		// verify the required parameter 'conversationsOffboardParticipantBody' is set
		if (conversationsOffboardParticipantBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsOffboardParticipantBody' when calling conversationsOffboardParticipant");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/offboardParticipant"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * offboardParticipant Offboards a participant from a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param reason (optional)
	 * @param comment (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsOffboardParticipantLegacyGet(String conversationId, String expand, String personId, EConversationLeftReason reason, String comment) throws ApiException {
		return conversationsOffboardParticipantLegacyGetWithHttpInfo(conversationId, expand, personId, reason, comment).getData();
	}

	/**
	 * offboardParticipant Offboards a participant from a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @param reason (optional)
	 * @param comment (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsOffboardParticipantLegacyGetWithHttpInfo(String conversationId, String expand, String personId, EConversationLeftReason reason, String comment) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsOffboardParticipantLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/offboardParticipant"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "personId", personId));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "reason", reason));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "comment", comment));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * read Returns the conversation for the given ID. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making
	 * the call must be a participant in the conversation.<br>
	 * 
	 * @param id ID of the conversation which should be returned (optional)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsRead(String id, String expand) throws ApiException {
		return conversationsReadWithHttpInfo(id, expand).getData();
	}

	/**
	 * read Returns the conversation for the given ID. If called with the authorization role `SUPERVISOR` or `REGISTERED_USER`, the agent making
	 * the call must be a participant in the conversation.<br>
	 * 
	 * @param id ID of the conversation which should be returned (optional)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsReadWithHttpInfo(String id, String expand) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// create path and map variables
		String localVarPath = "/conversations/read";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "id", id));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * search Search for conversations in the current account. If called with the authorization role `REGISTERED_USER`, the call only returns
	 * conversations matching the search criteria where the agent making a call is the participant. If the agent making the call has the user role
	 * `SUPERVISOR`, the results only include conversations of the agents in their team or teams.<br>
	 * 
	 * @param conversationQuery (required)
	 * @param expand (optional)
	 * @return ConversationResult
	 * @throws ApiException if fails to make API call
	 */
	public ConversationResult conversationsSearch(ConversationQuery conversationQuery, String expand) throws ApiException {
		return conversationsSearchWithHttpInfo(conversationQuery, expand).getData();
	}

	/**
	 * search Search for conversations in the current account. If called with the authorization role `REGISTERED_USER`, the call only returns
	 * conversations matching the search criteria where the agent making a call is the participant. If the agent making the call has the user role
	 * `SUPERVISOR`, the results only include conversations of the agents in their team or teams.<br>
	 * 
	 * @param conversationQuery (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationResult>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSearchWithHttpInfo(ConversationQuery conversationQuery, String expand) throws ApiException {
		Object localVarPostBody = conversationQuery;

		// verify the required parameter 'conversationQuery' is set
		if (conversationQuery == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationQuery' when calling conversationsSearch");
		}

		// create path and map variables
		String localVarPath = "/conversations/search";

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setAssigneePerson Sets an agent as assignee to a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetAssigneePersonBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetAssigneePerson(String conversationId, ConversationsSetAssigneePersonBody conversationsSetAssigneePersonBody, String expand) throws ApiException {
		return conversationsSetAssigneePersonWithHttpInfo(conversationId, conversationsSetAssigneePersonBody, expand).getData();
	}

	/**
	 * setAssigneePerson Sets an agent as assignee to a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetAssigneePersonBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetAssigneePersonWithHttpInfo(String conversationId, ConversationsSetAssigneePersonBody conversationsSetAssigneePersonBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetAssigneePersonBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetAssigneePerson");
		}

		// verify the required parameter 'conversationsSetAssigneePersonBody' is set
		if (conversationsSetAssigneePersonBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetAssigneePersonBody' when calling conversationsSetAssigneePerson");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setAssigneePerson"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setAssigneePerson Sets an agent as assignee to a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsSetAssigneePersonLegacyGet(String conversationId, String expand, String personId) throws ApiException {
		return conversationsSetAssigneePersonLegacyGetWithHttpInfo(conversationId, expand, personId).getData();
	}

	/**
	 * setAssigneePerson Sets an agent as assignee to a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsSetAssigneePersonLegacyGetWithHttpInfo(String conversationId, String expand, String personId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetAssigneePersonLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setAssigneePerson"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "personId", personId));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setAwaitedPersonType Sets the awaited person type in a conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetAwaitedPersonTypeBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetAwaitedPersonType(String conversationId, ConversationsSetAwaitedPersonTypeBody conversationsSetAwaitedPersonTypeBody, String expand) throws ApiException {
		return conversationsSetAwaitedPersonTypeWithHttpInfo(conversationId, conversationsSetAwaitedPersonTypeBody, expand).getData();
	}

	/**
	 * setAwaitedPersonType Sets the awaited person type in a conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetAwaitedPersonTypeBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetAwaitedPersonTypeWithHttpInfo(String conversationId, ConversationsSetAwaitedPersonTypeBody conversationsSetAwaitedPersonTypeBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetAwaitedPersonTypeBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetAwaitedPersonType");
		}

		// verify the required parameter 'conversationsSetAwaitedPersonTypeBody' is set
		if (conversationsSetAwaitedPersonTypeBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetAwaitedPersonTypeBody' when calling conversationsSetAwaitedPersonType");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setAwaitedPersonType"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setContextPerson Sets a visitor as context person of a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetContextPersonBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetContextPerson(String conversationId, ConversationsSetContextPersonBody conversationsSetContextPersonBody, String expand) throws ApiException {
		return conversationsSetContextPersonWithHttpInfo(conversationId, conversationsSetContextPersonBody, expand).getData();
	}

	/**
	 * setContextPerson Sets a visitor as context person of a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetContextPersonBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetContextPersonWithHttpInfo(String conversationId, ConversationsSetContextPersonBody conversationsSetContextPersonBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetContextPersonBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetContextPerson");
		}

		// verify the required parameter 'conversationsSetContextPersonBody' is set
		if (conversationsSetContextPersonBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetContextPersonBody' when calling conversationsSetContextPerson");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setContextPerson"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setContextPerson Sets a visitor as context person of a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsSetContextPersonLegacyGet(String conversationId, String expand, String personId) throws ApiException {
		return conversationsSetContextPersonLegacyGetWithHttpInfo(conversationId, expand, personId).getData();
	}

	/**
	 * setContextPerson Sets a visitor as context person of a conversation. <p> <b>Note:</b> The person has to have an active participation in the
	 * conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param personId (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsSetContextPersonLegacyGetWithHttpInfo(String conversationId, String expand, String personId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetContextPersonLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setContextPerson"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "personId", personId));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setLocale Sets the locale of the conversation language (as BCP 47 language tag form including region if available).<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetLocaleBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetLocale(String conversationId, ConversationsSetLocaleBody conversationsSetLocaleBody, String expand) throws ApiException {
		return conversationsSetLocaleWithHttpInfo(conversationId, conversationsSetLocaleBody, expand).getData();
	}

	/**
	 * setLocale Sets the locale of the conversation language (as BCP 47 language tag form including region if available).<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetLocaleBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetLocaleWithHttpInfo(String conversationId, ConversationsSetLocaleBody conversationsSetLocaleBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetLocaleBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetLocale");
		}

		// verify the required parameter 'conversationsSetLocaleBody' is set
		if (conversationsSetLocaleBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetLocaleBody' when calling conversationsSetLocale");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setLocale"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setLocale Sets the locale of the conversation language (as BCP 47 language tag form including region if available).<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param locale (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ConversationData conversationsSetLocaleLegacyGet(String conversationId, String expand, String locale) throws ApiException {
		return conversationsSetLocaleLegacyGetWithHttpInfo(conversationId, expand, locale).getData();
	}

	/**
	 * setLocale Sets the locale of the conversation language (as BCP 47 language tag form including region if available).<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param expand (optional)
	 * @param locale (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 * @deprecated
	 */
	@Deprecated
	public ApiResponse conversationsSetLocaleLegacyGetWithHttpInfo(String conversationId, String expand, String locale) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetLocaleLegacyGet");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setLocale"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		localVarQueryParams.addAll(apiClient.parameterToPairs("", "expand", expand));
		localVarQueryParams.addAll(apiClient.parameterToPairs("", "locale", locale));

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

		final String[] localVarContentTypes = {

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "GET", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setRecipient Sets a person, named area, team or account as the recipient of a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationRecipientData (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetRecipient(String conversationId, ConversationRecipientData conversationRecipientData, String expand) throws ApiException {
		return conversationsSetRecipientWithHttpInfo(conversationId, conversationRecipientData, expand).getData();
	}

	/**
	 * setRecipient Sets a person, named area, team or account as the recipient of a conversation.<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationRecipientData (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetRecipientWithHttpInfo(String conversationId, ConversationRecipientData conversationRecipientData, String expand) throws ApiException {
		Object localVarPostBody = conversationRecipientData;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetRecipient");
		}

		// verify the required parameter 'conversationRecipientData' is set
		if (conversationRecipientData == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationRecipientData' when calling conversationsSetRecipient");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setRecipient"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setScheduledTimestamp Sets the scheduled time of the conversation. The timestamp is the Unix timestamp (ms) when the conversation is scheduled for, rounded
	 * to the nearest minute. Can only be set for conversations with initialEngagementType = \"SCHEDULED_CONVERSATION\". <br> When called with
	 * the authorization role `SUPERVISOR` or `REGISTERED_USER`, the behavior of the call depends on the configuration property
	 * `com.unblu.conversation.message.allowNonAdminUsersChangeConversationScheduledTimeViaWebApi`: <ul> <li>If the configuration property is
	 * `true`, the agent making the call can only change the conversation's `scheduledTimestamp` if they're a participant in the
	 * conversation. <li>If the configuration property is `false`, the agent making the call can change the `scheduledTimestamp` provided
	 * their participation type in the conversation is listed in the configuration property
	 * `com.unblu.conversation.message.allowChangeConversationScheduledTime`. </ul><br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetScheduledTimestampBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetScheduledTimestamp(String conversationId, ConversationsSetScheduledTimestampBody conversationsSetScheduledTimestampBody, String expand) throws ApiException {
		return conversationsSetScheduledTimestampWithHttpInfo(conversationId, conversationsSetScheduledTimestampBody, expand).getData();
	}

	/**
	 * setScheduledTimestamp Sets the scheduled time of the conversation. The timestamp is the Unix timestamp (ms) when the conversation is scheduled for, rounded
	 * to the nearest minute. Can only be set for conversations with initialEngagementType = \"SCHEDULED_CONVERSATION\". <br> When called with
	 * the authorization role `SUPERVISOR` or `REGISTERED_USER`, the behavior of the call depends on the configuration property
	 * `com.unblu.conversation.message.allowNonAdminUsersChangeConversationScheduledTimeViaWebApi`: <ul> <li>If the configuration property is
	 * `true`, the agent making the call can only change the conversation's `scheduledTimestamp` if they're a participant in the
	 * conversation. <li>If the configuration property is `false`, the agent making the call can change the `scheduledTimestamp` provided
	 * their participation type in the conversation is listed in the configuration property
	 * `com.unblu.conversation.message.allowChangeConversationScheduledTime`. </ul><br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetScheduledTimestampBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetScheduledTimestampWithHttpInfo(String conversationId, ConversationsSetScheduledTimestampBody conversationsSetScheduledTimestampBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetScheduledTimestampBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetScheduledTimestamp");
		}

		// verify the required parameter 'conversationsSetScheduledTimestampBody' is set
		if (conversationsSetScheduledTimestampBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetScheduledTimestampBody' when calling conversationsSetScheduledTimestamp");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setScheduledTimestamp"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setStarred Sets the starred status of a conversation for a particular person<br>
	 * 
	 * @param conversationId the conversation to be starred/unstarred (required)
	 * @param conversationsSetStarredBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetStarred(String conversationId, ConversationsSetStarredBody conversationsSetStarredBody, String expand) throws ApiException {
		return conversationsSetStarredWithHttpInfo(conversationId, conversationsSetStarredBody, expand).getData();
	}

	/**
	 * setStarred Sets the starred status of a conversation for a particular person<br>
	 * 
	 * @param conversationId the conversation to be starred/unstarred (required)
	 * @param conversationsSetStarredBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetStarredWithHttpInfo(String conversationId, ConversationsSetStarredBody conversationsSetStarredBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetStarredBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetStarred");
		}

		// verify the required parameter 'conversationsSetStarredBody' is set
		if (conversationsSetStarredBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetStarredBody' when calling conversationsSetStarred");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setStarred"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setTopic Sets the topic of the conversation. Setting it to `null` deletes the topic, provided it isn't mandatory to specify a topic for the
	 * conversation type (e.g. `SCHEDULED_CONVERSATION`). <br> When called with the authorization role `SUPERVISOR` or
	 * `REGISTERED_USER`, the behavior of the call depends on the configuration property
	 * `com.unblu.conversation.message.allowNonAdminUsersChangeConversationTopicViaWebApi`: <ul> <li>If the configuration property is
	 * `true`, the agent making the call can only change the conversation's topic if they're a participant in the conversation. <li>If the
	 * configuration property is `false`, the agent making the call can change the topic provided their participation type in the conversation is listed
	 * in the configuration property `com.unblu.conversation.message.allowChangeConversationTopic`. </ul><br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetTopicBody (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetTopic(String conversationId, ConversationsSetTopicBody conversationsSetTopicBody, String expand) throws ApiException {
		return conversationsSetTopicWithHttpInfo(conversationId, conversationsSetTopicBody, expand).getData();
	}

	/**
	 * setTopic Sets the topic of the conversation. Setting it to `null` deletes the topic, provided it isn't mandatory to specify a topic for the
	 * conversation type (e.g. `SCHEDULED_CONVERSATION`). <br> When called with the authorization role `SUPERVISOR` or
	 * `REGISTERED_USER`, the behavior of the call depends on the configuration property
	 * `com.unblu.conversation.message.allowNonAdminUsersChangeConversationTopicViaWebApi`: <ul> <li>If the configuration property is
	 * `true`, the agent making the call can only change the conversation's topic if they're a participant in the conversation. <li>If the
	 * configuration property is `false`, the agent making the call can change the topic provided their participation type in the conversation is listed
	 * in the configuration property `com.unblu.conversation.message.allowChangeConversationTopic`. </ul><br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param conversationsSetTopicBody (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetTopicWithHttpInfo(String conversationId, ConversationsSetTopicBody conversationsSetTopicBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetTopicBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetTopic");
		}

		// verify the required parameter 'conversationsSetTopicBody' is set
		if (conversationsSetTopicBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetTopicBody' when calling conversationsSetTopic");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setTopic"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * setVisitorData Sets custom visitor data.<br>
	 * 
	 * @param conversationId the conversation where the custom data should be added (required)
	 * @param conversationsSetVisitorDataBody the custom visitor data (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsSetVisitorData(String conversationId, ConversationsSetVisitorDataBody conversationsSetVisitorDataBody, String expand) throws ApiException {
		return conversationsSetVisitorDataWithHttpInfo(conversationId, conversationsSetVisitorDataBody, expand).getData();
	}

	/**
	 * setVisitorData Sets custom visitor data.<br>
	 * 
	 * @param conversationId the conversation where the custom data should be added (required)
	 * @param conversationsSetVisitorDataBody the custom visitor data (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsSetVisitorDataWithHttpInfo(String conversationId, ConversationsSetVisitorDataBody conversationsSetVisitorDataBody, String expand) throws ApiException {
		Object localVarPostBody = conversationsSetVisitorDataBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsSetVisitorData");
		}

		// verify the required parameter 'conversationsSetVisitorDataBody' is set
		if (conversationsSetVisitorDataBody == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationsSetVisitorDataBody' when calling conversationsSetVisitorData");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/setVisitorData"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * startRecording Manually start a conversation recording. The recording is only started if: <ul> <li>A compatible blob store is configured
	 * <li>Manually starting and stopping a recording is allowed <li>There is an active call or collaboration layer <li>There isn't already a
	 * conversation recording running </ul> The recording is started asynchronously, and there may be a brief delay before it starts. The type of the
	 * recording (audio only or audio and video) is determined by the configuration. If an error occurs, a <code>conversation.recording_failed</code>
	 * webhook is triggered.<br>
	 * 
	 * @param conversationId The conversation for which a recording should be started (required)
	 * @throws ApiException if fails to make API call
	 */
	public void conversationsStartRecording(String conversationId) throws ApiException {

		conversationsStartRecordingWithHttpInfo(conversationId);
	}

	/**
	 * startRecording Manually start a conversation recording. The recording is only started if: <ul> <li>A compatible blob store is configured
	 * <li>Manually starting and stopping a recording is allowed <li>There is an active call or collaboration layer <li>There isn't already a
	 * conversation recording running </ul> The recording is started asynchronously, and there may be a brief delay before it starts. The type of the
	 * recording (audio only or audio and video) is determined by the configuration. If an error occurs, a <code>conversation.recording_failed</code>
	 * webhook is triggered.<br>
	 * 
	 * @param conversationId The conversation for which a recording should be started (required)
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsStartRecordingWithHttpInfo(String conversationId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsStartRecording");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/startRecording"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		final String[] localVarAccepts = {

		};
		final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

		final String[] localVarContentTypes = {

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

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

		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null);
	}

	/**
	 * stopRecording Manually stop a conversation recording. The recording is stopped if: <ul> <li>There is a running conversation recording
	 * <li>Manually starting and stopping the recording is allowed </ul><br>
	 * 
	 * @param conversationId The conversation for which a recording should be stopped (required)
	 * @throws ApiException if fails to make API call
	 */
	public void conversationsStopRecording(String conversationId) throws ApiException {

		conversationsStopRecordingWithHttpInfo(conversationId);
	}

	/**
	 * stopRecording Manually stop a conversation recording. The recording is stopped if: <ul> <li>There is a running conversation recording
	 * <li>Manually starting and stopping the recording is allowed </ul><br>
	 * 
	 * @param conversationId The conversation for which a recording should be stopped (required)
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsStopRecordingWithHttpInfo(String conversationId) throws ApiException {
		Object localVarPostBody = new HashMap<>();

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsStopRecording");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/stopRecording"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

		final String[] localVarAccepts = {

		};
		final String localVarAccept = apiClient.selectHeaderAccept(localVarAccepts);

		final String[] localVarContentTypes = {

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

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

		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, null);
	}

	/**
	 * updateConfiguration Updates the configuration map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of settings that will be updated. The source for this map has to be the <code>configuration</code> attribute
	 * when you read the conversation using <code>configuration</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsUpdateConfiguration(String conversationId, Map requestBody, String expand) throws ApiException {
		return conversationsUpdateConfigurationWithHttpInfo(conversationId, requestBody, expand).getData();
	}

	/**
	 * updateConfiguration Updates the configuration map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of settings that will be updated. The source for this map has to be the <code>configuration</code> attribute
	 * when you read the conversation using <code>configuration</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsUpdateConfigurationWithHttpInfo(String conversationId, Map requestBody, String expand) throws ApiException {
		Object localVarPostBody = requestBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsUpdateConfiguration");
		}

		// verify the required parameter 'requestBody' is set
		if (requestBody == null) {
			throw new ApiException(400, "Missing the required parameter 'requestBody' when calling conversationsUpdateConfiguration");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/updateConfiguration"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * updateMetadata Updates the metadata map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of metadata that will be updated. The source for this map has to be the <code>metadata</code> attribute when
	 * you read the conversation using <code>metadata</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsUpdateMetadata(String conversationId, Map requestBody, String expand) throws ApiException {
		return conversationsUpdateMetadataWithHttpInfo(conversationId, requestBody, expand).getData();
	}

	/**
	 * updateMetadata Updates the metadata map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of metadata that will be updated. The source for this map has to be the <code>metadata</code> attribute when
	 * you read the conversation using <code>metadata</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsUpdateMetadataWithHttpInfo(String conversationId, Map requestBody, String expand) throws ApiException {
		Object localVarPostBody = requestBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsUpdateMetadata");
		}

		// verify the required parameter 'requestBody' is set
		if (requestBody == null) {
			throw new ApiException(400, "Missing the required parameter 'requestBody' when calling conversationsUpdateMetadata");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/updateMetadata"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}

	/**
	 * updateText Updates the text map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of translations that will be updated. The source for this map has to be the <code>text</code> attribute when
	 * you read the conversation using <code>text</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ConversationData
	 * @throws ApiException if fails to make API call
	 */
	public ConversationData conversationsUpdateText(String conversationId, Map> requestBody, String expand) throws ApiException {
		return conversationsUpdateTextWithHttpInfo(conversationId, requestBody, expand).getData();
	}

	/**
	 * updateText Updates the text map for a specific conversation<br>
	 * 
	 * @param conversationId the conversation that is updated (required)
	 * @param requestBody the key-value map of translations that will be updated. The source for this map has to be the <code>text</code> attribute when
	 * you read the conversation using <code>text</code> in the <code>expand</code> query parameter. (required)
	 * @param expand (optional)
	 * @return ApiResponse<ConversationData>
	 * @throws ApiException if fails to make API call
	 */
	public ApiResponse conversationsUpdateTextWithHttpInfo(String conversationId, Map> requestBody, String expand) throws ApiException {
		Object localVarPostBody = requestBody;

		// verify the required parameter 'conversationId' is set
		if (conversationId == null) {
			throw new ApiException(400, "Missing the required parameter 'conversationId' when calling conversationsUpdateText");
		}

		// verify the required parameter 'requestBody' is set
		if (requestBody == null) {
			throw new ApiException(400, "Missing the required parameter 'requestBody' when calling conversationsUpdateText");
		}

		// create path and map variables
		String localVarPath = "/conversations/{conversationId}/updateText"
				.replaceAll("\\{" + "conversationId" + "\\}", apiClient.escapeString(conversationId.toString()));

		// query params
		List localVarQueryParams = new ArrayList();
		Map localVarHeaderParams = new HashMap();
		Map localVarFormParams = new HashMap();

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

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

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

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

		GenericType localVarReturnType = new GenericType() {
		};
		return apiClient.invokeAPI(localVarPath, "POST", localVarQueryParams, localVarPostBody, localVarHeaderParams, localVarFormParams, localVarAccept, localVarContentType, localVarAuthNames, localVarReturnType);
	}
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy