zendesk_api 0.1.11 → 0.2.1
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.
- data/.gitignore +3 -0
- data/.travis.yml +1 -3
- data/Gemfile +24 -0
- data/Gemfile.lock +75 -10
- data/Procfile +1 -0
- data/Rakefile +10 -3
- data/Readme.md +65 -0
- data/bin/zendesk +26 -0
- data/config.ru +6 -0
- data/config/mongoid.yml +81 -0
- data/lib/zendesk_api/actions.rb +2 -2
- data/lib/zendesk_api/collection.rb +15 -4
- data/lib/zendesk_api/console/base.rb +12 -0
- data/lib/zendesk_api/console/console.rb +144 -0
- data/lib/zendesk_api/console/extensions.rb +183 -0
- data/lib/zendesk_api/console/options.rb +41 -0
- data/lib/zendesk_api/resource.rb +12 -1
- data/lib/zendesk_api/resources.rb +28 -8
- data/lib/zendesk_api/server/base.rb +119 -0
- data/lib/zendesk_api/server/docs/account_settings.md +145 -0
- data/lib/zendesk_api/server/docs/activity_stream.md +121 -0
- data/lib/zendesk_api/server/docs/attachments.md +73 -0
- data/lib/zendesk_api/server/docs/autocomplete.md +29 -0
- data/lib/zendesk_api/server/docs/categories.md +193 -0
- data/lib/zendesk_api/server/docs/custom_roles.md +88 -0
- data/lib/zendesk_api/server/docs/forum_subscriptions.md +139 -0
- data/lib/zendesk_api/server/docs/forums.md +229 -0
- data/lib/zendesk_api/server/docs/group_memberships.md +229 -0
- data/lib/zendesk_api/server/docs/groups.md +212 -0
- data/lib/zendesk_api/server/docs/introduction.md +159 -0
- data/lib/zendesk_api/server/docs/job_statuses.md +86 -0
- data/lib/zendesk_api/server/docs/locales.md +124 -0
- data/lib/zendesk_api/server/docs/macros.md +287 -0
- data/lib/zendesk_api/server/docs/organizations.md +253 -0
- data/lib/zendesk_api/server/docs/problems.md +117 -0
- data/lib/zendesk_api/server/docs/requests.md +256 -0
- data/lib/zendesk_api/server/docs/satisfaction_ratings.md +136 -0
- data/lib/zendesk_api/server/docs/search.md +106 -0
- data/lib/zendesk_api/server/docs/sharing_agreements.md +57 -0
- data/lib/zendesk_api/server/docs/side_loading.md +125 -0
- data/lib/zendesk_api/server/docs/suspended_tickets.md +182 -0
- data/lib/zendesk_api/server/docs/tags.md +36 -0
- data/lib/zendesk_api/server/docs/ticket_audits.md +657 -0
- data/lib/zendesk_api/server/docs/ticket_export.md +121 -0
- data/lib/zendesk_api/server/docs/ticket_fields.md +277 -0
- data/lib/zendesk_api/server/docs/ticket_import.md +65 -0
- data/lib/zendesk_api/server/docs/ticket_metrics.md +125 -0
- data/lib/zendesk_api/server/docs/tickets.md +622 -0
- data/lib/zendesk_api/server/docs/topic_comments.md +221 -0
- data/lib/zendesk_api/server/docs/topic_subscriptions.md +140 -0
- data/lib/zendesk_api/server/docs/topic_votes.md +154 -0
- data/lib/zendesk_api/server/docs/topics.md +335 -0
- data/lib/zendesk_api/server/docs/triggers.md +199 -0
- data/lib/zendesk_api/server/docs/user_identities.md +279 -0
- data/lib/zendesk_api/server/docs/users.md +400 -0
- data/lib/zendesk_api/server/docs/views.md +505 -0
- data/lib/zendesk_api/server/helper.rb +104 -0
- data/lib/zendesk_api/server/html_renderer.rb +98 -0
- data/lib/zendesk_api/server/models/user_request.rb +16 -0
- data/lib/zendesk_api/server/models/zlib_json.rb +13 -0
- data/lib/zendesk_api/server/public/config.rb +26 -0
- data/lib/zendesk_api/server/public/favicon.ico +0 -0
- data/lib/zendesk_api/server/public/images/glyphicons-halflings-white.png +0 -0
- data/lib/zendesk_api/server/public/images/glyphicons-halflings.png +0 -0
- data/lib/zendesk_api/server/public/images/spinner.gif +0 -0
- data/lib/zendesk_api/server/public/images/zendesk_developers_bg.png +0 -0
- data/lib/zendesk_api/server/public/images/zendesk_developers_header.png +0 -0
- data/lib/zendesk_api/server/public/javascripts/application.js +186 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-alert.js +90 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-button.js +96 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-carousel.js +169 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-collapse.js +157 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-dropdown.js +100 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-modal.js +218 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-popover.js +98 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-scrollspy.js +151 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-tab.js +135 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-tooltip.js +275 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-transition.js +61 -0
- data/lib/zendesk_api/server/public/javascripts/bootstrap-typeahead.js +285 -0
- data/lib/zendesk_api/server/public/sass/screen.scss +102 -0
- data/lib/zendesk_api/server/public/sass/styles.scss +5 -0
- data/lib/zendesk_api/server/public/stylesheets/developer.screen.css +836 -0
- data/lib/zendesk_api/server/public/stylesheets/screen.css +129 -0
- data/lib/zendesk_api/server/public/stylesheets/styles.css +6208 -0
- data/lib/zendesk_api/server/templates/footer.haml +13 -0
- data/lib/zendesk_api/server/templates/header.haml +20 -0
- data/lib/zendesk_api/server/templates/index.haml +68 -0
- data/lib/zendesk_api/server/templates/layout.haml +44 -0
- data/lib/zendesk_api/server/templates/param.haml +4 -0
- data/lib/zendesk_api/server/templates/search.haml +23 -0
- data/lib/zendesk_api/server/templates/sidebar.haml +7 -0
- data/lib/zendesk_api/version.rb +1 -1
- data/spec/{association_spec.rb → core/association_spec.rb} +1 -1
- data/spec/{client_spec.rb → core/client_spec.rb} +1 -1
- data/spec/{collection_spec.rb → core/collection_spec.rb} +1 -1
- data/spec/{configuration_spec.rb → core/configuration_spec.rb} +1 -1
- data/spec/{create_resource_spec.rb → core/create_resource_spec.rb} +1 -1
- data/spec/{data_resource_spec.rb → core/data_resource_spec.rb} +1 -1
- data/spec/{inflection_spec.rb → core/inflection_spec.rb} +1 -1
- data/spec/{lru_cache_spec.rb → core/lru_cache_spec.rb} +1 -1
- data/spec/{middleware → core/middleware}/request/etag_cache_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/request/retry_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/request/test.jpg +0 -0
- data/spec/{middleware → core/middleware}/request/upload_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/callback_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/deflate_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/gzip_spec.rb +1 -1
- data/spec/{middleware → core/middleware}/response/parse_iso_dates_spec.rb +1 -1
- data/spec/{read_resource_spec.rb → core/read_resource_spec.rb} +1 -1
- data/spec/{rescue_spec.rb → core/rescue_spec.rb} +1 -1
- data/spec/{resource_spec.rb → core/resource_spec.rb} +1 -1
- data/spec/{search_spec.rb → core/search_spec.rb} +1 -1
- data/spec/{spec_helper.rb → core/spec_helper.rb} +5 -5
- data/spec/{trackie_spec.rb → core/trackie_spec.rb} +1 -1
- data/{live → spec/live}/Readme.md +0 -0
- data/{live → spec/live}/activity_spec.rb +1 -1
- data/{live → spec/live}/audit_spec.rb +1 -1
- data/{live → spec/live}/bookmark_spec.rb +1 -1
- data/{live → spec/live}/category_spec.rb +1 -1
- data/{live → spec/live}/collection_spec.rb +1 -1
- data/{live → spec/live}/crm_spec.rb +1 -1
- data/{live → spec/live}/custom_role_spec.rb +1 -1
- data/{live → spec/live}/forum_spec.rb +1 -1
- data/{live → spec/live}/forum_subscription_spec.rb +1 -1
- data/{live → spec/live}/group_membership_spec.rb +1 -1
- data/{live → spec/live}/group_spec.rb +1 -1
- data/{live → spec/live}/identity_spec.rb +1 -1
- data/{live → spec/live}/locale_spec.rb +1 -1
- data/{live → spec/live}/macro_spec.rb +1 -1
- data/{live → spec/live}/mobile_device_spec.rb +1 -1
- data/{live → spec/live}/organization_spec.rb +1 -1
- data/{live → spec/live}/request_spec.rb +1 -1
- data/{live → spec/live}/satisfaction_rating_spec.rb +1 -1
- data/{live → spec/live}/setting_spec.rb +1 -1
- data/{live → spec/live}/suspended_ticket_spec.rb +1 -1
- data/{live → spec/live}/ticket_field_spec.rb +1 -1
- data/{live → spec/live}/ticket_metrics_spec.rb +1 -1
- data/{live → spec/live}/ticket_spec.rb +1 -1
- data/spec/live/topic_comment_spec.rb +24 -0
- data/{live → spec/live}/topic_spec.rb +1 -1
- data/{live → spec/live}/topic_subscription_spec.rb +1 -1
- data/{live → spec/live}/topic_vote_spec.rb +1 -1
- data/{live → spec/live}/upload_spec.rb +1 -1
- data/{live → spec/live}/user_spec.rb +1 -1
- data/{live → spec/live}/view_spec.rb +1 -1
- data/spec/macros/resource_macros.rb +1 -1
- data/spec/server/app_spec.rb +140 -0
- data/spec/server/helper_spec.rb +97 -0
- data/spec/server/html_renderer_spec.rb +130 -0
- data/spec/server/spec_helper.rb +43 -0
- metadata +198 -77
- data/live/topic_comment_spec.rb +0 -13
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
require 'sinatra/base'
|
|
2
|
+
require 'sinatra/content_for'
|
|
3
|
+
require 'sinatra/reloader'
|
|
4
|
+
|
|
5
|
+
require 'compass'
|
|
6
|
+
require 'haml'
|
|
7
|
+
|
|
8
|
+
require 'coderay'
|
|
9
|
+
require 'coderay_bash'
|
|
10
|
+
|
|
11
|
+
require 'json'
|
|
12
|
+
require 'redcarpet'
|
|
13
|
+
|
|
14
|
+
require 'digest/md5'
|
|
15
|
+
|
|
16
|
+
require 'mongoid'
|
|
17
|
+
|
|
18
|
+
require 'zendesk_api/server/models/user_request'
|
|
19
|
+
Mongoid.load!(File.join(File.dirname(__FILE__), '..', '..', '..', 'config', 'mongoid.yml'))
|
|
20
|
+
|
|
21
|
+
module ZendeskAPI
|
|
22
|
+
module Server
|
|
23
|
+
require 'zendesk_api/server/helper'
|
|
24
|
+
require 'zendesk_api/server/html_renderer'
|
|
25
|
+
|
|
26
|
+
class App < Sinatra::Base
|
|
27
|
+
enable :sessions
|
|
28
|
+
|
|
29
|
+
helpers Sinatra::ContentFor
|
|
30
|
+
helpers Helper
|
|
31
|
+
|
|
32
|
+
configure do
|
|
33
|
+
set :public_folder, File.join(File.dirname(__FILE__), 'public')
|
|
34
|
+
set :views, File.join(File.dirname(__FILE__), 'templates')
|
|
35
|
+
|
|
36
|
+
set :documentation_dir, File.join(File.dirname(__FILE__), "docs")
|
|
37
|
+
|
|
38
|
+
documentation = Dir.glob(File.join(settings.documentation_dir, "*.md")).inject({}) do |docs, entry|
|
|
39
|
+
body = HtmlRenderer.render(File.open(entry, &:read))
|
|
40
|
+
headers = HtmlRenderer.markdown.renderer.headers.dup
|
|
41
|
+
|
|
42
|
+
HtmlRenderer.markdown.renderer.headers.clear
|
|
43
|
+
|
|
44
|
+
docs.merge(File.basename(entry, ".md") => { :body => body, :headers => headers })
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
set :documentation, documentation
|
|
48
|
+
set :help, documentation["introduction"][:body]
|
|
49
|
+
|
|
50
|
+
autocomplete = settings.documentation.inject([]) do |accum, (resource, content)|
|
|
51
|
+
accum.push(resource)
|
|
52
|
+
accum.concat(content[:headers].map {|header| "#{resource}##{header}"})
|
|
53
|
+
accum
|
|
54
|
+
end + ["help"]
|
|
55
|
+
|
|
56
|
+
set :autocomplete, autocomplete
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
configure :development do
|
|
60
|
+
register Sinatra::Reloader
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
get '/' do
|
|
64
|
+
haml :index, :format => :html5
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
get '/:object_id' do
|
|
68
|
+
begin
|
|
69
|
+
@user_request = UserRequest.where(:_id => Moped::BSON::ObjectId(params[:object_id])).first
|
|
70
|
+
rescue Moped::Errors::InvalidObjectId; end
|
|
71
|
+
|
|
72
|
+
if @user_request
|
|
73
|
+
params["url"] = @user_request.url
|
|
74
|
+
@path = @user_request.path
|
|
75
|
+
|
|
76
|
+
@method = @user_request.method
|
|
77
|
+
@json = @user_request.json
|
|
78
|
+
@url_params = @user_request.url_params
|
|
79
|
+
|
|
80
|
+
set_request(@user_request.request) unless @user_request.request.empty?
|
|
81
|
+
set_response(@user_request.response) unless @user_request.response.empty?
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
haml :index, :format => :html5
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
post '/search' do
|
|
88
|
+
if md = settings.documentation[params[:query]]
|
|
89
|
+
md[:body]
|
|
90
|
+
else
|
|
91
|
+
settings.help
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
post '/' do
|
|
96
|
+
@method = (params.delete("method") || "get").downcase.to_sym
|
|
97
|
+
@path = coerce_path(params.delete("url"))
|
|
98
|
+
@json = params.delete("json")
|
|
99
|
+
@url_params = (params.delete("params") || {}).delete_if do |param|
|
|
100
|
+
!param["name"] || !param["value"] || (param["name"].empty? && param["value"].empty?)
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
execute_request unless @error
|
|
104
|
+
|
|
105
|
+
@user_request = UserRequest.create(
|
|
106
|
+
:method => @method,
|
|
107
|
+
:url => params["url"],
|
|
108
|
+
:path => @path,
|
|
109
|
+
:json => @json,
|
|
110
|
+
:url_params => @url_params,
|
|
111
|
+
:request => @user_request_hash,
|
|
112
|
+
:response => @user_response_hash
|
|
113
|
+
) unless @error
|
|
114
|
+
|
|
115
|
+
haml :index, :format => :html5
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end
|
|
119
|
+
end
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
## Account Settings
|
|
2
|
+
|
|
3
|
+
### JSON Format
|
|
4
|
+
Account Settings are read-only. They contain settings for the various aspects of an Account.
|
|
5
|
+
|
|
6
|
+
### Branding
|
|
7
|
+
|
|
8
|
+
| Name | Type | Comment
|
|
9
|
+
| ---------------------------------- | ------- | -------
|
|
10
|
+
| header_color | string | HEX of the header color
|
|
11
|
+
| page_background_color | string | HEX of the page background color
|
|
12
|
+
| tab_background_color | string | HEX of tab background color
|
|
13
|
+
| text_color | string | HEX of the text color, usually matched to contrast well with `header_color`
|
|
14
|
+
|
|
15
|
+
### Apps
|
|
16
|
+
|
|
17
|
+
| Name | Type | Comment
|
|
18
|
+
| ---------------------------------- | ------- | -------
|
|
19
|
+
| use | boolean | The Account can use apps
|
|
20
|
+
| create_private | boolean | The Account can create private apps
|
|
21
|
+
| create_public | boolean | The Account can create public apps
|
|
22
|
+
|
|
23
|
+
### Tickets
|
|
24
|
+
|
|
25
|
+
| Name | Type | Comment
|
|
26
|
+
| ---------------------------------- | ------- | -------
|
|
27
|
+
| comments_public_by_default | boolean | Comments from agents are public by default
|
|
28
|
+
| list_newest_comments_first | boolean | When viewing a ticket, show the newest comments and events first
|
|
29
|
+
| collaboration | boolean | CCs may be added to a ticket
|
|
30
|
+
| private_attachments | boolean | Users must login to acesss attachments
|
|
31
|
+
| agent_collision | boolean | Clients should provide an indicator when a ticket is being viewed by another agent
|
|
32
|
+
| list_empty_views | boolean | Clients should display Views with no matching Tickets in menus
|
|
33
|
+
| maximum_personal_views_to_list | number | Maximum number of personal Views clients should display in menus
|
|
34
|
+
| tagging | boolean | Tickets may be tagged
|
|
35
|
+
|
|
36
|
+
### Chat
|
|
37
|
+
|
|
38
|
+
| Name | Type | Comment
|
|
39
|
+
| ---------------------------------- | ------- | -------
|
|
40
|
+
| enabled | boolean | Chat is enabled
|
|
41
|
+
| maximum_requests | number | The maximum number of chat requests an agent may handle at one time
|
|
42
|
+
| welcome_message | string | The message automatically sent to end-users when they begin chatting with an agent
|
|
43
|
+
|
|
44
|
+
### Twitter
|
|
45
|
+
|
|
46
|
+
| Name | Type | Comment
|
|
47
|
+
| ---------------------------------- | ------- | -------
|
|
48
|
+
| shorten_url | string | Possible values: 'always', 'optional', 'never'
|
|
49
|
+
|
|
50
|
+
### Voice
|
|
51
|
+
|
|
52
|
+
| Name | Type | Comment
|
|
53
|
+
| ---------------------------------- | ------- | -------
|
|
54
|
+
| enabled | boolean | Voice is enabled
|
|
55
|
+
| maintenance | boolean |
|
|
56
|
+
| logging | boolean |
|
|
57
|
+
|
|
58
|
+
### Users
|
|
59
|
+
|
|
60
|
+
| Name | Type | Comment
|
|
61
|
+
| ---------------------------------- | ------- | -------
|
|
62
|
+
| tagging | boolean | Users may be tagged
|
|
63
|
+
|
|
64
|
+
### Screencast
|
|
65
|
+
|
|
66
|
+
| Name | Type | Comment
|
|
67
|
+
| ---------------------------------- | ------- | -------
|
|
68
|
+
| enabled_for_tickets | boolean | Account can record Screencasts on Tickets.
|
|
69
|
+
| host | string | The Screenr domain used when recording and playing Screencasts.
|
|
70
|
+
| tickets_recorder_id | string | The Screenr Recorder id used when recording Screencasts.
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
#### Example
|
|
74
|
+
|
|
75
|
+
```js
|
|
76
|
+
"settings": {
|
|
77
|
+
"branding": {
|
|
78
|
+
"header_color": "1A00C3",
|
|
79
|
+
"page_background_color": "333333",
|
|
80
|
+
"tab_background_color": "3915A2",
|
|
81
|
+
"text_color": "FFFFFF"
|
|
82
|
+
},
|
|
83
|
+
"apps":{
|
|
84
|
+
"use": true,
|
|
85
|
+
"create_private": false,
|
|
86
|
+
"create_public": true
|
|
87
|
+
},
|
|
88
|
+
"tickets": {
|
|
89
|
+
"comments_public_by_default": true,
|
|
90
|
+
"list_newest_comments_first": true,
|
|
91
|
+
"collaboration": true,
|
|
92
|
+
"private_attachments": true,
|
|
93
|
+
"agent_collision": true
|
|
94
|
+
"list_empty_views": true,
|
|
95
|
+
"maximum_personal_views_to_list": 12,
|
|
96
|
+
"tagging": true
|
|
97
|
+
},
|
|
98
|
+
"chat": {
|
|
99
|
+
"maximum_request_count": 5,
|
|
100
|
+
"welcome_message": "Hello, how may I help you?",
|
|
101
|
+
"enabled": true
|
|
102
|
+
},
|
|
103
|
+
"voice": {
|
|
104
|
+
"enabled": true,
|
|
105
|
+
"maintenance": false,
|
|
106
|
+
"logging": true
|
|
107
|
+
},
|
|
108
|
+
"twitter": {
|
|
109
|
+
"shorten_url":"optional"
|
|
110
|
+
},
|
|
111
|
+
"users": {
|
|
112
|
+
"tagging":true
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### Show Settings
|
|
118
|
+
`GET /api/v2/account/settings.json`
|
|
119
|
+
|
|
120
|
+
This shows the settings that are available for the account.
|
|
121
|
+
|
|
122
|
+
#### Allowed For:
|
|
123
|
+
|
|
124
|
+
* Agents
|
|
125
|
+
|
|
126
|
+
#### Using curl
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
curl https://{subdomain}.zendesk.com/api/v2/account/settings.json \
|
|
130
|
+
-v -u {email_address}:{password}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
#### Example Response
|
|
134
|
+
|
|
135
|
+
```http
|
|
136
|
+
Status: 200 OK
|
|
137
|
+
|
|
138
|
+
"settings": {
|
|
139
|
+
"apps": {.. },
|
|
140
|
+
"tickets": { ... },
|
|
141
|
+
"chat": { ... },
|
|
142
|
+
"twitter": { ... },
|
|
143
|
+
"users": { ... }
|
|
144
|
+
}
|
|
145
|
+
```
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
## Activity Stream
|
|
2
|
+
|
|
3
|
+
The **activity stream** is a per agent event stream. It will give access to the most recent events that relate to the agent polling the API.
|
|
4
|
+
|
|
5
|
+
### JSON Format
|
|
6
|
+
Ticket activity events are represented as JSON objects which have the following keys:
|
|
7
|
+
|
|
8
|
+
| Name | Type | Read-only | Mandatory | Comment
|
|
9
|
+
| ---------------- | ---------------------- | --------- | --------- | -------
|
|
10
|
+
| id | integer | yes | no | Automatically assigned upon creation
|
|
11
|
+
| url | string | yes | no | The API url of this activity
|
|
12
|
+
| title | string | yes | yes | Description of this activity
|
|
13
|
+
| verb | string | yes | yes | Identifies the type of the activity
|
|
14
|
+
| user | [User](users.md) | yes | yes | The user this activity pertains to
|
|
15
|
+
| actor | [User](users.md) | yes | yes | The actor causing the creation of the activity
|
|
16
|
+
| created_at | date | yes | no | When this record was created
|
|
17
|
+
| updated_at | date | yes | no | When this record last got updated
|
|
18
|
+
| object | object | yes | no | The content of this activity. Can be a ticket, comment, or change.
|
|
19
|
+
| target | object | yes | no | The target of this activity, a ticket.
|
|
20
|
+
|
|
21
|
+
#### Example
|
|
22
|
+
```js
|
|
23
|
+
{
|
|
24
|
+
"id": 35,
|
|
25
|
+
"url": "https://company.zendesk.com/api/v2/activities/35.json",
|
|
26
|
+
"verb": "tickets.assignment",
|
|
27
|
+
"title": "John Hopeful assigned ticket #123 to you",
|
|
28
|
+
"user": { ... },
|
|
29
|
+
"actor": { ... },
|
|
30
|
+
"created_at": "2012-03-05T10:38:52Z",
|
|
31
|
+
"updated_at": "2012-03-05T10:38:52Z"
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### List Activities
|
|
36
|
+
`GET /api/v2/activities.json`
|
|
37
|
+
|
|
38
|
+
#### Allowed For:
|
|
39
|
+
|
|
40
|
+
* Agents
|
|
41
|
+
|
|
42
|
+
Lists activities pertaining to the user performing the request.
|
|
43
|
+
|
|
44
|
+
#### Request Parameters
|
|
45
|
+
|
|
46
|
+
You can pass an optional `since` parameter which designates a timestamp offset, and the API
|
|
47
|
+
will only return activities happening after that offset. The format of the `since` parameter
|
|
48
|
+
must be in UTC on ISO8601 form `%Y-%m-%dT%H:%M:%SZ`, e.g. `2012-04-03T16:02:46Z`
|
|
49
|
+
|
|
50
|
+
#### Using curl
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
curl https://{subdomain}.zendesk.com/api/v2/activities.json \
|
|
54
|
+
-v -u {email_address}:{password}
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
#### Example Response
|
|
58
|
+
|
|
59
|
+
```http
|
|
60
|
+
Status: 200 OK
|
|
61
|
+
|
|
62
|
+
{
|
|
63
|
+
"activities": [
|
|
64
|
+
{
|
|
65
|
+
"id": 35,
|
|
66
|
+
"url": "https://company.zendesk.com/api/v2/activities/35.json",
|
|
67
|
+
"verb": "tickets.assignment",
|
|
68
|
+
"title": "John Hopeful assigned ticket #123 to you",
|
|
69
|
+
"user": { ... },
|
|
70
|
+
"actor": { ... },
|
|
71
|
+
"created_at": "2012-03-05T10:38:52Z",
|
|
72
|
+
"updated_at": "2012-03-05T10:38:52Z"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": 45,
|
|
76
|
+
"url": "https://company.zendesk.com/api/v2/activities/45.json",
|
|
77
|
+
"verb": "tickets.comment",
|
|
78
|
+
"title": "John Hopeful commented in ticket #44",
|
|
79
|
+
"user": { ... },
|
|
80
|
+
"actor": { ... },
|
|
81
|
+
"created_at": "2012-03-05T11:32:44Z",
|
|
82
|
+
"updated_at": "2012-03-05T11:32:44Z"
|
|
83
|
+
}
|
|
84
|
+
]
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Show Activity
|
|
89
|
+
`GET /api/v2/activities/{id}.json`
|
|
90
|
+
|
|
91
|
+
#### Allowed For:
|
|
92
|
+
|
|
93
|
+
* Agent
|
|
94
|
+
|
|
95
|
+
Only provides access to an activities pertaining to the agent executing the request
|
|
96
|
+
|
|
97
|
+
#### Using curl
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
curl https://{subdomain}.zendesk.com/api/v2/activities/{id}.json \
|
|
101
|
+
-v -u {email_address}:{password}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
#### Example Response
|
|
105
|
+
|
|
106
|
+
```http
|
|
107
|
+
Status: 200 OK
|
|
108
|
+
|
|
109
|
+
{
|
|
110
|
+
"activity": {
|
|
111
|
+
"id": 45,
|
|
112
|
+
"url": "https://company.zendesk.com/api/v2/activities/45.json",
|
|
113
|
+
"verb": "tickets.comment",
|
|
114
|
+
"title": "John Hopeful commented in ticket #44",
|
|
115
|
+
"user": { ... },
|
|
116
|
+
"actor": { ... },
|
|
117
|
+
"created_at": "2012-03-05T11:32:44Z",
|
|
118
|
+
"updated_at": "2012-03-05T11:32:44Z"
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
## Attachments
|
|
2
|
+
|
|
3
|
+
### JSON Format
|
|
4
|
+
Attachments are represented as JSON objects with the following keys:
|
|
5
|
+
|
|
6
|
+
| Name | Type | Read-only | Comment
|
|
7
|
+
| ------------ | ---------------- | --------- | -------
|
|
8
|
+
| id | integer | yes | Automatically assigned when created
|
|
9
|
+
| file_name | string | yes | The name of the image file
|
|
10
|
+
| content_url | string | yes | A full URL where the attachment image file can be downloaded
|
|
11
|
+
| content_type | string | yes | The content type of the image. Example value: `image/png`
|
|
12
|
+
| size | integer | yes | The size of the image file in bytes
|
|
13
|
+
| thumbnails | array | yes | An array of [Photo](#attachments) objects. Note that thumbnails do not have thumbnails.
|
|
14
|
+
|
|
15
|
+
#### Example
|
|
16
|
+
```js
|
|
17
|
+
{
|
|
18
|
+
"id": 928374,
|
|
19
|
+
"file_name": "my_funny_profile_pic.png",
|
|
20
|
+
"content_url": "https://company.zendesk.com/attachments/my_funny_profile_pic.png",
|
|
21
|
+
"content_type": "image/png",
|
|
22
|
+
"size": 166144,
|
|
23
|
+
"thumbnails": [
|
|
24
|
+
{
|
|
25
|
+
"id": 928375,
|
|
26
|
+
"file_name": "my_funny_profile_pic_thumb.png",
|
|
27
|
+
"content_url": "https://company.zendesk.com/attachments/my_funny_profile_pic_thumb.png",
|
|
28
|
+
"content_type": "image/png",
|
|
29
|
+
"size": 58298
|
|
30
|
+
}
|
|
31
|
+
]
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Uploading files
|
|
36
|
+
`POST /api/v2/uploads.json`
|
|
37
|
+
|
|
38
|
+
Adding multiple attachments to the same upload is handled by splitting requests and
|
|
39
|
+
passing the token received from the first request to each subsequent one.
|
|
40
|
+
|
|
41
|
+
#### Allowed For
|
|
42
|
+
|
|
43
|
+
* End Users
|
|
44
|
+
|
|
45
|
+
#### Using curl
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
curl -u username:password -H "Content-Type: application/binary" \
|
|
49
|
+
--data-binary @file.dat -X POST \
|
|
50
|
+
"https://helpdesk.zendesk.com/api/v2/uploads.json?filename=myfile.dat&token={optional_token}"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
#### Example Response
|
|
54
|
+
|
|
55
|
+
```http
|
|
56
|
+
Status: 201 Created
|
|
57
|
+
|
|
58
|
+
{
|
|
59
|
+
"upload": {
|
|
60
|
+
"token": "6bk3gql82em5nmf",
|
|
61
|
+
"attachments": [
|
|
62
|
+
{
|
|
63
|
+
"id": 498483,
|
|
64
|
+
"name": "crash.log",
|
|
65
|
+
"content_url": "https://company.zendesk.com/attachments/crash.log",
|
|
66
|
+
"content_type": "text/plain",
|
|
67
|
+
"size": 2532,
|
|
68
|
+
"thumbnails": []
|
|
69
|
+
}
|
|
70
|
+
]
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|