Kaizen #73 - Portal #APIs [Part II]

Kaizen #73 - Portal #APIs [Part II]

Hi everyone! Welcome back to another week of Kaizen!

In continuation to our previous post on Portal APIs in Zoho CRM, we will discuss more on user groups and users this week.
Let us consider the case of the automobile industry. In such a case, you may need to give portal access to more than one user type, such as customers, employees, and partners.
With user types, each user will have access to the information that is most relevant to their role. For example, when you give your customers portal access, they can book services, view and update their service schedules. Your partners or employees with portal access can view customer behaviours, sales date, etc. 

Create a User Type via API

Using this API, you can create a user type for a portal you have already created.

Request URL: {api-domain}/crm/v4/settings/portals/<portal_name>/user_type
Request Method: POST
Scope: ZohoCRM.settings.clientportal.ALL/CREATE

Input Keys

 Key
 Description
name : string, mandatory
Name of the user type.
personality_module : string, mandatory
The module api name for which the user type is to be configured.
active : Boolean, optional
Represents whether the user type is active or inactive. The default value is false.
modules : JSONArray, mandatory
The JSON array containing keys that describe the user type's settings for different modules that are linked to the personality module through look up or multi-lookup fields.
modules.layouts.id : Number, mandatory
The layout the user type should be able to access.
modules.permission : key value pairs, mandatory
Boolean key-value pairs that represent the permissions you want the users to have in the module. The possible keys are view, edit, create.
modules.views : JSONObject, mandatory
The custom view or canvas view to display the records for the user type.
modules.id: Number, mandatory
The related module id.
modules.shared_type : String, mandatory
Represents whether the module is a private or public module.
modules.filters : JSONObject,mandatory
Field id, by which the module record can be filtered for the user type.
modules.fields : JSONArray, mandatory
Field permissions for the user type with read_only (Boolean), api_name(field API name) and id of the each field to be configured for the module. Note that if any of the fields in the layout is marked mandatory, they cannot be read-only in the portal.

For example, the following request creates the user type Customer for the ZylkerAutos portal, with view permission to the service module.

Sample Request:

Sample Input:

{
   "user_type":[
      {
         "name":"Customer",
         "personality_module":{
            "api_name":"Customer"
         },
         "active":true,
         "modules":[
            {
               "layouts":[
                  {
                     "id":"1306462000000095055"
                  }
               ],
               "permissions":{
                  "view" : true
               },
               "views":{
                  "id":"1306462000000091501",
                  "type":"custom_view"
               },
               "filters": null,
                fields": [
                 {
                      "id": "18936550000000063924",
                      "read_only": false
                  }
                ],
               "id":"1306462000000000125",
               "shared_type":"private"
            },
            {
               "layouts": null,
                "views": null,
               "filters": null,
               "permissions":{
                  "view":true
               },
               "id":"1306462000000000147",
               "shared_type":"private"
            }
         ]
      }
   ]
}

Sample Response

{
    "user_type": [
        {
            "code": "SUCCESS",
            "details": {
                "id": "1306462000001856005"
            },
            "message": "user type created successfully.",
            "status": "success"
        }
    ]
}

Update User Type via API

Suppose your automobile dealership firm decides to expand your online booking system to allow customers to schedule test drives, in addition to service appointments. In this case, the dealership may need to update the Customer user type to include the ability to book test drives. You can use the Update User Type API to make such updates. 

Request URL : {api-domain}/crm/v4/settings/portals/<portal_name>/user_type/<user_type_id>
Request Method : PUT
Scope : ZohoCRM.settings.clientportal.ALL/UPDATE

Input Keys:

