Skip to content

Zoho: Update CRM modules

Zoho modules.updateModules: arguments, response, policy and SDK examples.

← Modules operations · Get started

Operation zoho.updatemodules

Provider route: PUT /crm/v8/settings/modules. Alter supplies the connection’s credentials and routing.

Install @alter-ai/sdk @alter-ai/zoho with npm, or alter-sdk-zoho with pip. Supply your connected customer’s grant ID and the arguments described below.

import { App } from "@alter-ai/sdk";
import { ZohoIntegration } from "@alter-ai/zoho";
async function execute(input: Parameters<ZohoIntegration["modules"]["updateModules"]>[0]) {
const app = new App({ apiKey: process.env.ALTER_API_KEY! });
try {
const provider = new ZohoIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! });
const call = await provider.modules.updateModules(input);
const result = await call.wait();
return result.bodyJson();
} finally {
await app.close();
}
}
import os
from alter_sdk import App
from alter_sdk_zoho import ZohoIntegration
async def execute(arguments):
async with App(api_key=os.environ["ALTER_API_KEY"]) as app:
provider = ZohoIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]})
call = await provider.modules.update_modules(arguments)
result = await call.wait()
return result.body_json()
FieldTypePresenceDescription and constraints
$objectRootAdditional keys: not allowed
bodyobjectRequired within parentBatch update request containing an array of module objects to update. Each module requires `id`; other fields are optional.
Additional keys: not allowed
body.modulesarrayRequired within parentArray of module objects to update, with one to 100 unique entries. Each entry must include `id`; `singular_label`, `plural_label`, and `profiles` are optional.
Maximum items: 100
Minimum items: 1
Unique items: true
body.modules[]objectEach itemModule update definition containing labels, module ID, and accessible profiles.
Additional keys: not allowed
body.modules[].idstringRequired within parentUnique identifier of the module to update. Must be a valid existing module ID.
Format: int64
body.modules[].plural_labelstringOptionalPlural display label for the module shown in the UI while referring to multiple records (for example, `Contacts` or `Deals`). Must contain only alphanumeric characters and underscores, with no consecutive underscores, and cannot be empty.
Maximum length: 50
Minimum length: 1
body.modules[].profilesarrayOptionalOptional list of user profiles to add or remove from this module using delta semantics. Profiles without `_delete` are added; profiles with `_delete: null` are removed. Omit this to leave profile assignments unchanged.Each profile ID represents a permission set determining which users can view, create, edit, or delete records in this module.
Maximum items: 203
Minimum items: 1
Unique items: true
body.modules[].profiles[]objectEach itemProfile identifier object.
Additional keys: not allowed
body.modules[].profiles[]._deletenullOptionalDeletion marker. Set to `null` to remove this profile from the module’s access list. Omit to add or retain the profile.
body.modules[].profiles[].idstringRequired within parentUnique numeric identifier of the user profile.
Format: int64
Maximum length: 19
Minimum length: 1
Pattern: ^[0-9]{1,19}$
body.modules[].singular_labelstringOptionalSingular display label for the module shown in the UI while referring to a single record (for example, `Contact` or `Deal`). Must contain only alphanumeric characters and underscores, with no consecutive underscores, and cannot be empty.
Maximum length: 50
Minimum length: 1

Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.

