Zoho CRM · OpenAPI Overlay 1.0.0

API Evangelist conversational phrasing for Zoho Crm Actions API

49 actions 49 updates phrasing extends openapi/zoho-crm-actions-api-openapi.yml
Generated by API Evangelist Written by API Evangelist tooling for Zoho CRM's API. It is a proposal applied on top of the contract, not a document Zoho CRM publishes.
View Overlay File View on GitHub Overlay Specification

What the actions change

x-apievangelist-phrasing

Targets 49 · first 16 shown; the file carries all of them

$.info
$.paths['/{module}/{recordId}/actions/associate_email'].post
$.paths['/{module}/actions/unenrol_from_cadences'].post
$.paths['/{module}/actions/enrol_in_cadences'].post
$.paths['/{module}/{record}/actions/change_owner'].post
$.paths['/{module}/actions/change_owner'].post
$.paths['/{moduleApiName}/actions/fetch_full_data'].get
$.paths['/{moduleApiName}/{id}/actions/fetch_full_data'].get
$.paths['/{module}/{masterRecordId}/actions/merge'].get
$.paths['/{module}/{masterRecordId}/actions/merge'].post
$.paths['/{moduleApiName}/{recordId}/actions/get_related_records_count'].post
$.paths['/{moduleApiName}/{id}/actions/convert'].post
$.paths['/{moduleApiName}/{recordId}/actions/send_mail_merge'].post
$.paths['/{moduleApiName}/{recordId}/actions/sign_mail_merge'].post
$.paths['/{moduleApiName}/{recordId}/actions/download_mail_merge'].post
$.paths['/{module}/actions/mass_change_owner'].get

OpenAPI Overlay

Raw ↑
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
  title: API Evangelist conversational phrasing for Zoho Crm Actions API
  version: 1.0.0
extends: openapi/zoho-crm-actions-api-openapi.yml
actions:
- target: $.info
  update:
    x-apievangelist-phrasing:
      method: generated
      generated: '2026-09-26'
      generator: build-phrasing.py
      label: Generated by API Evangelist
      operations: 48
