0

Create scoring rules

by
Published Oct 17, 2025
Script zoho Verified

The script

Submitted by hugo697 Bun
Verified 235 days ago
1
//native
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