Zoho Projects provides a comprehensive set of REST APIs to manage your projects, connect third party applications, and transfer or retrieve data from Zoho Projects.
API Root Endpoint
https://projectsapi.zoho.com/
Zoho Projects APIs require a mandatory header.
-
Authorization
: The OAuth access token to authenticate the user accessing data.
Example
$ curl -X GET https://projectsapi.zoho.com/api/v3/portal/687892/mytasks/ -H "Authorization:Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa"
Zoho Projects currently supports the following methods.
Zoho Projects uses HTTP status codes to indicate success or failure of API calls. Status codes 2xx indicate success, 4xx indicate error in the information provided, and 5xx indicate server side errors. The following table lists some commonly used HTTP status codes.
Status Code | Description |
---|---|
200 | OK |
201 | Created |
202 | Accepted |
204 | No content |
206 | Partial Data |
207 | Multi-status |
400 | Bad request |
401 | Unauthorized |
402 | Payment Required |
403 | Forbidden (Unauthorised access) |
405 | Method not allowed (Method called is not supported for the API invoked) |
409 | Conflict |
429 | Too Many Requests |
500 | Internal error |
501 | Not Supported |
Besides HTTP status codes and their corresponding error messages, error responses for Zoho Projects APIs also include a machine-parsable errorCode param to simplify error handling.
The different errorCodes and their uses are described below
Please check if the URL you are trying to access is correct.
Resolution: The request URL specified is incorrect. Specify a valid request URL.
URL_RULE_NOT_CONFIGURED
{ "error": { "status_code": "400", "instance": "/api/v3/portal/15403665/projects/6000000030017/forums", "title": "URL_RULE_NOT_CONFIGURED", "error_type": "FIELDS_VALIDATION_ERROR", "details": [ { "message": "Given URL is wrong" } ] } }
This errorCode appears if the OAuthToken is invalid or has expired.
Resolution: Regenerate OAuthToken and try again.
INVALID_OAUTHTOKEN
{ "error": { "status_code": "400", "instance": "/api/v3/portal/15403665/projects/6000000030017/forums", "title": "INVALID_OAUTHTOKEN", "error_type": "FIELDS_VALIDATION_ERROR", "details": [ { "message": "Invalid OAuth access token." } ] } }
The HTTP request specified has an invalid input parameter.
Resolution: The request URL input parameter specified is incorrect. Specify a valid request input parameter URL.
INVALID_INPUTSTREAM
{ "error": { "status_code": "400", "title": "INVALID_INPUTSTREAM", "error_type": "FIELDS_VALIDATION_ERROR", "details": [ {} ] } }
The http request method type is not a valid one
Resolution: You have specified an invalid HTTP method to access the API URL. Specify a valid request method.
INVALID_METHOD
{ "error": { "status_code": "400", "instance": "/api/v3/portal/15403665/projects/6000000030017/forums", "title": "INVALID_METHOD", "error_type": "FIELDS_VALIDATION_ERROR", "details": [ { "message": "Invalid request method", "field_name": "COPY" } ] } }
The HTTP request specified has an invalid parameter value.
Resolution: The request URL input parameter value specified is incorrect. Specify a valid request input parameter value.
INVALID_PARAMETER_VALUE
{ "error": { "status_code": "400", "instance": "/api/v3/portal/15403665/projects/6000000030017/forums", "method": "GET", "error_type": "FIELDS_VALIDATION_ERROR", "details": [ { "message": "You don't have sufficient permission to create an internal forum.", "field_name": "type" } ], "title": "INVALID_PARAMETER_VALUE" } }
Server encountered an unexpected error. Contact
Resolution: support@zohoprojects.com
INTERNAL_SERVER_ERROR
{ "error": { "status_code": "500", "instance": "/api/v3/portal/15403665/projects/6000000030017/forums", "method": "GET", "error_type": "OPERATIONAL_VALIDATION_ERROR", "details": [ { "message": "Internal server error. Please contact support for further details.", "message_key": "zp.general.error" } ], "title": "INTERNAL_SERVER_ERROR" } }
The Zoho Projects API uses the OAuth2.0 protocol for authentication. It is an industry-standard protocol specification that enables third-party applications (clients) to gain delegated access to protected resources in Zoho via an API.
- Clients are not required to support password authentication or store user credentials.
- Clients gain delegated access, i.e., access only to resources authenticated by the user.
- Users can revoke the client's delegated access anytime.
- OAuth2.0 access tokens expire after a set time. If the client faces a security breach, user data will be compromised only until the access token is valid.

