intercom 3.6.2 → 3.7.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb279cee47b8721db490a1cc48254cd0c77ce2f5
4
- data.tar.gz: 7c4692eec6c02dff011cc59a3c59e8cbed2623f9
3
+ metadata.gz: a6e8da86f1e16e4bce5f0f6fea61822905d6a6d8
4
+ data.tar.gz: ccbbde9ad1055d33b6907e5d43157234656b79e8
5
5
  SHA512:
6
- metadata.gz: ff17f1177da16e8d48d932ff27c48bec548a9e7d6ce2183657d1d8e5e21156826674d30557d644e5249f2f2c9f3151018ba1e69223e99a2b591d66a21f75ca66
7
- data.tar.gz: e38a41bf57b2c4714197a4812458eb13080e4ef7acfec8c574feb10139d4a64f6fec737bb55f3979125c3c8e66d8d93179c8aa1f0f7112f97655a6e9e9975172
6
+ metadata.gz: 434adcd92c200092ff3ed4b2e5909bd56ff46e7732b7497bfd918b591a9a360ece881fb0fef152d04325fb6ecf6e50c8bb4f75d9d15fd5e867e6d10dba6f4098
7
+ data.tar.gz: 7363c7f504408438d3fe40556284cdd1a4869d927d3cbe2ffea117186898812eefbb45d4341d6c9f1c49094c5db5eccf366e1a4a19b8030b0079fb12db97afdd
data/README.md CHANGED
@@ -22,7 +22,7 @@ This version of the gem is compatible with `Ruby 2.1` and above.
22
22
 
23
23
  Using bundler:
24
24
 
25
- gem 'intercom', '~> 3.6.1'
25
+ gem 'intercom', '~> 3.7.0'
26
26
 
27
27
  ## Basic Usage
28
28
 
@@ -68,9 +68,13 @@ user = intercom.users.find(user_id: "1")
68
68
  user = intercom.users.find(id: "1")
69
69
  # Create a user
70
70
  user = intercom.users.create(email: "bob@example.com", name: "Bob Smith", signed_up_at: Time.now.to_i)
71
- # Delete a user
71
+ # archive a user
72
72
  user = intercom.users.find(id: "1")