- target: $.paths['/{module}/{recordId}/actions/associate_email'].post
  update:
    x-apievangelist-phrasing:
      intent: Associate emails with a CRM record
      effect: write
      questions:
      - How do I link an existing email to a specific contact or lead record?
      - Can I attach sent emails to a deal record after the fact so they show in its history?
      instructions:
      - text: Associate this email with record {recordId} in the {module} module.
        slots:
          module: path.module
          recordId: path.recordId
      - text: Link the email details in {data} to {module} record {recordId}.
        slots:
          module: path.module
          recordId: path.recordId
          data: requestBody.data
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/unenrol_from_cadences'].post
  update:
    x-apievangelist-phrasing:
      intent: Unenroll records from cadences
      effect: write
      questions:
      - How do I take leads out of a follow-up cadence they were enrolled in?
      - Can I stop several records from receiving a cadence's scheduled follow-ups at once?
      instructions:
      - text: Unenroll records {ids} in {module} from cadences {cadences_ids}.
        slots:
          module: path.module
          ids: requestBody.ids
          cadences_ids: requestBody.cadences_ids
      - text: Remove these {module} records from their cadence follow-ups.
        slots:
          module: path.module
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/enrol_in_cadences'].post
  update:
    x-apievangelist-phrasing:
      intent: Enroll records into a manual cadence
      effect: write
      questions:
      - How do I enroll a batch of leads into a manual cadence in Zoho CRM?
      - Can I add existing contacts to a follow-up cadence through the API?
      instructions:
      - text: Enroll {module} records {ids} into cadences {cadences_ids}.
        slots:
          module: path.module
          ids: requestBody.ids
          cadences_ids: requestBody.cadences_ids
      - text: Start the manual cadence for these {module} records.
        slots:
          module: path.module
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{record}/actions/change_owner'].post
  update:
    x-apievangelist-phrasing:
      intent: Change the owner of one record
      effect: write
      questions:
      - How do I reassign a single deal to a different sales rep?
      - When I change one record's owner, can its related tasks and notes move with it?
      instructions:
      - text: Make {owner} the owner of {module} record {record}.
        slots:
          module: path.module
          record: path.record
          owner: requestBody.owner
      - text: Reassign {module} record {record} to {owner} and notify them.
        slots:
          module: path.module
          record: path.record
          owner: requestBody.owner
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/change_owner'].post
  update:
    x-apievangelist-phrasing:
      intent: Change the owner of several chosen records
      effect: write
      questions:
      - How do I reassign a hand-picked list of leads to one new owner in a single call?
      - Can I change the owner of multiple records by their IDs and carry related records over too?
      instructions:
      - text: Transfer {module} records {ids} to owner {owner}.
        slots:
          module: path.module
          ids: requestBody.ids
          owner: requestBody.owner
      - text: Give {owner} ownership of these selected {module} records.
        slots:
          module: path.module
          owner: requestBody.owner
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/actions/fetch_full_data'].get
  update:
    x-apievangelist-phrasing:
      intent: Fetch full rich text for several records
      effect: read
      questions:
      - How do I get the complete, untruncated rich text fields for a batch of records?
      - What is the maximum number of rich text fields I can request when pulling full data for multiple records?
      instructions:
      - text: Fetch full rich text field {fields} for {moduleApiName} records {ids}.
        slots:
          moduleApiName: path.moduleApiName
          ids: query.ids
          fields: query.fields
      - text: Pull the complete rich text content of {moduleApiName} records {ids}.
        slots:
          moduleApiName: path.moduleApiName
          ids: query.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{id}/actions/fetch_full_data'].get
  update:
    x-apievangelist-phrasing:
      intent: Fetch full rich text for one record
      effect: read
      questions:
      - How can I read the whole content of a long rich text field on one record?
      - If I don't name fields, does fetching full data for a record return every rich text field?
      instructions:
      - text: Get all rich text fields in full for {moduleApiName} record {id}.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      - text: Show the untruncated {fields} field of {moduleApiName} record {id}.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
          fields: query.fields
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{masterRecordId}/actions/merge'].get
  update:
    x-apievangelist-phrasing:
      intent: Check the status of a record merge job
      effect: read
      questions:
      - How do I find out whether an asynchronous merge of duplicate records has finished?
      - Can I track the progress of a merge job started on a master record?
      instructions:
      - text: Check merge job {job_id} for master record {masterRecordId} in {module}.
        slots:
          module: path.module
          masterRecordId: path.masterRecordId
          job_id: query.job_id
      - text: Show the merge job status for {module} master record {masterRecordId}.
        slots:
          module: path.module
          masterRecordId: path.masterRecordId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{masterRecordId}/actions/merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Merge duplicate records into a master record
      effect: destructive
      questions:
      - How do I merge duplicate contacts into one master record?
      - Can I choose which field values survive when combining duplicate records?
      instructions:
      - text: Merge the duplicates in {merge} into {module} master record {masterRecordId}.
        slots:
          module: path.module
          masterRecordId: path.masterRecordId
          merge: requestBody.merge
      - text: Combine duplicate {module} records into master record {masterRecordId}.
        slots:
          module: path.module
          masterRecordId: path.masterRecordId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/get_related_records_count'].post
  update:
    x-apievangelist-phrasing:
      intent: Count related records under a parent record
      effect: read
      questions:
      - How many notes, tasks or deals are attached to a given account without fetching them all?
      - Can I count a record's related list entries filtered by approval or conversion status?
      instructions:
      - text: Count the related records of {moduleApiName} record {recordId}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: Get related list counts {get_related_records_count} for {moduleApiName} record {recordId}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          get_related_records_count: requestBody.get_related_records_count
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{id}/actions/convert'].post
  update:
    x-apievangelist-phrasing:
      intent: Convert a quote or sales order to the next stage
      effect: write
      questions:
      - How do I turn a quote into a sales order automatically?
      - Can a sales order be converted straight into an invoice through the API?
      instructions:
      - text: Convert {moduleApiName} record {id} into its next inventory document.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      - text: Turn quote {id} into a sales order.
        slots:
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/send_mail_merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Send an email from a mail merge template
      effect: write
      questions:
      - How do I email a record a document generated from a mail merge template?
      - Can a mail merge email include file attachments or inline images?
      instructions:
      - text: Send the mail merge email for {moduleApiName} record {recordId}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: Email record {recordId} in {moduleApiName} using mail merge settings {send_mail_merge}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          send_mail_merge: requestBody.send_mail_merge
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/sign_mail_merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Send a mail merge document for signature
      effect: write
      questions:
      - How do I send a merged contract document out for e-signature and approval?
      - What setup is needed in Writer before I can send a mail merge document for signing?
      instructions:
      - text: Send the merged document for {moduleApiName} record {recordId} for signing.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: Route a mail merge for signature on {moduleApiName} record {recordId} with {sign_mail_merge}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          sign_mail_merge: requestBody.sign_mail_merge
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/download_mail_merge'].post
  update:
    x-apievangelist-phrasing:
      intent: Download a merged mail merge document
      effect: read
      questions:
      - How can I download the document a mail merge template produces for a record?
      - Can I get the merged file for a deal without emailing it to anyone?
      instructions:
      - text: Download the mail merge document for {moduleApiName} record {recordId}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: Generate and download the merged file {download_mail_merge} for record {recordId} in {moduleApiName}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          download_mail_merge: requestBody.download_mail_merge
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_change_owner'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a mass change owner job
      effect: read
      questions:
      - How do I see whether a mass owner reassignment job has completed?
      - Is there a way to check how many records a mass change owner job has processed?
      instructions:
      - text: Check mass change owner job {job_id} in {module}.
        slots:
          module: path.module
          job_id: query.job_id
      - text: Show the progress of owner reassignment job {job_id} for {module}.
        slots:
          module: path.module
          job_id: query.job_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_change_owner'].post
  update:
    x-apievangelist-phrasing:
      intent: Reassign owner for every record in a custom view
      effect: write
      questions:
      - How do I reassign all records in a saved custom view to a new owner?
      - Can I limit a mass owner change to a territory or extra criteria?
      instructions:
      - text: Change the owner of all {module} records in custom view {cvid} to {owner}.
        slots:
          module: path.module
          cvid: requestBody.cvid
          owner: requestBody.owner
      - text: Mass reassign {module} records in view {cvid} within territory {territory} to {owner}.
        slots:
          module: path.module
          cvid: requestBody.cvid
          owner: requestBody.owner
          territory: requestBody.territory
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_delete'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a mass delete job
      effect: read
      questions:
      - How do I find out if a scheduled mass delete has finished?
      - Can I see how many records a mass delete job actually removed?
      instructions:
      - text: Check mass delete job {job_id} in {module}.
        slots:
          module: path.module
          job_id: query.job_id
      - text: Show the results of the {module} mass delete job {job_id}.
        slots:
          module: path.module
          job_id: query.job_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_delete'].post
  update:
    x-apievangelist-phrasing:
      intent: Mass delete records by IDs or custom view
      effect: destructive
      questions:
      - How do I delete every record in a custom view at once?
      - Can I schedule a mass deletion of records filtered by territory?
      instructions:
      - text: Mass delete all {module} records in custom view {cvid}.
        slots:
          module: path.module
          cvid: requestBody.cvid
      - text: Schedule a mass delete of {module} records {ids}.
        slots:
          module: path.module
          ids: requestBody.ids
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_update'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a mass update job
      effect: read
      questions:
      - How do I monitor progress of an asynchronous mass update job?
      - Can I see how many records were updated or failed in a mass update?
      instructions:
      - text: Check mass update job {job_id} for {module}.
        slots:
          module: path.module
          job_id: query.job_id
      - text: Show record counts for the {module} mass update job {job_id}.
        slots:
          module: path.module
          job_id: query.job_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/mass_update'].post
  update:
    x-apievangelist-phrasing:
      intent: Set one field value across many records
      effect: write
      questions:
      - How do I set the same field value on a large batch of records at once?
      - Can I mass update a picklist value on dozens of leads by their IDs?
      instructions:
      - text: Mass update {module} records {ids} with field values {data}.
        slots:
          module: path.module
          ids: requestBody.ids
          data: requestBody.data
      - text: Set the same field value on all these {module} records.
        slots:
          module: path.module
      method: generated
      generated: '2026-09-26'