The following are some terms you need to know before you start using the Zoho Projects APIs.
Protected resources
The Zoho Projects resources, such as Projects, Tasks, Forum, etc.
Resource server
The Zoho Projects server that hosts protected resources.
Resource owner
Any end-user of your account, who can grant access to the protected resources.
Client
An application that sends requests to the resource server to access the protected resources on behalf of the end-user.
Client ID
The consumer key generated from the connected application.
Client Secret
The consumer secret generated from the connected application.
Authentication server
Authorization server provides the necessary credentials (such as Access and Refresh tokens) to the client. In this case, it will be the Zoho Projects authorization server.
Authentication code
The authorization server creates a temporary token and sends it to the client via the browser. The client will send this code to the authorization server to obtain access and refresh tokens.
Access Token
A token that is sent to the resource server to access the protected resources of the user. The Access token provides secure and temporary access to Zoho Projects APIs and is used by the applications to make requests to the connected app. Each access token will be valid only for an hour and can be used only for the set of operations that are described in the scope.
Access Token
A token that can be used to obtain new access tokens. This token has an unlimited lifetime until it is revoked by the end-user.
Zoho Projects APIs use selected scopes, which control the type of resource that the client application can access. Tokens are usually created with various scopes to ensure improved security. For example, you can generate a scope to create or view a projects, or to view tasks and so on. Scopes contain three parameters€” service name, scope name, and operation type. The format to define a scope is scope=service_name.scope_name.operation_type
Example
https://accounts.zoho.com/oauth/v2/auth?scope=ZohoProjects.projects.ALL
Group Scopes
Group scope provide complete access to all functions the user can perform on the record. For instance, a group scope can allow a user to read, create, update, and delete records in all modules.
Example:
https://accounts.zoho.com/oauth/v2/auth?scope=ZohoProjects.portals.ALL,ZohoProjects.projects.ALL&client_id={client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}
In the above example, the user has access to all modules in the client ZohoProjects account
Other examples are
- scope=ZohoProjects.modules.READ(Read-only permission)
- scope=ZohoProjects.modules.CREATE
- scope=ZohoProjects.modules.UPDATE
- scope=ZohoProjects.modules.DELETE
Separate scopes are used to provide access to data in a particular module without access to other modules.
Example:
https://accounts.zoho.com/oauth/v2/auth?scope=ZohoProjects.portals.ALL,ZohoProjects.projects.ALL&client_id={client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}
Additionally, you can set specific permissions, like read, create, update or delete, for each module. For examples:
The above scope gives the user access to only the portal and projects modules from the client Zoho Projects account.
Before you get started with authorization and make any calls using the Zoho Projects APIs, you need to register your application with Zoho Projects.
To register,
- Go to Zoho Developer Console.
-
Choose a client type:
- Java Script: Applications that run exclusively on a browser and are independent of a web server.
- Web Based: Applications that are clients running on a dedicated HTTP server.
- Mobile: Applications that are installed on smart phones and tablets.
- Non-browser Mobile Applications: Applications for devices without browser provisioning such as smart TVs and printers.
- Self Client: Stand-alone applications that perform only back-end jobs (without any manual intervention) like data sync.
For more details, refer to OAuth Overview.
-
Enter the following details:
- Client Name: The name of your application you want to register with Zoho.
- Homepage URL: The URL of your web page.
- Authorized Redirect URIs: A valid URL of your application to which Zoho Accounts redirects you with a grant token(code) after successful authentication.
- Click CREATE.
-
You will receive the following credentials:
- Client ID: The consumer key generated from the connected app.
- Client Secret: The consumer secret generated from the connected app.
https://accounts.zoho.com/oauth/v2/auth?scope=ZohoProjects.portals.ALL,ZohoProjects.projects.ALL&client_id={client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}
To use the Zoho Projects APIs, the users must authenticate the application to make API calls on their behalf with an access token.
The access token, in return, must be obtained from a grant token (authorization code). The Zoho Projects APIs use the authorization code grant type to provide access to protected resources.
There are two ways in which you can generate the grant token based on the client type.
Web-based applications are chosen when your application is used by multiple users and requires user intervention during authorization. For this client type, you must use redirection-based code generation. In this authorization flow,
- The user clicks the Login with Zoho button on any third-party web-based application.
- The application redirects the user to the Zoho Login page, and the user enters the Zoho credentials.
-
The web application redirects the user to the Zoho OAuth server with the required scope in the Accounts URL:Note
"https://accounts.zoho.com/oauth/v2/auth?scope=ZohoProjects.portals.ALL&client_id={client_id}&response_type=code&access_type={"offline"or"online"}&redirect_uri={redirect_uri}"
As you can see, the request URL has the parameters "scope", "client_id", "response_type", "access_type", and "redirect_uri". Also, the page displays the chosen organization and the data (scope) that the application wants to access.Parametersscope
Data that your application wants to access. Refer to Scopes for more details.
client_id
Client ID(consumer key) that you obtained during client registration.
redirect_uri
Callback URL that you specified during client registration.
response_type
Enter code.
access_type
Enter access_type as online or offline . If you want to generate the refresh token, set this value as offline.
- Based on the user's login details, the system automatically detects the user's domain and uses the domain-specific authentication URL to obtain the organization-specific grant token (code).
-
When the user clicks Accept: The application gets authorized. The organization-specific grant token is sent as a parameter in the redirect_uri.
-
A back-end script from your end needs to store the following details from the above URL.
- code={grant_token} - This is used to generate access and refresh tokens.
- location={domain} - This tells you the domain of the user from which you have to make API calls.
- accounts-server={accounts_URL} - This is your accounts URL which you have to use to generate access and refresh tokens.
- The application exchanges the authorization code for an access token.
- When the user clicks Reject: The browser redirects to the redirect URI with the parameter error=access_denied, and your application is denied access to the user's data in Zoho Projects.
- The grant token is valid only for two minutes. Refer to the Token Validity page for more details.
- The authorization URL has the scope for Users. You can change the scope as per your requirement.
Possible Errors
ERROR_invalid_response_type
Resolution: The value of the "response_type" key is not "code". Update the value as "code".
(or)
You have not passed the mandatory keys in the request. Pass all the mandatory keys in the request to generate the organization-specific grant token.
ERROR_invalid_client
Resolution: The client ID is wrong or empty. Pass the right client ID. You can check your client ID from the developer console.
ERROR_invalid_redirect_uri
Resolution: The redirect URI value passed, and the one registered in the developer console mismatches. Pass the right redirect URI.
ERROR_invalid_scope
Resolution: The scope is invalid. Pass valid scopes. You can refer to the list of scopes here.
Use this method to generate the organization-specific grant token if your application does not have a domain and a redirect URL.You can also use this option when your application is a standalone server-side application performing a back-end job.
- Go to Zoho Developer Console and log in with your Zoho Projects username and password.
- Choose Self Client from the list of client types, and click Create Now.
- Click OK in the pop up to enable a self client for your account.
-
Now, your client ID and client secret are displayed under the Client Secret tab.
- Click the Generate Code tab and enter the required scope separated by commas. Refer to our list of Scopes, for more details. The system throws an 'Enter a valid scope' error when you enter one or more incorrect scopes.
- Select the Time Duration for which the grant token is valid. Please note that after this time, the grant token expires.
-
Enter a description and click Create.
-
The organization-specific grant token code for the specified scope is displayed. Copy the grant token.
OAuth2.0 requests are usually authenticated with an access token, which is passed as bearer token. To use this access token, you need to construct a normal HTTP request and include it in an Authorization header along with the value of Bearer.
- You must use your domain-specific Zoho Accounts URL to generate access and refresh tokens. The following are the various domains and their corresponding accounts URLs.
- For US: https://accounts.zoho.com
- For AU: https://accounts.zoho.com.au
- For EU: https://accounts.zoho.eu
- For IN: https://accounts.zoho.in
- For CN: https://accounts.zoho.com.cn
- Make a POST request with the following URL. Replace {Accounts_URL} with your domain-specific Zoho accounts URL when you make the request.
{Accounts_URL}/oauth/v2/token
Note: For security reasons, pass the below parameters in the body of your request as form-data.
Parameter | Description |
---|---|
code | Authorization code obtained after generating the grant token. |
client_id | Client ID obtained after registering the client. |
client_secret | Client secret obtained after registering the client. |
grant_type | "authorization_code" |
redirect_uri | Redirect URI mentioned while registering the client. |
This completes the authentication. Once your app receives the access token, send the token in your HTTP authorization header to Zoho Projects API with the value "Zoho-oauthtoken {access_token}" for each endpoint (for each request).
Possible Errors
invalid_client
Resolution: You have passed an invalid Client ID or secret. Specify the correct client ID and secret
(or)
There is a domain mismatch. You have registered the client and generated the grant token in a certain domain (US), but generating the tokens from a different domain (EU). Ensure that you generate the grant, access, and refresh tokens from the same domain using the same domain URL or Enable Multi-DC for your client to generate tokens from any domain.
(or)
You have passed the wrong client secret when multi-DC is enabled. Each DC holds a unique client secret. Ensure to pass the right client secret for that DC.
invalid_code
Resolution: The grant token has expired. The grant token is valid only for one minute in the redirection-based flow. Generate the access and refresh tokens before the grant token expires.
(or)
You have already used the grant token. You can use the grant token only once.
(or)
The refresh token to generate a new access token is wrong or revoked. Specify the correct refresh token value while refreshing an access token.
invalid_redirect_uri
Resolution: The redirect URI in the request mismatches the one registered in the developer console. Specify the correct redirect URI in the request.
Query Params
code=1000.fadbcaxxxxxxxxxx.xxxxxxxxxxx
&grant_type=authorization_code
&client_id=1000.R2Z0WWxxxxxxxxxxxxx
&client_secret=39c689de68c712fa5f1bxxxxxxxxx
&redirect_uri=https://www.zylker.com/oauthgrant
Sample Response
{
"access_token": "1000.8d4ec8d6xxxxxxxxxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"expires_in_sec": 3600,
"scope": "ZohoProjects.portals.ALL ZohoProjects.projects.ALL ZohoProjects.activities.READ ZohoProjects.status.READ ZohoProjects.status.CREATE ZohoProjects.milestones.ALL ZohoProjects.tasklists.ALL ZohoProjects.tasks.ALL ZohoProjects.timesheets.ALL ZohoProjects.bugs.ALL ZohoProjects.events.ALL ZohoProjects.forums.ALL ZohoProjects.users.ALL ZohoProjects.search.READ ZohoProjects.clients.ALL ZohoProjects.documents.ALL ZohoPC.files.ALL ZohoBugtracker.portals.READ ZohoBugtracker.projects.ALL ZohoBugtracker.milestones.ALL ZohoBugtracker.timesheets.ALL ZohoBugtracker.bugs.ALL ZohoBugtracker.events.ALL ZohoBugtracker.forums.ALL ZohoBugtracker.users.ALL ZohoBugtracker.search.READ ZohoBugtracker.documents.ALL ZohoBugtracker.tags.READ ZohoSheet.dataAPI.READ ZohoProjects.custom_fields.ALL",
"api_domain": "https://www.zohoapis.com",
"token_type": "Bearer",
"expires_in": 3600000
}
Access tokens expire after an hour of generation. To generate a new access token, use the refresh token you generated earlier.
- You must use your domain-specific Zoho Accounts URL to refresh your access token.
- For US: https://accounts.zoho.com
- For AU: https://accounts.zoho.com.au
- For EU: https://accounts.zoho.eu
- For IN: https://accounts.zoho.in
- For CN: https://accounts.zoho.com.cn
{Accounts_URL}/oauth/v2/token?refresh_token={refresh_token}&client_id={client_id}&client_secret={client_secret}&grant_type=refresh_token
- You must use your domain-specific Zoho Accounts URL to refresh your access token.
- We have provided with a sample test OAuth in all the examples, so that you can test any example on your own. You can replace the sample OAuth Token with your actual token to test requests from your Zoho Projects account.
- For applications with multiple organizations, the refresh tokens generated for one organization in an environment cannot be used for another organization. For instance, you cannot use the refresh token generated for an organization in the Production environment to generate access tokens for the organizations in the sandbox or developer accounts.
- For information about the validity of the tokens, refer to the Token Validity page.
Query Params
?refresh_token=1000.dd7e67013axxxxxxxxx.xxxxxxxx
&client_id=1000.R2Z0Wxxxxxxxxxxxxxxx
&client_secret=39c689de68xxxxxxxx
&scope=ZohoProjects.projects.READ,ZohoProjects.portal.READ
&redirect_uri=https://www.zylker.com/oauthgrant
&grant_type=refresh_token
Sample Response
{
"access_token": "1000.a4b5e19baaf3cxxxxxxxxxxxxxxxxx.xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"scope": "ZohoProjects.portals.ALL ZohoProjects.projects.ALL ZohoProjects.activities.READ ZohoProjects.status.READ ZohoProjects.status.CREATE ZohoProjects.milestones.ALL ZohoProjects.tasklists.ALL ZohoProjects.tasks.ALL ZohoProjects.timesheets.ALL ZohoProjects.bugs.ALL ZohoProjects.events.ALL ZohoProjects.forums.ALL ZohoProjects.users.ALL ZohoProjects.search.READ ZohoProjects.clients.ALL ZohoProjects.documents.ALL ZohoPC.files.ALL ZohoBugtracker.portals.READ ZohoBugtracker.projects.ALL ZohoBugtracker.milestones.ALL ZohoBugtracker.timesheets.ALL ZohoBugtracker.bugs.ALL ZohoBugtracker.events.ALL ZohoBugtracker.forums.ALL ZohoBugtracker.users.ALL ZohoBugtracker.search.READ ZohoBugtracker.documents.ALL ZohoBugtracker.tags.READ ZohoSheet.dataAPI.READ ZohoProjects.custom_fields.ALL",
"token_type": "Bearer",
"expires_in": 3600
}
If you want to revoke your refresh token,
- You must use your domain-specific Zoho Accounts URL to revoke your refresh token.
- If you have multiple organizations, the refresh token that you revoke will be specific to a particular organization, and this action will not have an effect on other organizations in your application.
{Accounts_URL}/oauth/v2/token/revoke?token={refresh_token}
Query Params
?token=1000.dd7e67013abxxxxxxxxx.40bf1xxxxxxxx
Grant Token (Authorization code)
- Grant token is a one-time use token and valid for two minutes, by default. If you want to extend the expiry time, choose the required time from the drop-down while generating the token from the developer console (applicable only to self-clients).
- You can generate a maximum of 10 grant tokens in a span of 10 minutes per client ID.
Access Token
- Each access token is valid for one hour.
- You can generate a maximum of 10 access tokens in a span of 10 minutes.
- When you generate the 11th access token, the first created access token will be deleted.
Refresh Token
- Refresh tokens do not expire until a user revokes them.
- You can generate a maximum of 10 access tokens from a refresh token in a span of 10 minutes.
- You can generate a maximum of 20 refresh tokens in a span of 10 minutes per client ID.
- When you generate the 21st refresh token, the first created refresh token gets deleted.
Custom fields can be created in all module layouts. These fields allow you to capture different types of information based on the module's requirements. For example, a checkbox field can be used to track a project condition, enabling users to validate it based on whether the checkbox is selected or not.
- API names for Custom Fields are currently supported for Tasks and Projects API only.
- You can use this API to retrieve the details of the custom fields.
Zoho Projects supports various custom field types, such as text, numeric, URL, date, and time. Below are
the field types available in the Create and Update APIs.
- Send all inputs as an input stream (application/json).
- Use API names for custom fields.
Captures text in a single line. Maximum length: 200 characters
JSON Schema
{ "key": "string"}
Example
{"title": "Project Ara"}
Captures text in multiple lines. Use "\n" to separate lines. Maximum length: 1,000 characters
JSON Schema
{ "key": "string"}
Example
{"description": "The respective team\n is a prototype."}
Allows selection of a single option from a predefined list. Maximum options: 50
JSON Schema
{ "key": "string"}
Example
{"gender": "Male"}
Allows selection of multiple options from a predefined list. You can add or remove values dynamically, or replace the existing values. Maximum selectable options: 100
- The add and remove options optimize the update process for Multi-Select fields, eliminating the additional GET call to retrieve existing values before updating.
- You can directly add or remove values in an Update API request or use the Create API format.
Sample Input of Multi-Select Field in Create APIs
{ "key": [ "C", "D" ] }
Example
{ "parts_required": [ "HDD", "CD" ] }
Sample Input of Multi-Select Field in Create APIs
{ "key": [ { "add": [ "A", "B" ], "remove": [ "E", "F" ]} }] }
Example
{ "parts_required": [ { "add": [ "processor", "GPU" ],"remove": ["POWER-CORD", "RAM" ] }] }
Allows selection of a single user.
JSON Schema
{ "key": { "zpuid": "user id" }}
Example
{ "reporter": { "zpuid": "123454321" }}
Allows selection of multiple users from a predefined list. You can add or remove values dynamically, or replace the existing values. Maximum selectable users: 500
- The add and remove options optimize the update process for Multi-User fields, eliminating the additional GET call to retrieve existing values before updating.
- You can directly add or remove values in an Update API request or use the Create API format.
Sample Input of Multi-User Field in Create APIs
{ "key": [ { "zpuid": "User Id 5" }, { "zpuid": "User Id 6" } ] }
Example
{ "user_group": [ { "zpuid": "7845996622" },{ "zpuid": "7876456433" } ] }
Sample Input of Multi-User Field in Update APIs
{ "key": [ { "add": [{ "zpuid": "User Id 2" },{ "zpuid": "User Id 3" }],"remove": [ { "zpuid": "User Id 4" }, { "zpuid": "User Id 5" } ] }] }
Example
{ "user_group": [ { "add": [{ "zpuid": "712554144112" },{ "zpuid": "71255413512" }],"remove": [ { "zpuid": "778946456" }, { "zpuid": "71346753132" } ] }] }
Captures date in the yyyy-MM-dd format (ISO 8601).
JSON Schema
{ "key": "string"}
Example
{"due_date": "2022-10-17","start_date":"2019-09-17","end_date": "2024-12-17"}
Captures the time in HH:MM format.
JSON Schema
{ "key": "string"}
Example
{"start_time": "23:30","end_time": "13:30"}
Captures date and time in ISO 8601 format. Use yyyy-MM-dd'T'HH:mm:ss'Z' for UTC or yyyy-MM-dd'T'HH:mm:ss[+|-]HH:mm for other time zones. (ISO 8601 Time Stamp format).
JSON Schema
{ "key": "string"}
Example
{"start_time": "2022-12-16T18:56:00.000Z"}
Captures boolean values (true or false) for a condition.
JSON Schema
{ "key": "boolean"}
Example
{"patent_applied": true}
Captures currency values with amount. Maximum length: 100 characters
JSON Schema
{ "currency": { "amount":1201234.12 }}
Example
{ amount":12345678901234.12 }}
Captures percentage values as numbers. Maximum length: 20 characters
JSON Schema
{ "key": "number"}
Example
{"completion_percentage": 10}
Captures whole numbers. Maximum length: 19 digits
JSON Schema
{ "key": "number"}
Example
{"patent_applied": 1234567898}
Captures decimal values. Maximum length: 17 digits
JSON Schema
{ "key": "decimal"}
Example
{"patent_applied": 1234567898}
Captures email addresses. Maximum length: 200 characters
JSON Schema
{ "key": "string"}
Example
{"email":"projects@zohocorp.com"}
Captures phone numbers (Maximum length: 15 characters, including + and ()).
JSON Schema
{ "key": "string"}
Example
{"mobile":"1234567890"}
Captures web links. If no protocol is specified, https:// is used by default. Maximum length: 200 characters
JSON Schema
{ "key": "string"}
Example
{"link":"https://projects.zoho.com"}
You can request an API up to 100 times within 2 minutes. Exceeding this limit restricts further requests for 30 minutes.
This module handles portal-related operations in Zoho Projects. Use this API to create a new portal, export portal data, manage portal settings, and retrieve details such as portal license data and allowed features.
Retrieve all the details of the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portals' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portals");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve a specific detail of the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers search related operations within Zoho Projects. Use this API to retrieve search results from modules and the portal.
Retrieve search results from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ, ZohoSearch.securesearch.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
requiredEnter the search term.
String
required Enter the module name.
Accepted values: all
,projects
,milestones
,tasklists
,tasks
,bugs
,forums
,events
,status
String
required Specify the module status.
Accepted values: all
,active
,archived
,template
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/search?page="1"&per_page="10"&search_term="taskname"&module="task"&status="active"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/search");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""category_id"", "");
uriBuilder.addParameter(""path"", "");
uriBuilder.addParameter(""module"", "");
uriBuilder.addParameter(""status"", "");
uriBuilder.addParameter(""sortbyfield"", "");
uriBuilder.addParameter(""is_zia"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve search results from a project
OAuth Scope:
ZohoProjects.portals.READ, ZohoSearch.securesearch.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
requiredEnter the search term.
String
required Enter the module name.
Accepted modules: all
,milestones
,tasklists
,tasks
,bugs
,forums
,events
,status
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/search?page="1"&per_page="10"&search_term="taskname"&module="task"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/search");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""category_id"", "");
uriBuilder.addParameter(""path"", "");
uriBuilder.addParameter(""module"", "");
uriBuilder.addParameter(""sortbyfield"", "");
uriBuilder.addParameter(""is_zia"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers project-related operations within Zoho Projects. Use this API to retrieve project activity, view or update project edits, get recent projects, manage issues and tasks, retrieve or add default visibility settings, access favorite templates or gallery templates, add projects from templates, and export custom status timelines.
Retrieve a list of all projects from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.projects.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria. Accepted values:ASC(field_name)
or DESC(field_name)
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects?page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":["Test"],"relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1AND2"}]&sort_by="ASC(last_updated_time)"&view_id="7000000082321"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":["Test"],"relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of a project.
OAuth Scope:
ZohoProjects.projects.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Create a new project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.projects.CREATE
Parameter
String
requiredmax length : 200
Enter the project name.
String
max length : 80000Enter the project description.
String
Enter the project type. Accepted values : active
,template
boolean
Specify whether the project is public. Accepted values : true
or false
String
Enter the start date of the project (YYYY-MM-DD).
String
Enter the end date of the project (YYYY-MM-DD).
String
Enter the source from which the project is added. Accepted values : web
,api
boolean
Specify whether the project is roll-up project. Accepted values : true
or false
JSONObject
Specify the sub-module settings.
long
Enter the template ID or existing project ID that this new project should be copied from.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Test Customview", "description" : "Project customview", "project_type" : "active", "owner" : { "zpuid" : "4000000002055" }, "is_public_project" : true, "start_date" : "2024-08-15", "end_date" : "2024-08-30", "status" : { "id" : "4000000062001" }, "layout" : { "id" : "4000000062001" }, "added_via" : "web", "is_rollup_project" : false, "budget_info" : { "billing_method" : "project_hours", "budget_type" : "based_on_project", "tracking_method" : "project_hours", "currency" : "USD", "budget" : { "amount" : "500000" }, "hourly_budget" : "12.00", "rate_per_hour" : { "amount" : "500000" }, "budget_threshold" : { "amount" : "500000" }, "hourly_budget_threshold" : "12.00", "fixed_cost" : { "amount" : "500000" }, "cost_per_hour" : { "amount" : "500000" }, "revenue_budget" : { "amount" : "500000" } }, "project_group" : { "id" : "4000000062001" }, "sub_module_settings" : { "module_layout_project" : { "id" : "7000000002852", "is_copy_as_private" : false } }, "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "copy_from" : "7000000084541" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Test Customview\",\"description\":\"Project customview\",\"project_type\":\"active\",\"owner\":{\"zpuid\":\"4000000002055\"},\"is_public_project\":true,\"start_date\":\"2024-08-15\",\"end_date\":\"2024-08-30\",\"status\":{\"id\":\"4000000062001\"},\"layout\":{\"id\":\"4000000062001\"},\"added_via\":\"web\",\"is_rollup_project\":false,\"budget_info\":{\"billing_method\":\"project_hours\",\"budget_type\":\"based_on_project\",\"tracking_method\":\"project_hours\",\"currency\":\"USD\",\"budget\":{\"amount\":\"500000\"},\"hourly_budget\":\"12.00\",\"rate_per_hour\":{\"amount\":\"500000\"},\"budget_threshold\":{\"amount\":\"500000\"},\"hourly_budget_threshold\":\"12.00\",\"fixed_cost\":{\"amount\":\"500000\"},\"cost_per_hour\":{\"amount\":\"500000\"},\"revenue_budget\":{\"amount\":\"500000\"}},\"project_group\":{\"id\":\"4000000062001\"},\"sub_module_settings\":{\"module_layout_project\":{\"id\":\"7000000002852\",\"is_copy_as_private\":false}},\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"copy_from\":\"7000000084541\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify details of an existing project.
OAuth Scope:
ZohoProjects.projects.UPDATE
Parameter
String
max length : 200Enter the project name.
String
max length : 80000Enter the project description.
String
Enter the project type. Accepted values : active
,template
boolean
Specify whether the project is public. Accepted values : true or false
String
Enter the start date of the project (YYYY-MM-DD).
String
Enter the end date of the project (YYYY-MM-DD).
String
Enter the source from which the project is added. Accepted values : web
,api
boolean
Specify whether the project is roll-up project. Accepted values : true or false
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Test Customview", "description" : "Project customview", "project_type" : "active", "owner" : { "zpuid" : "4000000002055" }, "is_public_project" : true, "start_date" : "2024-08-15", "end_date" : "2024-08-30", "status" : { "id" : "4000000062001" }, "layout" : { "id" : "4000000062001" }, "added_via" : "web", "is_rollup_project" : false, "budget_info" : { "billing_method" : "project_hours", "budget_type" : "based_on_project", "tracking_method" : "project_hours", "currency" : "USD", "budget" : { "amount" : "500000" }, "hourly_budget" : "12.00", "rate_per_hour" : { "amount" : "500000" }, "budget_threshold" : { "amount" : "500000" }, "hourly_budget_threshold" : "12.00", "fixed_cost" : { "amount" : "500000" }, "cost_per_hour" : { "amount" : "500000" }, "revenue_budget" : { "amount" : "500000" } }, "project_group" : { "id" : "4000000062001" }, "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Test Customview\",\"description\":\"Project customview\",\"project_type\":\"active\",\"owner\":{\"zpuid\":\"4000000002055\"},\"is_public_project\":true,\"start_date\":\"2024-08-15\",\"end_date\":\"2024-08-30\",\"status\":{\"id\":\"4000000062001\"},\"layout\":{\"id\":\"4000000062001\"},\"added_via\":\"web\",\"is_rollup_project\":false,\"budget_info\":{\"billing_method\":\"project_hours\",\"budget_type\":\"based_on_project\",\"tracking_method\":\"project_hours\",\"currency\":\"USD\",\"budget\":{\"amount\":\"500000\"},\"hourly_budget\":\"12.00\",\"rate_per_hour\":{\"amount\":\"500000\"},\"budget_threshold\":{\"amount\":\"500000\"},\"hourly_budget_threshold\":\"12.00\",\"fixed_cost\":{\"amount\":\"500000\"},\"cost_per_hour\":{\"amount\":\"500000\"},\"revenue_budget\":{\"amount\":\"500000\"}},\"project_group\":{\"id\":\"4000000062001\"},\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Move a project to the trash.
OAuth Scope:
ZohoProjects.projects.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/trash' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/trash");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Restore a project from the trash.
OAuth Scope:
ZohoProjects.projects.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/restore' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/restore");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Remove a project from the trash permanently.
OAuth Scope:
ZohoProjects.projects.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers project custom views-related operations within Zoho Projects. Use this API to create, update, retrieve, or delete custom views for projects, manage anchor views, and update favorite custom views.
Mark a custom view as the default view for a project.
OAuth Scope:
ZohoProjects.portals.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/customview/"1752587000000097269"/markanchored' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/customview/"1752587000000097269"/markanchored");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Mark a custom view as a favorite view for a project.
OAuth Scope:
ZohoProjects.portals.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/customview/"1752587000000097269"/markfavourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/customview/"1752587000000097269"/markfavourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers project comments-related operations within Zoho Projects. Use this API to add, update, retrieve, sort, or delete comments on projects and fetch details of specific comments.
Retrieve comments from a project.
OAuth Scope:
ZohoProjects.projects.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort order. Accepted values:ASC
or DESC
based on created_time or last_updated_time
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"?page="1"&per_page="10"&sort_by="ASC(last_updated_time)"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
FORBIDDEN HTTP 403
Retrieve details of a comment from a project.
OAuth Scope:
ZohoProjects.projects.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a comment to a project
OAuth Scope:
ZohoProjects.projects.CREATE
Parameter
String
requiredmax length : 65535
Enter the comment.
JSONArray
Specify the attachment Id's.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Project Comment", "attachment_ids" : "[\"86559000000537001\"]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Project Comment\",\"attachment_ids\":\"[\\\"86559000000537001\\\"]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
FORBIDDEN HTTP 403
Modify a comment in a project
OAuth Scope:
ZohoProjects.projects.UPDATE
Parameter
String
requiredmax length : 65535
Enter the comment
JSONArray
Enter the attachment IDs
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Project Comment", "attachment_ids" : "[\"86559000000537001\"]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Project Comment\",\"attachment_ids\":\"[\\\"86559000000537001\\\"]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
FORBIDDEN HTTP 403
Remove a comment from a project.
OAuth Scope:
ZohoProjects.projects.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Possible Errors
FORBIDDEN HTTP 403
This module covers all project group related operations within Zoho Projects.
Retrieve the project groups associated with the user.
OAuth Scope:
ZohoProjects.projectgroups.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a new project group in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.projectgroups.CREATE
Parameter
String
max length : 100Enter the project group name.
String
Enter the project group type.
Accepted values: public or private.
String
max length : 10Enter a prefix of the project group.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Marketing", "type" : "public", "prefix" : "MK-01" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Marketing\",\"type\":\"public\",\"prefix\":\"MK-01\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update details of a project group.
OAuth Scope:
ZohoProjects.projectgroups.UPDATE
Parameter
String
max length : 100Enter the project group name.
String
Enter the project group type.
Accepted values: public or private.
String
max length : 10Enter a prefix of the project group.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups/[PROJECT-GROUPID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Marketing", "type" : "public", "prefix" : "MK-01" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups/[PROJECT-GROUPID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Marketing\",\"type\":\"public\",\"prefix\":\"MK-01\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a project group from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.projectgroups.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups/[PROJECT-GROUPID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/project-groups/[PROJECT-GROUPID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers Phase-related operations within Zoho Projects. Use this API to create, retrieve, update, manage, delete, move, or clone Phases.
Retrieve all the phases from the portal
OAuth Scope:
ZohoProjects.milestones.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort order for the results
long
Enter the ID of the custom view
String
Enter the IDs of phases to be retrieved
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/phases?page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&view_id="23806000097545166"&milestone_ids="139655000000057003,139655000000057004,139655000000057005"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/phases");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
uriBuilder.addParameter(""milestone_ids"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""provider"", "{"provider":"PUSHY","index":"1","range":"100"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve phases from a project
OAuth Scope:
ZohoProjects.milestones.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort order for the results
long
Enter the ID of the custom view
String
Enter the IDs of phases to be retrieved
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases?page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&view_id="23806000097545166"&milestone_ids="139655000000057003,139655000000057004,139655000000057005"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
uriBuilder.addParameter(""milestone_ids"", "");
uriBuilder.addParameter(""provider"", "{"provider":"PUSHY","index":"1","range":"100"}");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the details of a phase
OAuth Scope:
ZohoProjects.milestones.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Create a phase in a project
OAuth Scope:
ZohoProjects.milestones.CREATE
Parameter
String
requiredmax length : 100
Enter the name of the phase
String
Enter the start date of the phase
String
Enter the end date of the phase
String
Enter the ZPUID of the owner
String
Enter the flag type of the phase. Accepted values: Internal or External
long
Enter the ID of the project
long
Enter the ID of the status
String
max length : 1000Enter the Tag IDs
long
Enter the ID of the phase that will follow the new phase
long
Enter the ID of the phase that will precede the new phase
String
Enter the budget of the phase
String
Enter the threshold value for the budget
String
Enter the hourly budget of the phase
String
Enter the hourly budget threshold of the phase
String
Enter the revenue budget for the phase
String
max length : 255Enter the custom field value accepting character data type
String
max length : 1000Enter the custom field value accepting text data type
long
max length : 19Enter the custom field value accepting integer type
long
max length : 19Enter the custom field value accepting user ID
double
Enter the custom field value accepting double percision data type
String
Enter the custom field value accepting date
String
max length : 1000Enter the custom field value accepting any data type
JSONArray
array size : 0-20Enter the custom field value accepting multiple values
JSONArray
array size : 0-20Enter the custom field value accepting multiple user ZPUIDs
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Planning Stage", "start_date" : "05/28/2025", "end_date" : "10/28/2025", "owner_zpuid" : "1752587000000097024", "flag" : "internal", "project_id" : "23806000097545166", "status_id" : "238060000975451234", "tagIds" : "238060000975451234,238060000975451234", "next" : "23806000097545224", "previous" : "23806000097545222", "budget" : "98420000", "threshold" : "250000", "hourly_budget" : "9895000", "hourly_budget_threshold" : "250000", "revenue_budget" : "1023000", "udf_char[0-9]{1,3}" : "This is a sample character value", "udf_text[0-9]{1,2}" : "This is a sample text field value", "udf_long[0-9]{1,2}" : "123987542233", "udf_user[0-9]{1,2}" : "139655000000057003", "udf_double[0-9]{1,2}" : "123.445", "udf_date[0-9]{1,2}" : "23/09/2024", "udf_encrypt([1-9]|10)" : "Sample value", "udf_multi[0-9]{1,2}" : [ "value_1", "value_2", "value_3" ], "udf_multiuser[0-9]{1,2}" : [ "139655000000057003", "139655000000057004", "139655000000057005" ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Planning Stage\",\"start_date\":\"05\/28\/2025\",\"end_date\":\"10\/28\/2025\",\"owner_zpuid\":\"1752587000000097024\",\"flag\":\"internal\",\"project_id\":\"23806000097545166\",\"status_id\":\"238060000975451234\",\"tagIds\":\"238060000975451234,238060000975451234\",\"next\":\"23806000097545224\",\"previous\":\"23806000097545222\",\"budget\":\"98420000\",\"threshold\":\"250000\",\"hourly_budget\":\"9895000\",\"hourly_budget_threshold\":\"250000\",\"revenue_budget\":\"1023000\",\"udf_char[0-9]{1,3}\":\"This is a sample character value\",\"udf_text[0-9]{1,2}\":\"This is a sample text field value\",\"udf_long[0-9]{1,2}\":\"123987542233\",\"udf_user[0-9]{1,2}\":\"139655000000057003\",\"udf_double[0-9]{1,2}\":\"123.445\",\"udf_date[0-9]{1,2}\":\"23\/09\/2024\",\"udf_encrypt([1-9]|10)\":\"Sample value\",\"udf_multi[0-9]{1,2}\":[\"value_1\",\"value_2\",\"value_3\"],\"udf_multiuser[0-9]{1,2}\":[\"139655000000057003\",\"139655000000057004\",\"139655000000057005\"]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update a phase in a project
OAuth Scope:
ZohoProjects.milestones.CREATE
Parameter
String
max length : 100Enter the phase name
String
Enter the start date of the phase
String
Enter the due date of the phase
String
Enter the ZPUID of the phase owner
String
Enter the type of flag for the phase
long
Enter the ID of the milestone status
String
max length : 1000Enter the tag IDs
String
Enter the budget value for the phase
String
Enter the threshold value for the budget
String
Enter the hourly budget value for the phase
String
Enter the threshold value for the hourly budget
float
Enter the revenue budget for the phase
String
max length : 255Enter the custom field value accepting character data type
String
max length : 1000Enter the custom field value accepting text data type
long
max length : 19Enter the custom field value accepting integer type
long
max length : 19Enter the custom field value accepting user ID
double
Enter the custom field value accepting double percision data type
String
Enter the custom field value accepting date
String
max length : 1000Enter the custom field value accepting any data type
JSONArray
array size : 0-20Enter the custom field value accepting multiple values
JSONArray
array size : 0-20Enter the custom field value accepting multiple user ZPUIDs
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Planning Stage", "start_date" : "05/28/2025", "end_date" : "10/28/2025", "owner_zpuid" : "1752587000000097024", "flag" : "internal", "status_id" : "238060000975451234", "tagIds" : "238060000975451234,238060000975451234", "budget" : "98420000", "threshold" : "250000", "hourly_budget" : "9895000", "hourly_budget_threshold" : "250000", "revenue_budget" : "1023000", "udf_char[0-9]{1,3}" : "This is a sample character value", "udf_text[0-9]{1,2}" : "This is a sample text field value", "udf_long[0-9]{1,2}" : "123987542233", "udf_user[0-9]{1,2}" : "139655000000057003", "udf_double[0-9]{1,2}" : "123.445", "udf_date[0-9]{1,2}" : "23/09/2024", "udf_encrypt([1-9]|10)" : "Sample value", "udf_multi[0-9]{1,2}" : [ "value_1", "value_2", "value_3" ], "udf_multiuser[0-9]{1,2}" : [ "139655000000057003", "139655000000057004", "139655000000057005" ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Planning Stage\",\"start_date\":\"05\/28\/2025\",\"end_date\":\"10\/28\/2025\",\"owner_zpuid\":\"1752587000000097024\",\"flag\":\"internal\",\"status_id\":\"238060000975451234\",\"tagIds\":\"238060000975451234,238060000975451234\",\"budget\":\"98420000\",\"threshold\":\"250000\",\"hourly_budget\":\"9895000\",\"hourly_budget_threshold\":\"250000\",\"revenue_budget\":\"1023000\",\"udf_char[0-9]{1,3}\":\"This is a sample character value\",\"udf_text[0-9]{1,2}\":\"This is a sample text field value\",\"udf_long[0-9]{1,2}\":\"123987542233\",\"udf_user[0-9]{1,2}\":\"139655000000057003\",\"udf_double[0-9]{1,2}\":\"123.445\",\"udf_date[0-9]{1,2}\":\"23\/09\/2024\",\"udf_encrypt([1-9]|10)\":\"Sample value\",\"udf_multi[0-9]{1,2}\":[\"value_1\",\"value_2\",\"value_3\"],\"udf_multiuser[0-9]{1,2}\":[\"139655000000057003\",\"139655000000057004\",\"139655000000057005\"]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a phase from a project
OAuth Scope:
ZohoProjects.milestones.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Move a phase to another project
OAuth Scope:
ZohoProjects.milestones.UPDATE
Parameter
long
Enter the ID of the project to which the phase should move
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/move' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "to_project" : "23806000097545166" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/move");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"to_project\":\"23806000097545166\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Clone a phase within the same project
OAuth Scope:
ZohoProjects.milestones.CREATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/clone' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/clone");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Get activities performed on a phase
OAuth Scope:
ZohoProjects.portals.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to display per page
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/activities?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/activities");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the status transition history of a phase
OAuth Scope:
ZohoProjects.milestones.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/status-timeline' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/status-timeline");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers Phase follower-related operations within Zoho Projects. Use this API to retrieve, add, or remove followers for Phases.
Retrieve followers of a phase
OAuth Scope:
ZohoProjects.milestones.READ
Query Parameter
int
requiredEnter the page number.
int
requiredEnter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/followers?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/followers");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add followers to update about the phase
OAuth Scope:
ZohoProjects.milestones.CREATE
Parameter
JSONArray
requiredmax length : 3000
array size : 0-100
Enter the ZPUID of the users.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/follow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "followers" : [ 32000000002471 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/follow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"followers\":[32000000002471]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove followers from a phase
OAuth Scope:
ZohoProjects.milestones.DELETE
Parameter
JSONArray
requiredmax length : 3000
array size : 0-100
Enter the ZPUID of the users.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/unfollow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "followers" : [ 32000000002471 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/unfollow");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"followers\":[32000000002471]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers Phase comment-related operations within Zoho Projects. Use this API to add, update, retrieve, or delete comments on Phases.
Get all the comments on a phase
OAuth Scope:
ZohoProjects.milestones.READ
Query Parameter
String
Enter the sort order type. Accepted values: ascending or descending
int
Enter the specific page number to retrieve
int
Enter the number of entries to display per page
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"?sort_order="descending"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sort_order"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a comment to a phase
OAuth Scope:
ZohoProjects.milestones.CREATE
Parameter
String
requiredEnter the comment content
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the users to be notified
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the attachments to associate
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Sample Comment", "notify" : "true", "attachment_ids" : [ 139655000000057003, 139655000000057004, 139655000000057005 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Sample Comment\",\"notify\":\"true\",\"attachment_ids\":[139655000000057003,139655000000057004,139655000000057005]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update a comment on a phase
OAuth Scope:
ZohoProjects.milestones.UPDATE
Parameter
String
requiredEnter the comment content
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the users to be notified
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the attachments to associate
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Sample Comment", "notify" : "true", "attachment_ids" : [ 139655000000057003, 139655000000057004, 139655000000057005 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Sample Comment\",\"notify\":\"true\",\"attachment_ids\":[139655000000057003,139655000000057004,139655000000057005]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a comment on a phase
OAuth Scope:
ZohoProjects.milestones.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/phases/[PHASEID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue-related operations within Zoho Projects. Use this API to create, retrieve, update, move, clone, or delete issues. It also supports searching, managing custom fields, kanban settings, reminders, exports, and associated tasks.
Retrieve all issues from the portal.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
int
requiredEnter a page number.
int
requiredEnter the number of entries to be included per page.
String
Enter the sort order. Accepted values: created_time, due_date or last_modified_time
long
Enter the custom view ID.
String
Enter the issue IDs to retrieve.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues?page="1"&per_page="10"&sort_by="ASC(created_time)"&view_id="2380600567533251"&issue_ids="23806000097533216"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
uriBuilder.addParameter(""issue_ids"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve issues from a project.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
int
requiredEnter a page number.
int
requiredEnter the number of entries to be included per page.
String
Enter the sort order. Accepted values: created_time, due_date or last_modified_time
long
Enter the custom view ID.
String
Enter the issue IDs to retrieve.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues?page="1"&per_page="10"&sort_by="ASC(created_time)"&view_id="2380600567533251"&issue_ids="23806000097533216"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
uriBuilder.addParameter(""issue_ids"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of issues in a project.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Create an issue in a project.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
String
requiredmax length : 65000
Enter the name of the issue.
String
Enter the description of the issue.
String
max length : 100Specify the flag type of the issue. Accepted values: Internal or External
JSONObject
max length : 1000Specify the team associated with the issue.
String
Enter the due date of the issue.
JSONObject
max length : 1000Specify the Release Milestone of the issue.
JSONObject
max length : 1000Specify the Affected Milestone of the issue.
JSONArray
max length : 10000array size : 0-10
Enter the IDs of attachments to associate.
JSONArray
max length : 10000Enter the IDs of the tags to associate
JSONArray
max length : 10000Enter the IDs of the users to follow the issue.
double
max length : 100Enter rate per hour of the user.
double
max length : 100Enter cost per hour of the user.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Sample Bug Title", "description" : "This is a sample description of an Issue.", "flag" : "external", "associated_teams" : { "id" : "4000000062001" }, "assignee" : { "zpuid" : "4000000002055" }, "status" : { "id" : "4000000062001" }, "due_date" : "2025-12-12T02:12:00.000Z", "release_milestone" : { "id" : "4000000062001" }, "affected_milestone" : { "id" : "4000000062001" }, "severity" : { "id" : "4000000062001" }, "is_it_reproducible" : { "id" : "4000000062001" }, "classification" : { "id" : "4000000062001" }, "module" : { "id" : "4000000062001" }, "attachments" : [ 23806000097533241 ], "tags" : [ { "id" : "238060000975404352" } ], "followers" : "-", "reminder" : { "type" : "Task", "reminder_custom_date" : "-", "days_before" : "-", "time" : "22:00", "notify_users" : "-" }, "rate_per_hour" : "945.25", "cost_rate_per_hour" : "510.75" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Sample Bug Title\",\"description\":\"This is a sample description of an Issue.\",\"flag\":\"external\",\"associated_teams\":{\"id\":\"4000000062001\"},\"assignee\":{\"zpuid\":\"4000000002055\"},\"status\":{\"id\":\"4000000062001\"},\"due_date\":\"2025-12-12T02:12:00.000Z\",\"release_milestone\":{\"id\":\"4000000062001\"},\"affected_milestone\":{\"id\":\"4000000062001\"},\"severity\":{\"id\":\"4000000062001\"},\"is_it_reproducible\":{\"id\":\"4000000062001\"},\"classification\":{\"id\":\"4000000062001\"},\"module\":{\"id\":\"4000000062001\"},\"attachments\":[23806000097533241],\"tags\":[{\"id\":\"238060000975404352\"}],\"followers\":\"-\",\"reminder\":{\"type\":\"Task\",\"reminder_custom_date\":\"-\",\"days_before\":\"-\",\"time\":\"22:00\",\"notify_users\":\"-\"},\"rate_per_hour\":\"945.25\",\"cost_rate_per_hour\":\"510.75\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update an issue in a project.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
String
max length : 65000Enter the name of the issue.
String
Enter the description of the issue.
String
max length : 100Specify the flag type of the issue. Accepted values: Internal or External
JSONObject
max length : 1000Specify the team associated with the issue.
String
Enter the due date of the issue.
JSONObject
max length : 1000Specify the Release Milestone of the issue.
JSONObject
max length : 1000Specify the Affected Milestone of the issue.
double
max length : 100Enter rate per hour of the user.
double
max length : 100Enter cost per hour of the user.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Sample Bug Title", "description" : "This is a sample description of an Issue.", "flag" : "external", "associated_teams" : { "id" : "4000000062001" }, "assignee" : { "zpuid" : "4000000002055" }, "status" : { "id" : "4000000062001" }, "due_date" : "2025-12-12T02:12:00.000Z", "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "release_milestone" : { "id" : "4000000062001" }, "affected_milestone" : { "id" : "4000000062001" }, "severity" : { "id" : "4000000062001" }, "is_it_reproducible" : { "id" : "4000000062001" }, "classification" : { "id" : "4000000062001" }, "module" : { "id" : "4000000062001" }, "rate_per_hour" : "945.25", "cost_rate_per_hour" : "510.75" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Sample Bug Title\",\"description\":\"This is a sample description of an Issue.\",\"flag\":\"external\",\"associated_teams\":{\"id\":\"4000000062001\"},\"assignee\":{\"zpuid\":\"4000000002055\"},\"status\":{\"id\":\"4000000062001\"},\"due_date\":\"2025-12-12T02:12:00.000Z\",\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"release_milestone\":{\"id\":\"4000000062001\"},\"affected_milestone\":{\"id\":\"4000000062001\"},\"severity\":{\"id\":\"4000000062001\"},\"is_it_reproducible\":{\"id\":\"4000000062001\"},\"classification\":{\"id\":\"4000000062001\"},\"module\":{\"id\":\"4000000062001\"},\"rate_per_hour\":\"945.25\",\"cost_rate_per_hour\":\"510.75\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove issues from a project.
OAuth Scope:
ZohoProjects.bugs.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Retrieve the description of the issue in a project.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/description' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/description");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Move an Issue into another project.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
long
requiredEnter the project ID to which the issue should be moved.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/move' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "to_project" : "23806000097533251" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/move");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"to_project\":\"23806000097533251\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Clone an issue within the same project.
OAuth Scope:
ZohoProjects.bugs.CREATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/clone' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/clone");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve activities performed on issues in a project.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to display per page
String
Enter the sort order for the results.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/activities?page="1"&per_page="10"&sort_by="ASC(created_time)"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/activities");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the status transitions history of an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/statustransition' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/statustransition");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue linking operations in Zoho Projects. Use this API to retrieve linked issues, link issues in bulk, change link types, or unlink issues.
Retrieve all linked issues of an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/linkedissues' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/linkedissues");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Establish a link between mulitple issues.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
String
requiredEnter the name of the link type.
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the issues to be linked.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "link_type" : "relate", "issue_ids" : "23806000097533216" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"link_type\":\"relate\",\"issue_ids\":\"23806000097533216\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Link multiple issues at once in a project.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
String
requiredEnter the name of the link type.
JSONArray
requiredmax length : 7000
array size : 0-100
Enter the source issue IDs.
JSONArray
requiredmax length : 7000
array size : 0-100
Enter the issue IDs that are to be linked.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/bulk-link-bugs' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "link_type" : "relate", "issue_ids" : "23806000097533216", "linking_issue_ids" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/bulk-link-bugs");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"link_type\":\"relate\",\"issue_ids\":\"23806000097533216\",\"linking_issue_ids\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update the link type between two linked issues.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
String
requiredEnter the name of the link type.
JSONArray
max length : 7000array size : 0-100
Enter the IDs of the issues to be linked.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link/[LINKID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "link_type" : "relate", "issue_ids" : "23806000097533216" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link/[LINKID]");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"link_type\":\"relate\",\"issue_ids\":\"23806000097533216\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove the link between issues in a project.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link/[LINKID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/link/[LINKID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue-task mapping operations in Zoho Projects. Use this API to retrieve associated tasks, associate tasks with an issue, bulk-associate tasks, or dissociate tasks from an issue.
Retrieve the tasks associated with issues.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
JSONArray
Enter the issue IDs.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues/associated-tasks?issue_ids="23806000097533216"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues/associated-tasks");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""issue_ids"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the tasks associated with an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
String
Specify the index of the record.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/associated-tasks?sindex=-' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/associated-tasks");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sindex"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Associate tasks with a specific issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
JSONArray
requiredEnter the task IDs to associate with the issue.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/associate-tasks' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'task_ids = [2223806000097532204]'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/associate-tasks");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""task_ids"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Associate multiple tasks with multiple issues in a project.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
JSONArray
requiredmax length : 7000
array size : 0-100
Enter the IDs of the issues.
JSONArray
requiredmax length : 7000
array size : 0-100
Enter the task IDs to associate with the issues.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/bulk-associate-tasks' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "issue_ids" : "23806000097533216", "task_ids" : [ 2223806000097532204 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/bulk-associate-tasks");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"issue_ids\":\"23806000097533216\",\"task_ids\":[2223806000097532204]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Dissociate a task from an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/task/"1752587000000097101"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/task/"1752587000000097101"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue resolution operations within Zoho Projects. Use this API to retrieve, add, update, or delete resolutions, manage resolution custom fields, and dissociate attachments.
Retrieve the resolution of an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add the resolution to an issue.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
String
requiredEnter the resolution content.
long
Enter the status ID.
String
max length : 150Enter the character custom field value
long
Enter user custom field value
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "resolution" : "The issue is resolved.", "status_id" : "23806000097533111", "UDF_NCHAR" : "-", "UDF_NUSER" : "-", "attachment_ids" : [ 23806000097533241 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"resolution\":\"The issue is resolved.\",\"status_id\":\"23806000097533111\",\"UDF_NCHAR\":\"-\",\"UDF_NUSER\":\"-\",\"attachment_ids\":[23806000097533241]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the resolution of an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
String
requiredEnter the resolution content.
long
Enter the status ID.
String
max length : 150Enter the character custom field value
long
Enter user custom field value
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs.
Request Example
curl -X PUT 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "resolution" : "The issue is resolved.", "status_id" : "23806000097533111", "UDF_NCHAR" : "-", "UDF_NUSER" : "-", "attachment_ids" : [ 23806000097533241 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution");
HttpUriRequest requestObj = new HttpPut(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"resolution\":\"The issue is resolved.\",\"status_id\":\"23806000097533111\",\"UDF_NCHAR\":\"-\",\"UDF_NUSER\":\"-\",\"attachment_ids\":[23806000097533241]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove the resolution of an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/resolution");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue follower related operations within Zoho Projects. Use this API to get followers, follow or unfollow an issue, and remove followers.
Retrieve the followers of an issue in a project.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Receive updates or notifications about the issue in a project.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
JSONArray
requiredmax length : 7000
array size : 0-100
Followers id
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "follower_ids" : [ 57261352 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"follower_ids\":[57261352]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove followers from an issue in a project.
OAuth Scope:
ZohoProjects.bugs.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/followers");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers custom view related operations within Zoho Projects. Use this API to create, retrieve, update, or delete custom views, set views as default or favorite, and manage the columns and layout of custom views for both individual projects and the portal.
Retrieve custom views of the portal.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues/customviews' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/issues/customviews");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Retrieve custom views of a project.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/customviews' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/customviews");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the details of a custom view along with its fields.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/customviews/"1752587000000097269"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/customviews/"1752587000000097269"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers issue attachments related operations within Zoho Projects. Use this API to retrieve, associate, dissociate, or get project attachments.
Retrieve all attachments of an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
JSONArray
Enter details for attachment extension IDs.
JSONArray
Enter the application type. Accepted application type: {regex}
String
Enter the sub type. Available types: comments, resolution, or bug
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments?extension_ids=-&app_types=-&sub_type=-' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""extension_ids"", "");
uriBuilder.addParameter(""app_types"", "");
uriBuilder.addParameter(""sub_type"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Associate attachments with an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
JSONArray
Enter the IDs of the attachments to be associated.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'attachment_ids = [23806000097533241]'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""attachment_ids"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Dissociate an attachment from an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments/"1752587000000097260"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments/"1752587000000097260"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers issue comments related operations within Zoho Projects. Use this API to retrieve, add, update, or delete comments and manage comment attachments.
Retrieve all comments of an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
int
Enter a page number.
int
Enter the number of entries to display per page.
String
Enter the sort order. Accepted values: DESC or ASC
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"?page="1"&per_page="10"&sort_by="ASC(created_time)"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve a specific comment on an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the attachment of a comment in an issue.
OAuth Scope:
ZohoProjects.bugs.READ
Query Parameter
long
Enter the comment ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments/"Test Comment"?comment_id=-' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/attachments/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""comment_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a comment to an issue.
OAuth Scope:
ZohoProjects.bugs.CREATE
Parameter
String
requiredEnter the comment content
JSONArray
max length : 7000array size : 0-100
Enter the ZUIDs of the users to be notified
JSONArray
max length : 7000array size : 0-100
Enter IDs of the attachments to be associated
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "-", "notify_users" : "-", "attachment_ids" : [ 23806000097533241 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"-\",\"notify_users\":\"-\",\"attachment_ids\":[23806000097533241]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update a comment on an issue.
OAuth Scope:
ZohoProjects.bugs.UPDATE
Parameter
String
requiredEnter the comment content.
JSONArray
max length : 7000array size : 0-100
Enter the ZUIDs of the users to be notified.
JSONArray
max length : 7000array size : 0-100
Enter IDs of the attachments to be associated.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "-", "notify_users" : "-", "attachment_ids" : [ 23806000097533241 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"-\",\"notify_users\":\"-\",\"attachment_ids\":[23806000097533241]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a comment from an issue.
OAuth Scope:
ZohoProjects.bugs.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/issues/"1752587000000097233"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers task list related operations within Zoho Projects. Use this API to retrieve, create, update, reorder, move, or delete task lists in both portals and projects.
Retrieve task lists from the Zoho Projects portal
OAuth Scope:
ZohoProjects.tasklists.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/all-tasklists?"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}],"module_name":"-"}],"pattern":"1AND2"}]&page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&view_id="0"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/all-tasklists");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}],"module_name":"-"}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
INVALID_TICKET HTTP 401
INVALID_OAUTHTOKEN HTTP 401
Retrieve task lists associated with a specific project.
OAuth Scope:
ZohoProjects.tasklists.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists?"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}],"module_name":"-"}],"pattern":"1AND2"}]&page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&view_id="0"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}],"module_name":"-"}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
INVALID_TICKET HTTP 401
INVALID_OAUTHTOKEN HTTP 401
Retrieve details from a task list.
OAuth Scope:
ZohoProjects.tasklists.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a Task list to the project.
OAuth Scope:
ZohoProjects.tasklists.CREATE
Parameter
String
requiredmax length : 10000
Enter the name of the task list
String
max length : 100Set the task list flag. Accepted values: Internal or External.
String
max length : 100Enter the status of the task list.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Tasklist", "milestone" : { "id" : "4000000062001" }, "flag" : "internal", "status" : "active", "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Tasklist\",\"milestone\":{\"id\":\"4000000062001\"},\"flag\":\"internal\",\"status\":\"active\",\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify details of the task list in a project.
OAuth Scope:
ZohoProjects.tasklists.CREATE
Parameter
String
max length : 10000Enter the task list name.
String
max length : 100Specify the task list flag. Accepted values: internal or external.
String
max length : 100Enter the task list status.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Tasklist", "milestone" : { "id" : "4000000062001" }, "flag" : "internal", "status" : "active", "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Tasklist\",\"milestone\":{\"id\":\"4000000062001\"},\"flag\":\"internal\",\"status\":\"active\",\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a task list from the project.
OAuth Scope:
ZohoProjects.tasklists.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers operations related to task list comments within Zoho Projects. Use this API to retrieve, add, update, or delete comments and manage comment attachments in task lists.
Retrieve multiple comments from a task list.
OAuth Scope:
ZohoProjects.tasklists.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"?page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve a specific comment from a task list
OAuth Scope:
ZohoProjects.tasklists.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a comment to a task list.
OAuth Scope:
ZohoProjects.tasklists.CREATE
Parameter
String
requiredmax length : 500000
Enter the comment.
JSONArray
max length : 10000array size : 0-10
Enter the attachment IDs.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "a new comment", "attachments" : [ 23806000073742867 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"a new comment\",\"attachments\":[23806000073742867]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify a comment in a task list.
OAuth Scope:
ZohoProjects.tasklists.UPDATE
Parameter
String
requiredmax length : 500000
Enter the comment.
JSONArray
max length : 10000array size : 0-10
Enter the attachment IDs.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "a new comment", "attachments" : [ 23806000073742867 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"a new comment\",\"attachments\":[23806000073742867]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a comment from a task list.
OAuth Scope:
ZohoProjects.tasklists.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to task list followers within Zoho Projects. Use this API to retrieve followers, follow, or unfollow task lists.
Retrieve followers for a task list.
OAuth Scope:
ZohoProjects.tasklists.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/followers?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/followers");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Follow a task list in a project.
OAuth Scope:
ZohoProjects.tasklists.CREATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/follow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/follow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Unfollow a task list in a project.
OAuth Scope:
ZohoProjects.tasklists.DELETE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/unfollow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasklists/[TASKLISTID]/unfollow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers task-related operations within Zoho Projects. Use this API to create, copy, move, delete, or get task details, manage baselines, set dependencies, and retrieve status or layout-specific work hour details.
Retrieve task details from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks?page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"task_name","field_name":"task_name","criteria_condition":"contains","value":"23806000000019001","relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1AND2"}]&sort_by="ASC(last_updated_time)"&view_id="23806000070526001"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"task_name","field_name":"task_name","criteria_condition":"contains","value":"23806000000019001","relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve task from a project.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks?page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"task_name","field_name":"task_name","criteria_condition":"contains","value":"23806000000019001","relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1AND2"}]&sort_by="ASC(last_updated_time)"&view_id="23806000070526001"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"task_name","field_name":"task_name","criteria_condition":"contains","value":"23806000000019001","relative_columns":[{"cfid":"2","offset":"1","unit":"days","prior":"before"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of a task from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a task to the project
OAuth Scope:
ZohoProjects.tasks.CREATE
Parameter
String
requiredmax length : 10000
Enter the task name
String
max length : 80000Enter the task description
JSONObject
max length : 1000Enter the task status details if not provided default open will be taken
String
Enter the task priority Possible values are none
,low
,medium
,high
String
Enter the start date of the task
String
Enter the end date of the task
int
Enter the task completion percentage
String
Enter the billing type for the task Possible values are none
,billable
,non_billable
JSONArray
max length : 10000array size : 0-10
Enter the IDs of files to be uploaded
JSONObject
max length : 100000Enter the task owner name and work details
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "tasklist" : { "id" : "4000000062001" }, "parental_info" : { "parent_task_id" : "-" }, "name" : "Demo Try Admin", "description" : "Content Try", "status" : { "id" : "4000000062001" }, "priority" : "-", "start_date" : "2021-09-30T21:00:00.000Z", "end_date" : "2021-10-05T21:00:00.000Z", "duration" : { "value" : "23806000000019001", "type" : "Task" }, "completion_percentage" : "-", "billing_type" : "-", "attachments" : [ 23806000073742867 ], "owners_and_work" : { "owners" : [ { "add" : [ { "zpuid" : "4000000002055", "work_values" : "-" } ], "remove" : [ { "zpuid" : "4000000002055", "work_values" : "-" } ], "zpuid" : "4000000002055", "work_values" : "-" } ], "work_type" : "-", "unit" : "days", "copy_task_duration" : "-" }, "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "teams" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "recurrence" : { "frequency" : "-", "interval" : "-", "end_after_occurrences" : "-", "set_to_previous_businessday" : "-", "retain_comments" : "-", "retain_subtasks" : "-", "next_recurrence_after_close" : "-" }, "budget_info" : { "rate_per_hour" : "-", "budget" : "-", "threshold" : "-", "revenue_budget" : "-", "cost_rate_per_hour" : "-" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"tasklist\":{\"id\":\"4000000062001\"},\"parental_info\":{\"parent_task_id\":\"-\"},\"name\":\"Demo Try Admin\",\"description\":\"Content Try\",\"status\":{\"id\":\"4000000062001\"},\"priority\":\"-\",\"start_date\":\"2021-09-30T21:00:00.000Z\",\"end_date\":\"2021-10-05T21:00:00.000Z\",\"duration\":{\"value\":\"23806000000019001\",\"type\":\"Task\"},\"completion_percentage\":\"-\",\"billing_type\":\"-\",\"attachments\":[23806000073742867],\"owners_and_work\":{\"owners\":[{\"add\":[{\"zpuid\":\"4000000002055\",\"work_values\":\"-\"}],\"remove\":[{\"zpuid\":\"4000000002055\",\"work_values\":\"-\"}],\"zpuid\":\"4000000002055\",\"work_values\":\"-\"}],\"work_type\":\"-\",\"unit\":\"days\",\"copy_task_duration\":\"-\"},\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"teams\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"recurrence\":{\"frequency\":\"-\",\"interval\":\"-\",\"end_after_occurrences\":\"-\",\"set_to_previous_businessday\":\"-\",\"retain_comments\":\"-\",\"retain_subtasks\":\"-\",\"next_recurrence_after_close\":\"-\"},\"budget_info\":{\"rate_per_hour\":\"-\",\"budget\":\"-\",\"threshold\":\"-\",\"revenue_budget\":\"-\",\"cost_rate_per_hour\":\"-\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify details of the task in a project.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Parameter
JSONObject
Enter parent task details if sub task is need to be created.
String
max length : 10000Enter the task name.
String
max length : 80000Enter the task description.
JSONObject
max length : 1000Enter the task status details if not provided default open will be taken.
String
Enter the task priority Possible values are none
,low
,medium
,high
String
Enter the start date of the task.
String
Enter the end date of the task.
int
Enter the task completion percentage.
String
Enter the billing type for the task Possible values are none
,billable
,non_billable
JSONArray
max length : 10000array size : 0-10
Enter the IDs of files to be uploaded.
JSONObject
max length : 100000Enter the task owner name and work details.
JSONArray
max length : 100000array size : 0-100
Add or remove teams associated with the task.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "tasklist" : { "id" : "4000000062001" }, "parental_info" : { "parent_task_id" : "-" }, "name" : "Demo Try Admin", "description" : "Content Try", "status" : { "id" : "4000000062001" }, "priority" : "-", "start_date" : "2021-09-30T21:00:00.000Z", "end_date" : "2021-10-05T21:00:00.000Z", "duration" : { "value" : "23806000000019001", "type" : "Task" }, "completion_percentage" : "-", "billing_type" : "-", "attachments" : [ 23806000073742867 ], "owners_and_work" : { "owners" : [ { "add" : [ { "zpuid" : "4000000002055", "work_values" : "-" } ], "remove" : [ { "zpuid" : "4000000002055" } ], "zpuid" : "4000000002055", "work_values" : "-" } ], "work_type" : "-", "unit" : "days", "copy_task_duration" : "-" }, "tags" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "teams" : [ { "add" : [ { "id" : "4000000062001" } ], "remove" : [ { "id" : "4000000062001" } ], "id" : "4000000062001" } ], "recurrence" : { "frequency" : "-", "interval" : "-", "end_after_occurrences" : "-", "set_to_previous_businessday" : "-", "retain_comments" : "-", "retain_subtasks" : "-", "next_recurrence_after_close" : "-" }, "reminder" : { "reminder_criteria" : "on", "field_type" : "start_date", "custom_date" : "2023-12-20", "no_of_duration" : "2", "time" : "22:00", "duration_type" : "days", "emailtemplate_id" : "4000000008003", "reminder_notify_users" : [ { "type" : "Task", "values" : "-" } ] }, "budget_info" : { "rate_per_hour" : "-", "budget" : "-", "threshold" : "-", "hourly_budget" : "-", "hourly_budget_threshold" : "-", "revenue_budget" : "-", "cost_rate_per_hour" : "-" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"tasklist\":{\"id\":\"4000000062001\"},\"parental_info\":{\"parent_task_id\":\"-\"},\"name\":\"Demo Try Admin\",\"description\":\"Content Try\",\"status\":{\"id\":\"4000000062001\"},\"priority\":\"-\",\"start_date\":\"2021-09-30T21:00:00.000Z\",\"end_date\":\"2021-10-05T21:00:00.000Z\",\"duration\":{\"value\":\"23806000000019001\",\"type\":\"Task\"},\"completion_percentage\":\"-\",\"billing_type\":\"-\",\"attachments\":[23806000073742867],\"owners_and_work\":{\"owners\":[{\"add\":[{\"zpuid\":\"4000000002055\",\"work_values\":\"-\"}],\"remove\":[{\"zpuid\":\"4000000002055\"}],\"zpuid\":\"4000000002055\",\"work_values\":\"-\"}],\"work_type\":\"-\",\"unit\":\"days\",\"copy_task_duration\":\"-\"},\"tags\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"teams\":[{\"add\":[{\"id\":\"4000000062001\"}],\"remove\":[{\"id\":\"4000000062001\"}],\"id\":\"4000000062001\"}],\"recurrence\":{\"frequency\":\"-\",\"interval\":\"-\",\"end_after_occurrences\":\"-\",\"set_to_previous_businessday\":\"-\",\"retain_comments\":\"-\",\"retain_subtasks\":\"-\",\"next_recurrence_after_close\":\"-\"},\"reminder\":{\"reminder_criteria\":\"on\",\"field_type\":\"start_date\",\"custom_date\":\"2023-12-20\",\"no_of_duration\":\"2\",\"time\":\"22:00\",\"duration_type\":\"days\",\"emailtemplate_id\":\"4000000008003\",\"reminder_notify_users\":[{\"type\":\"Task\",\"values\":\"-\"}]},\"budget_info\":{\"rate_per_hour\":\"-\",\"budget\":\"-\",\"threshold\":\"-\",\"hourly_budget\":\"-\",\"hourly_budget_threshold\":\"-\",\"revenue_budget\":\"-\",\"cost_rate_per_hour\":\"-\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a task from the project.
OAuth Scope:
ZohoProjects.tasks.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
Copy a task within a project
OAuth Scope:
ZohoProjects.tasks.CREATE
Parameter
int
requiredEnter the number of instances to be created.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/copy' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'no_of_instances = "1"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/copy");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""no_of_instances"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Possible Errors
CANT_COPY_SUBTASK HTTP 403
Move tasks to a task list in a project
OAuth Scope:
ZohoProjects.tasks.UPDATE
Parameter
long
requiredEnter the destination task list ID.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/move' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "target_tasklist_id" : "-", "status_mapping" : [ { "old_status" : { "id" : "4000000062001", "name" : "Demo Try Admin", "color" : "-", "type" : "Task" }, "new_status" : { "id" : "4000000062001", "name" : "Demo Try Admin", "color" : "-", "type" : "Task" } } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/move");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"target_tasklist_id\":\"-\",\"status_mapping\":[{\"old_status\":{\"id\":\"4000000062001\",\"name\":\"Demo Try Admin\",\"color\":\"-\",\"type\":\"Task\"},\"new_status\":{\"id\":\"4000000062001\",\"name\":\"Demo Try Admin\",\"color\":\"-\",\"type\":\"Task\"}}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers operations related to task comments within Zoho Projects. Use this API to retrieve, add, update, or delete comments and manage comment attachments in a Task .
Retrieve multiple comments from a task.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria.
Accepted values: ASC(field_name)
or DESC(field_name)
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"?page="1"&per_page="10"&sort_by="ASC(last_updated_time)"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_by"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a comment to a task.
OAuth Scope:
ZohoProjects.tasks.CREATE
Parameter
String
requiredmax length : 500000
Enter the comment.
JSONArray
max length : 10000array size : 0-10
Enter the attachment IDs.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "a new comment", "attachments" : [ 23806000073742867 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"a new comment\",\"attachments\":[23806000073742867]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify a comment in a task.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Parameter
String
requiredmax length : 500000
Enter the comment.
JSONArray
max length : 10000array size : 0-10
Enter the attachment IDs.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "comment" : "a new comment", "attachments" : [ 23806000073742867 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"comment\":\"a new comment\",\"attachments\":[23806000073742867]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a comment from a task.
OAuth Scope:
ZohoProjects.tasks.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to task custom view within Zoho Projects. Use this API to create new custom views in a project or retrieve form data for custom views.
Retrieve the data of a task custom view from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
String
Enter the project ID.
String
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/form?project_id="23806000074760021"&view_id="23806000070526001"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/form");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""project_id"", "");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the details of a custom view in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Parameter
String
max length : 250Enter the custom view name.
String
max length : 500Enter the custom view description.
String
Enter the criteria information.
String
Specify the criteria pattern.
String
Enter the module ID.
String
Specify who can access the custom view. Accepted values: me
JSONArray
array size : 0-100Specify the project accessibility type. All, None, and Specific projects
String
Project Accessiblity type
JSONArray
array size : 0-100Enter the project IDs.
String
Specify whether to display the custom view in Tasks under the Overview section. Accepted values: true
,false
String
Specify whether the columns are customized in the custom view. Accepted values: true
,false
String
Specify the customised column in custom view
String
View Type
Possible Inputs are my_views
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/mytasks/customviews/"1752587000000097269"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "-", "description" : "-", "criteria" : "-", "criteria_pattern" : "-", "module_id" : "1752587000000097269", "access_type" : "-", "accessed_by" : "-", "project_accessibility_type" : "-", "project_ids" : "-", "is_mytasks_view_enabled" : "-", "is_customised_column_view_enabled" : "-", "customised_columns" : "-", "view_type" : "date" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/mytasks/customviews/"1752587000000097269"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"-\",\"description\":\"-\",\"criteria\":\"-\",\"criteria_pattern\":\"-\",\"module_id\":\"1752587000000097269\",\"access_type\":\"-\",\"accessed_by\":\"-\",\"project_accessibility_type\":\"-\",\"project_ids\":\"-\",\"is_mytasks_view_enabled\":\"-\",\"is_customised_column_view_enabled\":\"-\",\"customised_columns\":\"-\",\"view_type\":\"date\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Remove a task custom view from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Mark a custom view as the default view for the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/setdefaultview' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/setdefaultview");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Mark a custom view as a favorite view for the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/markfavourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/markfavourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Remove a custom view from the favorite views in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/unmarkfavourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/tasks/customviews/"1752587000000097269"/unmarkfavourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve task custom views from a project.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the sort criteria for the column. Example: posted_time
,last_updated_time
String
Enter the sort order. Accepted values: ascending
,descending
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews?page="1"&per_page="10"&sort_column="last_modified_time"&sort_order="descending"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""sort_column"", "");
uriBuilder.addParameter(""sort_order"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Create a task custom view in a project.
OAuth Scope:
ZohoProjects.tasks.CREATE
Parameter
String
max length : 250Enter the custom view name.
String
max length : 500Enter the custom view description.
String
max length : 40000Enter the criteria information.
String
max length : 10000Specify the criteria pattern.
String
Enter the module ID.
String
Specify who can access the custom view. Accepted values: me
JSONArray
max length : 5000array size : 0-100
Enter the custom user ID who can access the custom view.
String
Project Accessiblity type
JSONArray
array size : 0-100Enter the project IDs.
String
Specify whether to display the custom view in Tasks under the Overview section. Accepted values: true
,false
String
Specify whether the columns are customized in the custom view. Accepted values: true
,false
String
max length : 10000Specify the customised column in custom view
String
View Type
Possible Inputs are my_views
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "My Pending work Items", "description" : "Pending work items are listed in this view.", "criteria" : "-", "criteria_pattern" : "(( 1 AND 2 ) AND 3 )", "module_id" : "1752587000000097269", "access_type" : "all", "accessed_by" : "[23806000067962644]", "project_accessibility_type" : "all", "project_ids" : "[1752587000000094003]", "is_mytasks_view_enabled" : "false", "is_customised_column_view_enabled" : "true", "customised_columns" : "[{\"sequence\":1,\"name\":\"Status\",\"id\":\"114778000000021005\"},{\"sequence\":2,\"name\":\"Start Date\",\"id\":\"114778000000021007\"},{\"sequence\":3,\"name\":\"Due Date\",\"id\":\"114778000000021009\"},{\"sequence\":4,\"name\":\"Duration\",\"id\":\"114778000000021011\"}]", "view_type" : "date" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"My Pending work Items\",\"description\":\"Pending work items are listed in this view.\",\"criteria\":\"-\",\"criteria_pattern\":\"(( 1 AND 2 ) AND 3 )\",\"module_id\":\"1752587000000097269\",\"access_type\":\"all\",\"accessed_by\":\"[23806000067962644]\",\"project_accessibility_type\":\"all\",\"project_ids\":\"[1752587000000094003]\",\"is_mytasks_view_enabled\":\"false\",\"is_customised_column_view_enabled\":\"true\",\"customised_columns\":\"[{\\\"sequence\\\":1,\\\"name\\\":\\\"Status\\\",\\\"id\\\":\\\"114778000000021005\\\"},{\\\"sequence\\\":2,\\\"name\\\":\\\"Start Date\\\",\\\"id\\\":\\\"114778000000021007\\\"},{\\\"sequence\\\":3,\\\"name\\\":\\\"Due Date\\\",\\\"id\\\":\\\"114778000000021009\\\"},{\\\"sequence\\\":4,\\\"name\\\":\\\"Duration\\\",\\\"id\\\":\\\"114778000000021011\\\"}]\",\"view_type\":\"date\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Mark a task custom view as the default view for a project.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/setdefaultview' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/setdefaultview");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Mark a task custom view as the favourite view for a project.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/markfavourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/markfavourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Remove a custom view from the favorite views for a project.
OAuth Scope:
ZohoProjects.tasks.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/unmarkfavourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/customviews/"1752587000000097269"/unmarkfavourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to task follower within Zoho Projects. Use this API to retrieve task followers, follow a task, add followers, or unfollow a task.
Retrieve followers for a task.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/followers?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/followers");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Follow a task in a project.
OAuth Scope:
ZohoProjects.tasks.CREATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/follow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/follow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add followers to a task.
OAuth Scope:
ZohoProjects.tasks.CREATE
Parameter
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/followers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "followers" : [ { "zpuid" : "4000000002055" } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/followers");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"followers\":[{\"zpuid\":\"4000000002055\"}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Unfollow a task in a project.
OAuth Scope:
ZohoProjects.tasks.DELETE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/unfollow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/unfollow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers operations related to the status timeline within Zoho Projects. Use this API to retrieve or export task status timelines and status history at the project or portal level.
Retrieve the status timeline from a task
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/status-timeline?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/tasks/"1752587000000097101"/status-timeline");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the status history of tasks from a project.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
long
Enter the last modification time
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/taskstatushistory?page="1"&per_page="10"&last_modified_time="1631538698839"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/taskstatushistory");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the status history of tasks from a portal.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
long
Enter the last modification time
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/taskstatushistory?page="1"&per_page="10"&last_modified_time="1631538698839"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/taskstatushistory");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Export Task Status Timeline
OAuth Scope:
ZohoProjects.tasks.READ
Parameter
String
requiredId of the project.
String
requiredId of the Task.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/exportstatustimeline' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'projId = "1752587000000094003"' --form 'taskId = "1752587000000094001"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/exportstatustimeline");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""projId"", "");
uriBuilder.addParameter(""taskId"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve baselines from a project.
OAuth Scope:
ZohoProjects.tasks.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/baselines' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/baselines");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve tasks from a baseline.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
long
requiredEnter the baseline ID.
int
Enter the index. E.g. 0
int
Enter the range to retrieve. E.g. 10
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/baselinedetails?baselineId="23806000097557084"&index="1"&range="100"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/baselinedetails");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""baselineId"", "");
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers timesheet related operations within Zoho Projects. Use this API to manage time logs, generate timesheet reports, and configure timesheet-related settings.
This module covers time log related operations within Zoho Projects. Use this API to retrieve, add, update, or delete individual time logs and get detailed log information.
Retrieve time log details from a project
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
String
requiredEnter the log type.
Accepted values: task
,issue
,general
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]?type="task"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""type"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a time log to a project
OAuth Scope:
ZohoProjects.timesheets.CREATE
Parameter
String
max length : 1000Enter the log name
String
requiredEnter the date to add log
String
requiredEnter the billing status
String
Enter the log hours
String
max length : 10000Enter the additional information for the log
long
Enter the ZPUID of the owner
long
Enter the ZPUID of the approver
String
Enter the start time
String
Enter the end time
String
Enter the Zoho Sprints log ID
String
Enter the approval status of the time log
double
Enter the Cost Per Hour
boolean
Specify whether the log is added from timer. Accepted values: true
or false
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/log' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "log_name" : "Enter a name for the general time log", "date" : "2024-12-11", "bill_status" : "Billable", "hours" : "01.00", "notes" : "The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.", "owner_zpuid" : "8000000008075", "approver" : "22822935", "start_time" : "01:00 AM", "end_time" : "02:00 AM", "module" : { "id" : "4000000004947", "type" : "task" }, "custom_fields" : { "cf_number" : "-", "cf_user_picklist" : "-", "cf_single_line" : "-", "cf_multi_line" : "-", "cf_email" : "-", "cf_date" : "-", "cf_decimal" : "-", "cf_check_box" : "-" }, "sprints_logid" : "-", "status" : "on", "cost_rate_per_hour" : "1", "for_timer" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/log");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"log_name\":\"Enter a name for the general time log\",\"date\":\"2024-12-11\",\"bill_status\":\"Billable\",\"hours\":\"01.00\",\"notes\":\"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.\",\"owner_zpuid\":\"8000000008075\",\"approver\":\"22822935\",\"start_time\":\"01:00 AM\",\"end_time\":\"02:00 AM\",\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"},\"custom_fields\":{\"cf_number\":\"-\",\"cf_user_picklist\":\"-\",\"cf_single_line\":\"-\",\"cf_multi_line\":\"-\",\"cf_email\":\"-\",\"cf_date\":\"-\",\"cf_decimal\":\"-\",\"cf_check_box\":\"-\"},\"sprints_logid\":\"-\",\"status\":\"on\",\"cost_rate_per_hour\":\"1\",\"for_timer\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the time log in a project
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Parameter
String
max length : 1000Enter the log name
String
Enter the date to update the log
String
Enter the billing status
String
Enter the Enter the additional information for the log. of the time log
String
Enter the log hours
String
max length : 10000Enter the additional information for the log
long
Enter the ZPUID of the owner
long
Enter the ZPUID of the approver
String
Enter the start time
String
Enter the end time
double
Enter the Cost Per Hour
String
Specify whether the log will be added as draft. Accepted values: true
or false
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "log_name" : "Enter a name for the general time log", "date" : "2024-12-11", "bill_status" : "Billable", "approval_status" : "Approved", "hours" : "01.00", "notes" : "The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.", "owner_zpuid" : "8000000008075", "approver" : "22822935", "start_time" : "01:00 AM", "end_time" : "02:00 AM", "module" : "{\"type\":\"issue\",\"id\":\"33000000019040\"}", "custom_fields" : { "cf_number" : "-", "cf_user_picklist" : "-", "cf_single_line" : "-", "cf_multi_line" : "-", "cf_email" : "-", "cf_date" : "-", "cf_decimal" : "-", "cf_check_box" : "-" }, "extra_data" : { "start_time" : "01:00 AM", "end_time" : "02:00 AM", "notes" : "The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets." }, "cost_rate_per_hour" : "1", "is_draft" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"log_name\":\"Enter a name for the general time log\",\"date\":\"2024-12-11\",\"bill_status\":\"Billable\",\"approval_status\":\"Approved\",\"hours\":\"01.00\",\"notes\":\"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.\",\"owner_zpuid\":\"8000000008075\",\"approver\":\"22822935\",\"start_time\":\"01:00 AM\",\"end_time\":\"02:00 AM\",\"module\":\"{\\\"type\\\":\\\"issue\\\",\\\"id\\\":\\\"33000000019040\\\"}\",\"custom_fields\":{\"cf_number\":\"-\",\"cf_user_picklist\":\"-\",\"cf_single_line\":\"-\",\"cf_multi_line\":\"-\",\"cf_email\":\"-\",\"cf_date\":\"-\",\"cf_decimal\":\"-\",\"cf_check_box\":\"-\"},\"extra_data\":{\"start_time\":\"01:00 AM\",\"end_time\":\"02:00 AM\",\"notes\":\"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.\"},\"cost_rate_per_hour\":\"1\",\"is_draft\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove the time log from a project
OAuth Scope:
ZohoProjects.timesheets.DELETE
Parameter
String
requiredEnter the module type.
Accepted values: task
,issue
,general
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "module" : { "id" : "4000000004947", "type" : "task" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/logs/[LOGID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers bulk time log related operations within Zoho Projects. Use this API to retrieve, add, update, or delete multiple time logs across projects.
Retrieve all time logs from the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
View of Type
Accepted values : day
,week
,month
,customdate
String
Enter the start date
String
Enter the end date
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet?page="1"&per_page="10"&view_type="curmonth"&start_date="06-16-2022"&end_date="06-16-2022"&filter={"criteria":[{"field_name":"user","criteria_condition":"is","value":["4000000002411"]},{"field_name":"created_time","criteria_condition":"Yesterday","value":["Yesterday"]},{"field_name":"billstatus","criteria_condition":"is","value":["NonBillable"]},{"field_name":"approval_status","criteria_condition":"is","value":["Approved","Unapproved"]},{"field_name":"ts_single","criteria_condition":"is","value":["single"]}],"pattern":"1AND2AND3AND4"}&module={"id":"4000000004947","type":"task"}&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""start_date"", "");
uriBuilder.addParameter(""end_date"", "");
uriBuilder.addParameter(""filter"", "{"project":"23806000074760021","assignee":"2253831617","billtype":"billable","approvaltype":"-","tsheetperiod":"-","clientcompany":"-","content":"Sample content","invoicestatus":"-","usergroups":"[53856179]","criteria":[{"cfid":"23806000091006001","field_name":"status","custom_feild":"-","field_type":"start_date","criteria_condition":"is","value":"[\"53831617\"]","relative_columns":[{"cfid":"23806000091006001","offset":"-","unit":"days","prior":"-"}]}],"pattern":"1","cf_single_line":"-","cf_user_picklist":"-","cf_number":"-","cf_date":"-","cf_decimal":"-","cf_multi_line":"-","cf_email":"-"}");
uriBuilder.addParameter(""module"", "{"id":"4000000062001","type":"task"}");
uriBuilder.addParameter(""frompage"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve all time logs from a project
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the view type.
Accepted values: day
,week
,month
,customdate
,projectspan
String
Enter the start date
String
Enter the end date
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet?page="1"&per_page="10"&view_type="curmonth"&start_date="06-16-2022"&end_date="06-16-2022"&filter={"criteria":[{"field_name":"user","criteria_condition":"is","value":["4000000002411"]},{"field_name":"created_time","criteria_condition":"Yesterday","value":["Yesterday"]},{"field_name":"billstatus","criteria_condition":"is","value":["NonBillable"]},{"field_name":"approval_status","criteria_condition":"is","value":["Approved","Unapproved"]},{"field_name":"ts_single","criteria_condition":"is","value":["single"]}],"pattern":"1AND2AND3AND4"}&module={"id":"4000000004947","type":"task"}&view_id="23806000074760021"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""start_date"", "");
uriBuilder.addParameter(""end_date"", "");
uriBuilder.addParameter(""filter"", "{"project":"23806000074760021","assignee":"2253831617","billtype":"billable","approvaltype":"-","tsheetperiod":"-","clientcompany":"-","content":"Sample content","invoicestatus":"-","usergroups":"[53856179]","criteria":[{"cfid":"23806000091006001","field_name":"status","custom_feild":"-","field_type":"start_date","criteria_condition":"is","value":"[\"53831617\"]","relative_columns":[{"cfid":"23806000091006001","offset":"-","unit":"days","prior":"-"}]}],"pattern":"1","cf_single_line":"-","cf_user_picklist":"-","cf_number":"-","cf_date":"-","cf_decimal":"-","cf_multi_line":"-","cf_email":"-"}");
uriBuilder.addParameter(""module"", "{"id":"4000000062001","type":"task"}");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add multiple time logs to the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.CREATE
Parameter
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/addbulktimelogs' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"log_object" = [{"project_id":"23806000074760021","item_id":"-","log_name":"Enter a name for the general time log","type":"task","date":"2024-12-11","bill_status":"Billable","hours":"01.00","notes":"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.","owner":"-","owner_zpuid":"8000000008075","approver":"22822935","start_time":"01:00 AM","end_time":"02:00 AM","custom_fields":{"cf_number":"-","cf_user_picklist":"-","cf_single_line":"-","cf_multi_line":"-","cf_email":"-","cf_date":"-","cf_decimal":"-","cf_check_box":"-"},"sprints_logid":"-","status":"on","unique_key":"-","cost_rate_per_hour":"1"}]'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/addbulktimelogs");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""log_object"", "{"project_id":"23806000074760021","item_id":"-","log_name":"Enter a name for the general time log","type":"task","date":"2024-12-11","bill_status":"Billable","hours":"01.00","notes":"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.","owner":"-","owner_zpuid":"8000000008075","approver":"22822935","start_time":"01:00 AM","end_time":"02:00 AM","custom_fields":{"cf_number":"-","cf_user_picklist":"-","cf_single_line":"-","cf_multi_line":"-","cf_email":"-","cf_date":"-","cf_decimal":"-","cf_check_box":"-"},"sprints_logid":"-","status":"on","unique_key":"-","cost_rate_per_hour":"1"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify time logs in the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Parameter
long
requiredEnter the log ID
String
Enter the date to update the log
String
Enter the billing status
String
Enter the approval status of the time log
String
Enter the log hours
String
max length : 10000Enter the additional information for the log
long
Enter the ZPUID of the owner
long
Enter the ZPUID of the approver
String
Enter the start time
String
Enter the end time
String
requiredEnter the module name
double
Enter the Cost Per Hour
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/logs' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "id" : "4000000062001", "date" : "2024-12-11", "bill_status" : "Billable", "approval_status" : "Approved", "hours" : "01.00", "notes" : "The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.", "owner_zpuid" : "8000000008075", "approver" : "22822935", "start_time" : "01:00 AM", "end_time" : "02:00 AM", "module" : { "id" : "4000000004947", "type" : "task" }, "custom_fields" : { "cf_number" : "-", "cf_user_picklist" : "-", "cf_single_line" : "-", "cf_multi_line" : "-", "cf_email" : "-", "cf_date" : "-", "cf_decimal" : "-", "cf_check_box" : "-" }, "extra_data" : { "start_time" : "01:00 AM", "end_time" : "02:00 AM", "notes" : "The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets." }, "cost_rate_per_hour" : "1" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/logs");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"id\":\"4000000062001\",\"date\":\"2024-12-11\",\"bill_status\":\"Billable\",\"approval_status\":\"Approved\",\"hours\":\"01.00\",\"notes\":\"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.\",\"owner_zpuid\":\"8000000008075\",\"approver\":\"22822935\",\"start_time\":\"01:00 AM\",\"end_time\":\"02:00 AM\",\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"},\"custom_fields\":{\"cf_number\":\"-\",\"cf_user_picklist\":\"-\",\"cf_single_line\":\"-\",\"cf_multi_line\":\"-\",\"cf_email\":\"-\",\"cf_date\":\"-\",\"cf_decimal\":\"-\",\"cf_check_box\":\"-\"},\"extra_data\":{\"start_time\":\"01:00 AM\",\"end_time\":\"02:00 AM\",\"notes\":\"The Timesheet API allows users to manage their work hours by tracking time entries, submitting timesheets.\"},\"cost_rate_per_hour\":\"1\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove time logs from the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.DELETE
Parameter
long
requiredEnter the log ID
String
requiredEnter the log type.
Accepted values : task
,issue
,general
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/bulkdelete' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "id" : "4000000062001", "module" : { "id" : "4000000004947", "type" : "task" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/bulkdelete");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"id\":\"4000000062001\",\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers operations related to timesheet reports within Zoho Projects. Use this API to retrieve timesheet reports at the portal or project level.
Retrieve timesheet reports from the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
requiredEnter the report type.
Accepted values: user
,module
String
Enter the view type.
Accepted values: day
,week
,month
String
Enter the start date
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/report?page="1"&per_page="10"&report_type="user"&view_type="month"&start_date="06-16-2022"&filter={"criteria":[{"field_name":"user","criteria_condition":"is","value":["4000000002411"]},{"field_name":"created_time","criteria_condition":"Yesterday","value":["Yesterday"]},{"field_name":"billstatus","criteria_condition":"is","value":["NonBillable"]},{"field_name":"approval_status","criteria_condition":"is","value":["Approved","Unapproved"]},{"field_name":"ts_single","criteria_condition":"is","value":["single"]}],"pattern":"1AND2AND3AND4"}&view_id="23806000074760021"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/report");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""report_type"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""start_date"", "");
uriBuilder.addParameter(""filter"", "{"project":"23806000074760021","assignee":"2253831617","billtype":"billable","approvaltype":"-","tsheetperiod":"-","clientcompany":"-","content":"Sample content","invoicestatus":"-","usergroups":"[53856179]","criteria":[{"cfid":"23806000091006001","field_name":"status","custom_feild":"-","field_type":"start_date","criteria_condition":"is","value":"[\"53831617\"]","relative_columns":[{"cfid":"23806000091006001","offset":"-","unit":"days","prior":"-"}]}],"pattern":"1","cf_single_line":"-","cf_user_picklist":"-","cf_number":"-","cf_date":"-","cf_decimal":"-","cf_multi_line":"-","cf_email":"-"}");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve timesheet reports from a project
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
requiredEnter the report type.
Accepted values: user
,module
String
Enter the view type.
Accepted values: day
,week
,month
String
Enter the start date
long
Enter the custom view ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/report?page="1"&per_page="10"&report_type="user"&view_type="curmonth"&start_date="06-16-2022"&filter={"criteria":[{"field_name":"user","criteria_condition":"is","value":["4000000002411"]},{"field_name":"created_time","criteria_condition":"Yesterday","value":["Yesterday"]},{"field_name":"billstatus","criteria_condition":"is","value":["NonBillable"]},{"field_name":"approval_status","criteria_condition":"is","value":["Approved","Unapproved"]},{"field_name":"ts_single","criteria_condition":"is","value":["single"]}],"pattern":"1AND2AND3AND4"}&view_id="23806000074760021"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/report");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""report_type"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""start_date"", "");
uriBuilder.addParameter(""filter"", "{"project":"23806000074760021","assignee":"2253831617","billtype":"billable","approvaltype":"-","tsheetperiod":"-","clientcompany":"-","content":"Sample content","invoicestatus":"-","usergroups":"[53856179]","criteria":[{"cfid":"23806000091006001","field_name":"status","custom_feild":"-","field_type":"start_date","criteria_condition":"is","value":"[\"53831617\"]","relative_columns":[{"cfid":"23806000091006001","offset":"-","unit":"days","prior":"-"}]}],"pattern":"1","cf_single_line":"-","cf_user_picklist":"-","cf_number":"-","cf_date":"-","cf_decimal":"-","cf_multi_line":"-","cf_email":"-"}");
uriBuilder.addParameter(""view_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
This module covers custom view related operations within Zoho Projects. Use this API to create, update, delete, and manage timesheet custom views, including setting views as default or marking them as favorites.
Set a timesheet custom view as the default view across the portal
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheets/customviews/"1752587000000097269"/set-default-view' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheets/customviews/"1752587000000097269"/set-default-view");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Set a timesheet custom view as the default view in a project
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheets/customviews/"1752587000000097269"/set-default-view' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheets/customviews/"1752587000000097269"/set-default-view");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Mark a timesheet custom view as a favorite view in a project
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheets/customviews/"1752587000000097269"/mark-favourite' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheets/customviews/"1752587000000097269"/mark-favourite");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers operations related to timesheet approval within Zoho Projects. Use this API to retrieve and update default timesheet approvers.
Retrieve the default approver of the user in a project
OAuth Scope:
ZohoProjects.timesheets.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/approver' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/approver");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Modify the default timesheet approver of the user in a project
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/approver' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/approver");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
This module covers operations related to pinned timesheets within Zoho Projects. Use this API to create, update, retrieve, or delete user pins associated with timesheets.
Retrieve all pinned entries in the timesheet weekly form from a project
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
String
Enter the ZPUID of the user.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/pin?userId="53831945"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/timesheet/pin");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""userId"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve all pinned entries in the timesheet weekly form from the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.READ
Query Parameter
String
Enter the pin ID
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin?pinId="23806000067962644"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""pinId"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a pinned timesheet from the Zoho Projects portal
OAuth Scope:
ZohoProjects.timesheets.CREATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin/[PINID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin/[PINID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Pin a timesheet in the Zoho Projects Portal
OAuth Scope:
ZohoProjects.timesheets.CREATE
Parameter
long
Enter the project ID
String
Enter the module name
boolean
Specify whether timesheet is billable. Accepted values: true
or false
String
Enter the ZPUID of the user.
int
Enter the sequence order of the pin
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "project_id" : "23806000074760021", "module" : { "id" : "4000000004947", "type" : "task" }, "is_billing" : "false", "zpuid" : "4000000002055", "sequence" : "5" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"project_id\":\"23806000074760021\",\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"},\"is_billing\":\"false\",\"zpuid\":\"4000000002055\",\"sequence\":\"5\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Modify an existing timesheet pin
OAuth Scope:
ZohoProjects.timesheets.CREATE
Parameter
long
Enter the project ID
String
Enter the module name
boolean
Specify whether timesheet is billable. Accepted values: true
or false
String
Enter the ZPUID of the user.
int
Enter the sequence order of the pin
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin/[PINID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "project_id" : "23806000074760021", "module" : { "id" : "4000000004947", "type" : "task" }, "is_billing" : "false", "zpuid" : "4000000002055", "sequence" : "5" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/timesheet/pin/[PINID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"project_id\":\"23806000074760021\",\"module\":{\"id\":\"4000000004947\",\"type\":\"task\"},\"is_billing\":\"false\",\"zpuid\":\"4000000002055\",\"sequence\":\"5\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
This module covers operations related to timesheet settings within Zoho Projects. Use this API to retrieve, update, or configure metadata and settings related to timesheets.
Retrieve meta data of the time logs
OAuth Scope:
ZohoProjects.timesheets.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog/meta-data' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog/meta-data");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the current timesheet settings configuration of a project.
OAuth Scope:
ZohoProjects.timesheets.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Modify the timesheet settings of a project
OAuth Scope:
ZohoProjects.timesheets.UPDATE
Parameter
String
Enter the user restriction for logging time. Accepted values: owners
,everyone
,teams
boolean
Specify whether the logging time for closed tasks/issues is allowed. Accepted values: true
or false
boolean
Specify whether to restrict multiple timers. Accepted values: true
or false
boolean
Specify whether to enable restriction based on task work hours. Accepted values: true
or false
String
Enter overlap restriction for time logs. Accepted values : allow
,warn
,restrict
JSONObject
Specify whether to enable daily/weekly hour limit. Accepted values: true
,false
boolean
Specify whether to enable timesheet drafts. Accepted values: true
or false
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "allow_timelog_for" : "everyone", "closed_entity_restriction" : "true", "multi_timer_restriction" : "false", "workhour_restriction" : "true", "restrict_timelogs" : { "weekend" : "-", "holiday" : "-", "zpeople_leave" : "-" }, "timelog_configuration" : { "log_type" : "-", "is_tasklog_enabled" : "-", "is_issuelog_enabled" : "-", "is_generallog_enabled" : "-" }, "overlap_restriction" : "allow", "period_settings" : { "past_log" : "-", "future_log" : "-", "is_editlog_restricted" : "-", "period_customized_data" : { "past_value" : "-", "past_unit" : "-", "future_value" : "-", "future_unit" : "-" } }, "loghour_restriction" : { "is_enabled" : "-", "max_per_day" : "-", "max_per_week" : "-" }, "reminder" : { "is_enabled" : "-", "threshold" : "-", "daily_reminder" : { "minutes" : "-", "condition" : "-", "notify_running_timers" : "-" }, "weekly_reminder" : { "minutes" : "-", "condition" : "-" }, "exclude_reminder_for" : { "users" : { "add" : "-", "remove" : "-" }, "profiles" : { "add" : "-", "remove" : "-" } } }, "approval" : { "is_enabled" : "-", "type" : "task", "is_auto_approval" : "-", "email_notification" : { "is_enabled" : "-", "frequency" : "-", "time" : "22:00" } }, "is_draft_enabled" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/timelog");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"allow_timelog_for\":\"everyone\",\"closed_entity_restriction\":\"true\",\"multi_timer_restriction\":\"false\",\"workhour_restriction\":\"true\",\"restrict_timelogs\":{\"weekend\":\"-\",\"holiday\":\"-\",\"zpeople_leave\":\"-\"},\"timelog_configuration\":{\"log_type\":\"-\",\"is_tasklog_enabled\":\"-\",\"is_issuelog_enabled\":\"-\",\"is_generallog_enabled\":\"-\"},\"overlap_restriction\":\"allow\",\"period_settings\":{\"past_log\":\"-\",\"future_log\":\"-\",\"is_editlog_restricted\":\"-\",\"period_customized_data\":{\"past_value\":\"-\",\"past_unit\":\"-\",\"future_value\":\"-\",\"future_unit\":\"-\"}},\"loghour_restriction\":{\"is_enabled\":\"-\",\"max_per_day\":\"-\",\"max_per_week\":\"-\"},\"reminder\":{\"is_enabled\":\"-\",\"threshold\":\"-\",\"daily_reminder\":{\"minutes\":\"-\",\"condition\":\"-\",\"notify_running_timers\":\"-\"},\"weekly_reminder\":{\"minutes\":\"-\",\"condition\":\"-\"},\"exclude_reminder_for\":{\"users\":{\"add\":\"-\",\"remove\":\"-\"},\"profiles\":{\"add\":\"-\",\"remove\":\"-\"}}},\"approval\":{\"is_enabled\":\"-\",\"type\":\"task\",\"is_auto_approval\":\"-\",\"email_notification\":{\"is_enabled\":\"-\",\"frequency\":\"-\",\"time\":\"22:00\"}},\"is_draft_enabled\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers forum related operations within Zoho Projects. Use this API to create, update, delete, or move forums, retrieve forum details, and manage tasks or comments associated with forums.
Retrieve the forums from a project.
OAuth Scope:
ZohoProjects.forums.READ
Query Parameter
String
Enter the sort criteria. Accepted values:
created_time
,updated_time
,last_activity
String
Enter the sort order. Accepted values:
asc
,desc
int
Enter the page number.
String
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums?sort_by="created_time"&sort_order="desc"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""sort_order"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
View Forum Details in a Project.
OAuth Scope:
ZohoProjects.forums.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the tasks from a forum.
OAuth Scope:
ZohoProjects.forums.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/tasks?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/tasks");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a new forum to a project.
OAuth Scope:
ZohoProjects.forums.CREATE
Parameter
String
requiredmax length : 100
Enter the forum title.
String
requiredEnter the forum content.
long
requiredEnter the project category ID.
JSONArray
max length : 7000array size : 0-100
Enter the tags to add to the forum post.
String
Mark the forum as internal (visible only to project users) or external (visible to both project and client users)
Accepted values: internal
,external
String
Enter the forum type.
Accepted values: normal
,question
String
Specify whether to mark the post as sticky
Accepted values: true
,false
String
Specify whether to mark the post as announcement
Accepted values: true
,false
JSONArray
max length : 7000array size : 0-100
Enter the ZPUID of the users to notify.
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "title" : "Forum Projects Discusion", "content" : "content", "category_id" : 1752587000000041000, "tags" : [ 1752587000000041200 ], "flag" : "internal", "type" : "normal", "is_sticky" : true, "is_announcement" : false, "notify" : "true", "attachment_ids" : [ 1752587000000094000 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"title\":\"Forum Projects Discusion\",\"content\":\"content\",\"category_id\":1752587000000041000,\"tags\":[1752587000000041200],\"flag\":\"internal\",\"type\":\"normal\",\"is_sticky\":true,\"is_announcement\":false,\"notify\":\"true\",\"attachment_ids\":[1752587000000094000]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify a forum in a Project.
OAuth Scope:
ZohoProjects.forums.UPDATE
Parameter
String
max length : 100Enter the forum title.
String
Enter the forum content.
long
Enter the project category ID.
JSONArray
max length : 7000array size : 0-100
Enter the tags to add to the forum post.
String
Mark the forum as internal (visible only to project users) or external (visible to both project and client users)
Accepted values: internal
,external
String
Enter the forum type.
Accepted values: normal
,question
String
Specify whether to mark the post as sticky
Accepted values: true
,false
String
Specify whether to mark the post as announcement
Accepted values: true
,false
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs.
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs to remove.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "title" : "Forum Projects Discusion", "content" : "content", "category_id" : 1752587000000041000, "tags" : [ 1752587000000041200 ], "flag" : "internal", "type" : "normal", "is_sticky" : true, "is_announcement" : false, "attachment_ids" : [ 1752587000000094000 ], "delete_attachment_ids" : [ 1752587000000094000 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"title\":\"Forum Projects Discusion\",\"content\":\"content\",\"category_id\":1752587000000041000,\"tags\":[1752587000000041200],\"flag\":\"internal\",\"type\":\"normal\",\"is_sticky\":true,\"is_announcement\":false,\"attachment_ids\":[1752587000000094000],\"delete_attachment_ids\":[1752587000000094000]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a forum post from the project.
OAuth Scope:
ZohoProjects.forums.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to forum comments within Zoho Projects. Use this API to retrieve, add, update, or delete comments associated with forums.
Retrieve comments from a forum.
OAuth Scope:
ZohoProjects.forums.READ
Query Parameter
String
Enter the sort criteria
Accepted values: created_time
,updated_time
String
Enter the sort order
Accepted values: asc
,desc
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"?sort_by="created_time"&sort_order="desc"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""sort_order"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve a specific comment from a forum.
OAuth Scope:
ZohoProjects.forums.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve details of forum comments without the forum ID.
OAuth Scope:
ZohoProjects.forums.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forumcomments/"1752587000000097013"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forumcomments/"1752587000000097013"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a comment to a forum post.
OAuth Scope:
ZohoProjects.forums.CREATE
Parameter
String
requiredEnter the comment.
String
Enter the comment type. Accepted values: question
,answer
,normal
JSONArray
max length : 7000array size : 0-100
Enter the ZPUID of the users to notify.
long
Enter the ID of the root comment.
long
Enter the ID of the parent comment.
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "content", "type" : "normal", "notify" : "true", "root_id" : "1752587000000097101", "parent_id" : "1752587000000097208", "attachment_ids" : [ 1752587000000094000 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"content\",\"type\":\"normal\",\"notify\":\"true\",\"root_id\":\"1752587000000097101\",\"parent_id\":\"1752587000000097208\",\"attachment_ids\":[1752587000000094000]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
INVALID_PARAMETER_VALUE HTTP 400
Modify a comment in a forum.
OAuth Scope:
ZohoProjects.forums.UPDATE
Parameter
String
requiredEnter the comment.
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs.
JSONArray
max length : 7000array size : 0-100
Enter the attachment IDs to remove.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "content", "attachment_ids" : [ 1752587000000094000 ], "delete_attachment_ids" : [ 1752587000000094000 ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"content\",\"attachment_ids\":[1752587000000094000],\"delete_attachment_ids\":[1752587000000094000]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a comment from a forum.
OAuth Scope:
ZohoProjects.forums.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Mark response as the best answer in a forum.
OAuth Scope:
ZohoProjects.forums.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"/markbestanswer' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"/markbestanswer");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Unmark the best answer response in the forum.
OAuth Scope:
ZohoProjects.forums.UPDATE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"/markbestanswer' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/"Test Comment"/"1752587000000097046"/markbestanswer");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to the forum category within Zoho Projects. Use this API to retrieve, add, update, or delete categories associated with forums.
Retrieve categories in a project.
OAuth Scope:
ZohoProjects.forums.READ
Query Parameter
int
Enter the index for the record.
int
Enter the range for the record.
String
Enter the sort criteria.
Accepted values: created_time
,updated_time
String
Enter the sort order.
Accepted values: asc
,desc
String
Enter the search term to fetch.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories?index="1"&range="100"&sort_by="created_time"&sort_order="desc"&searchTerm=-' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""sort_order"", "");
uriBuilder.addParameter(""searchTerm"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a new forum category.
OAuth Scope:
ZohoProjects.forums.CREATE
Parameter
String
requiredmax length : 200
Enter the name of the category.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Inventory Discussion" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Inventory Discussion\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
INVALID_PARAMETER_VALUE HTTP 400
Update the forum category name in a project.
OAuth Scope:
ZohoProjects.forums.UPDATE
Parameter
String
requiredmax length : 200
Enter the name of the category.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories/"1752587000000097234"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Inventory Discussion" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories/"1752587000000097234"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Inventory Discussion\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove forum category from a project.
OAuth Scope:
ZohoProjects.forums.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories/"1752587000000097234"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/categories/"1752587000000097234"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers forum follower operations within Zoho Projects. Use this API to follow or unfollow forums and retrieve a list of followers.
Retrieve the followers of a forum.
OAuth Scope:
ZohoProjects.forums.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/followers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/followers");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Follow a forum post to receive forum notifications.
OAuth Scope:
ZohoProjects.forums.CREATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/follow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/follow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Unfollow a forum post to stop receiving forum notifications.
OAuth Scope:
ZohoProjects.forums.DELETE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/unfollow' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/forums/"1752587000000097035"/unfollow");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers event-related operations within Zoho Projects. Use this API to create, update, delete, and retrieve events or event details, including participants.
Retrieve the events associated with a project within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.READ
Query Parameter
int
Enter the page number.
int
Specify the number of entries per page.
String
Specify the Status of the event.
String
Enter the IDs of events to retrieve.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events?page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&status=-&ids="4000000029001"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""status"", "");
uriBuilder.addParameter(""ids"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the details of an event within a project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the participants of an event within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.READ
Query Parameter
int
Enter the page number.
int
Specify the number of entries per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/events/[EVENTID]/participants?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/events/[EVENTID]/participants");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Create a new event within a project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.CREATE
Parameter
String
requiredmax length : 150
Enter the title of the event.
String
requiredEnter the start date and time in the ISO8601 format.
String
requiredEnter the end date and time in the ISO8601 format.
String
Specify the reminder duration before the event.
String
Specify the recurrence frequency of the event.
Available recurrence types : only once, every day, every week, every month, every year.
int
Specify the recurrence count for the event.
String
max length : 200Specify the Location of the event.
JSONArray
requiredmax length : 7000
array size : 0-500
Specify the attendees for the event.
JSONArray
Enter Attachment IDs for the event.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "title" : "admin Event", "starts_at" : "2022-06-15T12:48:53.523Z", "ends_at" : "2022-06-15T13:48:53.524Z", "remind_before" : "on time", "recurrence_frequency" : "every day", "recurrence_count" : "5", "location" : "chennai", "attendees" : "[23806000000152047]", "attachment_ids" : " [23806000097572061]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"title\":\"admin Event\",\"starts_at\":\"2022-06-15T12:48:53.523Z\",\"ends_at\":\"2022-06-15T13:48:53.524Z\",\"remind_before\":\"on time\",\"recurrence_frequency\":\"every day\",\"recurrence_count\":\"5\",\"location\":\"chennai\",\"attendees\":\"[23806000000152047]\",\"attachment_ids\":\" [23806000097572061]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update details of an event in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.UPDATE
Parameter
String
max length : 150Specify the new title for the event.
String
Enter the start date and time in the ISO8601 format.
String
Enter the end date and time in the ISO8601 format.
String
Specify the reminder duration before the event.
String
Specify the recurrence frequency of the event.
Available recurrence types : only once, every day, every week, every month, every year.
int
Specify the new recurrence count for the event.
String
max length : 200Specify the new Location for the event.
JSONArray
max length : 7000array size : 0-500
Specify the updated list of attendees for the event.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "title" : "admin Event", "starts_at" : "2022-06-15T12:48:53.523Z", "ends_at" : "2022-06-15T13:48:53.524Z", "remind_before" : "on time", "recurrence_frequency" : "every day", "recurrence_count" : "5", "location" : "chennai", "attendees" : "[23806000000152047]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"title\":\"admin Event\",\"starts_at\":\"2022-06-15T12:48:53.523Z\",\"ends_at\":\"2022-06-15T13:48:53.524Z\",\"remind_before\":\"on time\",\"recurrence_frequency\":\"every day\",\"recurrence_count\":\"5\",\"location\":\"chennai\",\"attendees\":\"[23806000000152047]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Delete an event associated with a project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers comment operations for events within Zoho Projects. Use this API to add, update, delete, or retrieve comments related to events.
Retrieve the comments associated with an event in a project within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.READ
Query Parameter
int
Enter the page number.
int
Specify the number of entries per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve an event comment by its unique identifier within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/eventcomments/[EVENTCOMMENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/eventcomments/[EVENTCOMMENTID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add a new comment to an event associated with a project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.CREATE
Parameter
String
requiredmax length : 65000
Content for the event comment.
JSONArray
Array of attachment IDs associated with the comment.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Zoho Projects API", "attachment_ids" : " [23806000097572061]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Zoho Projects API\",\"attachment_ids\":\" [23806000097572061]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update an existing comment associated with an event in a project within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.UPDATE
Parameter
String
requiredContent for the event comment.
JSONArray
Array of attachment IDs associated with the comment.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "content" : "Zoho Projects API", "attachment_ids" : " [23806000097572061]" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"content\":\"Zoho Projects API\",\"attachment_ids\":\" [23806000097572061]\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Delete a comment associated with an event in a project within the Zoho Projects portal.
OAuth Scope:
ZohoProjects.events.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"/"1752587000000097046"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/events/[EVENTID]/"Test Comment"/"1752587000000097046"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers attachment related operations within Zoho Projects. Use this API to retrieve, upload, associate, or disassociate attachments for projects.
Retrieve attachment details from a project.
OAuth Scope:
ZohoProjects.portals.READ, WorkDrive.workspace.ALL,WorkDrive.files.ALL
Query Parameter
String
requiredEnter the module name.
Available Modules:project_comment
,status
,status_comment
,milestone_comment
,tasklist_comment
,task
,task_comment
,bug
,bug_resolution
,bug_comment
,event
,event_comment
,forum
,forum_comment
,announcement_comment
,zoho_meeting_comment
long
requiredEnter the module ID.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments?entity_type="task"&entity_id="6000000006079"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""entity_type"", "");
uriBuilder.addParameter(""entity_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of an attachment from a project.
OAuth Scope:
ZohoProjects.portals.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Upload attachments to the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.CREATE, WorkDrive.workspace.ALL,WorkDrive.files.ALL
Parameter
JSONObject
Enter the storage type and location details of the attachments.
JSONArray
Enter the document ID.
file
max size : 125mblimit : 0-10
Specify the file or files to be uploaded.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/attachments' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"attachment_details" = [{"storage_type":"workdrive","location_details":{"folder_id":"23806000097545166","project_id":"1752587000000097024"}}]' --form '"attachments" = [{"attachment_id":"23806000097323570","name":"Zoho-ApprovaLogo.png","type":"application/octet-stream","size":"9162","preview_url":"-","download_url":"-","permanent_url":"-","created_by":"projects+api@zohocorp.com","created_time":"1654508530946","third_party_file_id":"170658000000605263","app_domain":"zfsGlobal","app_id":"2","version":"","entity_id":"6000000006079","entity_type":"task","associated_by":"","extra_data":{"set_by_record":"false"}}]' --form 'document_ids = "[\"17525870000000970\"]"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/attachments");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""attachment_details"", "{"storage_type":"workdrive","location_details":{"folder_id":"23806000097545166","project_id":"1752587000000097024"}}");
uriBuilder.addParameter(""attachments"", "{"attachment_id":"23806000097323570","name":"Zoho-ApprovaLogo.png","type":"application/octet-stream","size":"9162","preview_url":"-","download_url":"-","permanent_url":"-","created_by":"projects+api@zohocorp.com","created_time":"1654508530946","third_party_file_id":"170658000000605263","app_domain":"zfsGlobal","app_id":"2","version":"","entity_id":"6000000006079","entity_type":"task","associated_by":"","extra_data":{"set_by_record":"false"}}");
uriBuilder.addParameter(""document_ids"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Associate an attachment to a module in a project.
OAuth Scope:
ZohoProjects.portals.CREATE, WorkDrive.workspace.ALL,WorkDrive.files.ALL
Parameter
String
requiredEnter the module name.
Available entities:project_comment
,status
,status_comment
,milestone_comment
,tasklist_comment
,task
,task_comment
,bug
,bug_resolution
,bug_comment
,event
,event_comment
,forum
,forum_comment
,announcement_comment
,zoho_meeting_comment
long
requiredEnter the module ID.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'entity_type = "task"' --form 'entity_id = "6000000006079"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""entity_type"", "");
uriBuilder.addParameter(""entity_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Disassociate an attachment from a module in a project.
OAuth Scope:
ZohoProjects.portals.DELETE, WorkDrive.workspace.ALL,WorkDrive.files.ALL
Parameter
String
requiredEnter the module name.
Available entities:project_comment
,status
,status_comment
,milestone_comment
,tasklist_comment
,task
,task_comment
,bug
,bug_resolution
,bug_comment
,event
,event_comment
,forum
,forum_comment
,announcement_comment
,zoho_meeting_comment
long
requiredEnter the module ID.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"?entity_type="task"&entity_id="6000000006079"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/attachments/"1752587000000097260"");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""entity_type"", "");
uriBuilder.addParameter(""entity_id"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers all leave-related operations within Zoho Projects. Use this API to retrieve, add, update, or delete leave records. To enable the leave module for your portal, please send an email to support@zohoprojects.com.
Retrieve all the leaves from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.leave.READ
Query Parameter
int
Enter the index number to retrieve. Should be greater than or equal to 0.
int
Enter the number of records to retrieve. Should be less than or equal to 200.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave?index="1"&range="100"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve specific leave details from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.leave.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Create a leave in the Zoho Projects portal. A maximum of 100 leaves can be added in a request. Multiple user leaves cannot be added with a single request.
OAuth Scope:
ZohoProjects.leave.CREATE
Parameter
String
requiredEnter the Leave type. A maximum of 100 characters can be added.
String
requiredEnter the start date of the leave. E.g. 2024-07-02T10:00:00Z
String
requiredEnter the end date of the leave. E.g. 2024-07-02T10:00:00Z
String
max length : 250Enter the reason for the leave. A maximum of 250 characters can be added.
String
max length : 250Enter the reference ID. A maximum of 250 characters can be added.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "user" : { "zpuid" : "4000000002055" }, "type" : "Task", "from_date" : "-", "to_date" : "-", "reason" : "-", "reference_id" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"user\":{\"zpuid\":\"4000000002055\"},\"type\":\"Task\",\"from_date\":\"-\",\"to_date\":\"-\",\"reason\":\"-\",\"reference_id\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update the leave details in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.leave.UPDATE
Parameter
String
requiredEnter the Leave type. A maximum of 100 characters can be added.
String
requiredEnter the start date of the leave. E.g. 2024-07-02T10:00:00Z
String
requiredEnter the end date of the leave. E.g. 2024-07-02T10:00:00Z
String
max length : 250Enter the reason for the leave. A maximum of 250 characters can be added.
String
max length : 250Enter the reference ID. A maximum of 250 characters can be added.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "user" : { "zpuid" : "4000000002055" }, "type" : "Task", "from_date" : "-", "to_date" : "-", "reason" : "-", "reference_id" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"user\":{\"zpuid\":\"4000000002055\"},\"type\":\"Task\",\"from_date\":\"-\",\"to_date\":\"-\",\"reason\":\"-\",\"reference_id\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a leave from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.leave.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/leave/[LEAVEID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers user-related operations within Zoho Projects. Use this API to manage portal users, client users, and resources. You can retrieve user details, add or deactivate users, update user profiles, and view the projects a user is associated with.
Retrieve all users, client users, and contacts from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
int
Enter the user type.
Accepted values are 1 (Users), 2 (Client Users), 3 (Client Contacts).
String
Enter the view type.
Accepted values are 0 (Inactive), 1 (Active).
String
Specify the sort order. E.g. alphabetical:asc
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the user IDs.
String
Enter the client company IDs.
String
Enter the data view type.
Accepted values: list, grid.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users?type="0"&view_type="1"&sort="alphabetical:asc"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&ids="23806000006417155"&company_ids=-&view=-&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""email"", "");
uriBuilder.addParameter(""type"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""company_ids"", "");
uriBuilder.addParameter(""view"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of a user from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve all projects associated with a user from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
String
Enter the project status. E.g. Open
String
Enter a search term.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[USERID]/projects?status=-&search_term="demo"&page="1"&per_page="10"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[USERID]/projects");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""status"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""show_all"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a new user to the specified Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.CREATE
Parameter
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"userdetails" = [{"email_id":"zohoprojects@zoho.com","role_id":"23806000000035001","profile_id":"2223806000000022149","project_ids":"[\"23806000074760021\"]","bulk_projects":{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}},"rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","hourly_budget":"-","hourly_budget_threshold":"-","include_projects":"86559000000045345","applyportalrate":"-","reporting_manager":"23806000006123455432"}]'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""userdetails"", "{"email_id":"zohoprojects@zoho.com","role_id":"23806000000035001","profile_id":"2223806000000022149","project_ids":"[\"23806000074760021\"]","bulk_projects":{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}},"rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","hourly_budget":"-","hourly_budget_threshold":"-","include_projects":"86559000000045345","applyportalrate":"-","reporting_manager":"23806000006123455432"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add a client user to the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.CREATE
Parameter
boolean
Specify whether to convert existing contact users to client users.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clientuser' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"userdetails" = [{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","company_name":"jkywbycc01222022","company_id":"2223806000097701045","project_ids":"[\"23806000074760021\"]","bulk_projects":{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}},"rate":"1","include_projects":"86559000000045345","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","hourly_budget":"-","hourly_budget_threshold":"-"}]' --form 'force_add = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clientuser");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""userdetails"", "{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","company_name":"jkywbycc01222022","company_id":"2223806000097701045","project_ids":"[\"23806000074760021\"]","bulk_projects":{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}},"rate":"1","include_projects":"86559000000045345","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","hourly_budget":"-","hourly_budget_threshold":"-"}");
uriBuilder.addParameter(""force_add"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update the user profile and rate in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.UPDATE
Parameter
long
Enter the role ID of the user.
long
Enter the profile ID of the user.
String
Enter the invoice rate, e.g., $30 per hour.
String
Enter the cost per hour, e.g., $15 per hour.
boolean
Specify whether the user rate applies at the portal level.
Accepted values:true, false
long
Specify the reporting manager.
boolean
Specify whether the user should be notified about updates.
Accepted values: true, false.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'companyrole = - ' --form 'companyprofile = - ' --form 'invoice = - ' --form 'costrate = - ' --form 'isapplyportalrate = - ' --form '"bulkprojects" = [{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}}]' --form 'reporting_manager = "23806000006123455432"' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""companyrole"", "");
uriBuilder.addParameter(""companyprofile"", "");
uriBuilder.addParameter(""invoice"", "");
uriBuilder.addParameter(""costrate"", "");
uriBuilder.addParameter(""isapplyportalrate"", "");
uriBuilder.addParameter(""bulkprojects"", "{"select_all":"false","selected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"unselected":{"group_ids":"[\"2380600000612345\"]","project_ids":"[\"23806000074760021\"]"},"rateupdatedprojects":{"longkey":"1752587000000097269"},"costrateupdatedprojects":{"longkey":"1752587000000097269"}}");
uriBuilder.addParameter(""reporting_manager"", "");
uriBuilder.addParameter(""is_readonly"", "");
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Activate a user in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.UPDATE
Parameter
String
requiredSpecify whether to notify the user about the activation.
Accepted values: true or false.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]/activate' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]/activate");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Deactivate a user in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.UPDATE
Parameter
String
requiredSpecify whether to notify the user about the deactivation.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]/deactivate' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]/deactivate");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
uriBuilder.addParameter(""reporting_manager"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Activate a client user in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.UPDATE
Parameter
String
requiredSpecify whether to notify the user about the activation.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/client-users/[ZPUID | EMAILID]/activate' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/client-users/[ZPUID | EMAILID]/activate");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Deactivate a client user in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.UPDATE
Parameter
String
requiredSpecify whether to notify the client user about the deactivation.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/client-users/[ZPUID | EMAILID]/deactivate' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/client-users/[ZPUID | EMAILID]/deactivate");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a user from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.DELETE
Parameter
String
requiredSpecify whether to notify the user
Accepted values:true
,false
long
Enter the reporting manager of the user.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]?notify="true"&reporting_manager="23806000006123455432"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
uriBuilder.addParameter(""reporting_manager"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
This module covers operations related to project users within Zoho Projects. Use this API to retrieve, add, and delete users associated with a project. You can manage client users, non-project users, and view specific user details within the context of a project.
Retrieve all users from a project.
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
int
Enter the user type.
Accepted values are 1 (Users), 2 (Client Users), 3 (Client Contacts).
String
Enter the view type.
Accepted values are 0 (Inactive), 1 (Active).
String
Enter the sort order. E.g. last_accessed_time:desc
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the user IDs.
String
Enter the client company IDs.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users?type="0"&view_type="1"&sort="alphabetical:asc"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&ids="23806000006417155"&company_ids=-&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""type"", "");
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""company_ids"", "");
uriBuilder.addParameter(""view"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of a user from a project.
OAuth Scope:
ZohoProjects.users.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/[ZPUID | EMAILID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add users to the project.
OAuth Scope:
ZohoProjects.users.CREATE
Parameter
boolean
Specify Whether to notify users.
Accepted values: True or False
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/projectusers' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"userdetails" = [{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","role_id":"23806000000035001","rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","is_readonly":"-"}]' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/projectusers");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""userdetails"", "{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","role_id":"23806000000035001","rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","is_readonly":"-"}");
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add client users to the project.
OAuth Scope:
ZohoProjects.users.CREATE
Parameter
boolean
Specify Whether to notify users.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clientuser' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form '"userdetails" = [{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","role_id":"23806000000035001","rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","is_readonly":"-"}]' --form 'notify = "true"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clientuser");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""userdetails"", "{"email_id":"zohoprojects@zoho.com","profile_id":"2223806000000022149","role_id":"23806000000035001","rate":"1","cost_rate_per_hour":"-","revenue_budget":"-","cost_budget":"-","budget_threshold":"-","is_readonly":"-"}");
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a user from a project.
OAuth Scope:
ZohoProjects.users.DELETE
Parameter
String
requiredSpecify whether to notify the user.
Accepted values:true
,false
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/[ZPUID | EMAILID]?notify="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Use this API to retrieve the reportees of a user within Zoho Projects.
Retrieve subordinates of a user from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
int
Enter the index of the record.
int
Enter the range of the record.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/user/[USERID]/descendants?index="1"&range="100"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/user/[USERID]/descendants");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers operations related to user export within Zoho Projects. Use this API to export, retrieve export history, and export details for both portal and project users.
Retrieve exported users from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export/[EXPORTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export/[EXPORTID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve exported users from a project using the export ID.
OAuth Scope:
ZohoProjects.users.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export/[EXPORTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export/[EXPORTID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Retrieve the export history of portal users from past 15 days.
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
String
requiredEnter the export type.
Accepted values: portal_users
,all_project_users
,portal_clientusers
,all_project_clientusers
,portal_clients
,all_project_clients
,portal_contacts
,all_project_contacts
,portal_allclients
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export?type="0"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""type"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the export history of project users from past 15 days
OAuth Scope:
ZohoProjects.users.READ
Query Parameter
String
requiredEnter the export type.
Accepted values: project_users
,project_clientusers
,project_clients
,project_contacts
,project_allclients
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export?type="0"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""type"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Export the portal users from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Parameter
String
requiredEnter the export type.
Accepted values: portal_users
,all_project_users
,portal_clientusers
,all_project_clientusers
,portal_clients
,all_project_clients
,portal_contacts
,all_project_contacts
,portal_allclients
String
requiredEnter the file format to export.
Accepted values: csv
,xlsx
String
Enter the encryption password.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "type" : "0", "format" : "-", "access_code" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/users/export");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"type\":\"0\",\"format\":\"-\",\"access_code\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Export the project users from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.users.READ
Parameter
String
requiredEnter the export type.
Accepted values: project_users
,project_clientusers
,project_clients
,project_contacts
,project_allclients
String
requiredEnter the file format to export.
Accepted values: csv
,xlsx
String
Enter the encryption password.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "type" : "0", "format" : "-", "access_code" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/users/export");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"type\":\"0\",\"format\":\"-\",\"access_code\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers team management related operations within Zoho Projects. Use this API to manage teams, get team details, associate them with projects, and update team meta details.
Retrieve team details from the Zoho projects portal.
OAuth Scope:
ZohoProjects.teams.READ
Query Parameter
long
Enter the team ID.
String
Enter the team name
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the last modification time.
String
Enter the sort order. Accepted values: ASC
,DESC
.
created_time : String
Represents the time at which the team was created
email_verified : Boolean
Represents whether the team email address is verified or not
name : String
Name of the team
updated_by : Json Object
Represents the details of the user who has updated the team
id : String
Unique ID of the team
created_by : Json Object
Represents the details of the user who has created the team
lead : Json Object
Represents the details of the team lead
email : String
Email address of the team
per_page : String
Represents the number of records per page
has_next_page : String
Represents whether the next page is available or not
posible value
true:Next page is available
false:Next page isn't available
count : String
Represents the total number of teams
page : String
Represents the page number
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams?id="4000000062001"&search_term="Dev"&page="1"&per_page="10"&last_modified_time="2023-11-30T05:59:21.188Z"&sort_by="desc(name)"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""id"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
uriBuilder.addParameter(""sort_by"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve teams from a project.
OAuth Scope:
ZohoProjects.teams.READ
Query Parameter
long
Enter the team ID.
String
Enter the team name
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the last modification time.
String
Enter the sort order. Accepted values: ASC
,DESC
.
created_time : String
Represents the time at which the team was created
email_verified : Boolean
Represents whether the team email address is verified or not
name : String
Name of the team
updated_by : Json Object
Represents the details of the user who has updated the team
id : String
Unique ID of the team
created_by : Json Object
Represents the details of the user who has created the team
lead : Json Object
Represents the details of the team lead
email : String
Email address of the team
per_page : String
Represents the number of records per page
has_next_page : String
Represents whether the next page is available or not
posible value
true:Next page is available
false:Next page isn't available
count : String
Represents the total number of teams
page : String
Represents the page number
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/teams?id="4000000062001"&search_term="Dev"&page="1"&per_page="10"&last_modified_time="2023-11-30T05:59:21.188Z"&sort_by="desc(name)"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/teams");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""id"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
uriBuilder.addParameter(""sort_by"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve users from Teams
OAuth Scope:
ZohoProjects.teams.READ
Query Parameter
JSONArray
Enter the team IDs.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the last modification time.
name : String
Name of the team
associated_teams : Json Array
Represents the team IDs to which the user is associated
per_page : String
Represents the number of records per page
has_next_page : String
Represents whether the next page is available or not
posible value
true:Next page is available
false:Next page isn't available
count : String
Represents the total number of teams
page : String
Represents the page number
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/users?team_ids="[4000000062001,4000000015029]"&page="1"&per_page="10"&last_modified_time="2023-11-30T05:59:21.188Z"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/users");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""team_ids"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve projects associated with multiple teams.
OAuth Scope:
ZohoProjects.teams.READ
Query Parameter
JSONArray
Enter the team IDs.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the last modification time.
per_page : String
Represents the number of records per page
has_next_page : String
Represents whether the next page is available or not
posible value
true:Next page is available
false:Next page isn't available
count : String
Represents the total number of teams
page : String
Represents the page number
name : String
Name of the team
id : String
Unique ID of the team
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/projects?team_ids="[4000000062001,4000000015029]"&page="1"&per_page="10"&last_modified_time="2023-11-30T05:59:21.188Z"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/projects");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""team_ids"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""last_modified_time"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Create a new team in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.teams.CREATE
Parameter
String
requiredmax length : 50
Enter the name of the team.
long
requiredEnter the ID of the team lead.
String
max length : 100Enter the team's email address.
boolean
Specify whether to notify the users.
Accepted values:true
,false
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Development Team", "project_ids" : { "add" : "[4000000005103, 4000000005133]" }, "user_ids" : { "add" : "[4000000005103, 4000000005133]" }, "lead" : "4000000005103", "email" : "devs-team@zylker.com", "notify" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Development Team\",\"project_ids\":{\"add\":\"[4000000005103, 4000000005133]\"},\"user_ids\":{\"add\":\"[4000000005103, 4000000005133]\"},\"lead\":\"4000000005103\",\"email\":\"devs-team@zylker.com\",\"notify\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
INVALID_PARAMETER_VALUE HTTP 400
FORBIDDEN HTTP 403
Modify the details of an existing team in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.teams.UPDATE
Parameter
String
max length : 50Enter the name of the team.
long
Enter the ID of the team lead.
String
max length : 100Enter the team's email address.
boolean
Specify whether to notify the users.
Accepted values:true
,false
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/[TEAMID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "Development Team", "project_ids" : { "add" : "[4000000005103, 4000000005133]", "remove" : "[4000000014077, 4000000008020]" }, "user_ids" : { "add" : "[4000000005103, 4000000005133]", "remove" : "[4000000014077, 4000000008020]" }, "lead" : "4000000005103", "email" : "devs-team@zylker.com", "notify" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/[TEAMID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"Development Team\",\"project_ids\":{\"add\":\"[4000000005103, 4000000005133]\",\"remove\":\"[4000000014077, 4000000008020]\"},\"user_ids\":{\"add\":\"[4000000005103, 4000000005133]\",\"remove\":\"[4000000014077, 4000000008020]\"},\"lead\":\"4000000005103\",\"email\":\"devs-team@zylker.com\",\"notify\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Possible Errors
INVALID_PARAMETER_VALUE HTTP 400
Remove a team from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.teams.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/[TEAMID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/teams/[TEAMID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Add an existing team to a project.
OAuth Scope:
ZohoProjects.teams.CREATE
Parameter
JSONArray
Enter the team IDs to add.
boolean
Specify whether to notify the users.
Accepted values:true
,false
created_time : String
Represents the time at which the team was created
email_verified : Boolean
Represents whether the team email address is verified or not
name : String
Name of the team
updated_by : Json Object
Represents the details of the user who has updated the team
id : String
Unique ID of the team
created_by : Json Object
Represents the details of the user who has created the team
lead : Json Object
Represents the details of the team lead
email : String
Email address of the team
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/associate-teams' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "team_ids" : "[4000000062001,4000000015029]", "notify" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/associate-teams");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"team_ids\":\"[4000000062001,4000000015029]\",\"notify\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove an existing team from a project.
OAuth Scope:
ZohoProjects.teams.DELETE
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/dissociate-teams/[DISSOCIATE-TEAMID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/dissociate-teams/[DISSOCIATE-TEAMID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers profile-related operations. Use this API to manage portal profiles, update profile permissions, and set default profiles for your users.
Retrieve all Profiles from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Query Parameter
String
Enter the sort order.
Accepted values: ASC or DESC.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the profile IDs.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles?sort_by="ASC(last_updated_time)"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&ids="4000000029001"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""type"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of the profile from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
Create new profiles in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.CREATE
Parameter
String
requiredEnter the profile name.
String
Enter the profile type.
Accepted values: Normal or Client.
boolean
Specify whether the profile should be marked as default.
Accepted values: true or false.
long
Enter the ID of an existing profile to clone from, if applicable.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "-", "type" : "Task", "is_primary" : "false", "clone_from" : "-" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"-\",\"type\":\"Task\",\"is_primary\":\"false\",\"clone_from\":\"-\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the details of an existing profile in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.UPDATE
Parameter
String
requiredEnter the updated profile name.
boolean
Specify whether the profile should be marked as default.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "-", "is_primary" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"-\",\"is_primary\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Set a default profile in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]/setprimary' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]/setprimary");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
INVALID_PARAMETER_VALUE HTTP 400
Remove a profile from a Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.DELETE
Parameter
long
Enter the ID of the alternate profile.
If provided, users with the profile being deleted will be migrated to this alternate profile.
If left blank, users will be migrated to the default profile.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]?alternate_profile="4000000002858"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/profiles/[PROFILEID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""alternate_profile"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers role-related operations within Zoho Projects. Use this API to create, update, delete, and assign default roles to users.
Retrieves all roles from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Query Parameter
String
Enter the sort order.
Accepted values: ASC or DESC.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
String
Enter the role IDs.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles?sort_by="ASC(last_updated_time)"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]&ids="4000000029001"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""sort_by"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""type"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the details of a role from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Create a new role in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.CREATE
Parameter
String
requiredEnter the role name.
int
Enter the sequence number for the role.
boolean
Specify whether the role is default.
Accepted values: True or False.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "-", "sequence" : "5", "is_primary" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"-\",\"sequence\":\"5\",\"is_primary\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the existing role in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.UPDATE
Parameter
String
requiredEnter the role name.
int
Enter the sequence number for the role.
boolean
Specify whether the role is default.
Accepted values: True or False.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "-", "sequence" : "5", "is_primary" : "false" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"-\",\"sequence\":\"5\",\"is_primary\":\"false\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Set the default role in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]/setprimary' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]/setprimary");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Remove a role from a Zoho Projects portal.
OAuth Scope:
ZohoProjects.portals.DELETE
Parameter
long
Enter the ID of the alternate role.
If provided, users with the role being deleted will be migrated to this alternate role.
If left blank, users will be migrated to the default role.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]?alternate_role="4000000002417"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/roles/[ROLEID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""alternate_role"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers client related operations within Zoho Projects. Use this API to manage client details, associate clients with projects, and update client information.
Retrieve client details from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
String
Enter the client company IDs.
String
Enter the sort order.
Accepted values: ASC or DESC.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients?ids="4000000029001"&sort="alphabetical:asc"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve client companies and client users from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
int
Enter the view type.
Accepted values: 0 (Inactive), 1 (Active).
String
Enter the sort criteria.
Accepted values: ASC or DESC.
int
Enter the page number.
int
Enter the number of entries to display per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/users?view_type="date"&sort="alphabetical:asc"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/users");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve all projects associated with a client from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
String
Enter the project status. Accepted values : active
, template
, archived
String
Enter the search term.
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]/projects?status=-&search_term="ZohoProjects"&page="1"&per_page="10"&' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]/projects");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""status"", "");
uriBuilder.addParameter(""search_term"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""show_all"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify client company details in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.UPDATE
Parameter
String
max length : 100Enter the client company name.
String
max length : 50Enter the web address.
String
max length : 100Enter address line 1.
String
max length : 100Enter address line 2.
String
max length : 50Enter the city.
String
Enter the state.
String
Enter the country.
String
max length : 20Enter the ZIP Code.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "zas", "webaddress" : "https://zas.com", "address_first" : "chennai", "address_second" : "che", "city" : "chennai", "state" : "-", "country" : "-", "zipcode" : "600002" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"zas\",\"webaddress\":\"https:\/\/zas.com\",\"address_first\":\"chennai\",\"address_second\":\"che\",\"city\":\"chennai\",\"state\":\"-\",\"country\":\"-\",\"zipcode\":\"600002\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Add clients to the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.CREATE
Parameter
String
max length : 200Enter the client company name.
String
max length : 50Enter the web address of the client company.
String
max length : 100Enter the address.
String
max length : 100Enter the address.
String
max length : 50Enter the city name.
String
max length : 50Enter the state name.
String
max length : 50Enter the country name.
String
max length : 20Enter the zip code.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "name" : "zas", "webaddress" : "https://zas.com", "address_first" : "chennai", "address_second" : "che", "city" : "chennai", "state" : "-", "country" : "-", "zipcode" : "600002" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"name\":\"zas\",\"webaddress\":\"https:\/\/zas.com\",\"address_first\":\"chennai\",\"address_second\":\"che\",\"city\":\"chennai\",\"state\":\"-\",\"country\":\"-\",\"zipcode\":\"600002\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a client user from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.DELETE
Parameter
boolean
Specify whether to notify the user.
Accepted values: True
or False
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/users/[ZPUID | EMAILID]?notify="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove the client company from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.DELETE
Parameter
boolean
Specify whether to notify the user.
Accepted values: True
or False
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]?notify="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the projects associated with client company in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.UPDATE
Parameter
boolean
Specify whether to select all projects.
Accepted values: true or false.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]/projects' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "select_all" : "-", "selected" : { "group_ids" : "-", "project_ids" : "-" }, "unselected" : { "group_ids" : "-", "project_ids" : "-" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/clients/[CLIENTID]/projects");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"select_all\":\"-\",\"selected\":{\"group_ids\":\"-\",\"project_ids\":\"-\"},\"unselected\":{\"group_ids\":\"-\",\"project_ids\":\"-\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
INVALID_PARAMETER_VALUE HTTP 400
Add clients to a project.
OAuth Scope:
ZohoProjects.clients.CREATE
Parameter
long
requiredEnter the client IDs
boolean
Specify whether the client is a primary client.
Accepted values: True
or False
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/associate-client' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'id = "4000000062001"' --form 'is_primary_client = "false"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/associate-client");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""id"", "");
uriBuilder.addParameter(""is_primary_client"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve details of client companies associated with a project.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
String
Enter client company IDs.
String
Enter the sort order.
E.g. alphabetical:desc
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients?ids="4000000029001"&sort="alphabetical:asc"&page="1"&per_page="10"&"filter"=[{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1AND2"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""ids"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
uriBuilder.addParameter(""filter"", "{"criteria":[{"cfid":"2","api_name":"-","field_name":"-","criteria_condition":"contains","value":"[1752587000000097269]","relative_columns":[{"cfid":"2","offset":"-","unit":"-","prior":"-"}]}],"pattern":"1 AND 2"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve client companies and client users associated with a project.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
int
Enter the view type.
Accepted values: 0 (Inactive), 1 (Active).
String
Enter the sort criteria.
E.g. last_accessed_time:desc
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/users?view_type="date"&sort="alphabetical:asc"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/users");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""view_type"", "");
uriBuilder.addParameter(""sort"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve CRM accounts associated with a project.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/accounts?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/accounts");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve CRM deals associated with a project in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/deals?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/deals");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve CRM contacts associated with a project.
OAuth Scope:
ZohoProjects.clients.READ
Query Parameter
int
Enter the page number.
int
Enter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/contacts?page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/crm/contacts");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Update the primary client of a project.
OAuth Scope:
ZohoProjects.clients.UPDATE
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/primary-client/[PRIMARY-CLIENTID]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/primary-client/[PRIMARY-CLIENTID]");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
Remove a client user from the project.
OAuth Scope:
ZohoProjects.clients.DELETE
Parameter
boolean
Specify whether to notify the user.
Accepted values: True
or False
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/users/[ZPUID | EMAILID]?notify="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/users/[ZPUID | EMAILID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove a client company from the project.
OAuth Scope:
ZohoProjects.clients.DELETE
Parameter
boolean
Specify whether to notify the user.
Accepted values: True
or False
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/[CLIENTID]?notify="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/projects/"1752587000000097024"/clients/[CLIENTID]");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
uriBuilder.addParameter(""notify"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers operations related to the configuration and customization of modules within Zoho Projects. Use this API to manage layouts, sections, fields, and options for various modules.
Retrieve information of all fields from a module.
OAuth Scope:
ZohoProjects.custom_fields.READ
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/module/[MODULEID]/fields' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/module/[MODULEID]/fields");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Response
This module covers operations related to managing modules within Zoho Projects. Use this API to retrieve lists of modules and their configuration details.
Retrieve a list of modules from the Zoho Projects portal
OAuth Scope:
ZohoProjects.custom_fields.READ
Query Parameter
int
Enter the index of the record
int
Enter the range of the record
int
requiredEnter the page number.
int
requiredEnter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/modules?"filter"=[{"is_customized":"-","is_default":"-","is_web_tab":"-"}]&index="1"&range="100"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/modules");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""filter"", "{"is_customized":"-","is_default":"-","is_web_tab":"-"}");
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers operations related to the management of fields within Zoho Projects modules. Use this API to retrieve field details, create or update fields, delete fields, and associate fields with layouts.
Retrieve information of all fields from a module
OAuth Scope:
ZohoProjects.custom_fields.READ
Query Parameter
String
requiredEnter the module name or ID
JSONObject
Filter the fields based on layout or project or field names or field ids
int
Enter the index of the fields
int
Enter the range of the fields
int
requiredEnter the page number.
int
requiredEnter the number of entries to be displayed per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/fields?module="Projects"&"filter"=[{"is_mandatory":"-","is_renamed":"-","is_default":"-","is_unassociated":"-","is_association_info_needed":"-","layout_id":"4000003211234","project_id":"4009238123434","field_ids":"-","fields":"-"}]&index="1"&range="100"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/settings/fields");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""module"", "");
uriBuilder.addParameter(""filter"", "{"is_mandatory":"-","is_renamed":"-","is_default":"-","is_unassociated":"-","is_association_info_needed":"-","layout_id":"4000003211234","project_id":"4009238123434","field_ids":"-","fields":"-"}");
uriBuilder.addParameter(""index"", "");
uriBuilder.addParameter(""range"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
This module covers task automation related operations within Zoho Projects. Use this API to configure and manage automation features such as Blueprints, Custom Functions, Webhooks, Workflow Rules, Email Templates, Email Alerts, and Macro Rules.
This module covers blueprint related operations within Zoho Projects. Use this API to create, update, delete, or retrieve blueprints, manage graph data, save drafts, and execute transitions for task automation.
Retrieve details of all blueprints from the Zoho Projects portal.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
String
requiredEnter the module name. Accepted value: Task
int
Enter the page number.
int
Enter the number of entries to display per page.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprints?module_name="Task"&page="1"&per_page="10"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprints");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""module_name"", "");
uriBuilder.addParameter(""page"", "");
uriBuilder.addParameter(""per_page"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve actions that are set to execute after transition.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
long
requiredEnter the entity ID.
String
requiredEnter the module name. Accepted value: Task
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/next-transitions?entity_id="11000000000371"&module_name="Task"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/next-transitions");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""entity_id"", "");
uriBuilder.addParameter(""module_name"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Retrieve data of the action that is set to execute during the transition.
OAuth Scope:
ZohoProjects.tasks.READ
Query Parameter
long
requiredEnter the entity ID.
boolean
Specify whether to skip bug validation.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/[BLUEPRINTID]/transition/[TRANSITIONID]/during-actions?entity_id="11000000000371"&skip_bug_validation="true"' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/[BLUEPRINTID]/transition/[TRANSITIONID]/during-actions");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""entity_id"", "");
uriBuilder.addParameter(""skip_bug_validation"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Execute transition in a blueprint.
OAuth Scope:
ZohoProjects.tasks.READ
Parameter
long
requiredEnter the entity ID.
boolean
Specify whether to skip bug validation.
JSONArray
array size : 0-200Enter the field values to update during the transition.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/[BLUEPRINTID]/transition/[TRANSITIONID]/execute' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "entity_id" : "11000000000371", "skip_bug_validation" : "true", "field_values" : [ { "id" : "11000000000371", "value" : [ 1752587000000097269 ], "is_days" : "true", "attachment_ids" : [ "12345678987654321" ] } ] }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/blueprint/[BLUEPRINTID]/transition/[TRANSITIONID]/execute");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"entity_id\":\"11000000000371\",\"skip_bug_validation\":\"true\",\"field_values\":[{\"id\":\"11000000000371\",\"value\":[1752587000000097269],\"is_days\":\"true\",\"attachment_ids\":[\"12345678987654321\"]}]}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Possible Errors
INVALID_PARAMETER_VALUE HTTP 400
This module covers custom function related operations within Zoho Projects. Use this API to create, update, delete, or retrieve custom functions, manage gallery functions, execute custom functions, and enable or disable REST API for functions.
Execute a custom function in the Zoho Projects portal.
OAuth Scope:
ZohoProjects.custom_functions.custom
Parameter
String
limit : 25Enter additional parameters and values.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/customfunction/"1752587000000097260"/execute' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' --form 'Custom Parameter = " custom values"'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/automation/customfunction/"1752587000000097260"/execute");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
uriBuilder.addParameter(""entity_id"", "");
uriBuilder.addParameter(""project_id"", "");
uriBuilder.addParameter(""module_name"", "");
uriBuilder.addParameter(""Custom Parameter"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Possible Errors
RESOURCE_NOT_FOUND HTTP 404
INVALID_PARAMETER_VALUE HTTP 400
This module covers setup-related operations within Zoho Projects. Use this API to manage task dependency settings, update user preferences for email notifications, and adjust portal user properties.
This module covers marketplace related operations within Zoho Projects. Use this API to retrieve extension details, update notification statuses, and manage running or available extensions.
Store all the entity or app properties of the extension.
OAuth Scope:
ZohoProjects.extensions.CREATE
Parameter
String
requiredmax length : 255
Enter the property key.
String
requiredmax length : 2000
Enter the value to store.
String
requiredEnter the extension type. Accepted values: entity or app.
int
Enter the number of occurrences.
Request Example
curl -X POST 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "key" : "all", "value" : "[1752587000000097269]", "type" : "Task", "entity" : { "id" : "4000000062001", "type" : "Task", "project_id" : "23806000097545166" }, "count" : "20" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage");
HttpUriRequest requestObj = new HttpPost(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"key\":\"all\",\"value\":\"[1752587000000097269]\",\"type\":\"Task\",\"entity\":{\"id\":\"4000000062001\",\"type\":\"Task\",\"project_id\":\"23806000097545166\"},\"count\":\"20\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve all entity or app properties from an extension.
OAuth Scope:
ZohoProjects.extensions.READ
Query Parameter
String
requiredEnter the property key.
String
requiredEnter the property type. Accepted values: entity or app.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage?key="all"&type="Task"&"entity"=[{"id":"4000000062001","type":"Task","project_id":"23806000097545166"}]' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""key"", "");
uriBuilder.addParameter(""type"", "");
uriBuilder.addParameter(""entity"", "{"id":"4000000062001","type":"Task","project_id":"23806000097545166"}");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Modify the entity or app property in an extension.
OAuth Scope:
ZohoProjects.extensions.UPDATE
Parameter
long
requiredEnter the property ID.
String
requiredmax length : 2000
Enter the new value.
String
requiredEnter the property type. Accepted values: entity or app.
int
Enter the number of occurrences.
Request Example
curl -X PATCH 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "id" : "4000000062001", "value" : "[1752587000000097269]", "type" : "Task", "entity" : { "id" : "4000000062001", "type" : "Task", "project_id" : "23806000097545166" }, "count" : "20" }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage");
HttpUriRequest requestObj = new HttpPatch(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"id\":\"4000000062001\",\"value\":\"[1752587000000097269]\",\"type\":\"Task\",\"entity\":{\"id\":\"4000000062001\",\"type\":\"Task\",\"project_id\":\"23806000097545166\"},\"count\":\"20\"}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Remove the entity or app property from the extension.
OAuth Scope:
ZohoProjects.extensions.DELETE
Parameter
long
requiredEnter the property ID.
String
requiredEnter the property type. Accepted values: entity or app.
Request Example
curl -X DELETE 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa' -H 'Content-Type: application/json' -d '{ "id" : "4000000062001", "type" : "Task", "entity" : { "id" : "4000000062001", "type" : "Task", "project_id" : "23806000097545166" } }'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/storage");
HttpUriRequest requestObj = new HttpDelete(uriBuilder.build());
HttpEntityEnclosingRequestBase requestBase = (HttpEntityEnclosingRequestBase) requestObj;
String requestBody = "{\"id\":\"4000000062001\",\"type\":\"Task\",\"entity\":{\"id\":\"4000000062001\",\"type\":\"Task\",\"project_id\":\"23806000097545166\"}}";
requestBase.setEntity(new StringEntity(requestBody, HTTP.UTF_8));
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
Retrieve the configuration of the extension.
OAuth Scope:
ZohoProjects.extensions.READ
Query Parameter
String
Specify the configuration level. Accepted values: user or organization.
Request Example
curl -X GET 'https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/config?authorize_level=-' -H 'Authorization : Zoho-oauthtoken 1000.03xxxxxxxxxxxxxxxxxa5317.dxxxxxxxxxxxxxxxxxfa'
HttpClientBuilder httpClientBuilder = HttpClientBuilder.create();
SSLContext sslContext = SSLContext.getDefault();
SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
CloseableHttpClient httpclient = httpClientBuilder.setSSLSocketFactory(sslConnectionSocketFactory).build();
URIBuilder uriBuilder = new URIBuilder("https://projectsapi.zoho.com/api/v3/portal/"739121528"/extensions/[EXTENSIONID]/config");
HttpUriRequest requestObj = new HttpGet(uriBuilder.build());
uriBuilder.addParameter(""authorize_level"", "");
requestObj.addHeader("Authorization", "Zoho-oauthtoken 1000.xxxxxxx.xxxxxxx");
HttpResponse response = httpclient.execute(requestObj);
HttpEntity responseEntity = response.getEntity();
Object responseObject = EntityUtils.toString(responseEntity);
String responseString = responseObject.toString();
Sample Input
Sample Response
JSONArray
max length : 10000array size : >=0
Criteria information for filtering.