Class: Readiness::Zendesk::Users

Inherits:
Client
  • Object
show all
Defined in:
lib/support_readiness/zendesk/users.rb

Overview

TODO:

Merge users

Defines the class Users within the module Readiness::Zendesk.

Author:

  • Jason Colyer

Since:

  • 1.0.0

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from Client

auth_error, bad_request_error, convert_actions, convert_conditions, convert_standard_names_to_ids, convert_ticket_form_agent_conditions, convert_ticket_form_brands, convert_ticket_form_end_user_conditions, convert_ticket_form_names_to_ids, convert_view_names_to_ids, convert_view_restrictions, covert_ticket_form_field_ids, create_package!, erb_renderer, handle_request_error, not_found_error, not_processible_error, put_into_archive, recursively_deflate_directory, timestamp_filename, to_clean_json, to_clean_json_with_key, to_hash, to_nearly_clean_json, to_nearly_clean_json_with_key, to_param_string, write_entries

Constructor Details

#initialize(object = {}) ⇒ Users

Creates a new Readiness::Zendesk::Users instance

Examples:

require 'support_readiness'
Readiness::Zendesk::Users.new

Parameters:

Author:

  • Jason Colyer

Since:

  • 1.0.0



25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/support_readiness/zendesk/users.rb', line 25

def initialize(object = {})
  @active = object['active']
  @alias = object['alias']
  @custom_role_id = object['custom_role_id']
  @default_group_id = object['default_group_id']
  @details = object['details']
  @email = object['email']
  @external_id = object['external_id']
  @iana_time_zone = object['iana_time_zone']
  @id = object['id']
  @last_login_at = object['last_login_at']
  @locale = object['locale']
  @locale_id = object['locale_id']
  @moderator = object['moderator']
  @name = object['name']
  @notes = object['notes']
  @only_private_comments = object['only_private_comments']
  @organization_id = object['organization_id']
  @phone = object['phone']
  @report_csv = object['report_csv']
  @restricted_agent = object['restricted_agent']
  @role = object['role']
  @role_type = object['role_type']
  @shared = object['shared']
  @shared_agent = object['shared_agent']
  @shared_phone_number = object['shared_phone_number']
  @signature = object['signature']
  @suspended = object['suspended']
  @tags = object['tags']
  @ticket_restriction = object['ticket_restriction']
  @time_zone = object['time_zone']
  @two_factor_auth_enabled = object['two_factor_auth_enabled']
  @user_fields = object['user_fields']
  @verified = object['verified']
end

Instance Attribute Details

#activeObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def active
  @active
end

#aliasObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def alias
  @alias
end

#custom_role_idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def custom_role_id
  @custom_role_id
end

#default_group_idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def default_group_id
  @default_group_id
end

#detailsObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def details
  @details
end

#emailObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def email
  @email
end

#external_idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def external_id
  @external_id
end

#iana_time_zoneObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def iana_time_zone
  @iana_time_zone
end

#idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def id
  @id
end

#last_login_atObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def 
  @last_login_at
end

#localeObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def locale
  @locale
end

#locale_idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def locale_id
  @locale_id
end

#moderatorObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def moderator
  @moderator
end

#nameObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def name
  @name
end

#notesObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def notes
  @notes
end

#only_private_commentsObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def only_private_comments
  @only_private_comments
end

#organization_idObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def organization_id
  @organization_id
end

#phoneObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def phone
  @phone
end

#report_csvObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def report_csv
  @report_csv
end

#restricted_agentObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def restricted_agent
  @restricted_agent
end

#roleObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def role
  @role
end

#role_typeObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def role_type
  @role_type
end

#sharedObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def shared
  @shared
end

#shared_agentObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def shared_agent
  @shared_agent
end

#shared_phone_numberObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def shared_phone_number
  @shared_phone_number
end

#signatureObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def signature
  @signature
end

#suspendedObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def suspended
  @suspended
end

#tagsObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def tags
  @tags
end

#ticket_restrictionObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def ticket_restriction
  @ticket_restriction
end