73
- deleted_user = intercom.users.delete(user)
73
+ archived_user = intercom.users.archive(user)
74
+ # request a hard delete for a user
75
+ (https://developers.intercom.com/intercom-api-reference/reference#delete-users)
76
+ user = intercom.users.find(id: "1")
77
+ deleted_user = intercom.users.request_hard_delete(user)
74
78
  # Update custom_attributes for a user
75
79
  user.custom_attributes["average_monthly_spend"] = 1234.56
76
80
  intercom.users.save(user)
@@ -135,7 +139,7 @@ intercom.companies.all.map {|company| company.name }
135
139
  # Get a list of users in a company by Intercom Company ID
136
140
  intercom.companies.users_by_intercom_company_id(company.id)
137
141
  # Get a list of users in a company by external company_id
138
- intercom.companies.users_by_company_id(company.company_id)
142
+ intercom.companies.users_by_company_id(company.company_id)
139
143
  # Get a large list of companies using scroll
140
144
  intercom.companies.scroll.each { |comp| puts comp.name}
141
145
  # Please see users scroll for more details of how to use scroll
@@ -198,7 +202,7 @@ intercom.conversations.find_all(email: 'joe@example.com', type: 'user', unread:
198
202
  intercom.conversations.find_all(email: 'joe@example.com', type: 'user', unread: true).each {|convo| ... }
199
203
  # Iterate over all conversations for a user with their Intercom user ID
200
204
  intercom.conversations.find_all(intercom_user_id: '536e564f316c83104c000020', type: 'user').each {|convo| ... }
201
- # Iterate over all conversations for a lead
205
+ # Iterate over all conversations for a lead
202
206
  # NOTE: to iterate over a lead's conversations you MUST use their Intercom User ID and type User
203
207
  intercom.conversations.find_all(intercom_user_id: lead.id, type: 'user').each {|convo| ... }
204
208
 
@@ -228,7 +232,7 @@ intercom.conversations.open(id: conversation.id, admin_id: '123')
228
232
  intercom.conversations.close(id: conversation.id, admin_id: '123')
229
233
 
230
234
  # Assign
231
- # Note: Conversations can be assigned to teams. However, the entity that performs the operation of assigning the conversation has to be an existing teammate.
235
+ # Note: Conversations can be assigned to teams. However, the entity that performs the operation of assigning the conversation has to be an existing teammate.
232
236
  # You can use `intercom.admins.all.each {|a| puts a.inspect if a.type == 'admin' }` to list all of your teammates.
233
237
  intercom.conversations.assign(id: conversation.id, admin_id: '123', assignee_id: '124')
234
238
 
@@ -372,12 +376,19 @@ The metadata key values in the example are treated as follows-
372
376
  ### Contacts
373
377
 
374
378
  `Contacts` represent logged out users of your application.
379
+ Note that `contacts` are referred to as `leads` in the [Intercom](https://developers.intercom.com/intercom-api-reference/reference#leads)
375
380
 
376
381
  ```ruby
377
382
  # Create a contact
378
383
  contact = intercom.contacts.create(email: "some_contact@example.com")
379
384
 
380
- # Update a contact
385
+ # Update a contact (via create method)
386
+ # You can update a contact by calling the create method but you MUST provide an id or user_id
387
+ # If you just provide an email, for example, it will create a new contact
388
+ # See https://developers.intercom.com/intercom-api-reference/reference#update-lead for more detail
389
+ contact = intercom.contacts.create(email: "some_contact@example.com", id: "3be0398668071a6bc6850413", name:"update_contact")
390
+
391
+ # Update a contact (via contact object)
381
392
  contact.custom_attributes['foo'] = 'bar'
382
393
  intercom.contacts.save(contact)
383
394
 
@@ -410,8 +421,8 @@ contact = intercom.contacts.find(id: "536e564f316c83104c000020")
410
421
  intercom.contacts.convert(contact, Intercom::User.new(email: email))
411
422
  # Using find with email will not work here. See https://github.com/intercom/intercom-ruby/issues/419 for more information
412
423
 
413
- # Delete a contact
414
- intercom.contacts.delete(contact)
424
+ # archive a contact
425
+ intercom.contacts.archive(contact)
415
426
 
416
427
  # Get a large list of contacts using scroll
417
428
  intercom.contacts.scroll.each { |lead| puts lead.id}
data/changes.txt CHANGED
@@ -1,3 +1,20 @@
1
+ 3.7.0
2
+ Providing the ability to hard delete users as described here:
3
+ https://developers.intercom.com/intercom-api-reference/reference#archive-a-user
4
+
5
+ This chaged the previous delete action to an archive action and added a new hard delete option
6
+ You can still use the delete method but it will archive a user, we added an alias for delete.
7
+ #442 archiving alias
8
+ #410 add ability to hard delete users
9
+
10
+ Alos enabling reply to last from the SDK
11
+ #443 Residently conversations last reply
12
+
13
+ 3.6.2
14
+ #384 Add ability to snooze conversation
15
+ You can now snooze conversations in your app via:
16
+ intercom.conversations.snooze(...)
17
+
1
18
  3.6.1
2
19
  #430 Allow all conversations to be listed
3
20
  You can now iterate over all conversations for your app via:
@@ -2,12 +2,14 @@ require 'intercom/utils'
2
2
 
3
3
  module Intercom
4
4
  module ApiOperations
5
- module Delete
6
- def delete(object)
5
+ module Archive
6
+ def archive(object)
7
7
  collection_name = Utils.resource_class_to_collection_name(collection_class)
8
8
  @client.delete("/#{collection_name}/#{object.id}", {})
9
9
  object
10
10
  end
11
+
12
+ alias_method 'delete', 'archive'
11
13
  end
12
14
  end
13
15
  end
@@ -0,0 +1,12 @@
1
+ require 'intercom/utils'
2
+
3
+ module Intercom
4
+ module ApiOperations
5
+ module RequestHardDelete
6
+ def request_hard_delete(object)
7
+ @client.post("/user_delete_requests", {intercom_user_id: object.id})
8
+ object
9
+ end
10
+ end
11
+ end
12
+ end
@@ -6,7 +6,8 @@ require 'intercom/api_operations/find_all'
6
6
  require 'intercom/api_operations/save'
7
7
  require 'intercom/api_operations/scroll'
8
8
  require 'intercom/api_operations/convert'
9
- require 'intercom/api_operations/delete'
9
+ require 'intercom/api_operations/archive'
10
+ require 'intercom/api_operations/request_hard_delete'
10
11
 
11
12
  module Intercom
12
13
  module Service
@@ -18,7 +19,8 @@ module Intercom
18
19
  include ApiOperations::Save
19
20
  include ApiOperations::Scroll
20
21
  include ApiOperations::Convert
21
- include ApiOperations::Delete
22
+ include ApiOperations::Archive
23
+ include ApiOperations::RequestHardDelete
22
24
 
23
25
  def collection_class
24
26
  Intercom::Contact
@@ -2,7 +2,7 @@ require 'intercom/api_operations/list'
2
2
  require 'intercom/api_operations/find_all'
3
3
  require 'intercom/api_operations/find'
4
4
  require 'intercom/api_operations/save'
5
- require 'intercom/api_operations/delete'
5
+ require 'intercom/api_operations/archive'
6
6
 
7
7
  module Intercom
8
8
  module Service
@@ -11,7 +11,7 @@ module Intercom
11
11
  include ApiOperations::Find
12
12
  include ApiOperations::FindAll
13
13
  include ApiOperations::Save
14
- include ApiOperations::Delete
14
+ include ApiOperations::Archive
15
15
 
16
16
  def collection_class
17
17
  Intercom::Subscription
@@ -9,7 +9,7 @@ module Intercom
9
9
  include ApiOperations::Save
10
10
  include ApiOperations::List
11
11
  include ApiOperations::FindAll
12
- include ApiOperations::Delete
12
+ include ApiOperations::Archive
13
13
 
14
14
  def collection_class
15
15
  Intercom::Tag
@@ -5,8 +5,9 @@ require 'intercom/api_operations/scroll'
5
5
  require 'intercom/api_operations/find'
6
6
  require 'intercom/api_operations/find_all'
7
7
  require 'intercom/api_operations/save'
8
- require 'intercom/api_operations/delete'
8
+ require 'intercom/api_operations/archive'
9
9
  require 'intercom/api_operations/bulk/submit'
10
+ require 'intercom/api_operations/request_hard_delete'
10
11
  require 'intercom/extended_api_operations/tags'
11
12
  require 'intercom/extended_api_operations/segments'
12
13
 
@@ -19,7 +20,8 @@ module Intercom
19
20
  include ApiOperations::Find
20
21
  include ApiOperations::FindAll
21
22
  include ApiOperations::Save
22
- include ApiOperations::Delete
23
+ include ApiOperations::Archive
24
+ include ApiOperations::RequestHardDelete
23
25
  include ApiOperations::Bulk::Submit
24
26
  include ExtendedApiOperations::Tags
25
27
  include ExtendedApiOperations::Segments
@@ -5,7 +5,7 @@ require 'intercom/api_operations/find'
5
5
  require 'intercom/api_operations/find_all'
6
6
  require 'intercom/api_operations/save'
7
7
  require 'intercom/api_operations/convert'
8
- require 'intercom/api_operations/delete'
8
+ require 'intercom/api_operations/archive'
9
9
 
10
10
  module Intercom
11
11
  module Service
@@ -16,7 +16,7 @@ module Intercom
16
16
  include ApiOperations::FindAll
17
17
  include ApiOperations::Save
18
18
  include ApiOperations::Convert
19
- include ApiOperations::Delete
19
+ include ApiOperations::Archive
20
20
 
21
21
  def collection_class
22
22
  Intercom::Visitor
@@ -1,3 +1,3 @@
1
1
  module Intercom #:nodoc:
2
- VERSION = "3.6.2"
2
+ VERSION = "3.7.0"
3
3
  end
@@ -50,4 +50,10 @@ describe "Intercom::Contact" do
50
50
  client.contacts.delete(contact)
51
51
  end
52
52
 
53
+ it "sends a request for a hard deletion" do
54
+ contact = Intercom::Contact.new("id" => "1")
55
+ client.expects(:post).with("/user_delete_requests", {intercom_user_id: "1"}).returns({id: contact.id})
56
+ client.contacts.request_hard_delete(contact)
57
+ end
58
+
53
59
  end
@@ -218,10 +218,22 @@ describe "Intercom::User" do
218
218
  client.users.save(user)
219
219
  end
220
220
 
221
- it "deletes a user" do
221
+ it "archives a user" do
222
222
  user = Intercom::User.new("id" => "1")
223
223
  client.expects(:delete).with("/users/1", {}).returns(user)
224
- client.users.delete(user)
224
+ client.users.archive(user)
225
+ end
226
+ it "has an alias to archive a user" do
227
+ user = Intercom::User.new("id" => "1")
228
+ client.expects(:delete).with("/users/1", {}).returns(user)
229
+ client.users.delete(user)
230
+ end
231
+
232
+
233
+ it "sends a request for a hard deletion" do
234
+ user = Intercom::User.new("id" => "1")
235
+ client.expects(:post).with("/user_delete_requests", {intercom_user_id: "1"}).returns({id: user.id})
236
+ client.users.request_hard_delete(user)
225
237
  end
226
238
 
227
239
  it "can use client.users.create for convenience" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: intercom
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.6.2
4
+ version: 3.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ben McRedmond
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2018-10-05 00:00:00.000000000 Z
18
+ date: 2018-11-16 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: minitest
@@ -132,14 +132,15 @@ files:
132
132
  - lib/ext/sliceable_hash.rb
133
133
  - lib/intercom.rb
134
134
  - lib/intercom/admin.rb
135
+ - lib/intercom/api_operations/archive.rb
135
136
  - lib/intercom/api_operations/bulk/load_error_feed.rb
136
137
  - lib/intercom/api_operations/bulk/submit.rb
137
138
  - lib/intercom/api_operations/convert.rb
138
- - lib/intercom/api_operations/delete.rb
139
139
  - lib/intercom/api_operations/find.rb
140
140
  - lib/intercom/api_operations/find_all.rb
141
141
  - lib/intercom/api_operations/list.rb
142
142
  - lib/intercom/api_operations/load.rb
143
+ - lib/intercom/api_operations/request_hard_delete.rb
143
144
  - lib/intercom/api_operations/save.rb
144
145
  - lib/intercom/api_operations/scroll.rb
145
146
  - lib/intercom/client.rb
@@ -229,7 +230,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
229
230
  version: '0'
230
231
  requirements: []
231
232
  rubyforge_project: intercom
232
- rubygems_version: 2.6.14
233
+ rubygems_version: 2.6.14.1
233
234
  signing_key:
234
235
  specification_version: 4
235
236
  summary: Ruby bindings for the Intercom API