Class: Iterable::Users

Inherits:
ApiResource show all
Defined in:
lib/iterable/users.rb

Overview

Interact with /users API endpoints

Examples:

Creating users endpoint object

# With default config
templates = Iterable::Users.new
templates.get

# With custom config
conf = Iterable::Config.new(token: 'new-token')
templates = Iterable::Users.new(config)

Instance Attribute Summary

Attributes inherited from ApiResource

#conf

Instance Method Summary collapse

Methods inherited from ApiResource

#default_config, default_config, #initialize

Constructor Details

This class inherits a constructor from Iterable::ApiResource

Instance Method Details

#bulk_update(users = []) ⇒ Iterable::Response

Note:

User fields can be email [String], dataFields [Hash], or userId [String]

Bulk update user data or adds it if does not exist. Data is merged and missing fields are not deleted

Parameters:

  • users (Array[Hash]) (defaults to: [])

    Array of hashes of user details

Returns:



39
40
41
# File 'lib/iterable/users.rb', line 39

def bulk_update(users = [])
  Iterable.request(conf, '/users/bulkUpdate').post(users: users)
end

#bulk_update_subscriptions(subscriptions = []) ⇒ Iterable::Response

Note:

Refer to [Iterable::Users#update_subscriptions] for what subscription

Update user subscriptions in bulk. Overwrites existing data if the field is provided and not null

information is needed such as email

Parameters:

  • subscriptions (Array[Hash]) (defaults to: [])

    An array of subscription update attributes

Returns:



68
69
70
71
# File 'lib/iterable/users.rb', line 68

def bulk_update_subscriptions(subscriptions = [])
  attrs = { updateSubscriptionsRequests: subscriptions }
  Iterable.request(conf, '/users/bulkUpdateSubscriptions').post(attrs)
end

#delete(email) ⇒ Iterable::Response

Delete a user by their email

Parameters:

  • email (String)

    The email of the user to delete

Returns:



103
104
105
# File 'lib/iterable/users.rb', line 103

def delete(email)
  Iterable.request(conf, "/users/#{email}").delete
end

#delete_by_id(user_id) ⇒ Iterable::Response

Delete a user by their userId

Parameters:

  • user_id (String)

    The userId of the user to delete

Returns:



114
115
116
# File 'lib/iterable/users.rb', line 114

def delete_by_id(user_id)
  Iterable.request(conf, "/users/byUserId/#{user_id}").delete
end

#disable_device(token, email = nil, user_id = nil) ⇒ Iterable::Response

Note:

An email or userId is required

Disable a device

Parameters:

  • token (String)

    A device token to disable

  • email (String) (defaults to: nil)

    Optional user email device belongs to to disable

  • user_id (String) (defaults to: nil)

    Optional user_id device belongs to to disable

Returns:



166
167
168
169
170
171
# File 'lib/iterable/users.rb', line 166

def disable_device(token, email = nil, user_id = nil)
  attrs = { token: token }
  attrs[:email] = email if email
  attrs[:userId] = user_id if user_id
  Iterable.request(conf, '/users/disableDevice').post(attrs)
end

#fieldsIterable::Response

Get the user fields with mappings from field to type

Returns:



134
135
136
# File 'lib/iterable/users.rb', line 134

def fields
  Iterable.request(conf, '/users/getFields').get
end

#for_email(email) ⇒ Iterable::Response

Get a user by their email

Parameters:

  • email (String)

    The email of the user to get

Returns:



80
81
82
# File 'lib/iterable/users.rb', line 80

def for_email(email)
  Iterable.request(conf, "/users/#{email}").get
end

#for_id(user_id) ⇒ Iterable::Response

Get a user by their userId

Parameters:

  • user_id (String)

    The user ID of the user to get

Returns:



125
126
127
# File 'lib/iterable/users.rb', line 125

def for_id(user_id)
  Iterable.request(conf, "/users/byUserId/#{user_id}").get
end

#register_browser_token(email, token, attrs = {}) ⇒ Iterable::Response

Note:

An email or userId is required

Register a browser token for a user

Parameters:

  • email (String)

    An email of a user

  • token (String)

    The browser token to register

  • attrs (Hash) (defaults to: {})

    Additional attrs like userId to pass along

Returns:



149
150
151
152
153
# File 'lib/iterable/users.rb', line 149

def register_browser_token(email, token, attrs = {})
  attrs[:email] = email
  attrs[:browserToken] = token
  Iterable.request(conf, '/users/registerBrowserToken').post(attrs)
end

#sent_messages(email, start_time = nil, end_time = nil, params = {}) ⇒ Iterable::Response

Get sent messages for a user

Parameters:

  • email (String)

    An email for a user to retreive messages for

  • start_time (Time) (defaults to: nil)

    An optional start time for range of messages

  • end_time (Time) (defaults to: nil)

    An optional end time for range of messages

  • params (Hash) (defaults to: {})

    Additional params to use to filter messages further

Returns:



183
184
185
186
187
188
# File 'lib/iterable/users.rb', line 183

def sent_messages(email, start_time = nil, end_time = nil, params = {})
  params[:email] = email
  params[:startTime] = start_time.to_s if start_time
  params[:endTime] = end_time.to_s if end_time
  Iterable.request(conf, '/users/getSentMessages', params).get
end

#update(email, attrs = {}) ⇒ Iterable::Response

Update user data or adds a user if missing. Data is merged - missing fields are not deleted

Parameters:

  • email (String)

    User email to update or create

  • attrs (Hash) (defaults to: {})

    Additional data to update or add

Returns:



24
25
26
27
# File 'lib/iterable/users.rb', line 24

def update(email, attrs = {})
  attrs['email'] = email
  Iterable.request(conf, '/users/update').post(attrs)
end

#update_email(email, new_email) ⇒ Iterable::Response

Update a user email

Parameters:

  • email (String)

    The email of the user to get

Returns:



91
92
93
94
# File 'lib/iterable/users.rb', line 91

def update_email(email, new_email)
  attrs = { currentEmail: email, newEmail: new_email }
  Iterable.request(conf, '/users/updateEmail').post(attrs)
end

#update_subscriptions(email, attrs = {}) ⇒ Iterable::Response

Update user subscriptions. Overwrites existing data if the field is provided and not null

Parameters:

  • email (String)

    User email to update

  • attrs (Hash) (defaults to: {})

    Additional data to update

Returns:



52
53
54
55
# File 'lib/iterable/users.rb', line 52

def update_subscriptions(email, attrs = {})
  attrs['email'] = email
  Iterable.request(conf, '/users/updateSubscriptions').post(attrs)
end