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