diff --git a/app/controllers/api/v1/accounts/conversations_controller.rb b/app/controllers/api/v1/accounts/conversations_controller.rb index dccb56a95..897731d19 100644 --- a/app/controllers/api/v1/accounts/conversations_controller.rb +++ b/app/controllers/api/v1/accounts/conversations_controller.rb @@ -98,13 +98,14 @@ class Api::V1::Accounts::ConversationsController < Api::V1::Accounts::BaseContro def conversation_params additional_attributes = params[:additional_attributes]&.permit! || {} + status = params[:status].present? ? { status: params[:status] } : {} { account_id: Current.account.id, inbox_id: @contact_inbox.inbox_id, contact_id: @contact_inbox.contact_id, contact_inbox_id: @contact_inbox.id, additional_attributes: additional_attributes - } + }.merge(status) end def conversation_finder diff --git a/spec/controllers/api/v1/accounts/conversations_controller_spec.rb b/spec/controllers/api/v1/accounts/conversations_controller_spec.rb index 8d4b3de20..e890ef295 100644 --- a/spec/controllers/api/v1/accounts/conversations_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/conversations_controller_spec.rb @@ -162,6 +162,18 @@ RSpec.describe 'Conversations API', type: :request do expect(response_data[:additional_attributes]).to eq(additional_attributes) end + it 'creates a conversation in specificed status' do + allow(Rails.configuration.dispatcher).to receive(:dispatch) + post "/api/v1/accounts/#{account.id}/conversations", + headers: agent.create_new_auth_token, + params: { source_id: contact_inbox.source_id, status: 'bot' }, + as: :json + + expect(response).to have_http_status(:success) + response_data = JSON.parse(response.body, symbolize_names: true) + expect(response_data[:status]).to eq('bot') + end + it 'creates a new conversation with message when message is passed' do allow(Rails.configuration.dispatcher).to receive(:dispatch) post "/api/v1/accounts/#{account.id}/conversations", diff --git a/spec/controllers/api/v1/profiles_controller_spec.rb b/spec/controllers/api/v1/profiles_controller_spec.rb index 13c2511ad..c73194fec 100644 --- a/spec/controllers/api/v1/profiles_controller_spec.rb +++ b/spec/controllers/api/v1/profiles_controller_spec.rb @@ -58,12 +58,12 @@ RSpec.describe 'Profile API', type: :request do it 'updates the password when current password is provided' do put '/api/v1/profile', - params: { profile: { current_password: 'Test123!', password: 'test123', password_confirmation: 'test123' } }, + params: { profile: { current_password: 'Test123!', password: 'Test1234!', password_confirmation: 'Test1234!' } }, headers: agent.create_new_auth_token, as: :json expect(response).to have_http_status(:success) - expect(agent.reload.valid_password?('test123')).to eq true + expect(agent.reload.valid_password?('Test1234!')).to eq true end it 'throws error when current password provided is invalid' do diff --git a/swagger/paths/conversation/index_or_create.yml b/swagger/paths/conversation/index_or_create.yml index 0fc253fff..b553b02f5 100644 --- a/swagger/paths/conversation/index_or_create.yml +++ b/swagger/paths/conversation/index_or_create.yml @@ -100,7 +100,7 @@ post: schema: type: object properties: - source_id: + source_id: $ref: '#/parameters/source_id' inbox_id: type: string @@ -111,6 +111,10 @@ post: additional_attributes: type: object description: Lets you specify attributes like browser information + status: + type: string + enum: ['open', 'resolved', 'bot'] + description: Specify the conversation whether it's bot, open, closed responses: 200: diff --git a/swagger/swagger.json b/swagger/swagger.json index b9db2b77e..bcb76ccf8 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -1224,6 +1224,15 @@ "additional_attributes": { "type": "object", "description": "Lets you specify attributes like browser information" + }, + "status": { + "type": "string", + "enum": [ + "open", + "resolved", + "bot" + ], + "description": "Specify the conversation whether it's bot, open, closed" } } }