0

Update scoring rule

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

667
  const response = await fetch(url, {
668
    method: "PUT",
669
    headers: {
670
      "Content-Type": "application/json",
671
      Authorization: "Zoho-oauthtoken " + auth.token,
672
    },
673
    body: JSON.stringify(body),
674
  });
675
  if (!response.ok) {
676
    const text = await response.text();
677
    throw new Error(`${response.status} ${text}`);
678
  }
679
  return await response.json();
680
}
681