intercom 1.0.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +0 -8
- data/Gemfile +3 -0
- data/README.md +208 -52
- data/changes.txt +3 -0
- data/intercom.gemspec +2 -2
- data/lib/ext/hash.rb +18 -0
- data/lib/intercom.rb +38 -43
- data/lib/intercom/api_operations/count.rb +16 -0
- data/lib/intercom/api_operations/delete.rb +15 -0
- data/lib/intercom/api_operations/find.rb +22 -0
- data/lib/intercom/api_operations/find_all.rb +33 -0
- data/lib/intercom/api_operations/list.rb +17 -0
- data/lib/intercom/api_operations/load.rb +15 -0
- data/lib/intercom/api_operations/save.rb +44 -0
- data/lib/intercom/collection_proxy.rb +66 -0
- data/lib/intercom/company.rb +29 -0
- data/lib/intercom/conversation.rb +15 -0
- data/lib/intercom/count.rb +21 -0
- data/lib/intercom/errors.rb +52 -0
- data/lib/intercom/event.rb +4 -101
- data/lib/intercom/extended_api_operations/reply.rb +16 -0
- data/lib/intercom/extended_api_operations/tags.rb +14 -0
- data/lib/intercom/extended_api_operations/users.rb +17 -0
- data/lib/intercom/generic_handlers/base_handler.rb +22 -0
- data/lib/intercom/generic_handlers/count.rb +59 -0
- data/lib/intercom/generic_handlers/tag.rb +71 -0
- data/lib/intercom/generic_handlers/tag_find_all.rb +47 -0
- data/lib/intercom/lib/dynamic_accessors.rb +59 -0
- data/lib/intercom/lib/dynamic_accessors_on_method_missing.rb +53 -0
- data/lib/intercom/lib/flat_store.rb +31 -0
- data/lib/intercom/lib/typed_json_deserializer.rb +52 -0
- data/lib/intercom/message.rb +9 -0
- data/lib/intercom/note.rb +14 -42
- data/lib/intercom/request.rb +40 -4
- data/lib/intercom/segment.rb +14 -0
- data/lib/intercom/tag.rb +19 -78
- data/lib/intercom/traits/api_resource.rb +120 -0
- data/lib/intercom/traits/dirty_tracking.rb +33 -0
- data/lib/intercom/traits/generic_handler_binding.rb +29 -0
- data/lib/intercom/traits/incrementable_attributes.rb +23 -0
- data/lib/intercom/user.rb +25 -361
- data/lib/intercom/utils.rb +50 -0
- data/lib/intercom/version.rb +1 -1
- data/spec/spec_helper.rb +64 -33
- data/spec/unit/intercom/collection_proxy_spec.rb +34 -0
- data/spec/unit/intercom/event_spec.rb +25 -0
- data/spec/unit/intercom/{flat_store_spec.rb → lib/flat_store_spec.rb} +7 -7
- data/spec/unit/intercom/note_spec.rb +5 -4
- data/spec/unit/intercom/tag_spec.rb +3 -3
- data/spec/unit/intercom/traits/api_resource_spec.rb +79 -0
- data/spec/unit/intercom/user_spec.rb +101 -119
- data/spec/unit/intercom_spec.rb +7 -7
- metadata +50 -26
- data/lib/intercom/flat_store.rb +0 -27
- data/lib/intercom/hashable_object.rb +0 -22
- data/lib/intercom/impression.rb +0 -63
- data/lib/intercom/message_thread.rb +0 -189
- data/lib/intercom/requires_parameters.rb +0 -10
- data/lib/intercom/social_profile.rb +0 -24
- data/lib/intercom/unix_timestamp_unwrapper.rb +0 -12
- data/lib/intercom/user_collection_proxy.rb +0 -52
- data/lib/intercom/user_resource.rb +0 -82
- data/spec/integration/fixtures/v1-user.json +0 -45
- data/spec/integration/fixtures/v1-users-impression.json +0 -3
- data/spec/integration/fixtures/v1-users-message_thread.json +0 -44
- data/spec/integration/fixtures/v1-users-message_threads.json +0 -46
- data/spec/integration/fixtures/v1-users-note.json +0 -49
- data/spec/integration/fixtures/v1-users.json +0 -144
- data/spec/integration/intercom_api_integration_spec.rb +0 -134
- data/spec/unit/intercom/impression_spec.rb +0 -18
- data/spec/unit/intercom/message_thread_spec.rb +0 -74
- data/spec/unit/intercom/user_collection_proxy_spec.rb +0 -46
- data/spec/unit/intercom/user_event_spec.rb +0 -83
- data/spec/unit/intercom/user_resource_spec.rb +0 -13
@@ -1,10 +0,0 @@
|
|
1
|
-
module Intercom
|
2
|
-
module RequiresParameters
|
3
|
-
|
4
|
-
def requires_parameters(parameters, required)
|
5
|
-
missing = Array(required) - parameters.keys.map(&:to_s)
|
6
|
-
raise ArgumentError.new("Missing required parameters (#{missing.join(', ')}).") unless missing.empty?
|
7
|
-
end
|
8
|
-
|
9
|
-
end
|
10
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
require 'intercom/user_resource'
|
2
|
-
|
3
|
-
module Intercom
|
4
|
-
# object representing a social profile for the User (see )http://docs.intercom.io/#SocialProfiles).
|
5
|
-
# Read only part of the {User} object
|
6
|
-
class SocialProfile
|
7
|
-
# @return [String] type e.g. twitter, facebook etc.
|
8
|
-
attr_reader :type
|
9
|
-
# @return [String] id
|
10
|
-
attr_reader :id
|
11
|
-
# @return [String] url
|
12
|
-
attr_reader :url
|
13
|
-
# @return [String] username
|
14
|
-
attr_reader :username
|
15
|
-
|
16
|
-
# @private
|
17
|
-
def initialize(params)
|
18
|
-
@type = params["type"]
|
19
|
-
@id = params["id"]
|
20
|
-
@url = params["url"]
|
21
|
-
@username = params["username"]
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
module Intercom
|
2
|
-
# Our api returns date as unix time stamps. This module helps marshall to and from {Time} objects.
|
3
|
-
module UnixTimestampUnwrapper
|
4
|
-
def time_at(attribute_name)
|
5
|
-
Time.at(@attributes[attribute_name]) if @attributes[attribute_name]
|
6
|
-
end
|
7
|
-
|
8
|
-
def set_time_at(attribute_name, time)
|
9
|
-
@attributes[attribute_name.to_s] = (time.nil?) ? nil : time.to_i
|
10
|
-
end
|
11
|
-
end
|
12
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
require 'intercom/user_resource'
|
2
|
-
require 'intercom/flat_store'
|
3
|
-
require 'intercom/social_profile'
|
4
|
-
|
5
|
-
module Intercom
|
6
|
-
# A collection of your Users from Intercom
|
7
|
-
# Uses the paginated users api under the covers (http://docs.intercom.io/api#getting_all_users)
|
8
|
-
#
|
9
|
-
# == Examples:
|
10
|
-
#
|
11
|
-
# Iterating over each user
|
12
|
-
# Intercom::User.all.each do |user|
|
13
|
-
# puts user.inspect
|
14
|
-
# end
|
15
|
-
#
|
16
|
-
class UserCollectionProxy
|
17
|
-
|
18
|
-
QUERYABLE_ATTRIBUTES = [:tag_id, :tag_name]
|
19
|
-
|
20
|
-
attr_accessor :query
|
21
|
-
|
22
|
-
def initialize(attributes={})
|
23
|
-
self.query = attributes.reject{ |key, value| !QUERYABLE_ATTRIBUTES.include?(key) }
|
24
|
-
end
|
25
|
-
|
26
|
-
# yields each {User} to the block provided
|
27
|
-
# @return [void]
|
28
|
-
def each(&block)
|
29
|
-
page = 1
|
30
|
-
fetch_another_page = true
|
31
|
-
while fetch_another_page
|
32
|
-
current_page = Intercom.get("/v1/users", query.merge({:page => page}))
|
33
|
-
current_page["users"].each do |user|
|
34
|
-
block.call User.from_api(user)
|
35
|
-
end
|
36
|
-
page = page + 1
|
37
|
-
fetch_another_page = !current_page["next_page"].nil?
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
include Enumerable
|
42
|
-
|
43
|
-
# This method exists as an optimisation of Enumerable#count,
|
44
|
-
# which would potentially fetch multiple pages of users.
|
45
|
-
def count(item=nil) #:nodoc:
|
46
|
-
return super unless item.nil?
|
47
|
-
return super if block_given?
|
48
|
-
|
49
|
-
Intercom::User.count
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
@@ -1,82 +0,0 @@
|
|
1
|
-
require 'intercom/unix_timestamp_unwrapper'
|
2
|
-
require 'intercom/requires_parameters'
|
3
|
-
|
4
|
-
module Intercom
|
5
|
-
# Base class for resources tied off a {User}, all of which are scoped by either the users :email or :user_id.
|
6
|
-
class UserResource
|
7
|
-
extend RequiresParameters
|
8
|
-
include UnixTimestampUnwrapper
|
9
|
-
|
10
|
-
def initialize(attributes={})
|
11
|
-
self.attributes = attributes
|
12
|
-
end
|
13
|
-
|
14
|
-
# @return [Hash] hash of all the attributes in the structure they will be sent to the api
|
15
|
-
def to_hash
|
16
|
-
UserResource.for_wire(@attributes)
|
17
|
-
end
|
18
|
-
|
19
|
-
# @return [String] email address
|
20
|
-
def email
|
21
|
-
@attributes["email"]
|
22
|
-
end
|
23
|
-
|
24
|
-
# @param [String] email
|
25
|
-
# @return [String]
|
26
|
-
def email=(email)
|
27
|
-
@attributes["email"] = email
|
28
|
-
end
|
29
|
-
|
30
|
-
# @return [String] user_id
|
31
|
-
def user_id
|
32
|
-
@attributes["user_id"]
|
33
|
-
end
|
34
|
-
|
35
|
-
# @param [String] user_id
|
36
|
-
# @return [String]
|
37
|
-
def user_id=(user_id)
|
38
|
-
@attributes["user_id"] = user_id
|
39
|
-
end
|
40
|
-
|
41
|
-
# updates the internal state of this {UserResource} based on the response from the API
|
42
|
-
# @return [UserResource] self
|
43
|
-
def update_from_api_response(api_response)
|
44
|
-
api_response.each do |key, value|
|
45
|
-
setter_method = "#{key.to_s}="
|
46
|
-
if self.respond_to?(setter_method, true)
|
47
|
-
self.send(setter_method, value)
|
48
|
-
else
|
49
|
-
@attributes[key.to_s] = value
|
50
|
-
end
|
51
|
-
end
|
52
|
-
self
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def attributes=(attributes={})
|
58
|
-
@attributes = {}
|
59
|
-
(attributes || {}).each do |key, value|
|
60
|
-
self.send("#{key.to_s}=", value)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def self.for_wire(object)
|
65
|
-
return object.for_wire if object.respond_to?(:for_wire)
|
66
|
-
return object.map { |item| for_wire(item) } if object.is_a?(Array)
|
67
|
-
return object.inject({}) { |result, (k, value)| result[k] = for_wire(value); result } if object.is_a?(Hash)
|
68
|
-
return object.to_i if object.is_a?(Time)
|
69
|
-
object
|
70
|
-
end
|
71
|
-
|
72
|
-
def self.from_api(api_response)
|
73
|
-
obj = self.new
|
74
|
-
obj.update_from_api_response(api_response)
|
75
|
-
end
|
76
|
-
|
77
|
-
def method_missing(method, *args, &block)
|
78
|
-
return @attributes[method.to_s] if @attributes.has_key?(method.to_s)
|
79
|
-
super
|
80
|
-
end
|
81
|
-
end
|
82
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"intercom_id": "528f291df8d4a41d8c000088",
|
3
|
-
"email": "somebody@example.com",
|
4
|
-
"user_id": "123",
|
5
|
-
"name": "Somebody",
|
6
|
-
"created_at": 1270000000,
|
7
|
-
"last_impression_at": 1300000000,
|
8
|
-
"custom_data": {
|
9
|
-
"app_name": "Genesis",
|
10
|
-
"monthly_spend": 155.5,
|
11
|
-
"team_mates": 7
|
12
|
-
},
|
13
|
-
"social_profiles": [
|
14
|
-
{
|
15
|
-
"type": "twitter",
|
16
|
-
"url": "http://twitter.com/abc",
|
17
|
-
"username": "abc"
|
18
|
-
},
|
19
|
-
{
|
20
|
-
"type": "facebook",
|
21
|
-
"url": "http://facebook.com/vanity",
|
22
|
-
"username": "vanity",
|
23
|
-
"id": "13241141441141413"
|
24
|
-
}
|
25
|
-
],
|
26
|
-
"location_data": {
|
27
|
-
"city_name": "Santiago",
|
28
|
-
"continent_code": "SA",
|
29
|
-
"country_name": "Chile",
|
30
|
-
"latitude": -33.44999999999999,
|
31
|
-
"longitude": -70.6667,
|
32
|
-
"postal_code": "",
|
33
|
-
"region_name": "12",
|
34
|
-
"timezone": "Chile/Continental",
|
35
|
-
"country_code": "CHL"
|
36
|
-
},
|
37
|
-
"session_count": 0,
|
38
|
-
"last_seen_ip": "127.0.0.1",
|
39
|
-
"last_seen_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
|
40
|
-
"unsubscribed_from_emails": false,
|
41
|
-
"avatar_url": "https://graph.facebook.com/13241141441141413/picture?width=24&height=24",
|
42
|
-
"company_ids": [
|
43
|
-
|
44
|
-
]
|
45
|
-
}
|
@@ -1,44 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"created_at": 1385114541,
|
3
|
-
"updated_at": 1385028141,
|
4
|
-
"read": true,
|
5
|
-
"created_by_user": true,
|
6
|
-
"thread_id": 5591,
|
7
|
-
"message_id": 5591,
|
8
|
-
"message_type": "conversation",
|
9
|
-
"interrupt": true,
|
10
|
-
"messages": [
|
11
|
-
{
|
12
|
-
"created_at": 1385114541,
|
13
|
-
"url": null,
|
14
|
-
"html": "<p>Hey Intercom, What is up?</p>\n\n<p></p>",
|
15
|
-
"subject": "",
|
16
|
-
"from": {
|
17
|
-
"email": "bob@example.com",
|
18
|
-
"user_id": "456",
|
19
|
-
"name": "Bob",
|
20
|
-
"is_admin": false,
|
21
|
-
"avatar": {
|
22
|
-
}
|
23
|
-
}
|
24
|
-
},
|
25
|
-
{
|
26
|
-
"created_at": 1384941741,
|
27
|
-
"url": null,
|
28
|
-
"html": "<p>Not much, you?\n</p>"
|
29
|
-
},
|
30
|
-
{
|
31
|
-
"created_at": 1385028141,
|
32
|
-
"url": null,
|
33
|
-
"html": "<p>Not much either :(</p>\n\n<p></p>",
|
34
|
-
"from": {
|
35
|
-
"email": "bob@example.com",
|
36
|
-
"user_id": "123",
|
37
|
-
"name": "Bob",
|
38
|
-
"is_admin": false,
|
39
|
-
"avatar": {
|
40
|
-
}
|
41
|
-
}
|
42
|
-
}
|
43
|
-
]
|
44
|
-
}
|
@@ -1,46 +0,0 @@
|
|
1
|
-
[
|
2
|
-
{
|
3
|
-
"created_at": 1385114400,
|
4
|
-
"updated_at": 1385028000,
|
5
|
-
"read": true,
|
6
|
-
"created_by_user": true,
|
7
|
-
"thread_id": 5591,
|
8
|
-
"message_id": 5591,
|
9
|
-
"message_type": "conversation",
|
10
|
-
"interrupt": true,
|
11
|
-
"messages": [
|
12
|
-
{
|
13
|
-
"created_at": 1385114400,
|
14
|
-
"url": null,
|
15
|
-
"html": "<p>Hey Intercom, What is up?</p>\n\n<p></p>",
|
16
|
-
"subject": "",
|
17
|
-
"from": {
|
18
|
-
"email": "somebody@example.com",
|
19
|
-
"user_id": "123",
|
20
|
-
"name": "Somebody",
|
21
|
-
"is_admin": false,
|
22
|
-
"avatar": {
|
23
|
-
}
|
24
|
-
}
|
25
|
-
},
|
26
|
-
{
|
27
|
-
"created_at": 1384941600,
|
28
|
-
"url": null,
|
29
|
-
"html": "<p>Not much, you?\n</p>"
|
30
|
-
},
|
31
|
-
{
|
32
|
-
"created_at": 1385028000,
|
33
|
-
"url": null,
|
34
|
-
"html": "<p>Not much either :(</p>\n\n<p></p>",
|
35
|
-
"from": {
|
36
|
-
"email": "somebody@example.com",
|
37
|
-
"user_id": "123",
|
38
|
-
"name": "Somebody",
|
39
|
-
"is_admin": false,
|
40
|
-
"avatar": {
|
41
|
-
}
|
42
|
-
}
|
43
|
-
}
|
44
|
-
]
|
45
|
-
}
|
46
|
-
]
|
@@ -1,49 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"html": "<p>This is a note</p>",
|
3
|
-
"created_at": null,
|
4
|
-
"user": {
|
5
|
-
"intercom_id": "528f2cbb1b393a6e470000e6",
|
6
|
-
"email": "somebody@example.com",
|
7
|
-
"user_id": "123",
|
8
|
-
"name": "Somebody",
|
9
|
-
"created_at": 1270000000,
|
10
|
-
"last_impression_at": 1300000000,
|
11
|
-
"custom_data": {
|
12
|
-
"app_name": "Genesis",
|
13
|
-
"monthly_spend": 155.5,
|
14
|
-
"team_mates": 7
|
15
|
-
},
|
16
|
-
"social_profiles": [
|
17
|
-
{
|
18
|
-
"type": "twitter",
|
19
|
-
"url": "http://twitter.com/abc",
|
20
|
-
"username": "abc"
|
21
|
-
},
|
22
|
-
{
|
23
|
-
"type": "facebook",
|
24
|
-
"url": "http://facebook.com/vanity",
|
25
|
-
"username": "vanity",
|
26
|
-
"id": "13241141441141413"
|
27
|
-
}
|
28
|
-
],
|
29
|
-
"location_data": {
|
30
|
-
"city_name": "Santiago",
|
31
|
-
"continent_code": "SA",
|
32
|
-
"country_name": "Chile",
|
33
|
-
"latitude": -33.44999999999999,
|
34
|
-
"longitude": -70.6667,
|
35
|
-
"postal_code": "",
|
36
|
-
"region_name": "12",
|
37
|
-
"timezone": "Chile/Continental",
|
38
|
-
"country_code": "CHL"
|
39
|
-
},
|
40
|
-
"session_count": 0,
|
41
|
-
"last_seen_ip": "127.0.0.1",
|
42
|
-
"last_seen_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
|
43
|
-
"unsubscribed_from_emails": false,
|
44
|
-
"avatar_url": "https://graph.facebook.com/13241141441141413/picture?width=24&height=24",
|
45
|
-
"company_ids": [
|
46
|
-
|
47
|
-
]
|
48
|
-
}
|
49
|
-
}
|
@@ -1,144 +0,0 @@
|
|
1
|
-
{
|
2
|
-
"users": [
|
3
|
-
{
|
4
|
-
"intercom_id": "528f27c330972d783600006d",
|
5
|
-
"email": "first.user@example.com",
|
6
|
-
"user_id": "123",
|
7
|
-
"name": "First User",
|
8
|
-
"created_at": 1270000000,
|
9
|
-
"last_impression_at": 1300000000,
|
10
|
-
"custom_data": {
|
11
|
-
"app_name": "Genesis",
|
12
|
-
"monthly_spend": 155.5,
|
13
|
-
"team_mates": 7
|
14
|
-
},
|
15
|
-
"social_profiles": [
|
16
|
-
{
|
17
|
-
"type": "twitter",
|
18
|
-
"url": "http://twitter.com/abc",
|
19
|
-
"username": "abc"
|
20
|
-
},
|
21
|
-
{
|
22
|
-
"type": "facebook",
|
23
|
-
"url": "http://facebook.com/vanity",
|
24
|
-
"username": "vanity",
|
25
|
-
"id": "13241141441141413"
|
26
|
-
}
|
27
|
-
],
|
28
|
-
"location_data": {
|
29
|
-
"city_name": "Santiago",
|
30
|
-
"continent_code": "SA",
|
31
|
-
"country_name": "Chile",
|
32
|
-
"latitude": -33.44999999999999,
|
33
|
-
"longitude": -70.6667,
|
34
|
-
"postal_code": "",
|
35
|
-
"region_name": "12",
|
36
|
-
"timezone": "Chile/Continental",
|
37
|
-
"country_code": "CHL"
|
38
|
-
},
|
39
|
-
"session_count": 0,
|
40
|
-
"last_seen_ip": "127.0.0.1",
|
41
|
-
"last_seen_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
|
42
|
-
"unsubscribed_from_emails": false,
|
43
|
-
"avatar_url": "https://graph.facebook.com/13241141441141413/picture?width=24&height=24",
|
44
|
-
"company_ids": [
|
45
|
-
|
46
|
-
]
|
47
|
-
},
|
48
|
-
{
|
49
|
-
"intercom_id": "528f27c330972d7836000070",
|
50
|
-
"email": "second.user@example.com",
|
51
|
-
"user_id": "123",
|
52
|
-
"name": "Second User",
|
53
|
-
"created_at": 1270000000,
|
54
|
-
"last_impression_at": 1300000000,
|
55
|
-
"custom_data": {
|
56
|
-
"app_name": "Genesis",
|
57
|
-
"monthly_spend": 155.5,
|
58
|
-
"team_mates": 7
|
59
|
-
},
|
60
|
-
"social_profiles": [
|
61
|
-
{
|
62
|
-
"type": "twitter",
|
63
|
-
"url": "http://twitter.com/abc",
|
64
|
-
"username": "abc"
|
65
|
-
},
|
66
|
-
{
|
67
|
-
"type": "facebook",
|
68
|
-
"url": "http://facebook.com/vanity",
|
69
|
-
"username": "vanity",
|
70
|
-
"id": "13241141441141413"
|
71
|
-
}
|
72
|
-
],
|
73
|
-
"location_data": {
|
74
|
-
"city_name": "Santiago",
|
75
|
-
"continent_code": "SA",
|
76
|
-
"country_name": "Chile",
|
77
|
-
"latitude": -33.44999999999999,
|
78
|
-
"longitude": -70.6667,
|
79
|
-
"postal_code": "",
|
80
|
-
"region_name": "12",
|
81
|
-
"timezone": "Chile/Continental",
|
82
|
-
"country_code": "CHL"
|
83
|
-
},
|
84
|
-
"session_count": 0,
|
85
|
-
"last_seen_ip": "127.0.0.1",
|
86
|
-
"last_seen_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
|
87
|
-
"unsubscribed_from_emails": false,
|
88
|
-
"avatar_url": "https://graph.facebook.com/13241141441141413/picture?width=24&height=24",
|
89
|
-
"company_ids": [
|
90
|
-
|
91
|
-
]
|
92
|
-
},
|
93
|
-
{
|
94
|
-
"intercom_id": "528f27c330972d7836000073",
|
95
|
-
"email": "third.user@example.com",
|
96
|
-
"user_id": "123",
|
97
|
-
"name": "Third User",
|
98
|
-
"created_at": 1270000000,
|
99
|
-
"last_impression_at": 1300000000,
|
100
|
-
"custom_data": {
|
101
|
-
"app_name": "Genesis",
|
102
|
-
"monthly_spend": 155.5,
|
103
|
-
"team_mates": 7
|
104
|
-
},
|
105
|
-
"social_profiles": [
|
106
|
-
{
|
107
|
-
"type": "twitter",
|
108
|
-
"url": "http://twitter.com/abc",
|
109
|
-
"username": "abc"
|
110
|
-
},
|
111
|
-
{
|
112
|
-
"type": "facebook",
|
113
|
-
"url": "http://facebook.com/vanity",
|
114
|
-
"username": "vanity",
|
115
|
-
"id": "13241141441141413"
|
116
|
-
}
|
117
|
-
],
|
118
|
-
"location_data": {
|
119
|
-
"city_name": "Santiago",
|
120
|
-
"continent_code": "SA",
|
121
|
-
"country_name": "Chile",
|
122
|
-
"latitude": -33.44999999999999,
|
123
|
-
"longitude": -70.6667,
|
124
|
-
"postal_code": "",
|
125
|
-
"region_name": "12",
|
126
|
-
"timezone": "Chile/Continental",
|
127
|
-
"country_code": "CHL"
|
128
|
-
},
|
129
|
-
"session_count": 0,
|
130
|
-
"last_seen_ip": "127.0.0.1",
|
131
|
-
"last_seen_user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_3) AppleWebKit/535.11 (KHTML, like Gecko) Chrome/17.0.963.56 Safari/535.11",
|
132
|
-
"unsubscribed_from_emails": false,
|
133
|
-
"avatar_url": "https://graph.facebook.com/13241141441141413/picture?width=24&height=24",
|
134
|
-
"company_ids": [
|
135
|
-
|
136
|
-
]
|
137
|
-
}
|
138
|
-
],
|
139
|
-
"total_count": 3,
|
140
|
-
"page": 1,
|
141
|
-
"next_page": null,
|
142
|
-
"previous_page": null,
|
143
|
-
"total_pages": 1
|
144
|
-
}
|