embulk-input-zendesk-all 0.3.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +5 -0
  4. data/CHANGELOG.md +126 -0
  5. data/LICENSE.txt +21 -0
  6. data/README.md +91 -0
  7. data/build.gradle +123 -0
  8. data/config/checkstyle/checkstyle.xml +128 -0
  9. data/config/checkstyle/default.xml +108 -0
  10. data/gradle/wrapper/gradle-wrapper.jar +0 -0
  11. data/gradle/wrapper/gradle-wrapper.properties +5 -0
  12. data/gradlew +172 -0
  13. data/gradlew.bat +84 -0
  14. data/lib/embulk/guess/zendesk.rb +21 -0
  15. data/lib/embulk/input/zendesk.rb +3 -0
  16. data/src/main/java/org/embulk/input/zendesk/RecordImporter.java +134 -0
  17. data/src/main/java/org/embulk/input/zendesk/ZendeskInputPlugin.java +513 -0
  18. data/src/main/java/org/embulk/input/zendesk/clients/ZendeskRestClient.java +291 -0
  19. data/src/main/java/org/embulk/input/zendesk/models/AuthenticationMethod.java +23 -0
  20. data/src/main/java/org/embulk/input/zendesk/models/Target.java +47 -0
  21. data/src/main/java/org/embulk/input/zendesk/models/ZendeskException.java +25 -0
  22. data/src/main/java/org/embulk/input/zendesk/services/ZendeskCustomObjectService.java +110 -0
  23. data/src/main/java/org/embulk/input/zendesk/services/ZendeskNPSService.java +30 -0
  24. data/src/main/java/org/embulk/input/zendesk/services/ZendeskNormalServices.java +347 -0
  25. data/src/main/java/org/embulk/input/zendesk/services/ZendeskService.java +14 -0
  26. data/src/main/java/org/embulk/input/zendesk/services/ZendeskSupportAPIService.java +63 -0
  27. data/src/main/java/org/embulk/input/zendesk/services/ZendeskUserEventService.java +158 -0
  28. data/src/main/java/org/embulk/input/zendesk/stream/PagingSpliterator.java +40 -0
  29. data/src/main/java/org/embulk/input/zendesk/stream/paginator/sunshine/CustomObjectSpliterator.java +42 -0
  30. data/src/main/java/org/embulk/input/zendesk/stream/paginator/sunshine/SunshineSpliterator.java +66 -0
  31. data/src/main/java/org/embulk/input/zendesk/stream/paginator/sunshine/UserEventSpliterator.java +35 -0
  32. data/src/main/java/org/embulk/input/zendesk/stream/paginator/support/OrganizationSpliterator.java +13 -0
  33. data/src/main/java/org/embulk/input/zendesk/stream/paginator/support/SupportSpliterator.java +44 -0
  34. data/src/main/java/org/embulk/input/zendesk/stream/paginator/support/UserSpliterator.java +13 -0
  35. data/src/main/java/org/embulk/input/zendesk/utils/ZendeskConstants.java +72 -0
  36. data/src/main/java/org/embulk/input/zendesk/utils/ZendeskDateUtils.java +68 -0
  37. data/src/main/java/org/embulk/input/zendesk/utils/ZendeskUtils.java +92 -0
  38. data/src/test/java/org/embulk/input/zendesk/TestRecordImporter.java +114 -0
  39. data/src/test/java/org/embulk/input/zendesk/TestZendeskInputPlugin.java +402 -0
  40. data/src/test/java/org/embulk/input/zendesk/clients/TestZendeskRestClient.java +337 -0
  41. data/src/test/java/org/embulk/input/zendesk/services/TestZendeskCustomObjectService.java +161 -0
  42. data/src/test/java/org/embulk/input/zendesk/services/TestZendeskNPSService.java +56 -0
  43. data/src/test/java/org/embulk/input/zendesk/services/TestZendeskNormalService.java +261 -0
  44. data/src/test/java/org/embulk/input/zendesk/services/TestZendeskSupportAPIService.java +130 -0
  45. data/src/test/java/org/embulk/input/zendesk/services/TestZendeskUserEventService.java +158 -0
  46. data/src/test/java/org/embulk/input/zendesk/utils/TestZendeskDateUtils.java +87 -0
  47. data/src/test/java/org/embulk/input/zendesk/utils/TestZendeskUtil.java +22 -0
  48. data/src/test/java/org/embulk/input/zendesk/utils/ZendeskPluginTestRuntime.java +133 -0
  49. data/src/test/java/org/embulk/input/zendesk/utils/ZendeskTestHelper.java +92 -0
  50. data/src/test/resources/config/base.yml +14 -0
  51. data/src/test/resources/config/base_validator.yml +48 -0
  52. data/src/test/resources/config/incremental.yml +54 -0
  53. data/src/test/resources/config/non-incremental.yml +39 -0
  54. data/src/test/resources/config/nps.yml +31 -0
  55. data/src/test/resources/config/object_records.yml +24 -0
  56. data/src/test/resources/config/relationship_records.yml +23 -0
  57. data/src/test/resources/config/user_events.yml +29 -0
  58. data/src/test/resources/config/util.yml +18 -0
  59. data/src/test/resources/data/client.json +293 -0
  60. data/src/test/resources/data/duplicate_user.json +0 -0
  61. data/src/test/resources/data/empty_result.json +7 -0
  62. data/src/test/resources/data/error_data.json +187 -0
  63. data/src/test/resources/data/expected/ticket_column.json +148 -0
  64. data/src/test/resources/data/expected/ticket_column_with_related_objects.json +152 -0
  65. data/src/test/resources/data/expected/ticket_fields_column.json +92 -0
  66. data/src/test/resources/data/expected/ticket_metrics_column.json +98 -0
  67. data/src/test/resources/data/expected/user_events_column.json +40 -0
  68. data/src/test/resources/data/object_records.json +30 -0
  69. data/src/test/resources/data/organization.json +39 -0
  70. data/src/test/resources/data/relationship_records.json +57 -0
  71. data/src/test/resources/data/scores.json +21 -0
  72. data/src/test/resources/data/scores_share_same_time_with_next_page.json +35 -0
  73. data/src/test/resources/data/scores_share_same_time_without_next_page.json +35 -0
  74. data/src/test/resources/data/simple_organization.json +23 -0
  75. data/src/test/resources/data/simple_user.json +50 -0
  76. data/src/test/resources/data/simple_user_event.json +19 -0
  77. data/src/test/resources/data/ticket_events_share_same_time_with_next_page.json +279 -0
  78. data/src/test/resources/data/ticket_events_share_same_time_without_next_page.json +279 -0
  79. data/src/test/resources/data/ticket_events_updated_by_system_records.json +279 -0
  80. data/src/test/resources/data/ticket_fields.json +225 -0
  81. data/src/test/resources/data/ticket_metrics.json +397 -0
  82. data/src/test/resources/data/ticket_share_same_time_with_next_page.json +232 -0
  83. data/src/test/resources/data/ticket_share_same_time_without_next_page.json +232 -0
  84. data/src/test/resources/data/ticket_with_related_objects.json +67 -0
  85. data/src/test/resources/data/ticket_with_updated_by_system_records.json +187 -0
  86. data/src/test/resources/data/tickets.json +232 -0
  87. data/src/test/resources/data/tickets_continue.json +52 -0
  88. data/src/test/resources/data/user_event.json +19 -0
  89. data/src/test/resources/data/user_event_contain_latter_create_at.json +19 -0
  90. data/src/test/resources/data/user_event_multiple.json +33 -0
  91. data/src/test/resources/data/util.json +19 -0
  92. data/src/test/resources/data/util_page.json +227 -0
  93. metadata +168 -0