- target: $.paths['/actions/watch'].get
  update:
    x-apievangelist-phrasing:
      intent: List active notification channels
      effect: read
      questions:
      - Which webhook notification channels do I currently have active in Zoho CRM?
      - Can I list notification channels only for one module?
      instructions:
      - text: List my active notification channels.
      - text: Show notification channels watching the {module} module.
        slots:
          module: query.module
      - text: Get details of notification channel {channel_id}.
        slots:
          channel_id: query.channel_id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/actions/watch'].put
  update:
    x-apievangelist-phrasing:
      intent: Replace a notification channel configuration
      effect: write
      questions:
      - How do I overwrite the whole configuration of an existing notification channel?
      - Can I replace every setting of a watch subscription in one call rather than patching it?
      instructions:
      - text: Replace the notification channel configuration with {watch}.
        slots:
          watch: requestBody.watch
      - text: Overwrite all settings of my existing watch subscription.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/actions/watch'].post
  update:
    x-apievangelist-phrasing:
      intent: Subscribe to record change notifications
      effect: write
      questions:
      - How do I get a webhook call whenever records change in my CRM?
      - Can I create several notification channels in a single request?
      instructions:
      - text: Create notification channels {watch}.
        slots:
          watch: requestBody.watch
      - text: Set up a new watch so my URL is notified when records are created or edited.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/actions/watch'].delete
  update:
    x-apievangelist-phrasing:
      intent: Disable notification channels
      effect: destructive
      questions:
      - How do I stop receiving CRM change notifications on a channel?
      - Can I turn off several notification channels by their IDs at once?
      instructions:
      - text: Disable notification channels {channel_ids}.
        slots:
          channel_ids: query.channel_ids
      - text: Turn off my CRM change notification channels.
      method: generated
      generated: '2026-09-26'