#time_zoneObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def time_zone
  @time_zone
end

#two_factor_auth_enabledObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def two_factor_auth_enabled
  @two_factor_auth_enabled
end

#user_fieldsObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def user_fields
  @user_fields
end

#verifiedObject

Since:

  • 1.0.0



14
15
16
# File 'lib/support_readiness/zendesk/users.rb', line 14

def verified
  @verified
end

Class Method Details

.all_tickets(client, user) ⇒ Array

Lists all tickets involving an user (requested, cc’d, assigned).

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123456)
tickets = Readiness::Zendesk::Users.all_tickets(client, user)
pp tickets.count
# => 18

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



544
545
546
# File 'lib/support_readiness/zendesk/users.rb', line 544

def self.all_tickets(client, user)
  (tickets(client, user) + ccd_tickets(client, user) + assigned_tickets(client, user)).uniq { |t| t.id }.sort_by { |t| t.id }
end

.assigned_tickets(client, user) ⇒ Array

Lists tickets that a user is assigned.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123456)
tickets = Readiness::Zendesk::Users.assigned_tickets(client, user)
pp tickets.count
# => 2

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
# File 'lib/support_readiness/zendesk/users.rb', line 638

def self.assigned_tickets(client, user)
  return 0 if user.role == 'end-user'

  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("users/#{user.id}/tickets/assigned?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['tickets'].map { |t| Tickets.new(t) }
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.ccd_tickets(client, user) ⇒ Array

Lists tickets that a user is CC’d on.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123456)
tickets = Readiness::Zendesk::Users.ccd_tickets(client, user)
pp tickets.count
# => 6

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



603
604
605
606
607
608
609
610
611
612
613
614
615
616
# File 'lib/support_readiness/zendesk/users.rb', line 603

def self.ccd_tickets(client, user)
  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("users/#{user.id}/tickets/ccd?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['tickets'].map { |t| Tickets.new(t) }
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.count(client, permission_set = false, roles = []) ⇒ Hash

Show information on the approximate count of users.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
count = Readiness::Zendesk::Users.count(client)
pp count['value']
# => 102

Parameters:

  • client (Object)

    An instance of Client

  • permission_set (Integer) (defaults to: false)

    The custom_role_id to use in the listing. Set to false to show all.

  • roles (Array) (defaults to: [])

    The roles to use in the listing. Leave blank to show all.

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



150
151
152
153
154
155
156
157
# File 'lib/support_readiness/zendesk/users.rb', line 150

def self.count(client, permission_set = false, roles = [])
  opts = ''
  opts += "&permission_set=#{permission_set}" if permission_set
  opts += roles.map { |r| "&role[]=#{r}" }.join('') unless roles.count.zero?
  response = client.connection.get("users/count?#{opts}")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['count']
end

.create!(client, user) ⇒ Object

Creates an user. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.new
user.custom_role_id = 123456
user.email = 'roge@example.org'
user.name = 'Roger Wilco'
user.organization_id = 57542
user.role = 'agent'
user.role_type = 0
create = Readiness::Zendesk::Users.create!(client, user)
pp create.id
# => 9873843

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



262
263
264
265
266
# File 'lib/support_readiness/zendesk/users.rb', line 262

def self.create!(client, user)
  response = client.connection.post 'users', to_clean_json_with_key(user, 'user')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create user', message: Oj.load(response.body)}) unless response.status == 201
  Users.new(Oj.load(response.body)['user'])
end

.create_many!(client, users) ⇒ object

Creates multiple users via a batch job

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user1 = Readiness::Zendesk::Users.new
user1.email = 'alice@example.com'
user1.name = 'Alice Example'
user2 = Readiness::Zendesk::Users.new
user2.email = 'bob@example.com'
user2.name = 'Bob Example'
users = [user1, user2]
creates = Readiness::Zendesk::Users.create_many!(client, users)
pp creates.id
# => "82de0b044094f0c67893ac9fe64f1a99"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



707
708
709
710
711
712
# File 'lib/support_readiness/zendesk/users.rb', line 707

def self.create_many!(client, users)
  data = { users: users.map { |u| to_hash(u).compact } }.to_json
  response = client.connection.post('users/create_many', data)
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create many users', message: Oj.load(response.body)}) unless response.status == 200
  JobStatuses.new(Oj.load(response.body)['job_status'])
end

.create_or_update!(client, user) ⇒ Object

Creates or updates an user. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.new
user.custom_role_id = 123456
user.email = 'roge@example.org'
user.name = 'Roger Wilco'
user.organization_id = 57542
user.role = 'agent'
user.role_type = 0
create = Readiness::Zendesk::Users.create_or_update!(client, user)
pp create.id
# => 9873843
require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 9873843)
user.name = 'Roger Wilco II'
create = Readiness::Zendesk::Users.create_or_update!(client, user)
pp create.name
# => "Roger Wilco II"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



