diff --git a/app/controllers/public/api/v1/inboxes/contacts_controller.rb b/app/controllers/public/api/v1/inboxes/contacts_controller.rb index 6932386fd..eb794f2a0 100644 --- a/app/controllers/public/api/v1/inboxes/contacts_controller.rb +++ b/app/controllers/public/api/v1/inboxes/contacts_controller.rb @@ -43,6 +43,6 @@ class Public::Api::V1::Inboxes::ContactsController < Public::Api::V1::InboxesCon end def permitted_params - params.permit(:identifier, :identifier_hash, :email, :name, :avatar_url, custom_attributes: {}) + params.permit(:identifier, :identifier_hash, :email, :name, :avatar_url, :phone_number, custom_attributes: {}) end end diff --git a/app/views/public/api/v1/models/_contact.json.jbuilder b/app/views/public/api/v1/models/_contact.json.jbuilder index c35705c6c..fc9dbb2f2 100644 --- a/app/views/public/api/v1/models/_contact.json.jbuilder +++ b/app/views/public/api/v1/models/_contact.json.jbuilder @@ -1,3 +1,4 @@ json.id resource.id json.name resource.name json.email resource.email +json.phone_number resource.phone_number diff --git a/spec/controllers/public/api/v1/inbox/contacts_controller_spec.rb b/spec/controllers/public/api/v1/inbox/contacts_controller_spec.rb index 151a2eec5..5e412a65d 100644 --- a/spec/controllers/public/api/v1/inbox/contacts_controller_spec.rb +++ b/spec/controllers/public/api/v1/inbox/contacts_controller_spec.rb @@ -10,7 +10,8 @@ RSpec.describe 'Public Inbox Contacts API', type: :request do post "/public/api/v1/inboxes/#{api_channel.identifier}/contacts" expect(response).to have_http_status(:success) - data = JSON.parse(response.body) + data = response.parsed_body + expect(data.keys).to include('email', 'id', 'name', 'phone_number', 'pubsub_token', 'source_id') expect(data['source_id']).not_to eq nil expect(data['pubsub_token']).not_to eq nil end @@ -21,7 +22,8 @@ RSpec.describe 'Public Inbox Contacts API', type: :request do get "/public/api/v1/inboxes/#{api_channel.identifier}/contacts/#{contact_inbox.source_id}" expect(response).to have_http_status(:success) - data = JSON.parse(response.body) + data = response.parsed_body + expect(data.keys).to include('email', 'id', 'name', 'phone_number', 'pubsub_token', 'source_id') expect(data['source_id']).to eq contact_inbox.source_id expect(data['pubsub_token']).to eq contact_inbox.pubsub_token end @@ -33,7 +35,7 @@ RSpec.describe 'Public Inbox Contacts API', type: :request do params: { name: 'John Smith' } expect(response).to have_http_status(:success) - data = JSON.parse(response.body) + data = response.parsed_body expect(data['name']).to eq 'John Smith' end end diff --git a/swagger/definitions/request/public/contact/create_update_payload.yml b/swagger/definitions/request/public/contact/create_update_payload.yml index 9f1f820de..48c6e4550 100644 --- a/swagger/definitions/request/public/contact/create_update_payload.yml +++ b/swagger/definitions/request/public/contact/create_update_payload.yml @@ -10,9 +10,12 @@ properties: email: type: string description: Email of the contact - name: + name: type: string description: Name of the contact + phone_number: + type: string + description: Phone number of the contact avatar_url: type: string description: The url to a jpeg, png file for the user avatar diff --git a/swagger/swagger.json b/swagger/swagger.json index 81f19149c..ec1bf8a25 100644 --- a/swagger/swagger.json +++ b/swagger/swagger.json @@ -5268,6 +5268,10 @@ "type": "string", "description": "Name of the contact" }, + "phone_number": { + "type": "string", + "description": "Phone number of the contact" + }, "avatar_url": { "type": "string", "description": "The url to a jpeg, png file for the user avatar"