Class: Readiness::Zendesk::SLAs

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

Overview

Defines the class SLAs 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 = {}) ⇒ SLAs

Creates a new Readiness::Zendesk::SLAs instance

Examples:

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

Parameters:

Author:

  • Jason Colyer

Since:

  • 1.0.0



24
25
26
27
28
29
30
31
32
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 24

def initialize(object = {})
  @description = object['description']
  @filter = object['filter']
  @id = object['id']
  @metric_settings = object['metric_settings']
  @policy_metrics = object['policy_metrics']
  @position = object['position']
  @title = object['title']
end

Instance Attribute Details

#descriptionObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def description
  @description
end

#filterObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def filter
  @filter
end

#idObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def id
  @id
end

#metric_settingsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def metric_settings
  @metric_settings
end

#policy_metricsObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def policy_metrics
  @policy_metrics
end

#positionObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def position
  @position
end

#titleObject

Since:

  • 1.0.0



13
14
15
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 13

def title
  @title
end

Class Method Details

.create!(client, policy) ⇒ Object

Creates a SLA Policy. 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)
sla = Readiness::Zendesk::SLAs.new
sla.title = 'Incidents'
sla.description = 'For urgent incidents, we will respond to tickets in 10 minutes'
sla.position = 3
sla.filter = {
  all: [
    { field: 'type', operator: 'is', value: 'incident' }
  ],
  any: []
}
sla.policy_metrics = [
  { priority: 'normal', metric: 'first_reply_time', target: 30,  business_hours: false },
  { priority: 'urgent', metric: 'first_reply_time', target: 10,  business_hours: false },
  { priority: 'low', metric: 'requester_wait_time', target: 180, business_hours: false },
  { priority: 'normal', metric: 'requester_wait_time', target: 160, business_hours: false },
  { priority: 'high', metric: 'requester_wait_time', target: 140, business_hours: false },
  { priority: 'urgent', metric: 'requester_wait_time', target: 120, business_hours: false }
]
create = Readiness::Zendesk::SLAs.create!(find, sla)
pp create.id
# => 36

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



147
148
149
150
151
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 147

def self.create!(client, policy)
  response = client.connection.post 'slas/policies', to_clean_json_with_key(policy, 'sla_policy')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Create SLA Policy', message: Oj.load(response.body)}) unless response.status == 201
  SLAs.new(Oj.load(response.body)['sla_policy'])
end

.delete!(client, policy) ⇒ Boolean

Deletes a SLA Policy. 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)
sla = Readiness::Zendesk::SLAs.find!(client, 36)
delete = Readiness::Zendesk::SLAs.delete!(find, sla)
pp delete
# => true

Parameters:

Returns:

  • (Boolean)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



200
201
202
203
204
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 200

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

.find(client, sid) ⇒ Hash

Locates a SLA policy 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)
sla = Readiness::Zendesk::SLAs.find(client, 36)
pp sla.title
# => "Incidents"

Parameters:

  • client (Object)

    An instance of Client

  • sid (Integer)

    The SLA Policy ID to find

Returns:

  • (Hash)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



77
78
79
80
81
82
83
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 77

def self.find(client, sid)
  response = client.connection.get("slas/policies/#{sid}")
  handle_request_error(0, 'Zendesk', response.status,  { action: 'get', id: sid }) unless response.status == 200
  return SLAs.new(Oj.load(response.body)['sla_policy']) if response.status == 200

  Oj.load(response.body)
end

.find!(client, sid) ⇒ Object

Locates a SLA policy within 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)
sla = Readiness::Zendesk::SLAs.find!(client, 36)
pp sla.title
# => "Incidents"

Parameters:

  • client (Object)

    An instance of Client

  • sid (Integer)

    The SLA Policy ID to find

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



104
105
106
107
108
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 104

def self.find!(client, sid)
  response = client.connection.get("slas/policies/#{sid}")
  handle_request_error(1, 'Zendesk', response.status, { action: 'Find SLA Policy', id: sid }) unless response.status == 200
  SLAs.new(Oj.load(response.body)['sla_policy'])
end

.list(client) ⇒ Array

Lists the SLA policies

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)
slas = Readiness::Zendesk::SLAs.list(client)
pp slas.first.title
# => "Incidents"

Parameters:

  • client (Object)

    An instance of Client

Returns:

  • (Array)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



52
53
54
55
56
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 52

def self.list(client)
  response = client.connection.get('slas/policies')
  handle_request_error(0, 'Zendesk', response.status) unless response.status == 200
  Oj.load(response.body)['sla_policies'].map { |s| SLAs.new(s) }
end

.reorder!(client, pids) ⇒ Boolean

Reorder SLA Policies. 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)
reorder = Readiness::Zendesk::SLAs.reorder!(client, 12, 55])
pp reorder
# => true

Parameters:

  • client (Object)

    An instance of Client

  • pids (Array)

    An Array of SLA Policy IDs (order is important)

Returns:

  • (Boolean)

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



225
226
227
228
229
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 225

def self.reorder!(client, pids)
  response = client.connection.put 'slas/policies/reorder', { sla_policy_ids: pids }.to_json
  handle_request_error(1, 'Zendesk', response.status, { action: 'Reorder SLA policies', id: pids, message: Oj.load(response.body)}) unless response.status == 200
  true
end

.update!(client, policy) ⇒ Object

Updates a SLA Policy. 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)
sla = Readiness::Zendesk::SLAs.find!(client, 36)
sla.title = 'Urgent Incidents'
update = Readiness::Zendesk::SLAs.update!(find, sla)
pp update.title
# => "Urgent Incidents"

Parameters:

Returns:

See Also:

Author:

  • Jason Colyer

Since:

  • 1.0.0



174
175
176
177
178
# File 'lib/support_readiness/zendesk/sla_policies.rb', line 174

def self.update!(client, policy)
  response = client.connection.put "slas/policies/#{policy.id}", to_clean_json_with_key(policy, 'sla_policy')
  handle_request_error(1, 'Zendesk', response.status, { action: 'Update SLA Policy', id: policy.id, message: Oj.load(response.body)}) unless response.status == 200
  SLAs.new(Oj.load(response.body)['sla_policy'])
end