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

    • Zoho Mail API - Upload Attachment

      https://www.zoho.com/mail/help/api/post-upload-attachments.html I followed the steps from the API documentation and wrote a backend in JavaScript to send emails. Normal emails are sent without any problems. However, I can’t send emails with attachments.
    • Unable to create custom fields for shipment order

      I'm unable to create custom fields for shipment orders, even though the custom fields are set up correctly. A request to the following endpoint: https://www.zohoapis.com/inventory/v1/settings/preferences/customfields?organization_id=${ZOHO_ORGANIZATION_ID}&entity=shipment_order
    • Kaizen #202 - Answering Your Questions | Testing and Using REST APIs in Widgets

      Hello Developers! Welcome back to a fresh week of Kaizen! Thank you for your active participation in sharing feedback and queries for the 200th milestone. This week, we will look at the following queries related to widget: Widget Testing Using REST API
    • Introducing the 'Send as Email' option on the Zoho Desk iOS mobile app

      Hello everyone! In the latest version(v2.10.2) of the Zoho Desk iOS app, we have brought in support for the 'Send as Email' option while creating a ticket. This feature enables you to reach out to the customers by sending outbound emails. The emails are
    • Zoho Forms Not Loading on Website – DNS Resolution Error

      Dear Zoho Support Team, User ID : 20069458731 We are experiencing an issue with the Zoho Form embedded on our website (https://vitel.com.tr/satis-destek-formu/). The form is not loading, and the following error message appears in the browser: “forms.zohopublic.eu
    • Data backup retention question/

      My zohocrm subscription gives me 2 full data backups per month. I have a scheduled backup configured to run twice a month. I just went to download my backup and i can't find it, it ran about 9 days ago... From what i can tell with google zoho only keeps
    • Basic Apple Watch App

      Sometimes I leave my phone behind. I will get push notifications that tickets are updated etc.. It would be nice to at least view them and do a few basic functions. reassign. public reply. private comment.
    • Look and Feel Uniformity

      Someone needs to go through the mobile app and match the look and feel of the web version. For example, it is global standard to highlight private notes as yellow background hue. Desk does that on web, but not on mobile. Mobile also has an odd blue icon
    • Managing two books in Zoho Books

      is it possible to effectively manage two separate books within Zoho Books? My organization is considering handling accounting for two distinct subsidiaries, and we would like to understand the best way to achieve this within the Zoho Books.
    • Display All Custom Buttons Without Dropdown on Record Page

      In my org's workflow we usually want to do some kind of quick action off of an individual record - i.e. of an individual contact, or individual deal. What we have always found a hindrance is the location of all custom buttons being in the drop down on
    • Zoho Sales Team - Extremely Slow Response Times

      Hi everyone, Has anyone else experienced unusually slow response times from Zoho’s sales team? I sent an email last night, and it’s been nearly 24 hours with no reply. While I understand delays can happen, this seems longer than expected for a sales inquiry.
    • Yodlee Bank Feeds

      I'm well aware of the many bank feed issues out there that haven't been resolved, but I'm looking for information on Rules in relation to bank feeds. U.S based, Bank of America user and prior to Yodlee all of my banking feeds and Rules worked seamlessly.
    • Unable to create custom function

      Unable to create custom function - Please check the screenshot for the details HERE IS THE FUNCTION!! try { // 1. Fetch the details of the approved Bill using its ID billDetails = zoho.books.getRecordById("Bills", organization.get("organization_id"),
    • Need a feature which can validate PAN from Income Tax Portal

      Hello Zoho, We need a feature which can help us validate PAN which is being entered in AR/AP Profiles to check if it is valid and display the name as per Income Tax so as to get rid of incorrect PAN into the systems. Please do the needful Thanks
    • PAN - Aadhar Link Status

      Can Zohobooks also get latest PAN-Aadhar Linking Status from Income Tax Portal ?
    • Canvas translation

      We want to offer our CRM system to our users in English and Dutch. However, it seems that text in our deal Canvas isn't available for translation through the translation file. The same applies to the field tooltips. They don't appear in the translation
    • Are Cadences visible to anyone with Cadence permission?

      When setting up a new Cadence is it possible to restrict its use to a specific user? How can I prevent users from making modifications to existing Cadences?
    • Super Admin Logging in as another User

      How can a Super Admin login as another user. For example, I have a sales rep that is having issues with their Accounts and I want to view their Zoho Account with out having to do a GTM and sharing screens. Moderation Update (8th Aug 2025): We are working
    • Show my cost or profit while creating estimate

      Hi, While creating estimate it becomes very important to know exact profit or purchased price of the products at one side just for our reference so we can decide whether we can offer better disc or not .
    • Issue on Upload API and href image URL

      Here is my Full API Code , URL : URL: https://desk.zoho.com/api/v1/uploads/659563000000193003/content Headers* Authorization: 'Zoho-oauthtoken 1000.ed5ce2836bf5ba9b946f5ec9************88e73ff4883a3e9c58ffeb7870' orgId: 7586***** RESPONSE{ "errorCode":
    • Issue when downloading a Mail Merged Zoho Writer Document as .docx

      Hi, We are using within Zoho CRM mailmerge to create documents. This results in a Zoho Writer document. When we try to download as a Microsoft Docx file we get following error: "Word experienced an error trying to open the file. Try these suggestions.
    • 【Zoho CRM】ケイデンス機能のアップデート

      ユーザーの皆さま、こんにちは。コミュニティチームの中野です。 今回は「Zoho CRM アップデート情報」の中から、ケイデンス機能のアップデートをご紹介します。 ケイデンス機能の2つの強化されたことで、適用と解除のタイミングをより柔軟に管理できるようになり、 よりタイムリーで的確なコミュニケーションが実現できるようになりました。 目次: 1. ケイデンスの再開/最初からのやり直し 2. ケイデンスからのデータ解除タイミングの設定 1. ケイデンスの再開/最初からのやり直し 手動削除、完了、または適用解除条件が満たされた場合など、以前に適用解除されたデータをケイデンスに再適用できるようになりました。
    • Rescheduled US meetups: Zoho Desk user meetups are coming to seven U.S. cities in October and November, 2025

      Hello to our Zoho Desk users in the United States, We're excited to share the revised dates for the upcoming Zoho User Groups happening across the US this summer. Our product experts are heading to seven cities throughout the country, and for the first
    • Anyone get the OpenAI API to work in Zoho Meeting?

      Has anyone been able to get the OpenAI API to work in generating meeting summaries? I have been trying, but I get an error that says "OpenAI key notes request rate exceeded. Please try again later or upgrade your open AI account." I contacted Zoho support
    • Push Notifications Customization

      There is no way to customize the notifications we get. I would like to be able to get notifications based on if they are assigned directly to me, my team, my department, or perhaps tickets that match a specific criteria (a contact or account is a VIP
    • Announcing Early Access to the next generation of Zoho Desk UI

      Customer service is one of the categories where efficiency and quality of service have to run in parallel, and your team's experience with their helpdesk goes a long way ensuring these aspects are uncompromised. Introducing DOT Design for Zoho Desk -
    • Editing the record in report

      I have a use-case as below- User creates a assessment record by filling some fields. User assigns that record to portal user by using Assigned To dropdown (Assigned To is Users field in form with choices as customers). I have set the record owner of form
    • Unified WhatsApp Number Management in Zoho Desk and SalesIQ

      Dear Zoho Desk Support Team, We are currently utilizing both Zoho Desk and Zoho SalesIQ for our customer support operations. While both platforms offer WhatsApp integration, we are facing challenges due to the requirement of separate WhatsApp numbers
    • Can we have Bills of Material Module ?

      Can we have Bills of Material Module ?
    • Main Ticket Page Customization

      We do not love the ticket list page (right after clicking Tickets menu item) would like options to customize it.
    • Communicating with emojis

      On July 17, we celebrate World Emoji Day! We're a bit late 😐 sharing insights about this day. But we just couldn't let it pass without a mention 😊 because emojis have a meaningful connection with customer service 💬 🤝. We do not want to miss out on
    • Agent Collision Missing from Mobile App

      Please add Agent Collision capabilities to the mobile app.
    • Zia Sentiment and Functionality on Mobile

      Please add Zia sentiment and generative responses to the mobile app. It would be nice to see the ticket sentiment and generate a response back to a user using Zia on my iPhone
    • View Account Attachments on iOS

      Please allow us to view account attachments on the mobile iOS app!
    • How do I run a PnL by Sales Person?

      I am trying to run a PnL by sales person but am not seeing the option do so. All I need to know (per salesperson) is revenue, cost of goods, gross profit.
    • View Contracts and Support Plans on Mobile

      We would like to be able to see contracts and support plans from the mobile app on iOS!
    • Why is Zoho Meeting quality so poor?

      I've just moved from Office 365 to Zoho Workplace and have been generally really positive about the new platform -- nicely integrated, nice GUI, good and easy-to-understand control and customisation, and at a reasonable price. However, what is going on
    • App like Miro

      Hi all, is there a way to have a interactive whiteboard like in Miro? We want to visualize our processes and workflows in an easy way.
    • Loan repayment Entry

      While receiving loan, i does following steps in My Zoho books. 1. Create "Loan & Advance " Account as Parent Account under Long Term Liabilities. 2. Create another account For Example "Mr. ABC's Loan as Child account under the parent account. Now: In
    • Quotes module send email reverted back into 2022??

      Our Zoho CRM PLUS quotes, sales orders, invoice modules is showing us an email composer from 2022. We cannot send emails and its been a real pain. I tried clicking the new version over there but it doesnt seem to do anything. Any help is welcome. th
    • Next Page