306
307
308
309
310
# File 'lib/support_readiness/zendesk/users.rb', line 306

def self.create_or_update!(client, user)
  response = client.connection.post 'users/create_or_update', to_clean_json_with_key(user, 'user')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create or update user', id: user.email, message: Oj.load(response.body)}) unless [200, 201].include?(response.status)
  Users.new(Oj.load(response.body)['user'])
end

.create_or_update_many!(client, users) ⇒ object

Creates or updates multiple users via a batch job

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user1 = Readiness::Zendesk::Users.new
user1.email = 'alice@example.com'
user1.name = 'Alice Example'
user2 = Readiness::Zendesk::Users.find!(client, 456)
user2.name = 'Bob Example'
users = [user1, user2]
creates = Readiness::Zendesk::Users.create_or_update_many!(client, users)
pp creates.id
# => "82de0b044094f0c67893ac9fe64f1a99"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



739
740
741
742
743
744
# File 'lib/support_readiness/zendesk/users.rb', line 739

def self.create_or_update_many!(client, users)
  data = { users: users.map { |u| to_hash(u).compact } }.to_json
  response = client.connection.put('users/create_or_update_many', data)
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create or update many users', message: Oj.load(response.body)}) unless response.status == 200
  JobStatuses.new(Oj.load(response.body)['job_status'])
end

.delete!(client, user) ⇒ Boolean

Deletes an user. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 9873843)
delete = Readiness::Zendesk::Users.delete!(client, user)
pp delete
# => true

Parameters:

Returns:

  • (Boolean)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



359
360
361
362
363
# File 'lib/support_readiness/zendesk/users.rb', line 359

def self.delete!(client, user)
  response = client.connection.delete "users/#{user.id}"
  handle_request_error(1, 'Zendesk', response.status, { action: 'Delete an user', id: user.id, message: Oj.load(response.body)}) unless response.status == 204
  true
end

.delete_many!(client, uids) ⇒ object

Deletes multiple users via a batch job

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
delete = Readiness::Zendesk::Users.delete_many!(client, [35436, 35437])
pp delete.id
# => "82de0b044094f0c67893ac9fe64f1a99"

Parameters:

  • client (Object)

    An instance of Client

  • uids (Array)

    An array of user IDs

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



796
797
798
799
800
# File 'lib/support_readiness/zendesk/users.rb', line 796

def self.delete_many!(client, uids)
  response = client.connection.delete("users/destroy_many?ids=#{uids.join(',')}")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Delete many users', message: Oj.load(response.body)}) unless response.status == 200
  JobStatuses.new(Oj.load(response.body)['job_status'])
end

.delete_permanently!(client, uid) ⇒ Hash

Deletes a deleted user. This will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
delete = Readiness::Zendesk::Users.delete_permanently!(client, 9873843)
pp delete.id
# => 189304711533

Parameters:

  • client (Object)

    An instance of Client

  • uid (Integer)

    The deleted user’s ID

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



384
385
386
387
388
# File 'lib/support_readiness/zendesk/users.rb', line 384

def self.delete_permanently!(client, uid)
  response = client.connection.delete "deleted_users/#{uid}"
  handle_request_error(1, 'Zendesk', response.status, { action: 'Delete user permanently', id: uid, message: Oj.load(response.body)}) unless response.status == 200
  Oj.load(response.body)['deleted_user']
