JS SDK

Prerequisite

Include the JS https://js.zohocdn.com/projects/js/client_sdk.min.js in your code before calling the following SDK methods.

Include the CSS https://css.zohocdn.com/projects/styles/zps-extn/client_sdk.css in your code to use Zoho Projects style.

init

Initializes the extension.


                                                zohoprojects.init().then(function(){});
                                                

 

Invoking this method at the beginning is necessary since the other SDK methods will work only after its invocation. While init is loading if you want to use other functions you can use it within the init function


                                                zohoprojects.init().then(function () {
                                                 zohoprojects.get("portal.name").then(function (response) 
                                                });
                                                

metadata

Fetches the payment and configuration details of an extension.

zohoprojects.metadata().then(function(response)
                                                {
                                                /* output
                                                {
                                                  "data": {
                                                    "configs": [
                                                      {
                                                        "name": "Name",
                                                        "type": "text",
                                                        "is_mandatory": true,
                                                        "is_secure": false,
                                                        "description": "Enter your name",
                                                        "value": "Helen Collins"
                                                      },
                                                      {
                                                        "name": "Employee ID",
                                                        "type": "text",
                                                        "is_mandatory": true,
                                                        "is_secure": false,
                                                        "description": "Enter your Emp. ID",
                                                        "value": "EMP08"
                                                      }
                                                    ],
                                                    "payments_info": {
                                                      "edition": "trial"
                                                    },
                                                    "status": "success"
                                                  }
                                                }
                                                */
                                                });
                                                

context

Fetches the module name and entity ID of the current location. The module name is 'tasks' or 'issues' and the entity ID is the ID of the respective task or issue.


                                                zohoprojects.context().then(function(response)
                                                {
                                                /* output
                                                {
                                                  "module_name": "tasks",
                                                  "entity_id": "27092000000031079"
                                                }
                                                */
                                                });
                                                

 

We do not give the entity ID for the widget location 'app_settings'.

get

Fetches the details of the instances, current user, portal, project, tasks, and issues of the current location.


                                                zohoprojects.get("task.id
").then(function(response)
                                                {
                                                /* output
                                                {
                                                  "data": 27092000000031080,
                                                  "status": "success"
                                                }
                                                */
                                                });
                                                

The following are the list of keys that can be used in the get method:

Instances

  • instances

Current user

  • current_user

Portal

  • portal.trial_enabled
  • portal.settings
  • portal.gmt_time_zone
  • portal.project_count
  • portal.role
  • portal.avail_user_count
  • portal.locale
  • portal.project_prefix
  • portal.available_projects
  • portal.max_user_count
  • portal.profile_id
  • portal.name
  • portal.id_string
  • portal.bug_plural
  • portal.plan
  • portal.bug_plan
  • portal.bug_singular
 portal.default
  • portal.extensions
  • portal.is_crm_partner
  • portal.is_display_projectprefix
  • portal.is_display_taskprefix
  • portal.is_new_plan
  • portal.layouts
  • portal.link

Project

  • project.is_strict
  • project.role
  • project.bug_count
  • project.owner_id
  • project.taskbug_prefix
  • project.link
  • project.description
  • project.milestone_count
  • project.updated_date_long
  • project.task_count
  • project.updated_date_format
  • project.workspace_id
  • project.billing_status
  • project.key
  • project.is_chat_enabled
  • project.owner_name
  • project.profile_id
  • project.enabled_tabs
  • project.name
  • project.is_public
  • project.layout_details
  • project.status
  • project.permissions
  • project.IS_BUG_ENABLED
  • project.bug_defaultview

  • project.bug_prefix
  • project.cascade_setting
  • project.completed_on
  • project.completed_on_long
  • project.created_date
  • project.created_date_format
  • project.created_date_long

  • project.custom_status_id
  • 
project.id_string
  • project.show_project_overview

  • project.start_date

  • project.start_date_long
  • project.updated_date

  • project.users
  • project.customfields
  • project.custom_fields

Task

  • task.name
  • task.completed
  • task.created_by
  • task.priority
  • task.percent_complete
  • task.start_date
  • task.end_date
  • task.dependency
  • task.duration
  • task.details
  • task.link
  • task.created_person
  • 
task.created_time
  • 
task.created_time_format
  • 
task.created_time_long

  • task.custom_fields
  • 
task.depth (applicable for subtasks only)
  • 
task.duration_type

  • task.id_string
  • 
task.is_comment_added

  • task.is_forum_associated

  • task.is_recurrence_set

  • task.is_reminder_set
  • 
task.isparent
task.key

  • task.last_updated_time
  • 
task.last_updated_time_format

  • task.last_updated_time_long
  • 
task.milestone_id

  • task.order_sequence
  • 
task.parent_task_id (applicable for subtasks only)
  • 
task.parenttask_id (applicable for subtasks only)
  • 
task.root_task_id (applicable for subtasks only)
  • 
task.status
  • task.task_followers
  • 
task.tasklist
  • 
task.work
task.work_type
  • 
task.comments
  • 
task.subtasks

  • task.customfields
  • 
task.attachments

Issue

  • issue.module
  • issue.created_time_long
  • issue.customfields
  • issue.status
  • issue.reproducible
  • issue.link
  • issue.severity
  • issue.reported_person
  • issue.title
  • issue.flag
  • issue.assignee_name
  • issue.reporter_id
  • issue.classification
  • issue.created_time_format
  • issue.closed
  • issue.created_time
  • issue.key
  • issue.attachment_count
  • 
issue.bug_number
  • 
issue.bug_prefix

  • issue.comment_count
  • 
issue.escalation_level
  • 
issue.id_string

  • issue.reporter_email
  • 
issue.reporter_non_zuser
  • 
issue.updated_time
  • 
issue.updated_time_format
  • 
issue.updated_time_long
  • issue.attachments
  • issue.comments
  • issue.views

Milestone

  • milestone.closed
  • milestone.comments_count
  • milestone.created_time
  • milestone.created_time_format
  • milestone.created_time_long
  • milestone.end_date
  • milestone.end_date_format
  • milestone.end_date_long
  • milestone.flag
  • milestone.has_comments
  • milestone.id
  • milestone.id_string
  • milestone.is_workfield_removed
  • milestone.last_updated_time
  • milestone.last_updated_time_format
  • milestone.last_updated_time_long
  • milestone.link
  • milestone.name
  • milestone.owner_id
  • milestone.owner_name
  • milestone.owner_zpuid
  • milestone.project
  • milestone.sequence
  • milestone.start_date
  • milestone.start_date_format
  • milestone.start_date_long
  • milestone.status
  • milestone.status_det

Chosen files

A file that is in queue to be uploaded is stored in chosen_files.This key is supported only for attachment picker.

  • chosen_files

Deployment type

Get current data center

zohoprojects.get("deployment_type").then(function() {
                                                /* output
                                                com
                                                */
                                                });
                                                

Profile

We support a couple of keys that fetch all the profiles at the portal level and the profile details of the current user respectively.

  • all_profiles: Fetches the information of all the profiles in a portal.
  • current_profile: Fetches the profile details of the current user.

Theme

Zoho Projects supports themes for your portal.

  • current_theme: Fetches the current theme.
zohoprojects.get("current_theme").then(function() {
                                                /* output
                                                {mode: "default", zpPrimary: "255, 100, 0", zpPrimaryHover: "255, 247, 243"}
                                                */
                                                });
                                                

Blueprint During

  • blueprint_during: fetches the value set for the During action
zohoprojects.get("blueprint_during").then(function(res) {
                                                /* output
                                                [ {field_id: "UDF_CHAR1", is_visible: true, is_pii: false, is_encrypted: false}
                                                 {field_id: "UDF_CHAR2", is_visible: true, is_pii: false, is_encrypted: false}]
                                                */
                                                });
                                                

set

Updates the attributes of a specific task or an issue of the current location.


                                                var nameObj={name:"Create a new checklist"};
                                                zohoprojects.set("task",nameObj).then(function(response)
                                                {
                                                /* output
                                                {
                                                  "data": {
                                                    "tasks": [
                                                      {
                                                        "milestone_id": "2*******************2",
                                                        "link": {
                                                          "timesheet": {
                                                            "url": "https://p*************e.********.com/restapi/portal/5******7/projects/2****************9/tasks/2****************9/logs/"
                                                          },
                                                          "self": {
                                                            "url": "https://p*************e.********.com/restapi/portal/5******7/projects/2****************9/tasks/2****************9/"
                                                          }
                                                        },
                                                        "description": "",
                                                        "duration": "0",
                                                        "last_updated_time_long": 1542193097398,
                                                        "details": {
                                                          "owners": [
                                                            {
                                                              "name": "JOHN MARSH",
                                                              "id": "5************3"
                                                            }
                                                          ]
                                                        },
                                                        "id": 2************0,
                                                        "key": "WEUT-T1",
                                                        "created_person": "Steve Banks",
                                                        "created_time_long": 1525668983347,
                                                        "created_time": "05-07-2018",
                                                        "is_reminder_set": false,
                                                        "is_recurrence_set": false,
                                                        "created_time_format": "05-07-2018 10:26:23 AM",
                                                        "subtasks": false,
                                                        "work": "0:00",
                                                        "custom_fields": [
                                                          {
                                                            "column_name": "UDF_LONG1",
                                                            "label_name": "Expense Amount",
                                                            "value": "24573"
                                                          },
                                                          {
                                                            "column_name": "UDF_LONG3",
                                                            "label_name": "sample",
                                                            "value": "0"
                                                          },
                                                          {
                                                            "column_name": "UDF_LONG2",
                                                            "label_name": "test",
                                                            "value": "200"
                                                          }
                                                        ],
                                                        "isparent": false,
                                                        "work_type": "work_hrs_per_day",
                                                        "completed": false,
                                                        "priority": "None",
                                                        "created_by": "5******3",
                                                        "percent_complete": "0",
                                                        "last_updated_time": "11-14-2018",
                                                        "name": "Create a new checklist",
                                                        "id_string": "2************9",
                                                        "last_updated_time_format": "11-14-2018 04:28:17 PM",
                                                        "tasklist": {
                                                          "name": "General",
                                                          "id": "2************7"
                                                        },
                                                        "order_sequence": 1,
                                                        "status": {
                                                          "name": "Open",
                                                          "id": "2************1",
                                                          "type": "open",
                                                          "color_code": ""
                                                        }
                                                      }
                                                    ]
                                                  },
                                                  "status": "success"
                                                }
                                                */
                                                });
                                                

The following keys can be used in the set method for tasks:

Tasks

  • person_responsible
  • owner_work
  • work_type
  • name
  • start_date
  • end_date
  • start_time
  • end_time
  • percent_complete
  • duration
  • duration_type
  • reminder
  • priority
  • description
  • custom_fields (This key can be used only to create a custom field.)
  • clear_date
  • index
  • range
  • json_string
  • subtasks (This key can be used only to create a subtask. Click here to know the params for subtasks.)

The following keys can be used in the set method for issues:

Issues

  • title
  • description
  • assignee
  • flag
  • classification_id
  • milestone_id
  • due_date
  • module_id
  • severity_id
  • reproducible_id
  • status_id
  • resolution
  • affectedmile_id

The following keys can be used in the set method to update project:

Projects

  • name
  • description
  • status
  • start_date
  • end_date
  • strict_project
  • public
  • group_id
  • completed_on
  • UDF_CHAR([1-9]|[1-2][0-9]|30). Example: UDF_CHAR1
  • UDF_TEXT([1-9]|1[0-5])
  • UDF_LONG([1-9]|1[0-5])
  • UDF_USER[1-5]
  • UDF_DOUBLE([1-9]|[1-2][0-9]|3[0-5])
  • UDF_DATE[1-5]
  • UDF_ENCRYPT([1-9]|10)
  • owner
  • billing_method
  • bill_status
  • show_project_overview
  • custom_status

The following keys can be used in the set method to update milestone:

Milestone

  • name
  • start_date
  • end_date
  • owner
  • flag
  • budget
  • threshold
  • revenue_budge

Link files

Use linkfiles key to associate files to your location. This key supports the following locations: Task details tab, Issue details tab, Attachment picker. It must be an array of maximum size 10 and the following fields are mandatory: id, name, type, permanent_url, download_url, size, created_by, created_time; preview_url is mandatory for image files.

  • linkfiles

                                                linkfiles=[{
                                                        "created_time": 1561028014712,
                                                        "id": "1LavBS5sauJ-AAFJZWp8Ch9Cp2ehydahk",
                                                "type": "image/jpeg",
                                                        "created_by": "Patricia Boyle",
                                                        "permanent_url": "https://***************",
                                                        "size": 7409,
                                                        "preview_url": "https://******************",
                                                        "name": "sample-image.jpeg",
                                                        "download_url": "https://drive.google.com/a/web-mailhosting.com/uc?id=1LavBS5sauJ-AAFJZWp8Ch9Cp2ehydahk&export=download",
                                                      }]
                                                zohoprojects.set('linkfiles', linkFiles).then(function (response) {
                                                      zohoprojects.invoke('attachment_picker.close');
                                                });
                                                

Blueprint During

Set the value when configuring the During action for a blueprint transition.


                                                var sample = [ {field_id: "UDF_CHAR1", is_visible: true, is_pii: false, is_encrypted: false}
                                                 {field_id: "UDF_CHAR2", is_visible: true, is_pii: false, is_encrypted: false}];
                                                 zohoprojects.set("blueprint_during", sample).then(function(res) {
                                                       /* output
                                                [ {field_id: "UDF_CHAR1", is_visible: true, is_pii: false, is_encrypted: false}
                                                 {field_id: "UDF_CHAR2", is_visible: true, is_pii: false, is_encrypted: false}]
                                                      */
                                                  });
                                                

request

Invokes a third-party URL from your extension using the connection defined in the plugin-manifest.json file. If the connection link name is not specified then the response is provided based on the inputs.


                                                var file = document.getElementById("inputbox").files[0];
                                                var file_detail = {
                                                type: "GET",
                                                files: [{
                                                   uploaddoc : file
                                                   type : "binary" //If the file is uploaded as binary
                                                       }],
                                                parameters: {
                                                fields: "id,name, thumbnailLink, webViewLink, webContentLink"
                                                }
                                                };
                                                var url = "https://www.googleapis.com/drive/v3/files/1-QabBt69U8myXYRDVU-1YiCo2k-JWRfu";
                                                zohoprojects.request(url, file_detail, "google_drive").then(function (response)
                                                /* Output
                                                { 
                                                "result": {
                                                    "webContentLink": "https://drive.google.com/uc?id=1-QabBt69U8myXYRDVU-1YiCo2k-JWRfu&export=download",
                                                    "name": "Eiffel_Tower_01.jpg",
                                                    "webViewLink": "https://drive.google.com/file/d/1-QabBt69U8myXYRDVU-1YiCo2k-JWRfu/view?usp=drivesdk",
                                                    "id": "1-QabBt69U8myXYRDVU-1YiCo2k-JWRfu",
                                                    "thumbnailLink": "https://lh3.googleusercontent.com/nhyq9mHrGDOZfNdQUHRj_xVlOoNAP5PEYkW4X2svGXKjVt53MvMGfjhQ2PlTv4cmv5-PgbjrR-c=s220"
                                                  },
                                                  "status": "success"
                                                }
                                                */
                                                });
                                                
Argument nameData typeDescription
URLstringThe third-party URL that has to be invoked from your extension.
objectJSONObjectKeyData typeValue
  typestring"GET" / "POST" / "PUT" / "DELETE" / "PATCH"
  parametersJSONObjectThe request params of the API.
  headersJSONObjectThe headers of the API.
  bodyJSONObject

The body of the API.

 

  filesJSONArray

The parameters for uploading a file.

Value: the actual file.

*The body will be ignored if actual file is uploaded

*If you mention the type as binary, the file will sent as binary. The body of the file will also be considered

  replace_secure_configBoolean

If the is_secure parameter in the plugin-manifest.json file is true, set the value of this param to true.

Zoho Projects will replace the value in the URL.

Note: The default value is false.

connection_link_namestringThe connection link name generated from the zapps website.