zendesk2 1.4.2 → 1.5.3
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/README.md +7 -1
- data/lib/zendesk2/attributes.rb +1 -1
- data/lib/zendesk2/{collection.rb → client/collection.rb} +22 -17
- data/lib/zendesk2/client/collections/categories.rb +2 -1
- data/lib/zendesk2/client/collections/forums.rb +2 -1
- data/lib/zendesk2/client/collections/groups.rb +4 -3
- data/lib/zendesk2/client/collections/help_center/articles.rb +2 -1
- data/lib/zendesk2/client/collections/help_center/categories.rb +2 -1
- data/lib/zendesk2/client/collections/help_center/sections.rb +2 -1
- data/lib/zendesk2/client/collections/memberships.rb +9 -7
- data/lib/zendesk2/client/collections/organizations.rb +3 -2
- data/lib/zendesk2/client/collections/ticket_audits.rb +5 -4
- data/lib/zendesk2/client/collections/ticket_comments.rb +4 -3
- data/lib/zendesk2/client/collections/ticket_fields.rb +3 -1
- data/lib/zendesk2/client/collections/tickets.rb +2 -1
- data/lib/zendesk2/client/collections/topic_comments.rb +2 -1
- data/lib/zendesk2/client/collections/topics.rb +2 -1
- data/lib/zendesk2/client/collections/user_fields.rb +3 -1
- data/lib/zendesk2/client/collections/user_identities.rb +3 -1
- data/lib/zendesk2/client/collections/users.rb +3 -2
- data/lib/zendesk2/client/help_center.rb +3 -0
- data/lib/zendesk2/client/mock.rb +7 -130
- data/lib/zendesk2/{model.rb → client/model.rb} +7 -3
- data/lib/zendesk2/client/models/audit_event.rb +2 -2
- data/lib/zendesk2/client/models/category.rb +8 -8
- data/lib/zendesk2/client/models/forum.rb +11 -16
- data/lib/zendesk2/client/models/group.rb +8 -13
- data/lib/zendesk2/client/models/help_center/article.rb +12 -16
- data/lib/zendesk2/client/models/help_center/category.rb +12 -16
- data/lib/zendesk2/client/models/help_center/section.rb +12 -16
- data/lib/zendesk2/client/models/membership.rb +10 -12
- data/lib/zendesk2/client/models/organization.rb +13 -20
- data/lib/zendesk2/client/models/ticket.rb +21 -19
- data/lib/zendesk2/client/models/ticket_audit.rb +3 -3
- data/lib/zendesk2/client/models/ticket_comment.rb +1 -1
- data/lib/zendesk2/client/models/ticket_comment_privacy_change.rb +1 -1
- data/lib/zendesk2/client/models/ticket_field.rb +5 -13
- data/lib/zendesk2/client/models/ticket_metric.rb +1 -1
- data/lib/zendesk2/client/models/ticket_voice_comment.rb +1 -1
- data/lib/zendesk2/client/models/topic.rb +9 -14
- data/lib/zendesk2/client/models/topic_comment.rb +14 -19
- data/lib/zendesk2/client/models/user.rb +25 -32
- data/lib/zendesk2/client/models/user_field.rb +10 -18
- data/lib/zendesk2/client/models/user_identity.rb +9 -18
- data/lib/zendesk2/client/real.rb +7 -8
- data/lib/zendesk2/client/request.rb +271 -0
- data/lib/zendesk2/client/requests/create_category.rb +19 -27
- data/lib/zendesk2/client/requests/create_forum.rb +23 -28
- data/lib/zendesk2/client/requests/create_group.rb +25 -29
- data/lib/zendesk2/client/requests/create_help_center_article.rb +54 -60
- data/lib/zendesk2/client/requests/create_help_center_category.rb +35 -47
- data/lib/zendesk2/client/requests/create_help_center_section.rb +49 -55
- data/lib/zendesk2/client/requests/create_membership.rb +42 -42
- data/lib/zendesk2/client/requests/create_organization.rb +30 -40
- data/lib/zendesk2/client/requests/create_ticket.rb +76 -85
- data/lib/zendesk2/client/requests/create_ticket_field.rb +36 -40
- data/lib/zendesk2/client/requests/create_topic.rb +23 -28
- data/lib/zendesk2/client/requests/create_topic_comment.rb +27 -31
- data/lib/zendesk2/client/requests/create_user.rb +51 -56
- data/lib/zendesk2/client/requests/create_user_field.rb +36 -40
- data/lib/zendesk2/client/requests/create_user_identity.rb +39 -44
- data/lib/zendesk2/client/requests/destroy_category.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_forum.rb +8 -23
- data/lib/zendesk2/client/requests/destroy_group.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_help_center_article.rb +8 -18
- data/lib/zendesk2/client/requests/destroy_help_center_category.rb +8 -18
- data/lib/zendesk2/client/requests/destroy_help_center_section.rb +10 -18
- data/lib/zendesk2/client/requests/destroy_membership.rb +8 -22
- data/lib/zendesk2/client/requests/destroy_organization.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_ticket.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_ticket_field.rb +8 -21
- data/lib/zendesk2/client/requests/destroy_topic.rb +8 -23
- data/lib/zendesk2/client/requests/destroy_topic_comment.rb +11 -24
- data/lib/zendesk2/client/requests/destroy_user.rb +17 -43
- data/lib/zendesk2/client/requests/destroy_user_field.rb +7 -22
- data/lib/zendesk2/client/requests/destroy_user_identity.rb +10 -25
- data/lib/zendesk2/client/requests/get_assignable_groups.rb +8 -16
- data/lib/zendesk2/client/requests/get_categories.rb +7 -15
- data/lib/zendesk2/client/requests/get_category.rb +11 -22
- data/lib/zendesk2/client/requests/get_ccd_tickets.rb +11 -18
- data/lib/zendesk2/client/requests/get_current_user.rb +6 -16
- data/lib/zendesk2/client/requests/get_forum.rb +11 -23
- data/lib/zendesk2/client/requests/get_forums.rb +7 -15
- data/lib/zendesk2/client/requests/get_group.rb +9 -23
- data/lib/zendesk2/client/requests/get_groups.rb +7 -15
- data/lib/zendesk2/client/requests/get_help_center_article.rb +13 -37
- data/lib/zendesk2/client/requests/get_help_center_articles.rb +6 -15
- data/lib/zendesk2/client/requests/get_help_center_categories.rb +6 -15
- data/lib/zendesk2/client/requests/get_help_center_category.rb +13 -37
- data/lib/zendesk2/client/requests/get_help_center_section.rb +14 -37
- data/lib/zendesk2/client/requests/get_help_center_sections.rb +6 -15
- data/lib/zendesk2/client/requests/get_membership.rb +9 -24
- data/lib/zendesk2/client/requests/get_organization.rb +9 -22
- data/lib/zendesk2/client/requests/get_organization_by_external_id.rb +11 -20
- data/lib/zendesk2/client/requests/get_organization_memberships.rb +10 -16
- data/lib/zendesk2/client/requests/get_organization_tickets.rb +14 -21
- data/lib/zendesk2/client/requests/get_organization_users.rb +12 -20
- data/lib/zendesk2/client/requests/get_organizations.rb +7 -16
- data/lib/zendesk2/client/requests/get_requested_tickets.rb +12 -18
- data/lib/zendesk2/client/requests/get_ticket.rb +9 -23
- data/lib/zendesk2/client/requests/get_ticket_audits.rb +12 -18
- data/lib/zendesk2/client/requests/get_ticket_comments.rb +10 -19
- data/lib/zendesk2/client/requests/get_ticket_field.rb +9 -22
- data/lib/zendesk2/client/requests/get_ticket_fields.rb +7 -15
- data/lib/zendesk2/client/requests/get_tickets.rb +7 -15
- data/lib/zendesk2/client/requests/get_topic.rb +8 -23
- data/lib/zendesk2/client/requests/get_topic_comment.rb +12 -28
- data/lib/zendesk2/client/requests/get_topic_comments.rb +13 -18
- data/lib/zendesk2/client/requests/get_topics.rb +6 -15
- data/lib/zendesk2/client/requests/get_user.rb +15 -28
- data/lib/zendesk2/client/requests/get_user_field.rb +9 -22
- data/lib/zendesk2/client/requests/get_user_identities.rb +11 -18
- data/lib/zendesk2/client/requests/get_user_identity.rb +11 -21
- data/lib/zendesk2/client/requests/get_user_memberships.rb +12 -18
- data/lib/zendesk2/client/requests/get_users.rb +7 -15
- data/lib/zendesk2/client/requests/mark_membership_default.rb +17 -28
- data/lib/zendesk2/client/requests/mark_user_identity_primary.rb +17 -30
- data/lib/zendesk2/client/requests/search.rb +30 -19
- data/lib/zendesk2/client/requests/search_help_center_articles.rb +22 -18
- data/lib/zendesk2/client/requests/search_organization.rb +40 -28
- data/lib/zendesk2/client/requests/search_user.rb +56 -44
- data/lib/zendesk2/client/requests/update_category.rb +14 -24
- data/lib/zendesk2/client/requests/update_forum.rb +13 -25
- data/lib/zendesk2/client/requests/update_group.rb +12 -24
- data/lib/zendesk2/client/requests/update_help_center_article.rb +17 -42
- data/lib/zendesk2/client/requests/update_help_center_category.rb +17 -42
- data/lib/zendesk2/client/requests/update_help_center_section.rb +17 -42
- data/lib/zendesk2/client/requests/update_organization.rb +23 -35
- data/lib/zendesk2/client/requests/update_ticket.rb +63 -63
- data/lib/zendesk2/client/requests/update_ticket_field.rb +12 -24
- data/lib/zendesk2/client/requests/update_topic.rb +11 -25
- data/lib/zendesk2/client/requests/update_user.rb +47 -62
- data/lib/zendesk2/client/requests/update_user_field.rb +11 -23
- data/lib/zendesk2/client/requests/update_user_identity.rb +20 -28
- data/lib/zendesk2/client.rb +52 -28
- data/lib/zendesk2/paged_collection.rb +9 -9
- data/lib/zendesk2/searchable.rb +1 -1
- data/lib/zendesk2/version.rb +1 -1
- data/lib/zendesk2.rb +1 -13
- data/spec/categories_spec.rb +132 -0
- data/spec/forums_spec.rb +132 -0
- data/spec/lib/paged_collection_spec.rb +2 -2
- data/spec/memberships_spec.rb +5 -9
- data/spec/organizations_spec.rb +176 -25
- data/spec/spec_helper.rb +2 -0
- data/spec/tickets_spec.rb +2 -2
- data/spec/topic_comments_spec.rb +2 -2
- data/spec/user_identities_spec.rb +9 -6
- data/spec/users_spec.rb +22 -21
- data/zendesk2.gemspec +1 -2
- metadata +7 -21
- data/lib/zendesk2/client/requests/update_topic_comment.rb +0 -37
@@ -1,5 +1,4 @@
|
|
1
|
-
|
2
|
-
class Zendesk2::Model < Cistern::Model
|
1
|
+
class Zendesk2::Client::Model
|
3
2
|
attr_accessor :errors
|
4
3
|
|
5
4
|
# @abstract override in subclass
|
@@ -29,6 +28,11 @@ class Zendesk2::Model < Cistern::Model
|
|
29
28
|
|
30
29
|
# re-define Cistern::Attributes#missing_attributes to require non-blank
|
31
30
|
def missing_attributes(args)
|
32
|
-
([:
|
31
|
+
([:service] | args).select{|arg| val = send("#{arg}"); val.nil? || val == "" }
|
32
|
+
end
|
33
|
+
|
34
|
+
def update!(attributes)
|
35
|
+
merge_attributes(attributes)
|
36
|
+
save!
|
33
37
|
end
|
34
38
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# @abstract subclass and implement audit event specific attributes
|
2
|
-
class Zendesk2::Client::AuditEvent <
|
2
|
+
class Zendesk2::Client::AuditEvent < Zendesk2::Client::Model
|
3
3
|
extend Zendesk2::Attributes
|
4
4
|
extend Forwardable
|
5
5
|
|
@@ -16,7 +16,7 @@ class Zendesk2::Client::AuditEvent < Cistern::Model
|
|
16
16
|
if klass = all.find{|k| k.name == event_class}
|
17
17
|
klass.new(attributes)
|
18
18
|
else # handle unrecognized audit events
|
19
|
-
attributes.reject{|k,v| k == :
|
19
|
+
attributes.reject{|k,v| k == :service}
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -1,5 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::Category < Zendesk2::Model
|
2
|
-
PARAMS = %w[id name description position]
|
1
|
+
class Zendesk2::Client::Category < Zendesk2::Client::Model
|
3
2
|
|
4
3
|
# @return [Integer] Automatically assigned during creation
|
5
4
|
identity :id, type: :integer
|
@@ -18,27 +17,28 @@ class Zendesk2::Client::Category < Zendesk2::Model
|
|
18
17
|
attribute :url, type: :string
|
19
18
|
|
20
19
|
def destroy!
|
21
|
-
requires :
|
20
|
+
requires :identity
|
22
21
|
|
23
|
-
|
22
|
+
service.destroy_category("category" => {"id" => self.identity})
|
24
23
|
end
|
25
24
|
|
26
25
|
def save!
|
27
26
|
data = if new_record?
|
28
27
|
requires :name
|
29
28
|
|
30
|
-
|
29
|
+
service.create_category(params).body["category"]
|
31
30
|
else
|
32
31
|
requires :identity
|
33
32
|
|
34
|
-
|
33
|
+
service.update_category(params).body["category"]
|
35
34
|
end
|
35
|
+
|
36
36
|
merge_attributes(data)
|
37
37
|
end
|
38
38
|
|
39
|
-
|
39
|
+
protected
|
40
40
|
|
41
41
|
def params
|
42
|
-
Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *
|
42
|
+
{"category" => Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *Zendesk2::Client::CreateCategory.accepted_attributes)}
|
43
43
|
end
|
44
44
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
class Zendesk2::Client::Forum < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::Forum < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
|
-
PARAMS = %w[id name description category_id organization_id locale_id locked position forum_type access]
|
5
|
-
|
6
4
|
identity :id, type: :integer # ro yes mandatory no Automatically assigned upon creation
|
7
5
|
attribute :url, type: :string # ro yes mandatory no The API url of this forum
|
8
6
|
attribute :name, type: :string # ro no mandatory yes The name of the forum
|
@@ -24,23 +22,20 @@ class Zendesk2::Client::Forum < Zendesk2::Model
|
|
24
22
|
def destroy!
|
25
23
|
requires :identity
|
26
24
|
|
27
|
-
|
25
|
+
service.destroy_forum("forum" => {"id" => self.identity})
|
28
26
|
end
|
29
27
|
|
30
28
|
def save!
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
end
|
38
|
-
merge_attributes(data)
|
39
|
-
end
|
29
|
+
response = if new_record?
|
30
|
+
requires :name
|
31
|
+
|
32
|
+
service.create_forum("forum" => self.attributes)
|
33
|
+
else
|
34
|
+
requires :identity
|
40
35
|
|
41
|
-
|
36
|
+
service.update_forum("forum" => self.attributes)
|
37
|
+
end
|
42
38
|
|
43
|
-
|
44
|
-
Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
|
39
|
+
merge_attributes(response.body["forum"])
|
45
40
|
end
|
46
41
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
class Zendesk2::Client::Group < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::Group < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
|
-
PARAMS = %w[name]
|
5
|
-
|
6
4
|
# @return [Integer] Automatically assigned when creating groups
|
7
5
|
identity :id, type: :integer
|
8
6
|
|
@@ -20,11 +18,13 @@ class Zendesk2::Client::Group < Zendesk2::Model
|
|
20
18
|
def save!
|
21
19
|
data = if new_record?
|
22
20
|
requires :name
|
23
|
-
|
21
|
+
|
22
|
+
service.create_group("group" => self.attributes)
|
24
23
|
else
|
25
24
|
requires :identity
|
26
|
-
|
27
|
-
|
25
|
+
|
26
|
+
service.update_group("group" => self.attributes)
|
27
|
+
end.body["group"]
|
28
28
|
|
29
29
|
merge_attributes(data)
|
30
30
|
end
|
@@ -32,17 +32,12 @@ class Zendesk2::Client::Group < Zendesk2::Model
|
|
32
32
|
def destroy!
|
33
33
|
requires :identity
|
34
34
|
|
35
|
-
|
35
|
+
service.destroy_group("group" => {"id" => self.identity})
|
36
|
+
|
36
37
|
self.deleted = true
|
37
38
|
end
|
38
39
|
|
39
40
|
def destroyed?
|
40
41
|
self.deleted
|
41
42
|
end
|
42
|
-
|
43
|
-
private
|
44
|
-
|
45
|
-
def params
|
46
|
-
Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
|
47
|
-
end
|
48
43
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::HelpCenter::Article < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::HelpCenter::Article < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
4
|
# @return [Integer] Automatically assigned when the article is created
|
@@ -44,26 +44,22 @@ class Zendesk2::Client::HelpCenter::Article < Zendesk2::Model
|
|
44
44
|
assoc_accessor :section, collection: :help_center_sections
|
45
45
|
|
46
46
|
def save!
|
47
|
-
|
47
|
+
response = if new_record?
|
48
|
+
requires :title, :locale, :section_id
|
48
49
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
connection.update_help_center_article(dirty_attributes.merge("id" => self.identity)).body["article"]
|
53
|
-
end
|
50
|
+
service.create_help_center_article("article" => self.attributes)
|
51
|
+
else
|
52
|
+
requires :identity
|
54
53
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
def destroy!
|
59
|
-
requires :id
|
54
|
+
service.update_help_center_article("article" => self.attributes)
|
55
|
+
end
|
60
56
|
|
61
|
-
|
57
|
+
merge_attributes(response.body["article"])
|
62
58
|
end
|
63
59
|
|
64
|
-
|
60
|
+
def destroy!
|
61
|
+
requires :identity
|
65
62
|
|
66
|
-
|
67
|
-
Cistern::Hash.slice(self.attributes, :author_id, :body, :comments_disabled, :draft, :label_names, :locale, :position, :promoted, :section_id, :title)
|
63
|
+
service.destroy_help_center_article("article" => { "id" => self.identity })
|
68
64
|
end
|
69
65
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::HelpCenter::Category < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::HelpCenter::Category < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
4
|
# @return [Integer] Automatically assigned when creating categories
|
@@ -28,26 +28,22 @@ class Zendesk2::Client::HelpCenter::Category < Zendesk2::Model
|
|
28
28
|
attribute :url, type: :string # ro:yes required:no
|
29
29
|
|
30
30
|
def save!
|
31
|
-
|
31
|
+
response = if new_record?
|
32
|
+
requires :name, :locale
|
32
33
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
connection.update_help_center_category(dirty_attributes.merge("id" => self.identity)).body["category"]
|
37
|
-
end
|
34
|
+
service.create_help_center_category("category" => self.attributes)
|
35
|
+
else
|
36
|
+
requires :identity
|
38
37
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
def destroy!
|
43
|
-
requires :id
|
38
|
+
service.update_help_center_category("category" => self.attributes)
|
39
|
+
end
|
44
40
|
|
45
|
-
|
41
|
+
merge_attributes(response.body["category"])
|
46
42
|
end
|
47
43
|
|
48
|
-
|
44
|
+
def destroy!
|
45
|
+
requires :identity
|
49
46
|
|
50
|
-
|
51
|
-
Cistern::Hash.slice(self.attributes, :category_id, :description, :locale, :name, :position, :sorting)
|
47
|
+
service.destroy_help_center_category("category" => { "id" => self.identity })
|
52
48
|
end
|
53
49
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::HelpCenter::Section < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::HelpCenter::Section < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
4
|
# @return [Integer] Automatically assigned when creating subscriptions
|
@@ -35,26 +35,22 @@ class Zendesk2::Client::HelpCenter::Section < Zendesk2::Model
|
|
35
35
|
assoc_accessor :category, collection: :help_center_categories
|
36
36
|
|
37
37
|
def save!
|
38
|
-
|
38
|
+
response = if new_record?
|
39
|
+
requires :name, :locale, :category_id
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
connection.update_help_center_section(dirty_attributes.merge("id" => self.identity)).body["section"]
|
44
|
-
end
|
41
|
+
service.create_help_center_section("section" => self.attributes)
|
42
|
+
else
|
43
|
+
requires :identity
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
def destroy!
|
50
|
-
requires :id
|
45
|
+
service.update_help_center_section("section" => self.attributes)
|
46
|
+
end
|
51
47
|
|
52
|
-
|
48
|
+
merge_attributes(response.body["section"])
|
53
49
|
end
|
54
50
|
|
55
|
-
|
51
|
+
def destroy!
|
52
|
+
requires :identity
|
56
53
|
|
57
|
-
|
58
|
-
Cistern::Hash.slice(self.attributes, :category_id, :description, :locale, :name, :position, :sorting)
|
54
|
+
service.destroy_help_center_section("section" => { "id" => self.identity })
|
59
55
|
end
|
60
56
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
class Zendesk2::Client::Membership < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::Membership < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
|
-
PARAMS = %w[user_id organization_id default]
|
5
|
-
|
6
4
|
# @return [Integer] Automatically assigned upon creation
|
7
5
|
identity :id, type: :integer
|
8
6
|
|
@@ -26,31 +24,31 @@ class Zendesk2::Client::Membership < Zendesk2::Model
|
|
26
24
|
data = if new_record?
|
27
25
|
requires :organization_id, :user_id
|
28
26
|
|
29
|
-
|
27
|
+
service.create_membership("membership" => self.attributes).body["organization_membership"]
|
30
28
|
else
|
31
29
|
requires :identity
|
32
30
|
|
33
31
|
raise ArgumentError, "update not implemented"
|
34
32
|
end
|
33
|
+
|
35
34
|
merge_attributes(data)
|
36
35
|
end
|
37
36
|
|
38
37
|
def destroy!
|
39
38
|
requires :identity
|
40
39
|
|
41
|
-
|
40
|
+
service.destroy_membership("membership" => { "id" => self.identity })
|
42
41
|
end
|
43
42
|
|
44
43
|
def default!
|
45
44
|
requires :identity, :user_id
|
46
45
|
|
47
|
-
self.
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
46
|
+
self.service.mark_membership_default(
|
47
|
+
"membership" => {
|
48
|
+
"user_id" => self.user_id,
|
49
|
+
"id" => self.identity
|
50
|
+
})
|
52
51
|
|
53
|
-
|
54
|
-
Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
|
52
|
+
self.default = true
|
55
53
|
end
|
56
54
|
end
|
@@ -1,5 +1,4 @@
|
|
1
|
-
class Zendesk2::Client::Organization < Zendesk2::Model
|
2
|
-
PARAMS = %w[id details domain_names external_id group_id organization_fields shared_comments shared_tickets tags name notes]
|
1
|
+
class Zendesk2::Client::Organization < Zendesk2::Client::Model
|
3
2
|
|
4
3
|
# @return [integer] Automatically assigned when creating organization
|
5
4
|
identity :id, type: :integer # ro[yes] required[no]
|
@@ -34,51 +33,45 @@ class Zendesk2::Client::Organization < Zendesk2::Model
|
|
34
33
|
def destroy!
|
35
34
|
requires :identity
|
36
35
|
|
37
|
-
|
36
|
+
service.destroy_organization("organization" => {"id" => self.identity})
|
38
37
|
end
|
39
38
|
|
40
39
|
def save!
|
41
40
|
data = if new_record?
|
42
41
|
requires :name
|
43
42
|
|
44
|
-
|
43
|
+
service.create_organization("organization" => self.attributes)
|
45
44
|
else
|
46
45
|
requires :identity
|
47
46
|
|
48
|
-
|
49
|
-
end
|
47
|
+
service.update_organization("organization" => self.attributes)
|
48
|
+
end.body["organization"]
|
49
|
+
|
50
50
|
merge_attributes(data)
|
51
51
|
end
|
52
52
|
|
53
53
|
# @return [Zendesk2::Client::Users] users associated with this organization
|
54
54
|
def users
|
55
55
|
requires :identity
|
56
|
-
data = connection.get_organization_users("id" => self.identity).body["users"]
|
57
56
|
|
58
|
-
|
57
|
+
service.users.load(
|
58
|
+
service.get_organization_users("organization" => {"id" => self.identity}).body["users"]
|
59
|
+
)
|
59
60
|
end
|
60
61
|
|
61
62
|
# @return [Zendesk2::Client::Memberships] memberships associated with this organization
|
62
63
|
def memberships
|
63
64
|
requires :identity
|
64
65
|
|
65
|
-
|
66
|
+
service.memberships(organization: self)
|
66
67
|
end
|
67
68
|
|
68
69
|
# @return [Zendesk2::Client::Tickets] tickets associated with this organization
|
69
70
|
def tickets
|
70
71
|
requires :identity
|
71
|
-
data = connection.get_organization_tickets("id" => self.identity).body["tickets"]
|
72
|
-
|
73
|
-
connection.tickets.load(data)
|
74
|
-
end
|
75
|
-
|
76
|
-
private
|
77
72
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
writable_attributes.delete("group_id") if writable_attributes["group_id"].to_s == "0"
|
82
|
-
writable_attributes
|
73
|
+
service.tickets.load(
|
74
|
+
service.get_organization_tickets("organization_id" => self.identity).body["tickets"]
|
75
|
+
)
|
83
76
|
end
|
84
77
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
class Zendesk2::Client::Ticket < Zendesk2::Model
|
1
|
+
class Zendesk2::Client::Ticket < Zendesk2::Client::Model
|
2
2
|
extend Zendesk2::Attributes
|
3
3
|
|
4
|
-
PARAMS = %w[external_id via priority requester_id submitter_id assignee_id organization_id subject description custom_fields recipient status collaborator_ids tags]
|
5
|
-
|
6
4
|
# @return [Integer] Automatically assigned when creating tickets
|
7
5
|
identity :id, type: :integer
|
8
6
|
# @return [Integer] What agent is currently assigned to the ticket
|
@@ -67,13 +65,17 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
|
|
67
65
|
data = if new_record?
|
68
66
|
requires :subject, :description
|
69
67
|
|
70
|
-
|
68
|
+
create_attributes = self.attributes.dup
|
69
|
+
|
70
|
+
if with_requester = (@requester || nil) && Zendesk2.stringify_keys(@requester)
|
71
|
+
create_attributes.merge!("requester" => with_requester)
|
72
|
+
end
|
71
73
|
|
72
|
-
|
74
|
+
service.create_ticket("ticket" => create_attributes).body["ticket"]
|
73
75
|
else
|
74
76
|
requires :identity
|
75
77
|
|
76
|
-
|
78
|
+
service.update_ticket("ticket" => self.attributes).body["ticket"]
|
77
79
|
end
|
78
80
|
|
79
81
|
merge_attributes(data)
|
@@ -82,7 +84,7 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
|
|
82
84
|
def destroy!
|
83
85
|
requires :identity
|
84
86
|
|
85
|
-
|
87
|
+
service.destroy_ticket("ticket" => {"id" => self.identity})
|
86
88
|
end
|
87
89
|
|
88
90
|
# Adds a ticket comment
|
@@ -96,16 +98,22 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
|
|
96
98
|
requires :identity
|
97
99
|
|
98
100
|
options[:public] = true if options[:public].nil?
|
101
|
+
|
99
102
|
comment = Zendesk2.stringify_keys(options).merge("body" => text)
|
100
103
|
|
101
|
-
|
102
|
-
|
104
|
+
service.ticket_comments.new(
|
105
|
+
service.update_ticket(
|
106
|
+
"ticket" => {
|
107
|
+
"id" => self.identity,
|
108
|
+
"comment" => comment,
|
109
|
+
}
|
110
|
+
).body["audit"]["events"].first
|
103
111
|
)
|
104
112
|
end
|
105
113
|
|
106
114
|
# @return [Array<Zendesk2::Client::User>] All users CCD on this ticket
|
107
115
|
def collaborators
|
108
|
-
self.collaborator_ids.map{|cid| self.
|
116
|
+
self.collaborator_ids.map { |cid| self.service.users.get(cid) }
|
109
117
|
end
|
110
118
|
|
111
119
|
# Update list of users to be CCD on this ticket
|
@@ -116,22 +124,16 @@ class Zendesk2::Client::Ticket < Zendesk2::Model
|
|
116
124
|
|
117
125
|
# @return [Zendesk2::Client::TicketAudits] all audits for this ticket
|
118
126
|
def audits
|
119
|
-
self.
|
127
|
+
self.service.ticket_audits(ticket_id: self.identity).all
|
120
128
|
end
|
121
129
|
|
122
130
|
# @return [Zendesk2::Client::TicketMetric] metrics for this ticket
|
123
131
|
def metrics
|
124
|
-
Zendesk2::Client::TicketMetric.new(self.
|
132
|
+
Zendesk2::Client::TicketMetric.new(self.service.get_ticket_metric("ticket_id" => self.identity).body["ticket_metric"])
|
125
133
|
end
|
126
134
|
|
127
135
|
# @return [Array<Zendesk2::Client::TicketComment>] all comments for this ticket
|
128
136
|
def comments
|
129
|
-
self.
|
130
|
-
end
|
131
|
-
|
132
|
-
private
|
133
|
-
|
134
|
-
def params
|
135
|
-
Cistern::Hash.slice(Zendesk2.stringify_keys(attributes), *PARAMS)
|
137
|
+
self.service.ticket_comments(ticket_id: self.identity).all
|
136
138
|
end
|
137
139
|
end
|