FieldTypePresenceDescription and constraints
$JSONRoot
$ (anyOf 1)objectAlternativeSuccessful batch update response containing one result object per updated module, each confirming the update with a `SUCCESS` code.
Additional keys: not allowed
$ (anyOf 1).modulesarrayRequired within parentArray of success results for each updated module in the batch, preserving request order.
Maximum items: 100
Minimum items: 1
$ (anyOf 1).modules[]objectEach itemSuccessful module update result
Additional keys: not allowed
$ (anyOf 1).modules[].codestringRequired within parentReturns `SUCCESS` when the module updates without error.
Known values: SUCCESS
$ (anyOf 1).modules[].detailsobjectRequired within parentDetails of the successfully updated module, containing its unique identifier.
Additional keys: not allowed
$ (anyOf 1).modules[].details.idstringRequired within parentUnique identifier of the module that was successfully updated.
Format: int64
Minimum length: 1
$ (anyOf 1).modules[].messagestringRequired within parentConfirmation text returned when the module update succeeds.
Maximum length: 1000
Minimum length: 1
$ (anyOf 1).modules[].statusstringRequired within parentStatus indicator for successful operation
Known values: success
$ (anyOf 2)objectAlternativeMulti-status batch update response containing one result object per module in the request. Results preserve request order and include both successful and failed updates.
Additional keys: not allowed
$ (anyOf 2).modulesarrayRequired within parentArray of per-module results for each entry in the request, preserving request order. Each element is either a success or an error variant.
Maximum items: 100
Minimum items: 1
$ (anyOf 2).modules[]JSONEach itemRepresents a single per-module result entry, which is either a success result or an error result.
$ (anyOf 2).modules[] (anyOf 1)objectAlternativeSuccessful module update result
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 1).codestringRequired within parentSuccess code indicating that module was updated
Known values: SUCCESS
$ (anyOf 2).modules[] (anyOf 1).detailsobjectRequired within parentSuccess details containing the updated module ID
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 1).details.idstringRequired within parentUnique identifier of the successfully updated module.
Format: int64
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 1).messagestringRequired within parentConfirmation text returned for the module entry that succeeded.
Maximum length: 1000
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 1).statusstringRequired within parentFixed value `success`, indicating this module’s update succeeded in the partial batch.
Known values: success
$ (anyOf 2).modules[] (anyOf 2)objectAlternativeReturned when a module update failed due to invalid data - type mismatch, unsupported enum value, or exceeded field length.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 2).codestringRequired within parentFixed value `INVALID_DATA`, indicating this module’s update failed because the submitted data was invalid.
Known values: INVALID_DATA
$ (anyOf 2).modules[] (anyOf 2).detailsJSONRequired within parentRepresents the error details for the invalid field.
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 1)objectAlternativeIdentifies a field that received a value of the wrong data type, including the API name, JSONPath, and expected type.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 1).api_namestringRequired within parentAPI name of the field that received a value of an incorrect data type.
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 1).expected_data_typestringOptionalExpected data type for the field
Maximum length: 50
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 1).json_pathstringRequired within parentJSONPath locating the field in the request body that contained the incorrect data type.
Maximum length: 100
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2)objectAlternativeIdentifies a parameter whose submitted value is not among the supported enum values, with the parameter name, index, and accepted values.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).indexJSONOptional
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).index (anyOf 1)integerAlternativeZero-based index of the invalid parameter.
Format: int32
Minimum: 0
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).index (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).param_namestringRequired within parentName of the invalid parameter
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).supported_valuesarrayOptionalList of valid values accepted for the parameter.
Maximum items: 10
Minimum items: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 2).supported_values[]stringEach itemA valid value accepted for this parameter
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3)objectAlternativeIdentifies a field whose submitted value exceeded the maximum allowed character length, with the API name, JSONPath, and the limit.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3).api_namestringRequired within parentAPI name of the field whose value exceeded the maximum allowed length.
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3).json_pathstringRequired within parentJSONPath of the field in the request whose value exceeded the maximum allowed length.
Maximum length: 100
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3).maximum_lengthJSONRequired within parent
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3).maximum_length (anyOf 1)integerAlternativeMaximum number of characters permitted for the field.
Format: int32
Minimum: 1
$ (anyOf 2).modules[] (anyOf 2).details (anyOf 3).maximum_length (anyOf 2)stringAlternativePattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$
$ (anyOf 2).modules[] (anyOf 2).messagestringRequired within parentExplanation of the validation failure for the module entry that contained invalid data.
Maximum length: 1000
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 2).statusstringRequired within parentFixed value `error`, indicating the module update failed because the submitted data was invalid.
Known values: error
$ (anyOf 2).modules[] (anyOf 3)objectAlternativeReturned when a module update failed because a mandatory field was absent from the request.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 3).codestringRequired within parentFixed value `MANDATORY_NOT_FOUND`, indicating the module update failed because a required field was absent from the request.
Known values: MANDATORY_NOT_FOUND
$ (anyOf 2).modules[] (anyOf 3).detailsobjectRequired within parentDetails identifying the required field that was missing, including its API name and JSONPath location.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 3).details.api_namestringRequired within parentAPI name of the required field that was not provided in the request.
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 3).details.json_pathstringRequired within parentJSONPath location in the request where the required field was expected.
Maximum length: 100
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 3).messagestringRequired within parentExplanation of the missing required field that caused the module entry to fail.
Maximum length: 1000
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 3).statusstringRequired within parentFixed value `error`, indicating the module update failed because a mandatory field was missing.
Known values: error
$ (anyOf 2).modules[] (anyOf 4)objectAlternativeReturned when a module update failed because the request attempted to modify a restricted or immutable field.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 4).codestringRequired within parentFixed value `NOT_ALLOWED`, indicating the module update failed because the request attempted to modify a field that cannot be changed.
Known values: NOT_ALLOWED
$ (anyOf 2).modules[] (anyOf 4).detailsobjectRequired within parentDetails identifying the restricted field that was included in the request, by API name and JSONPath.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 4).details.api_namestringRequired within parentAPI name of the field whose update is not permitted.
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 4).details.json_pathstringRequired within parentJSONPath location of the restricted field in the request.
Maximum length: 100
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 4).messagestringRequired within parentExplanation of the disallowed field modification that caused the module entry to be rejected, identifying which field cannot be changed.
Maximum length: 1000
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 4).statusstringRequired within parentFixed value `error`, indicating the module update failed because a disallowed field modification was attempted.
Known values: error
$ (anyOf 2).modules[] (anyOf 5)objectAlternativeReturned when a module update failed because the referenced module does not exist, the ID is invalid, or the operation is unsupported for this module type.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 5).codestringRequired within parentFixed value `INVALID_MODULE`, indicating the module reference is invalid, does not exist, or the operation is not supported for this module type.
Known values: INVALID_MODULE
$ (anyOf 2).modules[] (anyOf 5).detailsobjectRequired within parentDetails identifying the field or reference that caused the invalid-module error, by API name and JSONPath.
Additional keys: not allowed
$ (anyOf 2).modules[] (anyOf 5).details.api_namestringRequired within parentAPI name of the field or reference associated with the invalid module.
Maximum length: 50
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 5).details.json_pathstringRequired within parentJSONPath to the invalid module reference in the request.
Maximum length: 100
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 5).messagestringRequired within parentExplanation of why the module identifier was not recognized or could not be updated.
Maximum length: 1000
Minimum length: 1
$ (anyOf 2).modules[] (anyOf 5).statusstringRequired within parentFixed value `error`, indicating the module update failed because the module reference is invalid or the operation is unsupported for this module type.
Known values: error

SDK function policy ID: zoho.updatemodules. Catalog operation: updateModules. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.

Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.

Official provider source

Report an issue with this page

Necessary

Required for sign-in, security, authorization, and remembering your choices.

Always active

Analytics

Helps us understand which product and documentation features are useful.

Performance diagnostics

Uses performance tracing and privacy-masked session replay to diagnose problems.

You can change these choices at any time from Cookie settings.