end

.deleted_count(client) ⇒ Hash

Show information on the approximate count of deleted users.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
deletes = Readiness::Zendesk::Users.deleted_count(client)
pp deletes['value']
# => 13

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



468
469
470
471
472
# File 'lib/support_readiness/zendesk/users.rb', line 468

def self.deleted_count(client)
  response = client.connection.get('deleted_users/count')
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['count']
end

.find(client, uid) ⇒ Object

Locates an user within Zendesk. This will not exit on error (except Authentication errors)

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find(client, 35436)
pp email.email
# => "johny_agent@example.com"

Parameters:

  • client (Object)

    An instance of Client

  • uid (Integer)

    The user ID to find

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



178
179
180
181
182
183
184
# File 'lib/support_readiness/zendesk/users.rb', line 178

def self.find(client, uid)
  response = client.connection.get("users/#{uid}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: uid }) unless response.status == 200
  return Users.new(Oj.load(response.body)['user']) if response.status == 200

  Oj.load(response.body)
end

.find!(client, uid) ⇒ Object

Locates an user within Zendesk. This will exit on error

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 35436)
pp email.email
# => "johny_agent@example.com"

Parameters:

  • client (Object)

    An instance of Client

  • uid (Integer)

    The user ID to find

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



205
206
207
208
209
# File 'lib/support_readiness/zendesk/users.rb', line 205

def self.find!(client, uid)
  response = client.connection.get("users/#{uid}")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Find user', id: uid }) unless response.status == 200
  Users.new(Oj.load(response.body)['user'])
end

.find_deleted!(client, did) ⇒ Hash

Show information on a deleted user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
deleted = Readiness::Zendesk::Users.find_deleted!(client, 189304711533)
pp deleted['name']
# => "David"

Parameters:

  • client (Object)

    An instance of Client

  • did (Integer)

    The deleted user’s ID

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



493
494
495
496
497
# File 'lib/support_readiness/zendesk/users.rb', line 493

def self.find_deleted!(client, did)
  response = client.connection.get("deleted_users/#{did}")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['deleted_user']
end

.find_many(client, uids) ⇒ Array

Locates up to 100 users within Zendesk.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
users = Readiness::Zendesk::Users.find!(client, [35436, 35436])
pp users.count
# => 2

Parameters:

  • client (Object)

    An instance of Client

  • uids (Array)

    The user IDs to find

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



230
231
232
233
234
# File 'lib/support_readiness/zendesk/users.rb', line 230

def self.find_many(client, uids)
  response = client.connection.get("users/show_many?ids=#{uids.join(',')}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: uids }) unless response.status == 200
  Oj.load(response.body)['users'].map { |o| Users.new(o) }
end

.group_memberships(client, user) ⇒ Array

Lists group memberships for a user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123)
members = Readiness::Zendesk::Users.group_memberships(client, user)
pp members.first.group_id
# => 456

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



885
886
887
888
889
# File 'lib/support_readiness/zendesk/users.rb', line 885

def self.group_memberships(client, user)
  response = client.connection.get("users/#{user.id}/group_memberships?page[size]=100")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['group_memberships'].map { |m| GroupMemberships.new(m) }
end

.list(client, permission_set = false, roles = []) ⇒ Array

Lists the first 100 users

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
users = Readiness::Zendesk::Users.list(client)
pp users.first.name
# => "Johnny Agent"

Parameters:

  • client (Object)

    An instance of Client

  • permission_set (Integer) (defaults to: false)

    The custom_role_id to use in the listing. Set to false to show all.

  • roles (Array) (defaults to: [])

    The roles to use in the listing. Leave blank to show all.

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



81
82
83
84
85
86
87
88
# File 'lib/support_readiness/zendesk/users.rb', line 81

def self.list(client, permission_set = false, roles = [])
  opts = ''
  opts += "&permission_set=#{permission_set}" if permission_set
  opts += roles.map { |r| "&role[]=#{r}" }.join('') unless roles.count.zero?
  response = client.connection.get("users?page[size]=100&#{opts}")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['users'].map { |u| Users.new(u) }
end

