1 | |
2 | type Zoho = { |
3 | token: string; |
4 | }; |
5 | |
6 | * Activate custom layout |
7 | * |
8 | */ |
9 | export async function main( |
10 | auth: Zoho, |
11 | id: string, |
12 | _module: string, |
13 | body: { |
14 | layouts: { |
15 | display_type?: number; |
16 | api_name?: string; |
17 | has_more_profiles: false | true; |
18 | created_time: string; |
19 | modified_time: string; |
20 | visible: false | true; |
21 | source: string; |
22 | id: string; |
23 | name: string; |
24 | display_label: string; |
25 | mode: string; |
26 | subform_properties: { pinned_column: false | true }; |
27 | status: string; |
28 | show_business_card: false | true; |
29 | generated_type: string; |
30 | created_for: { name: string; id: string; email?: string }; |
31 | convert_mapping: { |
32 | Contacts: { name: string; id: string }; |
33 | Deals: { |
34 | fields: { |
35 | api_name?: string; |
36 | field_label?: string; |
37 | id?: string; |
38 | required?: false | true; |
39 | }[]; |
40 | name: string; |
41 | id: string; |
42 | }; |
43 | Accounts: { name: string; id: string }; |
44 | Invoices: { name: string; id: string }; |
45 | SalesOrders: { name: string; id: string }; |
46 | }; |
47 | modified_by: { name: string; id: string; email?: string }; |
48 | profiles: { |
49 | default: false | true; |
50 | name: string; |
51 | id: string; |
52 | _default_view: { name: string; id: string; type: string }; |
53 | _default_assignment_view?: { |
54 | name?: string; |
55 | id?: string; |
56 | type?: string; |
57 | }; |
58 | }[]; |
59 | created_by: { name: string; id: string; email?: string }; |
60 | sections: { |
61 | display_label: string; |
62 | sequence_number: number; |
63 | isSubformSection: false | true; |
64 | tab_traversal: string; |
65 | api_name: string; |
66 | column_count: number; |
67 | name: string; |
68 | generated_type: string; |
69 | id: string; |
70 | type: string; |
71 | fields: { |
72 | required: false | true; |
73 | validation_rule: {}; |
74 | default_value: {}; |
75 | sequence_number: number; |
76 | section_id: number; |
77 | blueprint_supported: false | true; |
78 | json_type: string; |
79 | length: number; |
80 | decimal_place: number; |
81 | multi_module_lookup: {}; |
82 | sharing_properties: { |
83 | scheduler_status?: string; |
84 | share_preference_enabled?: false | true; |
85 | share_permission?: "read-write" | "read-only" | "full-access"; |
86 | }; |
87 | currency: {}; |
88 | file_upolad_optionlist: { |
89 | actual_value: string; |
90 | display_value: string; |
91 | }[]; |
92 | lookup: {}; |
93 | subform: {}; |
94 | formula: {}; |
95 | multiselectlookup: {}; |
96 | multiuserlookup: { |
97 | display_label: string; |
98 | linking_module: { |
99 | api_name: string; |
100 | id: string; |
101 | module_name?: string; |
102 | module?: string; |
103 | }; |
104 | connected_module: { |
105 | api_name: string; |
106 | id: string; |
107 | module_name?: string; |
108 | module?: string; |
109 | }; |
110 | lookup_apiname: string; |
111 | api_name: string; |
112 | connectedfield_apiname: string; |
113 | connectedlookup_apiname: string; |
114 | id: string; |
115 | record_access: false | true; |
116 | }; |
117 | pick_list_values: { |
118 | colour_code: string; |
119 | actual_value: string; |
120 | type: "unused" | "used"; |
121 | id: string; |
122 | sequence_number: number; |
123 | display_value: string; |
124 | reference_value?: string; |
125 | deal_category?: string; |
126 | probability?: number; |
127 | forecast_category?: { id?: string; name?: string }; |
128 | expected_data_type?: string; |
129 | sys_ref_name?: string; |
130 | forecast_type?: string; |
131 | maps?: { api_name?: string; pick_list_values?: {}[] }[]; |
132 | _delete?: false | true; |
133 | show_value?: false | true; |
134 | }[]; |
135 | allowed_modules: { |
136 | api_name: string; |
137 | id: string; |
138 | module_name?: string; |
139 | module?: string; |
140 | }[]; |
141 | hipaa_compliance_enabled: false | true; |
142 | hipaa_compliance: { |
143 | restricted_in_export: false | true; |
144 | restricted: false | true; |
145 | }; |
146 | static_values: { |
147 | sequence_number: number; |
148 | id: string; |
149 | value: string; |
150 | }[]; |
151 | static_field: false | true; |
152 | layout_associations: { api_name: string; name: string; id: string }[]; |
153 | _delete: { permanent: false | true }; |
154 | associated_module: { |
155 | api_name: string; |
156 | id: string; |
157 | module_name?: string; |
158 | module?: string; |
159 | }; |
160 | data_type: string; |
161 | operation_type: { |
162 | web_update: false | true; |
163 | api_create: false | true; |
164 | web_create: false | true; |
165 | api_update: false | true; |
166 | }; |
167 | system_mandatory: false | true; |
168 | webhook: false | true; |
169 | virtual_field: false | true; |
170 | field_read_only: false | true; |
171 | customizable_properties: string[]; |
172 | read_only: false | true; |
173 | custom_field: false | true; |
174 | businesscard_supported: false | true; |
175 | filterable: false | true; |
176 | visible: false | true; |
177 | available_in_user_layout: false | true; |
178 | display_field: false | true; |
179 | pick_list_values_sorted_lexically: false | true; |
180 | sortable: false | true; |
181 | separator: false | true; |
182 | searchable: false | true; |
183 | enable_colour_code: false | true; |
184 | mass_update: false | true; |
185 | created_source: string; |
186 | type: string; |
187 | display_label: string; |
188 | column_name: string; |
189 | api_name: string; |
190 | display_type: number; |
191 | ui_type: number; |
192 | colour_code_enabled_by_system: false | true; |
193 | quick_sequence_number: string; |
194 | email_parser: { |
195 | fields_update_supported: false | true; |
196 | record_operations_supported: false | true; |
197 | }; |
198 | rollup_summary: {}; |
199 | refer_from_field: { id: string; api_name: string }; |
200 | created_time: string; |
201 | modified_time: string; |
202 | show_type: number; |
203 | category: number; |
204 | id: string; |
205 | profiles: { name: string; id: string; permission_type: string }[]; |
206 | view_type: { |
207 | view: false | true; |
208 | edit: false | true; |
209 | quick_create: false | true; |
210 | create: false | true; |
211 | }; |
212 | unique: {}; |
213 | sub_module: { |
214 | api_name: string; |
215 | id: string; |
216 | module_name?: string; |
217 | module?: string; |
218 | }; |
219 | external: { |
220 | show: false | true; |
221 | type: string; |
222 | allow_multiple_config?: false | true; |
223 | }; |
224 | private?: { |
225 | restricted: false | true; |
226 | type: string; |
227 | export: false | true; |
228 | }; |
229 | convert_mapping: { |
230 | Contacts?: string; |
231 | Deals?: string; |
232 | Accounts?: string; |
233 | }; |
234 | autonumber: { |
235 | starting_number_length: number; |
236 | prefix: string; |
237 | suffix: string; |
238 | start_number: number; |
239 | }; |
240 | auto_number: {}; |
241 | crypt: { |
242 | mode: string; |
243 | status: number; |
244 | column?: string; |
245 | table?: string; |
246 | encFldIds?: string[]; |
247 | notify?: string; |
248 | }; |
249 | tooltip: { name: string; value: string }; |
250 | history_tracking: { |
251 | module: { |
252 | layout?: { |
253 | display_type?: number; |
254 | api_name?: string; |
255 | has_more_profiles: false | true; |
256 | created_time: string; |
257 | modified_time: string; |
258 | visible: false | true; |
259 | source: string; |
260 | id: string; |
261 | name: string; |
262 | display_label: string; |
263 | mode: string; |
264 | subform_properties: { pinned_column: false | true }; |
265 | status: string; |
266 | show_business_card: false | true; |
267 | generated_type: string; |
268 | created_for: { name: string; id: string; email?: string }; |
269 | convert_mapping: { |
270 | Contacts: { name: string; id: string }; |
271 | Deals: { |
272 | fields: { |
273 | api_name?: string; |
274 | field_label?: string; |
275 | id?: string; |
276 | required?: false | true; |
277 | }[]; |
278 | name: string; |
279 | id: string; |
280 | }; |
281 | Accounts: { name: string; id: string }; |
282 | Invoices: { name: string; id: string }; |
283 | SalesOrders: { name: string; id: string }; |
284 | }; |
285 | modified_by: { name: string; id: string; email?: string }; |
286 | profiles: { |
287 | default: false | true; |
288 | name: string; |
289 | id: string; |
290 | _default_view: { name: string; id: string; type: string }; |
291 | _default_assignment_view?: { |
292 | name?: string; |
293 | id?: string; |
294 | type?: string; |
295 | }; |
296 | }[]; |
297 | created_by: { name: string; id: string; email?: string }; |
298 | sections: { |
299 | display_label: string; |
300 | sequence_number: number; |
301 | isSubformSection: false | true; |
302 | tab_traversal: string; |
303 | api_name: string; |
304 | column_count: number; |
305 | name: string; |
306 | generated_type: string; |
307 | id: string; |
308 | type: string; |
309 | fields: { |
310 | required: false | true; |
311 | validation_rule: {}; |
312 | default_value: {}; |
313 | sequence_number: number; |
314 | section_id: number; |
315 | blueprint_supported: false | true; |
316 | json_type: string; |
317 | length: number; |
318 | decimal_place: number; |
319 | multi_module_lookup: {}; |
320 | sharing_properties: { |
321 | scheduler_status?: string; |
322 | share_preference_enabled?: false | true; |
323 | share_permission?: |
324 | | "read-write" |
325 | | "read-only" |
326 | | "full-access"; |
327 | }; |
328 | currency: {}; |
329 | file_upolad_optionlist: { |
330 | actual_value: string; |
331 | display_value: string; |
332 | }[]; |
333 | lookup: {}; |
334 | subform: {}; |
335 | formula: {}; |
336 | multiselectlookup: {}; |
337 | multiuserlookup: { |
338 | display_label: string; |
339 | linking_module: { |
340 | api_name: string; |
341 | id: string; |
342 | module_name?: string; |
343 | module?: string; |
344 | }; |
345 | connected_module: { |
346 | api_name: string; |
347 | id: string; |
348 | module_name?: string; |
349 | module?: string; |
350 | }; |
351 | lookup_apiname: string; |
352 | api_name: string; |
353 | connectedfield_apiname: string; |
354 | connectedlookup_apiname: string; |
355 | id: string; |
356 | record_access: false | true; |
357 | }; |
358 | pick_list_values: { |
359 | colour_code: string; |
360 | actual_value: string; |
361 | type: "unused" | "used"; |
362 | id: string; |
363 | sequence_number: number; |
364 | display_value: string; |
365 | reference_value?: string; |
366 | deal_category?: string; |
367 | probability?: number; |
368 | forecast_category?: { id?: string; name?: string }; |
369 | expected_data_type?: string; |
370 | sys_ref_name?: string; |
371 | forecast_type?: string; |
372 | maps?: { api_name?: string; pick_list_values?: {}[] }[]; |
373 | _delete?: false | true; |
374 | show_value?: false | true; |
375 | }[]; |
376 | allowed_modules: { |
377 | api_name: string; |
378 | id: string; |
379 | module_name?: string; |
380 | module?: string; |
381 | }[]; |
382 | hipaa_compliance_enabled: false | true; |
383 | hipaa_compliance: { |
384 | restricted_in_export: false | true; |
385 | restricted: false | true; |
386 | }; |
387 | static_values: { |
388 | sequence_number: number; |
389 | id: string; |
390 | value: string; |
391 | }[]; |
392 | static_field: false | true; |
393 | layout_associations: { |
394 | api_name: string; |
395 | name: string; |
396 | id: string; |
397 | }[]; |
398 | _delete: { permanent: false | true }; |
399 | associated_module: { |
400 | api_name: string; |
401 | id: string; |
402 | module_name?: string; |
403 | module?: string; |
404 | }; |
405 | data_type: string; |
406 | operation_type: { |
407 | web_update: false | true; |
408 | api_create: false | true; |
409 | web_create: false | true; |
410 | api_update: false | true; |
411 | }; |
412 | system_mandatory: false | true; |
413 | webhook: false | true; |
414 | virtual_field: false | true; |
415 | field_read_only: false | true; |
416 | customizable_properties: string[]; |
417 | read_only: false | true; |
418 | custom_field: false | true; |
419 | businesscard_supported: false | true; |
420 | filterable: false | true; |
421 | visible: false | true; |
422 | available_in_user_layout: false | true; |
423 | display_field: false | true; |
424 | pick_list_values_sorted_lexically: false | true; |
425 | sortable: false | true; |
426 | separator: false | true; |
427 | searchable: false | true; |
428 | enable_colour_code: false | true; |
429 | mass_update: false | true; |
430 | created_source: string; |
431 | type: string; |
432 | display_label: string; |
433 | column_name: string; |
434 | api_name: string; |
435 | display_type: number; |
436 | ui_type: number; |
437 | colour_code_enabled_by_system: false | true; |
438 | quick_sequence_number: string; |
439 | email_parser: { |
440 | fields_update_supported: false | true; |
441 | record_operations_supported: false | true; |
442 | }; |
443 | rollup_summary: {}; |
444 | refer_from_field: { id: string; api_name: string }; |
445 | created_time: string; |
446 | modified_time: string; |
447 | show_type: number; |
448 | category: number; |
449 | id: string; |
450 | profiles: { |
451 | name: string; |
452 | id: string; |
453 | permission_type: string; |
454 | }[]; |
455 | view_type: { |
456 | view: false | true; |
457 | edit: false | true; |
458 | quick_create: false | true; |
459 | create: false | true; |
460 | }; |
461 | unique: {}; |
462 | sub_module: { |
463 | api_name: string; |
464 | id: string; |
465 | module_name?: string; |
466 | module?: string; |
467 | }; |
468 | external: { |
469 | show: false | true; |
470 | type: string; |
471 | allow_multiple_config?: false | true; |
472 | }; |
473 | private?: { |
474 | restricted: false | true; |
475 | type: string; |
476 | export: false | true; |
477 | }; |
478 | convert_mapping: { |
479 | Contacts?: string; |
480 | Deals?: string; |
481 | Accounts?: string; |
482 | }; |
483 | autonumber: { |
484 | starting_number_length: number; |
485 | prefix: string; |
486 | suffix: string; |
487 | start_number: number; |
488 | }; |
489 | auto_number: {}; |
490 | crypt: { |
491 | mode: string; |
492 | status: number; |
493 | column?: string; |
494 | table?: string; |
495 | encFldIds?: string[]; |
496 | notify?: string; |
497 | }; |
498 | tooltip: { name: string; value: string }; |
499 | history_tracking: {}; |
500 | association_details: { |
501 | related_field: { |
502 | api_name: string; |
503 | id: string; |
504 | module_name?: string; |
505 | module?: string; |
506 | }; |
507 | lookup_field: { |
508 | api_name: string; |
509 | id: string; |
510 | module_name?: string; |
511 | module?: string; |
512 | }; |
513 | }; |
514 | additional_column: string; |
515 | field_label: string; |
516 | "common.picklist": {}; |
517 | _update_existing_records: false | true; |
518 | number_separator: false | true; |
519 | textarea: { type?: string }; |
520 | }[]; |
521 | properties: { |
522 | reorder_rows: false | true; |
523 | maximum_rows: number; |
524 | tooltip: { name?: "Info Icon"; value?: string }; |
525 | }; |
526 | _delete: { permanent: false | true }; |
527 | }[]; |
528 | actions_allowed: { |
529 | edit: false | true; |
530 | rename: false | true; |
531 | clone: false | true; |
532 | downgrade: false | true; |
533 | delete: false | true; |
534 | deactivate: false | true; |
535 | set_layout_permissions: false | true; |
536 | }; |
537 | }; |
538 | display_label?: string; |
539 | api_name?: string; |
540 | module?: {}; |
541 | id?: string; |
542 | module_name?: string; |
543 | }; |
544 | duration_configured_field: { |
545 | api_name: string; |
546 | id: string; |
547 | module_name?: string; |
548 | module?: string; |
549 | }; |
550 | }; |
551 | association_details: { |
552 | related_field: { |
553 | api_name: string; |
554 | id: string; |
555 | module_name?: string; |
556 | module?: string; |
557 | }; |
558 | lookup_field: { |
559 | api_name: string; |
560 | id: string; |
561 | module_name?: string; |
562 | module?: string; |
563 | }; |
564 | }; |
565 | additional_column: string; |
566 | field_label: string; |
567 | "common.picklist": {}; |
568 | _update_existing_records: false | true; |
569 | number_separator: false | true; |
570 | textarea: { type?: string }; |
571 | }[]; |
572 | properties: { |
573 | reorder_rows: false | true; |
574 | maximum_rows: number; |
575 | tooltip: { name?: "Info Icon"; value?: string }; |
576 | }; |
577 | _delete: { permanent: false | true }; |
578 | }[]; |
579 | actions_allowed: { |
580 | edit: false | true; |
581 | rename: false | true; |
582 | clone: false | true; |
583 | downgrade: false | true; |
584 | delete: false | true; |
585 | deactivate: false | true; |
586 | set_layout_permissions: false | true; |
587 | }; |
588 | }[]; |
589 | }, |
590 | ) { |
591 | const url = new URL( |
592 | `https://zohoapis.com/crm/v8/settings/layouts/${id}/actions/activate`, |
593 | ); |
594 | for (const [k, v] of [["module", _module]]) { |
595 | if (v !== undefined && v !== "" && k !== undefined) { |
596 | url.searchParams.append(k, v); |
597 | } |
598 | } |
599 | const response = await fetch(url, { |
600 | method: "POST", |
601 | headers: { |
602 | "Content-Type": "application/json", |
603 | Authorization: "Zoho-oauthtoken " + auth.token, |
604 | }, |
605 | body: JSON.stringify(body), |
606 | }); |
607 | if (!response.ok) { |
608 | const text = await response.text(); |
609 | throw new Error(`${response.status} ${text}`); |
610 | } |
611 | return await response.json(); |
612 | } |
613 |
|