Key Description
name : string, optionalName of the user type.
personality_module : string, optionalThe module api name for which the user type is to be configured.
active : Boolean, optionalRepresents whether the user type is active or inactive. The default value is false.
modules : JSONArray, optional
The JSON array containing keys that describe the user type's settings for different modules that are linked to the personality module through look up or multi-lookup fields.
modules.layouts.id : Number, optionalThe layout the user type should be able to access.
modules.permission : key value pairs, optional
Boolean key-value pairs that represent the permissions you want the users to have in the module. The possible keys are view, edit, create.
modules.views : JSONObject, optional
The custom view or canvas view to display the records for the user type.
modules.id: Number, optional
The related module id.
modules.shared_type : String, optional
Represents whether the module is a private or public module.
modules.filters : JSONObject, optional
Field id, by which the module record can be filtered for the user type.
modules.fields : JSONArray, optional
Field permissions for the user type with read_only (Boolean), api_name(field API name) and id of the each field to be configured for the module. Note that if any of the fields in the layout is marked mandatory, they cannot be read-only in the portal.

For example, the following request updates the Customer user type's access to the Service module.

Sample Request

https://www.zohoapis.com/crm/v4/settings/portals/ZylkerAutos/user_type/1306462000001856005

Sample Input

{
   "user_type":[
      {
         "modules":[
            {
               "permissions":{
                  "edit":true,
                  "create":true
               },
               "id":"1306462000000000125",
               "shared_type":"private"
            }
         ]
      }
   ]
}

Sample Response

{
    "user_type": [
        {
            "code": "SUCCESS",
            "details": {
                "id": "1306462000001856005"
            },
            "message": "Portal user type updated successfully.",
            "status": "success"
        }
    ]
}

Delete User Type via API

Let us consider the case where your company had a user type for suppliers in its portal but has decided to handle supplier management through a separate system. In this case, you would need to delete the supplier user type from the portal to simplify user management and ensure that only the necessary users have access to the portal. 

Request URL: {api-domain}/crm/v4/settings/portals/<portal_name>/user_type/<user_type_id>
Request Method: DELETE
Scope: ZohoCRM.settings.clientportal.ALL/DELETE

For example, the following request deletes the supplier user type from the ZylkerAutos portal.

Sample Request

Sample Response

{
    "user_type": [
        {
            "code": "SUCCESS",
            "details": {
                "id": 1306462000001857564
            },
            "message": "Portal user type deleted successfully.",
            "status": "success"
        }
    ]
}

Please note that you cannot delete a user type with users. You should transfer the users to another portal before deleting the user type.

Transfer User to another User Type

There may be scenarios where you have to transfer a user from one user type to another. For instance, if a customer is upgraded to premium level which offers additional services, you might need to transfer the customer to a new user type that includes these features. Also, if you ever have to delete a user type, you need to transfer the users in that user type to another one. 

Request URL: {api-domain}/crm/v4/settings/portals/<portal_name>/user_type/<user_type_id>/users/action/transfer
Request Method: POST
Scope: ZohoCRM.settings.clientportal.ALL/UPDATE

Parameters

Parameter
Description
transfer_to : string, mandatory
The id of the user type to which you want to transfer the users.
personality_ids : string, mandatory
comma separated list of ids of the users you want to transfer.

Sample Request

Sample Response

{
    "users": [
        {
            "code": "SUCCESS",
            "details": {
                "personality_id": "1306462000000659009"
            },
            "message": "User has been transferred successfully",
            "status": "success"
        }
    ]
}

You can transfer up to 200 users in one API call. If there are more than 200 users to be transferred, a job will be scheduled.

Change Status of a User 

If you want to change the activate or deactivate a user, you can do so using this API.

Request URL: {api-domain}/crm/v4/settings/portals/<portal_name>/user_type/<user_type_id>/users/<user_id>/actions/change_status
Request Method: PUT
Scope: ZohoCRM.settings.clientportal.ALL/UPDATE

Parameters

Parameter
Description
active : Boolean, mandatory
To mention whether to activate or deactivate the user.

The following request changes the status of the user to inactive.

Sample Request

Sample Response