@@ -0,0 +1,39 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ target: ticket_fields
9
+ app_marketplace_integration_name: abc
10
+ app_marketplace_app_id: abc
11
+ app_marketplace_org_id: abc
12
+ includes: [organizations]
13
+ incremental: false
14
+ retry_initial_wait_sec: 1
15
+ max_retry_wait_sec: 30
16
+ retry_limit: 2
17
+ columns:
18
+ - {name: url, type: string}
19
+ - {name: id, type: long}
20
+ - {name: type, type: string}
21
+ - {name: title, type: string}
22
+ - {name: raw_title, type: string}
23
+ - {name: description, type: string}
24
+ - {name: raw_description, type: string}
25
+ - {name: position, type: long}
26
+ - {name: active, type: boolean}
27
+ - {name: required, type: boolean}
28
+ - {name: collapsed_for_agents, type: boolean}
29
+ - {name: regexp_for_validation, type: string}
30
+ - {name: title_in_portal, type: string}
31
+ - {name: raw_title_in_portal, type: string}
32
+ - {name: visible_in_portal, type: boolean}
33
+ - {name: editable_in_portal, type: boolean}
34
+ - {name: required_in_portal, type: boolean}
35
+ - {name: tag, type: string}
36
+ - {name: created_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
37
+ - {name: updated_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
38
+ - {name: removable, type: boolean}
39
+ - {name: agent_description, type: string}
@@ -0,0 +1,31 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ target: scores
9
+ app_marketplace_integration_name: abc
10
+ app_marketplace_app_id: abc
11
+ app_marketplace_org_id: abc
12
+ incremental: true
13
+ retry_initial_wait_sec: 1
14
+ max_retry_wait_sec: 30
15
+ retry_limit: 2
16
+ start_time: '2019-01-20T07:14:50Z'
17
+ end_time: '2019-01-20T07:14:53Z'
18
+ columns:
19
+ - {name: id, type: long}
20
+ - {name: survey_id, type: string}
21
+ - {name: delivery_id, type: string}
22
+ - {name: recipient_id, type: string}
23
+ - {name: user_id, type: string}
24
+ - {name: rating, type: long}
25
+ - {name: comment, type: string}
26
+ - {name: delivered_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
27
+ - {name: rated_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
28
+ - {name: user_email, type: string}
29
+ - {name: user_name, type: string}
30
+ - {name: survey_name, type: string}
31
+ - {name: account, type: json}
@@ -0,0 +1,24 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ target: object_records
9
+ app_marketplace_integration_name: abc
10
+ app_marketplace_app_id: abc
11
+ app_marketplace_org_id: abc
12
+ incremental: true
13
+ retry_initial_wait_sec: 1
14
+ max_retry_wait_sec: 30
15
+ retry_limit: 2
16
+ object_types: ['account', 'user']
17
+ columns:
18
+ - {name: type, type: string}
19
+ - {name: id, type: long}
20
+ - {name: external_id, type: string}
21
+ - {name: attributes, type: json}
22
+ - {name: created_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
23
+ - {name: updated_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
24
+ - {name: account, type: json}
@@ -0,0 +1,23 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ target: relationship_records
9
+ app_marketplace_integration_name: abc
10
+ app_marketplace_app_id: abc
11
+ app_marketplace_org_id: abc
12
+ incremental: true
13
+ retry_initial_wait_sec: 1
14
+ max_retry_wait_sec: 30
15
+ retry_limit: 2
16
+ relationship_types: [ticket_to_account]
17
+ columns:
18
+ - {name: id, type: long}
19
+ - {name: relationship_type, type: string}
20
+ - {name: source, type: string}
21
+ - {name: target, type: string}
22
+ - {name: created_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
23
+ - {name: account, type: json}
@@ -0,0 +1,29 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ target: user_events
9
+ app_marketplace_integration_name: abc
10
+ app_marketplace_app_id: abc
11
+ app_marketplace_org_id: abc
12
+ incremental: true
13
+ retry_initial_wait_sec: 1
14
+ dedup: false
15
+ max_retry_wait_sec: 30
16
+ retry_limit: 2
17
+ profile_source: support
18
+ start_time: '2019-01-20T07:14:50Z'
19
+ end_time: '2019-06-20T07:14:53Z'
20
+ columns:
21
+ - {name: id, type: string}
22
+ - {name: type, type: string}
23
+ - {name: source, type: string}
24
+ - {name: description, type: string}
25
+ - {name: authenticated, type: boolean}
26
+ - {name: created_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
27
+ - {name: received_at, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
28
+ - {name: properties, type: json}
29
+ - {name: user_id, type: string}
@@ -0,0 +1,18 @@
1
+ type: zendesk
2
+ login_url: https://abc.zendesk.com
3
+ auth_method: oauth
4
+ username: dummy
5
+ password: dummy
6
+ token: dummy
7
+ access_token: dummy
8
+ app_marketplace_integration_name: abc
9
+ app_marketplace_app_id: abc
10
+ app_marketplace_org_id: abc
11
+ target: tickets
12
+ columns:
13
+ - {name: boolean, type: boolean}
14
+ - {name: long, type: long}
15
+ - {name: double, type: double}
16
+ - {name: string, type: string}
17
+ - {name: date, type: timestamp, format: '%Y-%m-%dT%H:%M:%S%z'}
18
+ - {name: json, type: json}
@@ -0,0 +1,293 @@
1
+ {
2
+ "credentialSuccess": {
3
+ "statusCode": 200,
4
+ "description": "dummy text"
5
+ },
6
+ "credentialFail400": {
7
+ "statusCode": 400,
8
+ "description": "dummy text"
9
+ },
10
+ "credentialFail401": {
11
+ "statusCode": 401,
12
+ "description": "dummy text"
13
+ },
14
+ "credentialFail403": {
15
+ "statusCode": 403,
16
+ "description": "dummy text"
17
+ },
18
+ "credentialFail405": {
19
+ "statusCode": 405,
20
+ "description": "dummy text"
21
+ },
22
+ "doGet200": {
23
+ "statusCode": 200,
24
+ "body": {
25
+ "tickets": [
26
+ {
27
+ "url": "https://abc.zendesk.com/api/v2/tickets/2.json",
28
+ "id": 2,
29
+ "external_id": null,
30
+ "via": {
31
+ "channel": "web",
32
+ "source": {
33
+ "from": {},
34
+ "to": {},
35
+ "rel": null
36
+ }
37
+ },
38
+ "created_at": "2019-02-20T06:51:50Z",
39
+ "updated_at": "2019-02-20T06:51:50Z",
40
+ "type": null,
41
+ "subject": "ticket1",
42
+ "raw_subject": "ticket1",
43
+ "description": "ticket1",
44
+ "priority": null,
45
+ "status": "open",
46
+ "recipient": null,
47
+ "requester_id": 374673563333,
48
+ "submitter_id": 374673563333,
49
+ "assignee_id": 374673563333,
50
+ "organization_id": 360857467053,
51
+ "group_id": 360003235353,
52
+ "collaborator_ids": [],
53
+ "follower_ids": [],
54
+ "email_cc_ids": [],
55
+ "forum_topic_id": null,
56
+ "problem_id": null,
57
+ "has_incidents": false,
58
+ "is_public": true,
59
+ "due_at": null,
60
+ "tags": [],
61
+ "custom_fields": [],
62
+ "satisfaction_rating": null,
63
+ "sharing_agreement_ids": [],
64
+ "fields": [],
65
+ "followup_ids": [],
66
+ "brand_id": 360001998013,
67
+ "allow_channelback": false,
68
+ "allow_attachments": true,
69
+ "generated_timestamp": 1550645510
70
+ },
71
+ {
72
+ "url": "https://abc.zendesk.com/api/v2/tickets/3.json",
73
+ "id": 3,
74
+ "external_id": null,
75
+ "via": {
76
+ "channel": "web",
77
+ "source": {
78
+ "from": {},
79
+ "to": {},
80
+ "rel": null
81
+ }
82
+ },
83
+ "created_at": "2019-02-20T06:52:02Z",
84
+ "updated_at": "2019-02-20T06:52:02Z",
85
+ "type": null,
86
+ "subject": "ticket2",
87
+ "raw_subject": "ticket2",
88
+ "description": "ticket2",
89
+ "priority": null,
90
+ "status": "open",
91
+ "recipient": null,
92
+ "requester_id": 374673563333,
93
+ "submitter_id": 374673563333,
94
+ "assignee_id": 374673563333,
95
+ "organization_id": 360857467053,
96
+ "group_id": 360003235353,
97
+ "collaborator_ids": [],
98
+ "follower_ids": [],
99
+ "email_cc_ids": [],
100
+ "forum_topic_id": null,
101
+ "problem_id": null,
102
+ "has_incidents": false,
103
+ "is_public": true,
104
+ "due_at": null,
105
+ "tags": [],
106
+ "custom_fields": [],
107
+ "satisfaction_rating": null,
108
+ "sharing_agreement_ids": [],
109
+ "fields": [],
110
+ "followup_ids": [],
111
+ "brand_id": 360001998013,
112
+ "allow_channelback": false,
113
+ "allow_attachments": true,
114
+ "generated_timestamp": 1550645522
115
+ },
116
+ {
117
+ "url": "https://abc.zendesk.com/api/v2/tickets/4.json",
118
+ "id": 4,
119
+ "external_id": null,
120
+ "via": {
121
+ "channel": "web",
122
+ "source": {
123
+ "from": {},
124
+ "to": {},
125
+ "rel": null
126
+ }
127
+ },
128
+ "created_at": "2019-02-20T06:52:12Z",
129
+ "updated_at": "2019-02-20T06:52:12Z",
130
+ "type": null,
131
+ "subject": "ticket3",
132
+ "raw_subject": "ticket3",
133
+ "description": "ticket3",
134
+ "priority": null,
135
+ "status": "open",
136
+ "recipient": null,
137
+ "requester_id": 374673563333,
138
+ "submitter_id": 374673563333,
139
+ "assignee_id": 374673563333,
140
+ "organization_id": 360857467053,
141
+ "group_id": 360003235353,
142
+ "collaborator_ids": [],
143
+ "follower_ids": [],
144
+ "email_cc_ids": [],
145
+ "forum_topic_id": null,
146
+ "problem_id": null,
147
+ "has_incidents": false,
148
+ "is_public": true,
149
+ "due_at": null,
150
+ "tags": [],
151
+ "custom_fields": [],
152
+ "satisfaction_rating": null,
153
+ "sharing_agreement_ids": [],
154
+ "fields": [],
155
+ "followup_ids": [],
156
+ "brand_id": 360001998013,
157
+ "allow_channelback": false,
158
+ "allow_attachments": true,
159
+ "generated_timestamp": 1550645532
160
+ },
161
+ {
162
+ "url": "https://abc.zendesk.com/api/v2/tickets/1002.json",
163
+ "id": 1002,
164
+ "external_id": null,
165
+ "via": {
166
+ "channel": "api",
167
+ "source": {
168
+ "from": {},
169
+ "to": {},
170
+ "rel": null
171
+ }
172
+ },
173
+ "created_at": "2019-02-20T07:17:33Z",
174
+ "updated_at": "2019-02-20T07:17:33Z",
175
+ "type": null,
176
+ "subject": "Help!",
177
+ "raw_subject": "Help!",
178
+ "description": "Help I need somebody.",
179
+ "priority": null,
180
+ "status": "open",
181
+ "recipient": null,
182
+ "requester_id": 374673563333,
183
+ "submitter_id": 374673563333,
184
+ "assignee_id": 374673563333,
185
+ "organization_id": 360857467053,
186
+ "group_id": 360003235353,
187
+ "collaborator_ids": [],
188
+ "follower_ids": [],
189
+ "email_cc_ids": [],
190
+ "forum_topic_id": null,
191
+ "problem_id": null,
192
+ "has_incidents": false,
193
+ "is_public": true,
194
+ "due_at": null,
195
+ "tags": [],
196
+ "custom_fields": [],
197
+ "satisfaction_rating": null,
198
+ "sharing_agreement_ids": [],
199
+ "fields": [],
200
+ "followup_ids": [],
201
+ "brand_id": 360001998013,
202
+ "allow_channelback": false,
203
+ "allow_attachments": true,
204
+ "generated_timestamp": 1550647053
205
+ },
206
+ {
207
+ "url": "https://abc.zendesk.com/api/v2/tickets/1002.json",
208
+ "id": 1002,
209
+ "external_id": null,
210
+ "via": {
211
+ "channel": "api",
212
+ "source": {
213
+ "from": {},
214
+ "to": {},
215
+ "rel": null
216
+ }
217
+ },
218
+ "created_at": "2019-02-20T07:17:33Z",
219
+ "updated_at": "2019-02-20T07:17:33Z",
220
+ "type": null,
221
+ "subject": "Help!",
222
+ "raw_subject": "Help!",
223
+ "description": "Help I need somebody.",
224
+ "priority": null,
225
+ "status": "open",
226
+ "recipient": null,
227
+ "requester_id": 374673563333,
228
+ "submitter_id": 374673563333,
229
+ "assignee_id": 374673563333,
230
+ "organization_id": 360857467053,
231
+ "group_id": 360003235353,
232
+ "collaborator_ids": [],
233
+ "follower_ids": [],
234
+ "email_cc_ids": [],
235
+ "forum_topic_id": null,
236
+ "problem_id": null,
237
+ "has_incidents": false,
238
+ "is_public": true,
239
+ "due_at": null,
240
+ "tags": [],
241
+ "custom_fields": [],
242
+ "satisfaction_rating": null,
243
+ "sharing_agreement_ids": [],
244
+ "fields": [],
245
+ "followup_ids": [],
246
+ "brand_id": 360001998013,
247
+ "allow_channelback": false,
248
+ "allow_attachments": true,
249
+ "generated_timestamp": 1550647053
250
+ }
251
+ ],
252
+ "count": 999,
253
+ "next_page": "https://abc.zendesk.com/api/v2/incremental/tickets.json?sort_by=updated_at&start_time=1550647053",
254
+ "end_time": 1550647053
255
+ }
256
+ },
257
+ "doGet404": {
258
+ "statusCode": 404,
259
+ "description": "dummy text"
260
+ },
261
+ "doGet405": {
262
+ "statusCode": 405,
263
+ "description": "dummy text"
264
+ },
265
+ "doGet409": {
266
+ "statusCode": 409,
267
+ "description": "dummy text"
268
+ },
269
+ "doGet422NotContainTooRecentStartTime": {
270
+ "statusCode": 422,
271
+ "description": "dummy text"
272
+ },
273
+ "doGet422ContainTooRecentStartTime": {
274
+ "statusCode": 422,
275
+ "description": "dummy text"
276
+ },
277
+ "doGet429": {
278
+ "statusCode": 429,
279
+ "description": "Number of allowed incremental export API requests per minute exceeded"
280
+ },
281
+ "doGet500": {
282
+ "statusCode": 500,
283
+ "description": "dummy text"
284
+ },
285
+ "doGet502": {
286
+ "statusCode": 502,
287
+ "description": "dummy text"
288
+ },
289
+ "doGet503": {
290
+ "statusCode": 503,
291
+ "description": "dummy text"
292
+ }
293
+ }