- target: $.paths['/actions/watch'].patch
  update:
    x-apievangelist-phrasing:
      intent: Change a notification channel's URL or events
      effect: write
      questions:
      - How do I change only the callback URL or events of a notification channel?
      - What is the longest expiry I can set when extending a notification channel?
      instructions:
      - text: Point notification channel {channel_id} to {notify_url} for events {events}.
        slots:
          channel_id: requestBody.channel_id
          notify_url: requestBody.notify_url
          events: requestBody.events
      - text: Extend channel {channel_id} expiry to {channel_expiry}.
        slots:
          channel_id: requestBody.channel_id
          channel_expiry: requestBody.channel_expiry
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/portal_invite'].get
  update:
    x-apievangelist-phrasing:
      intent: Check a scheduled portal invitation job
      effect: read
      questions:
      - How do I see whether bulk portal invitations have been sent?
      - Can I check the status of a portal invite job by its job ID?
      instructions:
      - text: Check portal invitation job {job_id} for {module}.
        slots:
          module: path.module
          job_id: query.job_id
      - text: Show scheduled portal invitations in {module}.
        slots:
          module: path.module
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/portal_invite'].post
  update:
    x-apievangelist-phrasing:
      intent: Invite multiple portal users
      effect: write
      questions:
      - How do I invite a batch of contacts to our customer portal?
      - Can I send portal invitations for many records in one request?
      instructions:
      - text: Send portal invitations {portal_invite} for {module}.
        slots:
          module: path.module
          portal_invite: requestBody.portal_invite
      - text: Invite these {module} records to the portal in bulk.
        slots:
          module: path.module
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{recordId}/actions/portal_invite'].post
  update:
    x-apievangelist-phrasing:
      intent: Invite one record to the portal
      effect: write
      questions:
      - How do I invite a single contact to the portal as a specific user type?
      - Can I choose the language of a portal invitation for one person?
      instructions:
      - text: Invite {module} record {recordId} to the portal as user type {user_type_id} with invite type {type}.
        slots:
          module: path.module
          recordId: path.recordId
          user_type_id: query.user_type_id
          type: query.type
      - text: Send a {language} portal invite to {module} record {recordId} as user type {user_type_id}, type {type}.
        slots:
          module: path.module
          recordId: path.recordId
          user_type_id: query.user_type_id
          type: query.type
          language: query.language
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{recordID}/actions/clone'].post
  update:
    x-apievangelist-phrasing:
      intent: Clone a record
      effect: write
      questions:
      - How do I make a copy of an existing deal with a few fields changed?
      - Can I duplicate a record without triggering workflows?
      instructions:
      - text: Clone {module} record {recordID}.
        slots:
          module: path.module
          recordID: path.recordID
      - text: Duplicate {module} record {recordID} with changes {data}.
        slots:
          module: path.module
          recordID: path.recordID
          data: requestBody.data
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{id}/actions/share_emails'].post
  update:
    x-apievangelist-phrasing:
      intent: Share one record's emails with colleagues
      effect: write
      questions:
      - How do I let teammates see the emails on a single contact?
      - Can I share the email history of one deal with other users?
      instructions:
      - text: Share the emails of {moduleApiName} record {id}.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      - text: Make the emails on record {id} in {moduleApiName} visible to my colleagues.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{id}/actions/unshare_emails'].post
  update:
    x-apievangelist-phrasing:
      intent: Stop sharing one record's emails
      effect: destructive
      questions:
      - How do I make a single contact's emails private again?
      - Can I revoke email sharing on just one record?
      instructions:
      - text: Unshare the emails of {moduleApiName} record {id}.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      - text: Stop sharing emails on record {id} in {moduleApiName}.
        slots:
          moduleApiName: path.moduleApiName
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/actions/share_emails'].post
  update:
    x-apievangelist-phrasing:
      intent: Share emails of many records
      effect: write
      questions:
      - How do I share email history for a list of records in one go?
      - Is bulk email sharing possible across several leads by their IDs?
      instructions:
      - text: Share emails of {moduleApiName} records {ids}.
        slots:
          moduleApiName: path.moduleApiName
          ids: requestBody.ids
      - text: Bulk share the emails of these {moduleApiName} records with my team.
        slots:
          moduleApiName: path.moduleApiName
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/actions/unshare_emails'].post
  update:
    x-apievangelist-phrasing:
      intent: Stop sharing emails of many records
      effect: destructive
      questions:
      - How do I revoke email sharing for a whole batch of records?
      - Can I make emails private again on several records at once?
      instructions:
      - text: Unshare emails of {moduleApiName} records {ids}.
        slots:
          moduleApiName: path.moduleApiName
          ids: requestBody.ids
      - text: Bulk revoke email sharing on these {moduleApiName} records.
        slots:
          moduleApiName: path.moduleApiName
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleName}/{id}/actions/send_mail'].post
  update:
    x-apievangelist-phrasing:
      intent: Send an email to a record
      effect: write
      questions:
      - How do I send an email to a lead straight from the CRM?
      - Can I email a contact using one of my saved email templates?
      instructions:
      - text: Send an email to {moduleName} record {id}.
        slots:
          moduleName: path.moduleName
          id: path.id
      - text: Email record {id} in {moduleName} with content {data}.
        slots:
          moduleName: path.moduleName
          id: path.id
          data: requestBody.data
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/share'].get
  update:
    x-apievangelist-phrasing:
      intent: See who a record is shared with
      effect: read
      questions:
      - Who has access to a record that was shared manually?
      - Can I check which users a specific account is shared with?
      instructions:
      - text: Show who {moduleApiName} record {recordId} is shared with.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: List sharing for record {recordId} in {moduleApiName} filtered to user {sharedTo}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          sharedTo: query.sharedTo
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/share'].put
  update:
    x-apievangelist-phrasing:
      intent: Change sharing permissions on a record
      effect: write
      questions:
      - How do I change a user's access level on a record I already shared?
      - Can I update existing record sharing and notify the shared members?
      instructions:
      - text: Update sharing on {moduleApiName} record {recordId} to {share}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          share: requestBody.share
      - text: Change existing share permissions for record {recordId} in {moduleApiName}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/share'].post
  update:
    x-apievangelist-phrasing:
      intent: Share a record with users
      effect: write
      questions:
      - How do I share a single deal with another user who doesn't own it?
      - Can I share a record and have the new users notified?
      instructions:
      - text: Share {moduleApiName} record {recordId} with {share}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
          share: requestBody.share
      - text: Give colleagues access to record {recordId} in {moduleApiName} and notify them.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{moduleApiName}/{recordId}/actions/share'].delete
  update:
    x-apievangelist-phrasing:
      intent: Revoke all sharing on a record
      effect: destructive
      questions:
      - How do I stop sharing a record with everyone it was shared with?
      - Can I remove all manual shares from one record at once?
      instructions:
      - text: Revoke all sharing on {moduleApiName} record {recordId}.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      - text: Unshare record {recordId} in {moduleApiName} from everyone.
        slots:
          moduleApiName: path.moduleApiName
          recordId: path.recordId
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/add_tags'].post
  update:
    x-apievangelist-phrasing:
      intent: Add tags to multiple records
      effect: write
      questions:
      - How do I tag a batch of leads in one call?
      - Can I overwrite existing tags when tagging several records?
      instructions:
      - text: Add tags {tags} to {module} records {ids}.
        slots:
          module: path.module
          tags: requestBody.tags
          ids: requestBody.ids
      - text: Tag these {module} records with {tags}, replacing old tags.
        slots:
          module: path.module
          tags: requestBody.tags
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/actions/remove_tags'].post
  update:
    x-apievangelist-phrasing:
      intent: Remove tags from multiple records
      effect: write
      questions:
      - How do I strip a tag from many records at once?
      - Can I remove several tags from a list of contacts in bulk?
      instructions:
      - text: Remove tags {tags} from {module} records {ids}.
        slots:
          module: path.module
          tags: requestBody.tags
          ids: requestBody.ids
      - text: Bulk untag {tags} across these {module} records.
        slots:
          module: path.module
          tags: requestBody.tags
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{id}/actions/add_tags'].post
  update:
    x-apievangelist-phrasing:
      intent: Add tags to a single record
      effect: write
      questions:
      - How do I tag one specific deal?
      - Can I replace a single record's existing tags with new ones?
      instructions:
      - text: Add tags {tags} to {module} record {id}.
        slots:
          module: path.module
          id: path.id
          tags: requestBody.tags
      - text: Tag record {id} in {module} with {tags}.
        slots:
          module: path.module
          id: path.id
          tags: requestBody.tags
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{id}/actions/remove_tags'].post
  update:
    x-apievangelist-phrasing:
      intent: Remove tags from a single record
      effect: write
      questions:
      - How do I remove a tag from just one contact?
      - Can I untag one specific record without touching others?
      instructions:
      - text: Remove tags {tags} from {module} record {id}.
        slots:
          module: path.module
          id: path.id
          tags: requestBody.tags
      - text: Untag record {id} in {module}.
        slots:
          module: path.module
          id: path.id
      method: generated
      generated: '2026-09-26'
- target: $.paths['/{module}/{record}/actions/assign_territories'].post
  update:
    x-apievangelist-phrasing:
      intent: Assign territories to one record
      effect: write
      questions:
      - How do I put a single account into a sales territory?
      - Can I assign territories to one specific record by its ID?
      instructions:
      - text: Assign territories to {module} record {record}.
        slots:
          module: path.module
          record: path.record
      - text: Add record {record} in {module} to territories {data}.
        slots:
          module: path.module
          record: path.record
          data: requestBody.data
      method: generated
      generated: '2026-09-26'


# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/zoho-crm/refs/heads/main/overlays/zoho-crm-actions-api-phrasing-overlay.yaml