.list_deleted(client) ⇒ Array

Lists the first 100 deleted users

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
deletes = Readiness::Zendesk::Users.list_deleted(client)
pp deletes.first.id
# => 189304711533

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



408
409
410
411
412
# File 'lib/support_readiness/zendesk/users.rb', line 408

def self.list_deleted(client)
  response = client.connection.get("deleted_users?page[size]=100")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['deleted_users']
end

.list_many(client, limit = 0, permission_set = false, roles = []) ⇒ Array

Lists many users. Does not stop until it ends or the page limit is hit. This method can take a long time to run depending on the parameters used.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
users = Readiness::Zendesk::Users.list_many(client, 15)
pp users.count
# => 1500

Parameters:

  • client (Object)

    An instance of Client

  • limit (Integer) (defaults to: 0)

    The number of pages to stop at. Using 0 means to list all.

  • permission_set (Integer) (defaults to: false)

    The custom_role_id to use in the listing. Set to false to show all.

  • roles (Array) (defaults to: [])

    The roles to use in the listing. Leave blank to show all.

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
# File 'lib/support_readiness/zendesk/users.rb', line 112

def self.list_many(client, limit = 0, permission_set = false, roles = [])
  array = []
  opts = "page[size]=100"
  opts += "&permission_set=#{permission_set}" if permission_set
  opts += roles.map { |r| "&role[]=#{r}" }.join('') unless roles.count.zero?
  loop do
    response = client.connection.get("users?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['users'].map { |u| Users.new(u) }
    break if limit != 0 && array.count >= (limit * 100)
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.list_many_deleted(client, limit = 0, permission_set = false) ⇒ Array

Lists many deleted users. Does not stop until it ends or the page limit is hit. This method can take a long time to run depending on the parameters used.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
deletes = Readiness::Zendesk::Users.list_many_deleted(client, 7)
pp deletes.count
# => 700

Parameters:

  • client (Object)

    An instance of Client

  • limit (Integer) (defaults to: 0)

    The number of pages to stop at. Using 0 means to list all.

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
# File 'lib/support_readiness/zendesk/users.rb', line 434

def self.list_many_deleted(client, limit = 0, permission_set = false)
  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("deleted_users?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['deleted_users']
    break if limit != 0 && array.count >= (limit * 100)
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.logout_many(client, uids) ⇒ Hash

Force logs out users

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
log_out = Readiness::Zendesk::Users.logout_many(client, [1, 2])
pp log_out
# => true

Parameters:

  • client (Object)

    An instance of Client

  • uids (Array)

    An array of user IDs

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



518
519
520
521
522
# File 'lib/support_readiness/zendesk/users.rb', line 518

def self.logout_many(client, uids)
  response = client.connection.get("users/logout_many?ids=#{uids.join(',')}")
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 202
  true
end

.organization(client, user) ⇒ Object

Lists organization a user is part of.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123456)
organization = Readiness::Zendesk::Users.organization(client, user)
pp organization.name
# => "Groablet Enterprises"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



675
676
677
678
679
# File 'lib/support_readiness/zendesk/users.rb', line 675

def self.organization(client, user)
  return nil if user.organization_id.nil?

  Organizations.find(client, user.organization_id)
end

.organization_memberships(client, user) ⇒ Array

Lists organization memberships for a user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123)
members = Readiness::Zendesk::Users.organization_memberships(client, user)
pp members.first.organization_id
# => 456

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



822
823
824
825
826
827
828
829
830
831
832
833
834
835
# File 'lib/support_readiness/zendesk/users.rb', line 822

def self.organization_memberships(client, user)
  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("users/#{user.id}/organization_memberships?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['organization_memberships'].map { |o| OrganizationMemberships.new(o) }
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.set_default_group!(client, user, membership) ⇒ Array

Sets the default group membership of a given user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123)
membership = Readiness::Zendesk::Users.group_memberships(client, user).last
member = Readiness::Zendesk::Users.set_default_group!(client, user, membership)
pp member.id
# => 4

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



913
914
915
916
917
# File 'lib/support_readiness/zendesk/users.rb', line 913

