UNPKG

5.91 kBJavaScriptView Raw
1const Joi = require('@hapi/joi');
2const { validate, prepare } = require('../../utils/options');
3
4// Validation
5const _id = Joi.number().min(1);
6const _user_id = Joi.number().min(1);
7const _end_users = Joi.boolean();
8const _data = Joi.object();
9
10// Initialize Endpoint
11module.exports = (options = {}) => {
12 const { error } = validate(options);
13 if (error) throw new Error(error.details[0].message);
14
15 const { url, headers } = prepare(options);
16
17 return {
18 /**
19 * List Identities
20 *
21 * GET /api/v2/users/{user_id}/identities.json
22 * https://developer.zendesk.com/rest_api/docs/support/user_identities#list-identities
23 */
24 list: (options = {}) => {
25 const { error } = Joi.object({
26 user_id: _user_id.required()
27 }).validate(options);
28 if (error) throw new Error(error.details[0].message);
29
30 const { user_id } = options;
31
32 return {
33 method: 'GET',
34 url: `${url}/api/v2/users/${user_id}/identities.json`,
35 headers
36 };
37 },
38
39 /**
40 * Show Identity
41 *
42 * GET /api/v2/users/{user_id}/identities/{id}.json
43 * https://developer.zendesk.com/rest_api/docs/support/user_identities#show-identity
44 */
45 show: (options = {}) => {
46 const { error } = Joi.object({
47 user_id: _user_id.required(),
48 id: _id.required()
49 }).validate(options);
50 if (error) throw new Error(error.details[0].message);
51
52 const { user_id, id } = options;
53
54 return {
55 method: 'GET',
56 url: `${url}/api/v2/users/${user_id}/identities/${id}.json`,
57 headers
58 };
59 },
60
61 /**
62 * Create Identity
63 *
64 * POST /api/v2/users/{user_id}/identities.json
65 * POST /api/v2/end_users/{user_id}/identities.json
66 * https://developer.zendesk.com/rest_api/docs/support/user_identities#create-identity
67 */
68 create: (options = {}) => {
69 const { error } = Joi.object({
70 user_id: _user_id.required(),
71 end_users: _end_users,
72 data: _data.required()
73 }).validate(options);
74 if (error) throw new Error(error.details[0].message);
75
76 const { user_id, end_users = false, data } = options;
77
78 return {
79 method: 'POST',
80 url: end_users
81 ? `${url}/api/v2/end_users/${user_id}/identities.json`
82 : `${url}/api/v2/users/${user_id}/identities.json`,
83 headers,
84 data
85 };
86 },
87
88 /**
89 * Update Identity
90 *
91 * PUT /api/v2/users/{user_id}/identities/{id}.json
92 * https://developer.zendesk.com/rest_api/docs/support/user_identities#update-identity
93 */
94 update: (options = {}) => {
95 const { error } = Joi.object({
96 user_id: _user_id.required(),
97 id: _id.required(),
98 data: _data.required()
99 }).validate(options);
100 if (error) throw new Error(error.details[0].message);
101
102 const { user_id, id, data } = options;
103
104 return {
105 method: 'PUT',
106 url: `${url}/api/v2/users/${user_id}/identities/${id}.json`,
107 headers,
108 data
109 };
110 },
111
112 /**
113 * Make Identity Primary
114 *
115 * PUT /api/v2/users/{user_id}/identities/{id}/make_primary
116 * PUT /api/v2/end_users/{user_id}/identities/{id}/make_primary
117 * https://developer.zendesk.com/rest_api/docs/support/user_identities#make-identity-primary
118 */
119 make_primary: (options = {}) => {
120 const { error } = Joi.object({
121 user_id: _user_id.required(),
122 id: _id.required(),
123 end_users: _end_users,
124 data: _data
125 }).validate(options);
126 if (error) throw new Error(error.details[0].message);
127
128 const { user_id, id, end_users = false, data = {} } = options;
129
130 return {
131 method: 'PUT',
132 url: end_users
133 ? `${url}/api/v2/end_users/${user_id}/identities/${id}/make_primary`
134 : `${url}/api/v2/users/${user_id}/identities/${id}/make_primary`,
135 headers,
136 data
137 };
138 },
139
140 /**
141 * Verify Identity
142 *
143 * PUT /api/v2/users/{user_id}/identities/{id}/verify
144 * https://developer.zendesk.com/rest_api/docs/support/user_identities#verify-identity
145 */
146 verify: (options = {}) => {
147 const { error } = Joi.object({
148 user_id: _user_id.required(),
149 id: _id.required(),
150 data: _data
151 }).validate(options);
152 if (error) throw new Error(error.details[0].message);
153
154 const { user_id, id, data = {} } = options;
155
156 return {
157 method: 'PUT',
158 url: `${url}/api/v2/users/${user_id}/identities/${id}/verify`,
159 headers,
160 data
161 };
162 },
163
164 /**
165 * Request User Verification
166 *
167 * PUT /api/v2/users/{user_id}/identities/{id}/request_verification.json
168 * https://developer.zendesk.com/rest_api/docs/support/user_identities#request-user-verification
169 */
170 request_verification: (options = {}) => {
171 const { error } = Joi.object({
172 user_id: _user_id.required(),
173 id: _id.required(),
174 data: _data
175 }).validate(options);
176 if (error) throw new Error(error.details[0].message);
177
178 const { user_id, id, data = {} } = options;
179
180 return {
181 method: 'PUT',
182 url: `${url}/api/v2/users/${user_id}/identities/${id}/request_verification.json`,
183 headers,
184 data
185 };
186 },
187
188 /**
189 * Delete Identity
190 *
191 * DELETE /api/v2/users/{user_id}/identities/{id}.json
192 * https://developer.zendesk.com/rest_api/docs/support/user_identities#delete-identity
193 */
194 delete: (options = {}) => {
195 const { error } = Joi.object({
196 user_id: _user_id.required(),
197 id: _id.required()
198 }).validate(options);
199 if (error) throw new Error(error.details[0].message);
200
201 const { user_id, id } = options;
202
203 return {
204 method: 'DELETE',
205 url: `${url}/api/v2/users/${user_id}/identities/${id}.json`,
206 headers
207 };
208 }
209 };
210};