Zoho: Get bulk write job details
Zoho bulkWrite.getBulkWriteJobDetails: arguments, response, policy and SDK examples.
← Bulk write operations · Get started
Operation zoho.getbulkwritejobdetails
Provider route: GET /crm/bulk/v8/write/{jobId}. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”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["bulkWrite"]["getBulkWriteJobDetails"]>[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.bulkWrite.getBulkWriteJobDetails(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom 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.bulk_write.get_bulk_write_job_details(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.jobId | string | Required within parent | Maximum length: 100 |
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Represents the full state and processing result of a bulk write job, including the overall status, the per-resource processing summary, the job creator, and the download URL of the result archive. Additional keys: not allowed |
callback | object | Required within parent | Represents the callback configuration registered for the bulk write job, used to notify the configured URL when the job completes or fails. Additional keys: not allowed |
callback.method | string | Required within parent | Represents the HTTP method used to invoke the callback URL. Possible values: post - The callback URL is invoked with an HTTP POST request. Known values: post |
callback.url | string | Required within parent | Represents the URL that receives the job completion notification. Possible values: http://requestbin.fullcontact.com/1fcimk51 - Sample callback URL recorded for the job. Known values: http://requestbin.fullcontact.com/1fcimk51 |
character_encoding | string | Optional | Represents the character encoding used to read the uploaded file. Returned with the value detected automatically by Zoho CRM, or with the value supplied in the original create request when it was specified. Maximum length: 50 |
created_by | object | Required within parent | Represents the Zoho CRM user who created the bulk write job. Additional keys: not allowed |
created_by.id | string | Required within parent | Represents the unique identifier of the Zoho CRM user who created the bulk write job. Refer to the [Users API](users.yaml#$.paths./users.get) endpoint for details. Maximum length: 100 |
created_by.name | string | Required within parent | Represents the display name of the Zoho CRM user who created the bulk write job. Refer to the [Users API](users.yaml#$.paths./users.get) endpoint for details. Maximum length: 100 |
created_time | string | Required within parent | Represents the ISO 8601 timestamp at which Zoho CRM created the bulk write job. Format: date-time |
id | string | Required within parent | Represents the unique identifier of the bulk write job. Maximum length: 100 |
operation | string | Required within parent | Represents the type of bulk write operation performed by the job, such as insert, update, or upsert. Maximum length: 50 |
resource | array | Required within parent | Represents the list of resource entries processed by the bulk write job, one entry per resource configuration submitted in the create request. Maximum items: 100 |
resource[] | object | Each item | Represents the processing record for a single resource configuration in the bulk write job. Additional keys: not allowed |
resource[].code | string | Optional | Represents the result code returned by Zoho CRM for the processing of this resource entry. Maximum length: 100 |
resource[].field_mappings | array | Optional | Represents the field mappings applied between columns in the uploaded file and fields on the target module for this resource. Maximum items: 500 |
resource[].field_mappings[] | object | Each item | Represents the mapping between a single column in the uploaded file and a field on the target module. Additional keys: not allowed |
resource[].field_mappings[].api_name | string | Required within parent | Represents the API name of the field on the target module that received the column value. Refer to the [Fields API](fields.yaml#$.paths./settings/fields.get) resource for details. Maximum length: 100 |
resource[].field_mappings[].default_value | object | Optional | Represents the default value used to populate the field when the corresponding column in the file was empty. Additional keys: not allowed |
resource[].field_mappings[].default_value.value | string | Required within parent | Represents the default value that replaces empty cells in the mapped column. Maximum length: 500 |
resource[].field_mappings[].find_by | JSON | Optional | |
resource[].field_mappings[].find_by (anyOf 1) | string | Alternative | Represents the field that the bulk write job used to match existing records for this mapping. Returned as null when no matching key was supplied. Maximum length: 100 |
resource[].field_mappings[].find_by (anyOf 2) | null | Alternative | Represents the field that the bulk write job used to match existing records for this mapping. Returned as null when no matching key was supplied. Maximum length: 100 |
resource[].field_mappings[].format | JSON | Optional | |
resource[].field_mappings[].format (anyOf 1) | string | Alternative | Represents the value format applied to the column when the field requires a specific date, datetime, numeric, or currency pattern. Returned as null when no explicit format was supplied. Maximum length: 100 |
resource[].field_mappings[].format (anyOf 2) | null | Alternative | Represents the value format applied to the column when the field requires a specific date, datetime, numeric, or currency pattern. Returned as null when no explicit format was supplied. Maximum length: 100 |
resource[].field_mappings[].index | JSON | Required within parent | |
resource[].field_mappings[].index (anyOf 1) | integer | Alternative | Represents the zero-based column index in the uploaded file whose value was written to the mapped field. Format: int32 |
resource[].field_mappings[].index (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].field_mappings[].module | JSON | Optional | |
resource[].field_mappings[].module (anyOf 1) | string | Alternative | Represents the related module API name supplied for lookup-style mappings that resolve values against a sibling module. Returned as null when no related module was supplied. Maximum length: 100 |
resource[].field_mappings[].module (anyOf 2) | null | Alternative | Represents the related module API name supplied for lookup-style mappings that resolve values against a sibling module. Returned as null when no related module was supplied. Maximum length: 100 |
resource[].field_mappings[].parent_column_index | JSON | Optional | |
resource[].field_mappings[].parent_column_index (anyOf 1) | JSON | Alternative | |
resource[].field_mappings[].parent_column_index (anyOf 1) (anyOf 1) | integer | Alternative | Represents the column index of the parent record reference when the mapped field is part of a subform or related record. Returned as null when no parent column was supplied. Format: int32 |
resource[].field_mappings[].parent_column_index (anyOf 1) (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].field_mappings[].parent_column_index (anyOf 2) | null | Alternative | Represents the column index of the parent record reference when the mapped field is part of a subform or related record. Returned as null when no parent column was supplied. Format: int32 |
resource[].file | object | Optional | Represents the per-file processing summary for this resource entry. Additional keys: not allowed |
resource[].file.added_count | JSON | Required within parent | |
resource[].file.added_count (anyOf 1) | integer | Alternative | Represents the number of records that were created from the file. Format: int32 |
resource[].file.added_count (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].file.name | string | Required within parent | Represents the file name read from the uploaded archive. Maximum length: 255 |
resource[].file.skipped_count | JSON | Required within parent | |
resource[].file.skipped_count (anyOf 1) | integer | Alternative | Represents the number of records that were skipped during processing. The error column in the result file explains why each record was skipped. Format: int32 |
resource[].file.skipped_count (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].file.status | string | Required within parent | Represents the processing status of the file within this resource entry. Possible values: COMPLETED - The file was fully processed. ADDED - The file was queued for processing. INPROGRESS - The file is currently being processed. SKIPPED - The file was skipped. Known values: COMPLETED, ADDED, INPROGRESS, SKIPPED |
resource[].file.total_count | JSON | Required within parent | |
resource[].file.total_count (anyOf 1) | integer | Alternative | Represents the total number of records that were created, updated, or skipped during processing. Format: int32 |
resource[].file.total_count (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].file.updated_count | JSON | Required within parent | |
resource[].file.updated_count (anyOf 1) | integer | Alternative | Represents the number of records that were updated from the file. Format: int32 |
resource[].file.updated_count (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
resource[].ignore_empty | boolean | Optional | Indicates whether empty cells in the uploaded file were skipped when updating records. Possible values: true - Empty values in a column were ignored and only non-empty values were written. false - Empty values in a column were written to the corresponding field. |
resource[].module | object | Required within parent | Represents the target CRM module into which the resource was written. Additional keys: not allowed |
resource[].module.api_name | string | Required within parent | Represents the API name of the target CRM module into which records were written. Refer to the [Modules](modules.yaml#$.paths./settings/modules.get) resource for details. Maximum length: 100 |
resource[].module.id | string | Optional | Represents the unique identifier of the target CRM module. Refer to the [Modules](modules.yaml#$.paths./settings/modules.get) resource for details. Maximum length: 100 |
resource[].status | string | Required within parent | Represents the processing status of this resource entry. Possible values: COMPLETED - All records in the resource were processed successfully. ADDED - The resource was queued for processing. INPROGRESS - The resource is currently being processed. SKIPPED - The resource was skipped without being processed. Known values: COMPLETED, ADDED, INPROGRESS, SKIPPED |
resource[].type | string | Required within parent | Represents the type of the processed resource. Possible values: data - Indicates that the resource contained record data. Known values: data |
result | object | Optional | Represents the result metadata of the completed bulk write job, including the download URL of the result archive. Additional keys: not allowed |
result.download_url | string | Required within parent | Represents the URL from which the result archive of the bulk write job can be downloaded. The download URL is accessible for up to seven days after job completion. Maximum length: 500 |
status | string | Required within parent | Represents the current overall status of the bulk write job. Sample values include ADDED, INPROGRESS, COMPLETED, and SKIPPED. Maximum length: 50 |
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: zoho.getbulkwritejobdetails. Catalog operation: getBulkWriteJobDetails. 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.