def self.set_default_group!(client, user, membership)
  response = client.connection.put("users/#{user.id}/group_memberships/#{membership.id}/make_default")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Set group as default', message: Oj.load(response.body)}) unless response.status == 200
  GroupMemberships.new(Oj.load(response.body)['group_memberships'])
end

.set_default_organization!(client, user, membership) ⇒ Array

Sets the default organization membership of a given user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123)
membership = Readiness::Zendesk::Users.organization_memberships(client, user).last
member = Readiness::Zendesk::Users.set_default_organization!(client, user, membership)
pp member.id
# => 4

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



859
860
861
862
863
# File 'lib/support_readiness/zendesk/users.rb', line 859

def self.set_default_organization!(client, user, membership)
  response = client.connection.put("users/#{user.id}/organization_memberships/#{membership.id}/make_default")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Set org as default', message: Oj.load(response.body)}) unless response.status == 200
  OrganizationMemberships.new(Oj.load(response.body)['organization_membership'])
end

.set_password!(client, user, password) ⇒ Array

Sets the password for a user

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123)
action = Readiness::Zendesk::Users.set_password!(client, user, 'test123!')
pp action
# => true

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



940
941
942
943
944
# File 'lib/support_readiness/zendesk/users.rb', line 940

def self.set_password!(client, user, password)
  response = client.connection.post "users/#{user.id}/password", { password: password }.to_json
  handle_request_error(1, 'Zendesk', response.status, { action: 'Set user password', id: user.id, message: Oj.load(response.body)}) unless response.status == 200
  true
end

.tickets(client, user) ⇒ Array

Lists requests for an user.

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 123456)
tickets = Readiness::Zendesk::Users.tickets(client, user)
pp tickets.count
# => 10

Parameters:

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



568
569
570
571
572
573
574
575
576
577
578
579
580
581
# File 'lib/support_readiness/zendesk/users.rb', line 568

def self.tickets(client, user)
  array = []
  opts = "page[size]=100"
  loop do
    response = client.connection.get("users/#{user.id}/tickets/requested?#{opts}")
    handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
    body = Oj.load(response.body)
    array += body['tickets'].map { |t| Tickets.new(t) }
    break unless body['meta']['has_more']

    opts = body['links'] ['next'].split('?').last
  end
  array
end

.update!(client, user) ⇒ Object

Updates an user. Will exit if unsuccessful

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user = Readiness::Zendesk::Users.find!(client, 9873843)
user.name = 'Roger Wilco II'
update = Readiness::Zendesk::Users.update!(client, user)
pp update.name
# => "Roger Wilco II"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



333
334
335
336
337
# File 'lib/support_readiness/zendesk/users.rb', line 333

def self.update!(client, user)
  response = client.connection.put "users/#{user.id}", to_clean_json_with_key(user, 'user')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Update user', id: user.id, message: Oj.load(response.body)}) unless response.status == 200
  Users.new(Oj.load(response.body)['user'])
end

.update_many!(client, users) ⇒ object

Updates multiple users via a batch job

Examples:

require 'support_readiness'
config = Readiness::Zendesk::Configuration.new
config.username = 'alice@example.com'
config.token = 'test123abc'
config.url = 'https://example.zendesk.com/api/v2'
client = Readiness::Zendesk::Client.new(config)
user1 = Readiness::Zendesk::Users.find!(client, 123)
user1.name = 'Alice Example'
user2 = Readiness::Zendesk::Users.find!(client, 456)
user2.name = 'Bob Example'
users = [user1, user2]
updates = Readiness::Zendesk::Users.update_many!(client, users)
pp updates.id
# => "82de0b044094f0c67893ac9fe64f1a99"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



770
771
772
773
774
775
# File 'lib/support_readiness/zendesk/users.rb', line 770

def self.update_many!(client, users)
  data = { users: users.map { |u| to_hash(u).compact } }.to_json
  response = client.connection.post('users/update_many', data)
  handle_request_error(1, 'Zendesk', response.status, { action: 'Update many users', message: Oj.load(response.body)}) unless response.status == 200
  JobStatuses.new(Oj.load(response.body)['job_status'])
end