Edits history of script submission #22082 for ' Update custom layouts (zoho)'

  • bun
    One script reply has been approved by the moderators
    Ap­pro­ved
    //native
    type Zoho = {
      token: string;
    };
    /**
     * Update custom layouts
     *
     */
    export async function main(
      auth: Zoho,
      _module: string,
      body: {
        layouts: {
          display_type?: number;
          api_name?: string;
          has_more_profiles: false | true;
          created_time: string;
          modified_time: string;
          visible: false | true;
          source: string;
          id: string;
          name: string;
          display_label: string;
          mode: string;
          subform_properties: { pinned_column: false | true };
          status: string;
          show_business_card: false | true;
          generated_type: string;
          created_for: { name: string; id: string; email?: string };
          convert_mapping: {
            Contacts: { name: string; id: string };
            Deals: {
              fields: {
                api_name?: string;
                field_label?: string;
                id?: string;
                required?: false | true;
              }[];
              name: string;
              id: string;
            };
            Accounts: { name: string; id: string };
            Invoices: { name: string; id: string };
            SalesOrders: { name: string; id: string };
          };
          modified_by: { name: string; id: string; email?: string };
          profiles: {
            default: false | true;
            name: string;
            id: string;
            _default_view: { name: string; id: string; type: string };
            _default_assignment_view?: {
              name?: string;
              id?: string;
              type?: string;
            };
          }[];
          created_by: { name: string; id: string; email?: string };
          sections: {
            display_label: string;
            sequence_number: number;
            isSubformSection: false | true;
            tab_traversal: string;
            api_name: string;
            column_count: number;
            name: string;
            generated_type: string;
            id: string;
            type: string;
            fields: {
              required: false | true;
              validation_rule: {};
              default_value: {};
              sequence_number: number;
              section_id: number;
              blueprint_supported: false | true;
              json_type: string;
              length: number;
              decimal_place: number;
              multi_module_lookup: {};
              sharing_properties: {
                scheduler_status?: string;
                share_preference_enabled?: false | true;
                share_permission?: "read-write" | "read-only" | "full-access";
              };
              currency: {};
              file_upolad_optionlist: {
                actual_value: string;
                display_value: string;
              }[];
              lookup: {};
              subform: {};
              formula: {};
              multiselectlookup: {};
              multiuserlookup: {
                display_label: string;
                linking_module: {
                  api_name: string;
                  id: string;
                  module_name?: string;
                  module?: string;
                };
                connected_module: {
                  api_name: string;
                  id: string;
                  module_name?: string;
                  module?: string;
                };
                lookup_apiname: string;
                api_name: string;
                connectedfield_apiname: string;
                connectedlookup_apiname: string;
                id: string;
                record_access: false | true;
              };
              pick_list_values: {
                colour_code: string;
                actual_value: string;
                type: "unused" | "used";
                id: string;
                sequence_number: number;
                display_value: string;
                reference_value?: string;
                deal_category?: string;
                probability?: number;
                forecast_category?: { id?: string; name?: string };
                expected_data_type?: string;
                sys_ref_name?: string;
                forecast_type?: string;
                maps?: { api_name?: string; pick_list_values?: {}[] }[];
                _delete?: false | true;
                show_value?: false | true;
              }[];
              allowed_modules: {
                api_name: string;
                id: string;
                module_name?: string;
                module?: string;
              }[];
              hipaa_compliance_enabled: false | true;
              hipaa_compliance: {
                restricted_in_export: false | true;
                restricted: false | true;
              };
              static_values: {
                sequence_number: number;
                id: string;
                value: string;
              }[];
              static_field: false | true;
              layout_associations: { api_name: string; name: string; id: string }[];
              _delete: { permanent: false | true };
              associated_module: {
                api_name: string;
                id: string;
                module_name?: string;
                module?: string;
              };
              data_type: string;
              operation_type: {
                web_update: false | true;
                api_create: false | true;
                web_create: false | true;
                api_update: false | true;
              };
              system_mandatory: false | true;
              webhook: false | true;
              virtual_field: false | true;
              field_read_only: false | true;
              customizable_properties: string[];
              read_only: false | true;
              custom_field: false | true;
              businesscard_supported: false | true;
              filterable: false | true;
              visible: false | true;
              available_in_user_layout: false | true;
              display_field: false | true;
              pick_list_values_sorted_lexically: false | true;
              sortable: false | true;
              separator: false | true;
              searchable: false | true;
              enable_colour_code: false | true;
              mass_update: false | true;
              created_source: string;
              type: string;
              display_label: string;
              column_name: string;
              api_name: string;
              display_type: number;
              ui_type: number;
              colour_code_enabled_by_system: false | true;
              quick_sequence_number: string;
              email_parser: {
                fields_update_supported: false | true;
                record_operations_supported: false | true;
              };
              rollup_summary: {};
              refer_from_field: { id: string; api_name: string };
              created_time: string;
              modified_time: string;
              show_type: number;
              category: number;
              id: string;
              profiles: { name: string; id: string; permission_type: string }[];
              view_type: {
                view: false | true;
                edit: false | true;
                quick_create: false | true;
                create: false | true;
              };
              unique: {};
              sub_module: {
                api_name: string;
                id: string;
                module_name?: string;
                module?: string;
              };
              external: {
                show: false | true;
                type: string;
                allow_multiple_config?: false | true;
              };
              private?: {
                restricted: false | true;
                type: string;
                export: false | true;
              };
              convert_mapping: {
                Contacts?: string;
                Deals?: string;
                Accounts?: string;
              };
              autonumber: {
                starting_number_length: number;
                prefix: string;
                suffix: string;
                start_number: number;
              };
              auto_number: {};
              crypt: {
                mode: string;
                status: number;
                column?: string;
                table?: string;
                encFldIds?: string[];
                notify?: string;
              };
              tooltip: { name: string; value: string };
              history_tracking: {
                module: {
                  layout?: {
                    display_type?: number;
                    api_name?: string;
                    has_more_profiles: false | true;
                    created_time: string;
                    modified_time: string;
                    visible: false | true;
                    source: string;
                    id: string;
                    name: string;
                    display_label: string;
                    mode: string;
                    subform_properties: { pinned_column: false | true };
                    status: string;
                    show_business_card: false | true;
                    generated_type: string;
                    created_for: { name: string; id: string; email?: string };
                    convert_mapping: {
                      Contacts: { name: string; id: string };
                      Deals: {
                        fields: {
                          api_name?: string;
                          field_label?: string;
                          id?: string;
                          required?: false | true;
                        }[];
                        name: string;
                        id: string;
                      };
                      Accounts: { name: string; id: string };
                      Invoices: { name: string; id: string };
                      SalesOrders: { name: string; id: string };
                    };
                    modified_by: { name: string; id: string; email?: string };
                    profiles: {
                      default: false | true;
                      name: string;
                      id: string;
                      _default_view: { name: string; id: string; type: string };
                      _default_assignment_view?: {
                        name?: string;
                        id?: string;
                        type?: string;
                      };
                    }[];
                    created_by: { name: string; id: string; email?: string };
                    sections: {
                      display_label: string;
                      sequence_number: number;
                      isSubformSection: false | true;
                      tab_traversal: string;
                      api_name: string;
                      column_count: number;
                      name: string;
                      generated_type: string;
                      id: string;
                      type: string;
                      fields: {
                        required: false | true;
                        validation_rule: {};
                        default_value: {};
                        sequence_number: number;
                        section_id: number;
                        blueprint_supported: false | true;
                        json_type: string;
                        length: number;
                        decimal_place: number;
                        multi_module_lookup: {};
                        sharing_properties: {
                          scheduler_status?: string;
                          share_preference_enabled?: false | true;
                          share_permission?:
                            | "read-write"
                            | "read-only"
                            | "full-access";
                        };
                        currency: {};
                        file_upolad_optionlist: {
                          actual_value: string;
                          display_value: string;
                        }[];
                        lookup: {};
                        subform: {};
                        formula: {};
                        multiselectlookup: {};
                        multiuserlookup: {
                          display_label: string;
                          linking_module: {
                            api_name: string;
                            id: string;
                            module_name?: string;
                            module?: string;
                          };
                          connected_module: {
                            api_name: string;
                            id: string;
                            module_name?: string;
                            module?: string;
                          };
                          lookup_apiname: string;
                          api_name: string;
                          connectedfield_apiname: string;
                          connectedlookup_apiname: string;
                          id: string;
                          record_access: false | true;
                        };
                        pick_list_values: {
                          colour_code: string;
                          actual_value: string;
                          type: "unused" | "used";
                          id: string;
                          sequence_number: number;
                          display_value: string;
                          reference_value?: string;
                          deal_category?: string;
                          probability?: number;
                          forecast_category?: { id?: string; name?: string };
                          expected_data_type?: string;
                          sys_ref_name?: string;
                          forecast_type?: string;
                          maps?: { api_name?: string; pick_list_values?: {}[] }[];
                          _delete?: false | true;
                          show_value?: false | true;
                        }[];
                        allowed_modules: {
                          api_name: string;
                          id: string;
                          module_name?: string;
                          module?: string;
                        }[];
                        hipaa_compliance_enabled: false | true;
                        hipaa_compliance: {
                          restricted_in_export: false | true;
                          restricted: false | true;
                        };
                        static_values: {
                          sequence_number: number;
                          id: string;
                          value: string;
                        }[];
                        static_field: false | true;
                        layout_associations: {
                          api_name: string;
                          name: string;
                          id: string;
                        }[];
                        _delete: { permanent: false | true };
                        associated_module: {
                          api_name: string;
                          id: string;
                          module_name?: string;
                          module?: string;
                        };
                        data_type: string;
                        operation_type: {
                          web_update: false | true;
                          api_create: false | true;
                          web_create: false | true;
                          api_update: false | true;
                        };
                        system_mandatory: false | true;
                        webhook: false | true;
                        virtual_field: false | true;
                        field_read_only: false | true;
                        customizable_properties: string[];
                        read_only: false | true;
                        custom_field: false | true;
                        businesscard_supported: false | true;
                        filterable: false | true;
                        visible: false | true;
                        available_in_user_layout: false | true;
                        display_field: false | true;
                        pick_list_values_sorted_lexically: false | true;
                        sortable: false | true;
                        separator: false | true;
                        searchable: false | true;
                        enable_colour_code: false | true;
                        mass_update: false | true;
                        created_source: string;
                        type: string;
                        display_label: string;
                        column_name: string;
                        api_name: string;
                        display_type: number;
                        ui_type: number;
                        colour_code_enabled_by_system: false | true;
                        quick_sequence_number: string;
                        email_parser: {
                          fields_update_supported: false | true;
                          record_operations_supported: false | true;
                        };
                        rollup_summary: {};
                        refer_from_field: { id: string; api_name: string };
                        created_time: string;
                        modified_time: string;
                        show_type: number;
                        category: number;
                        id: string;
                        profiles: {
                          name: string;
                          id: string;
                          permission_type: string;
                        }[];
                        view_type: {
                          view: false | true;
                          edit: false | true;
                          quick_create: false | true;
                          create: false | true;
                        };
                        unique: {};
                        sub_module: {
                          api_name: string;
                          id: string;
                          module_name?: string;
                          module?: string;
                        };
                        external: {
                          show: false | true;
                          type: string;
                          allow_multiple_config?: false | true;
                        };
                        private?: {
                          restricted: false | true;
                          type: string;
                          export: false | true;
                        };
                        convert_mapping: {
                          Contacts?: string;
                          Deals?: string;
                          Accounts?: string;
                        };
                        autonumber: {
                          starting_number_length: number;
                          prefix: string;
                          suffix: string;
                          start_number: number;
                        };
                        auto_number: {};
                        crypt: {
                          mode: string;
                          status: number;
                          column?: string;
                          table?: string;
                          encFldIds?: string[];
                          notify?: string;
                        };
                        tooltip: { name: string; value: string };
                        history_tracking: {};
                        association_details: {
                          related_field: {
                            api_name: string;
                            id: string;
                            module_name?: string;
                            module?: string;
                          };
                          lookup_field: {
                            api_name: string;
                            id: string;
                            module_name?: string;
                            module?: string;
                          };
                        };
                        additional_column: string;
                        field_label: string;
                        "common.picklist": {};
                        _update_existing_records: false | true;
                        number_separator: false | true;
                        textarea: { type?: string };
                      }[];
                      properties: {
                        reorder_rows: false | true;
                        maximum_rows: number;
                        tooltip: { name?: "Info Icon"; value?: string };
                      };
                      _delete: { permanent: false | true };
                    }[];
                    actions_allowed: {
                      edit: false | true;
                      rename: false | true;
                      clone: false | true;
                      downgrade: false | true;
                      delete: false | true;
                      deactivate: false | true;
                      set_layout_permissions: false | true;
                    };
                  };
                  display_label?: string;
                  api_name?: string;
                  module?: {};
                  id?: string;
                  module_name?: string;
                };
                duration_configured_field: {
                  api_name: string;
                  id: string;
                  module_name?: string;
                  module?: string;
                };
              };
              association_details: {
                related_field: {
                  api_name: string;
                  id: string;
                  module_name?: string;
                  module?: string;
                };
                lookup_field: {
                  api_name: string;
                  id: string;
                  module_name?: string;
                  module?: string;
                };
              };
              additional_column: string;
              field_label: string;
              "common.picklist": {};
              _update_existing_records: false | true;
              number_separator: false | true;
              textarea: { type?: string };
            }[];
            properties: {
              reorder_rows: false | true;
              maximum_rows: number;
              tooltip: { name?: "Info Icon"; value?: string };
            };
            _delete: { permanent: false | true };
          }[];
          actions_allowed: {
            edit: false | true;
            rename: false | true;
            clone: false | true;
            downgrade: false | true;
            delete: false | true;
            deactivate: false | true;
            set_layout_permissions: false | true;
          };
        }[];
      },
    ) {
      const url = new URL(`https://zohoapis.com/crm/v8/settings/layouts`);
      for (const [k, v] of [["module", _module]]) {
        if (v !== undefined && v !== "" && k !== undefined) {
          url.searchParams.append(k, v);
        }
      }
      const response = await fetch(url, {
        method: "PATCH",
        headers: {
          "Content-Type": "application/json",
          Authorization: "Zoho-oauthtoken " + auth.token,
        },
        body: JSON.stringify(body),
      });
      if (!response.ok) {
        const text = await response.text();
        throw new Error(`${response.status} ${text}`);
      }
      return await response.json();
    }
    

    Submitted by hugo697 235 days ago