{
    "change_status": [
        {
            "code": "SUCCESS",
            "details": {
                "personality_id": "1306462000000665004"
            },
            "message": "Status of the user changed successfully.",
            "status": "success"
        }
    ]
}

Delete User from Portal

There may be times when you want to delete a user from a portal to prevent unauthorized access. You may use the Delete User from Portal API to do this.

Request URL: {api-domain}/crm/v4/settings/portals/<portal_name>/user_type/<user_type_id>/users
Request Method: DELETE
Scope: ZohoCRM.settings.clientportal.ALL/DELETE

Parameters

ParameterDescription
personality_ids : string, mandatoryComma separated ids of the users you want to delete from the portal.

Sample Request

Sample Response

{
    "users": [
        {
            "code": "SUCCESS",
            "details": {
                "personality_id": "1306462000000659009"
            },
            "message": "Portal user deleted successfully.",
            "status": "success"
        }
    ]
}

Please note you can delete up to 499 users from a portal synchronously. If you want to delete 500 or more users, a delete job will be scheduled.

We hope you found this post useful, and that it has given you a better understanding of the Portal APIs. See you next week with another useful topic.

If you have any questions or feedback, please let us know in comments below, or write to us at support@zohocrm.com. We would love to hear from you!


    • Recent Topics

    • [Important announcement] Zoho Writer will mandate DKIM configuration for automation users

      Hi all, Effective Dec. 31, 2024, configuring DKIM for From addresses will be mandatory to send emails via Zoho Writer. DKIM configuration allows recipient email servers to identify your emails as valid and not spam. Emails sent from domains without DKIM
    • 【Zoho Backstage】2025年7月のアップデート紹介

      本投稿は、本社のZoho Desk コミュニティに投稿された以下の記事を翻訳し、一部抜粋したものです。 What's New - July 2025 | Zoho Backstage ユーザーの皆さま、こんにちは。コミュニティチームの中野です。 本投稿では、Zoho Backstage の直近のアップデートを3点抜粋して、ご紹介します。 目次 1.参加可否の確認:RSVP 2.証明書作成ツール:Certificate Builder 3.登録の承認 :Registration Approval 1.参加可否の確認:RSVP
    • Option to select location?

      As a business coach, I meet with clients at various public locations. I have two or three pre-determined locations that I meet at. I would like the client to choose the location when booking an appointment. Is there a way to do that with a single service, or is the best way to accomplish this by creating one service for each location offered?
    • Can we have Backorder Management ?

      Can we have Backorder Management ?
    • Display a field of an Account on the Ticket view

      Hi there, We would like to display of the Account of the user submitting a ticket on the ticket view. See for example: How can this be achieved? It doesn't really matter where it will be placed as long as it is shown there. Thanks, Snir
    • Two factor authentication for helpdesk users

      The company i work for wants use the helpdesk site in Zoho desk, as a place for their distribution partners to ask question and look for information about our product. The things there is suppose to go up there is somewhat confidential between my company
    • Remove "Invalid entries found. Rectify and submit again" modal

      Following up on a post from a few years back, but can the Zoho team consider either removing the 'Invalid entries found. Rectify and submit again' modal that displays for empty mandatory fields OR allow an admin to change it? I've built a custom error
    • Insurance Agencies

      I am reaching out to see if anyone has any experience in the Insurance Agency world with using Zoho exclusively for the CRM and commissions side of things. Lots of strong features like drip campaigns, meeting, calendars, emails, can all be found in here.
    • Problem with Egyptian internet ISP

      Dears,  We have problem with our ADSL internet SP, That your site not working with. So, we contact them and they asking us to contact you to solve this problem.  The problem that when we are connecting to Tedata ADSL your website not working (Business Email).  BR,, Mohamed Omar 
    • Emails not being received from a particular domain

      Cannot receive any emails sent from atco.com Domain is in the spam whitelist so should be no reason for it not to be coming through. Have filed a ticket and besides a generic response of we are looking at it - it seems there is no actual support workers
    • Mail Not Showing In Inbox or Sent Box

      Hi, there are mails that are not displaying in both my inbox and sent box. I just tried the iPad app and it is the same but there is a blank field where a mail should be and it refers to a server error. Please fix this.
    • Marketing Automation List Entry Criteria is no longer an option

      For a couple of years now we have used the "List Entry Criteria" option to filter our Journey recipient list. All of a suddent the option no longer exists for New Lists and I can only delete the option from existing lists but can no longer edit it. Anyone
    • GCLID arrives not in CRM with iframe integrated ZOHO Form

      Hello amazing community, I enabled Adwords integration in ZOHO CRM. I have a ZOHO Form integrated in a wordpress. I tested iframe and Javascript. I enabled the "handover" GCLID in the ZOHO Form. When I add a GLID with http://www.example.com/?gclid=TeSter-123.
    • Add Webhook Response Module to Zoho Flow

      Hi Zoho Flow Team, We’d like to request a Webhook Response capability for Zoho Flow that can return a dynamic, computed reply to the original webhook caller after / during the flow runs. What exists today Zoho Flow’s webhook trigger can send custom acknowledgements
    • Bidirectional sync between Zoho Bookings and Zoho CRM - Part 1

      Hey, community members! The default integration between Zoho CRM and Zoho Bookings is unidirectional, which means that any appointments booked, rescheduled, or deleted in Zoho Bookings will be reflected in Zoho CRM. However, any modifications made to
    • Is it possible to edit placeholder text?

      In the master slides I want to make sure my templates have more meaning for the users and want to replace the standard placeholder text with something more instructional. Instead of "Click to edit Mast subtitle styles" I want to have "Click to enter reporting
    • Delay function execute

      I've got a workflow which uses a webhook to send information to Flow, which in return updates a record in Creator. Problem is, by the time this has executed, the rest of my script has run and can't find the (yet to be) updated info in the record. Is there
    • How to allow download of a file AFTER information is collected?

      I can't find this anywhere. Can someone help with what seems to be a pretty basic web function today? - File is stored in Workdrive - Prospect goes to a URL where the file is located - System requests prospect to enter "Name" and "Email" - An email is
    • Add Baseline methods to API

      There are no API methods for creating or querying baselines,  Use case: Customer is notified of the current project start date according to plan via another product/integration. We would like to auto create a baseline (Automated via API) at the point
    • Bulk Fill In & Edit PO/Bill/SO/Invoice

      Hello, I am adding stock in bulk on a PO, the system is automatically populating the Rate (price) and Tax from the item data. Problem is that the bill rate is different from the rate on the item data, so I have to manually erase each and enter the price.
    • Fixed Assets beg balance

      Hello, I trust you are well I'm a new zoho books user and I find it difficult to plug in the fixed assets balance and here's what I have done: 1- I imported the fixed assets data into the fixed assets module as per the instructions 2- the import process
    • Syncing with Google calendar, Tasks and Events

      Is it possible to sync Zoho CRM calendar, task and events with Google Calendar's tasks and events. With the increasing adoption by many major tool suppliers to sync seamlessly with Google's offerings (for instance I use the excellent Any.do task planning
    • CRM Deluge how can link attach file with workdrive file.

      Hi, We have create file at workdrive and would like to link to attachment at crm module by deluge. Right now can only upload it to attachment but can not link the file from workdrive. Thank you
    • Feature announcement: AI-powered document generator in Zoho Sign

      Hi there! We recently announced manual document creation by offering an editor within Zoho Sign. Today, we are excited to announce AI-powered document generation to help you draft agreements, purchase orders, and other important business documents in
    • Permanently deleted files

      Is there a way to get back permanently deleted files from your account if they were accidentally deleted and no longer recoverable from the recycling bin? I know I am probably screwed but I just figured I would ask.
    • Shared Mailbox in iOS app

      Hi, On the desktop I am using a Shared mailbox for our company's general mailbox that somebody else should be able to view. In the iOS app however I can't find it? Old sources on the internet says this isn't possible but that can't be right? Somebody
    • Tip #41- Simplify Compliance and Efficiency with Zoho Assist’s Data Cleanup Feature- 'Insider Insights'

      Managing device data efficiently is just as important as securing remote access. With Zoho Assist’s Data Cleanup feature, admins can easily remove outdated or unnecessary device records, keeping the console organized and secure. This action is carried
    • Revenue Management: #6 Revenue Recognition in Professional Services Industry

      If you run a consulting firm, agency, or any service-based business, you have a situation where you have signed the contract, maybe even sent the invoice, and have received some initial payments. So, can you consider this as revenue? What if the project
    • Zoho fsm scheduled maintenance dispatch

      Hi, I'm reaching out regarding an issue I'm encountering with the Scheduled Maintenance feature in Zoho FSM. I’m trying to configure it so that it automatically dispatches all maintenance jobs scheduled within the next 150 days, starting from today. However,
    • zoho.inventory.getRecords returns no records

      I running a custom function (Deluge) in Zoho Flow with a connection to Zoho Inventory. To debug the problem, I created the test function below. It returns "Number of contacts fetched: 0". This confirms that there's no issue with the org ID or connection
    • Zoho Campaigns Event timestamps do not propagate to Zoho CRM

      We have integrated Zoho CRM and Zoho Campaigns. But when looking at Contact records, the Campaign event data is missing the actual timestamps: especially when a particular email was sent. They're not in the Campaigns related list, and the cannot be found
    • Feature announcement - Simplifying document creation with Zoho Sign

      Hi there, We are pleased to announce the release of our document creation feature, enabling you to create, edit, and finalize documents like agreements, purchase orders, and contracts without relying on external tools or applications. &lt;br&gt; This
    • Integrating File Attachments in Zoho Flow Email Notifications

      Hi, I would like to be able to send an email once an entry is made in a form, and in this email, I would like to attach a file that has been added to the form using the ImageUpload (or FileUpload) widget. So, I started by creating a flow that will trigger
    • Zoho project purchases

      Hi Folks, I think having a purchase module in projects will help in putting together a project p and L. Project wise purchases and expenses.  Do let me know your thoughts.
    • Create Tasklist with Tasklist Template using API v3

      In the old API, we could mention the parameter 'task_template_id' when creating a tasklist via API to apply a tasklist template: https://www.zoho.com/projects/help/rest-api/tasklists-api.html#create-tasklist In API v3 there does not seem to be a way to
    • How can I restore all the deleted Time entries of a Task in Zoho Projects

      How can I restore all the deleted Time entries of a Task in Zoho Projects? Query: In Zoho Projects, I cloned a task and deleted the time entries from the cloned task. However, this also deleted the time entries from the original task. How can I restore
    • Is there a way to make an account inactive in ZoHo Desk

      We have a few Clients "Accounts" that we no longer do business with. It would be beneficial for them to not show up in lists. However, we want to go back and view tickets, time, etc.
    • How to set the value of the Phone field importing contacts in Zoho Desk

      Hi everyone, i'm new in Zoho Desk, we're setting up the environment and i'm importing contacts from another CRM using a file CSV and i'm getting a problem with phone numbers (italian): the leading zero is cut away, also if the value is inside double quotes.
    • Set Custom Icon for Custom Modules in new Zoho CRM UI

    • Deprecation Notice: OpenAI Assistants API will be shut down on August 26, 2026

      I recieved this email from openAI what does it means for us that are using the integration and what should we do? Earlier this year, we shared our plan to deprecate the Assistants API once the Responses API reached feature parity. With the launch of Conversations,
    • Next Page