CubeDrive  ->   API

With these REST APIs, users or other systems can fully manipulate the CRM data inside CubeDrive. Before calling these APIs, please ensure you first retrieve an Token to process your requests.

List of APIs


Get CRM Categories


A CRM task category is used to classify and organize activities within a CRM system. These categories help sales teams, account managers, and support staff track the progress of opportunities, follow-ups, and customer interactions by grouping tasks under meaningful labels.

CubeDrive allows users to create dynamic categories such as New Lead, Introductory Call, Proposal Stage, and more. Before creating a new lead, you must retrieve one of these categories to proceed.

{{baseuri}}/taskCategory/listByType

HTTP Method: GET

Parameters:

Parameter Explanation:

Example: https://app.pvgus.com/shift/taskCategory/listByType?componentId=7330305976010018816&type=application

Response Result:

{
    "success": true,
    "archivedCategories": [],
    "categories": [
        {
            "id": 12,
            "name": "New/ Lead Cropping ",
            "color": "todo",
            "authorId": 2,
            "weight": 100,
            "componentId": "7330305976010018816",
            "categoryType": "application",
            "active": true,
            "settings": {
                "collapse": false
            },
            "createdAt": 1747681159000
        },
        {
            "id": 13,
            "name": "Warm Leads",
            "color": "todo",
            "authorId": 2,
            "weight": 101,
            "componentId": "7330305976010018816",
            "categoryType": "application",
            "active": true,
            "settings": {
                "collapse": false
            },
            "createdAt": 1747681192000
        },
        {
            "id": 14,
            "name": "Intro call",
            "color": "review",
            "authorId": 2,
            "weight": 102,
            "componentId": "7330305976010018816",
            "categoryType": "application",
            "active": true,
            "settings": {
                "collapse": false
            },
            "createdAt": 1747681204000
        },
        {
            "id": 15,
            "name": "Discovery call",
            "color": "review",
            "authorId": 2,
            "weight": 103,
            "componentId": "7330305976010018816",
            "categoryType": "application",
            "active": true,
            "settings": {
                "collapse": false
            },
            "createdAt": 1747681219000
        },
        {
            "id": 16,
            "name": "Proposal Stage",
            "color": "waiting",
            "authorId": 2,
            "weight": 104,
            "componentId": "7330305976010018816",
            "categoryType": "application",
            "active": true,
            "settings": {
                "collapse": false
            },
            "createdAt": 1747681238000
        }
    ]
}
Tip: The {{category_id}} is obtained from the JSON result above, specifically from categories[i].id.

List tasks by category



{{baseuri}}/formDataApi/10100000/paginate

HTTP Method: POST

Request Payload (JSON):

{
	rowsHandler: "OrganizationTaskRowsHandler.toTasks",
	start: 0,
	limit: 50,
	sorts: {data.rank: -1, updatedAt: -1},
	filters: {
	    data.projectAssemblyId: "{{application_component_id}}", 
	    data.projectAssemblyDataId: "application",
	    data.related: "app",
	    data.categoryId: {{category_id}},
	    data.status: {$in: ["todo", "inProgress", "expired", "done"]}
	}
}

Dynamic Variables:

Response Result:

{
	rows: [ 
		{id: "7333217641055653888", title: "VAMS", color: "cyan" ...}, 
		{id: "7333218024742195200", title: "TruVue", color: "green" ...},
		{id: "7333212255581900800", title: "Terzo", color: "blue"...},
		{id: "7333211934373711872", title: "SHIFT", color: "geekblue"...},
		{id: "7330308249167597568", title: "Krista", color: "purple"...},
		{id: "7330309028297314304", title: "Jitterbit (Vinyl)", color: "gold"...},
		{id: "7330308832381374464", title: "Intesa AI", color: "cyan"...}
	]
	success: true
	total: 7
}

This is another example to extracts specific user tasks.

{
	rowsHandler: "OrganizationTaskRowsHandler.toTasks",
	start: 0,
	limit: 50,
	sorts: {data.rank: -1, updatedAt: -1},
	filters: {
	    data.assignedUsers.userId: "$userId:{{user_Encypted_Id}}",
	    data.projectAssemblyId: "{{application_component_id}}", 
	    data.projectAssemblyDataId: "application",
	    data.related: "app",
	    data.categoryId: {{category_id}},
	    data.status: {$in: ["todo", "inProgress", "expired", "done"]}
	}
}

Dynamic Variables:

Tip: {{task_id}} is the value obtained from above json result: rows[i].id. When you want to edit the task, please pass the {{task_id}}.

Create a new lead


This API allows you to create a lead in the CubeDrive CRM system. To create a lead, send a POST request to {{baseuri}}/formDataApi/10100000/upsert with a JSON payload that includes all relevant lead details under the item.data object. You can also specify actions to trigger automatic reminders or send emails once the lead is created.

{{baseuri}}/formDataApi/10100000/upsert

http method: POST

Request Payload (JSON):

{
   actions: [
      "OrganizationTaskActionHandler.addRemind", 
      "OrganizationTaskActionHandler.sendEmailAtUserOnDesc"
   ],
   item: {
      data: {      
		address: "70 Springland Dr.",
		attachments: [],
		authorId: "$userId:{{author_Encypted_Id}}",
		categoryId: {{category_id}},
		city: "Ottawa",
		contact: "John Doe",
		country: "Canada",
		createdAt: "2025-06-29T11:31:36.061Z",
		customer: "EDC manpower Inc.",
		desc: "This is description for the lead",
		dueDate: "$iso8601:2025-06-29T11:31:36.061Z",
		email: "johnDoe@cubedrive.com",
		estimateDays: "2",
		expectedRevenue: "2500",
		linkedin: "https://www.linkedin.com/in/teten",
		mrr: "500",
		name: "Lead title",
		organizationId: "",
		period: "1",
		periodRevenue: "500",
		phone: "6131283776",
		position: "CEO",
		postCode: "K2G5T0",
		priority: "6000",
		probablity: 75,
		projectAssemblyDataId: "application",
		projectAssemblyId: "{{application_component_id}}",
		related: "app",
		remind Date: null,
		state: "Ontario",
		status: "todo",
		tags: [],
		url: ""
      }
   }
}

The table below details each of the parameters you can include in your request. Key fields include the contact’s name, company, email, estimated revenue, expected closing date, and probability of success. Ensure you populate categoryId and projectAssemblyId with valid IDs retrieved from previous API calls.

Parameter Description Example Value
addressStreet address of the lead or customer70 Springland Dr.
attachmentsList of file attachments for this lead[]
authorIdEncrypted login user ID of the author.$userId:{{author_Encypted_Id}}
categoryIdCategory identifier. This is a dynamic parameter which need to be retrieved from system.{{category_id}}
cityCity of the lead/customerOttawa
contactName of the contact personJohn Doe
countryCountry of the lead/customerCanada
createdAtRecord creation timestamp2025-06-29T11:31:36.061Z
customerCustomer or company nameEDC manpower Inc.
descDescription of the leadThis is description for the lead
dueDateDue date in ISO8601 format$iso8601:2025-06-29T11:31:36.061Z
emailEmail address of the contactjohnDoe@cubedrive.com
estimateDaysEstimated number of days to close2
expectedRevenueExpected revenue from the lead2500
linkedinLinkedIn profile URLhttps://www.linkedin.com/in/teten
mrrMonthly recurring revenue500
nameTitle of the lead or opportunityLead title
organizationIdLinked organization ID
periodBilling period in month1
periodRevenueRevenue for the period500
phonePhone number6131283776
positionJob position of the contactCEO
postCodePostal codeK2G5T0
priorityPriority indicator6000
probablityProbability of closing (%): must be 0 - 10075
projectAssemblyDataIdRelated assembly data IDapplication
projectAssemblyIdApplication component ID{{application_component_id}}
relatedRelated object typeapp
remind DateDate to trigger remindernull
stateState or provinceOntario
statusCurrent statustodo
tagsList of tags[]
urlRelated website URL(empty)

Dynamic Variables:

Response Result:

{
	dataId: "7344738314269757440",
	formId: 10100000,
	success: true
}

On success, the API returns a JSON response containing the dataId of the created or updated lead record along with a success flag.


Update lead


This API allows you to Update lead in the CubeDrive CRM system. To update a lead, send a POST request to {{baseuri}}/formDataApi/10100000/{{task_id}}/updateFields with a JSON payload that includes all relevant lead details under the item.data object. You can also specify actions to trigger automatic reminders or send emails once the lead is created.

{{baseuri}}/formDataApi/10100000/{{task_id}}/updateFields

http method: POST

Request Payload (JSON):

{
   taskId: "{{task_id}}",
   actions: [
      "OrganizationTaskActionHandler.addRemind", 
      "OrganizationTaskActionHandler.sendEmailAtUserOnDesc"
   ],
   item: {
      data: {      
		address: "70 Springland Dr.",
		attachments: [],
		authorId: "$userId:{{author_Encypted_Id}}",
		categoryId: {{category_id}},
		city: "Ottawa",
		contact: "John Doe",
		country: "Canada",
		createdAt: "2025-06-29T11:31:36.061Z",
		customer: "EDC manpower Inc.",
		desc: "This is description for the lead",
		dueDate: "$iso8601:2025-06-29T11:31:36.061Z",
		email: "johnDoe@cubedrive.com",
		estimateDays: "2",
		expectedRevenue: "2500",
		linkedin: "https://www.linkedin.com/in/teten",
		mrr: "500",
		name: "Lead title",
		organizationId: "",
		period: "1",
		periodRevenue: "500",
		phone: "6131283776",
		position: "CEO",
		postCode: "K2G5T0",
		priority: "6000",
		probablity: 75,
		projectAssemblyDataId: "application",
		projectAssemblyId: "{{application_component_id}}",
		related: "app",
		remind Date: null,
		state: "Ontario",
		status: "todo",
		tags: [],
		url: ""
      }
   }
}

Dynamic Variables:

System can also update parts of data as following

{
   taskId: "{{task_id}}",
   item: {
      data: {
         estimateDays: 23
      }
   }
}
Tip: If you want to change a task from one category to another, simply query the taskCategory/listByType API to retrieve the appropriate category ID. Then call this method to update the task with the new category.

List Organization Users


This API allows you to Get a list of users in the CubeDrive CRM system based on the organization. To get the result, send a GET request to {{baseuri}}/groupContact/listPeople.

{{baseuri}}/groupContact/listPeople

http method: GET

Parameters

groupId: {{encrypted_group_id}}

type: group

start: 0

limit: 100

Results

{
    results: [
        {contactUserId: "wWTHxLHoiU0", info: "vin@cubedrive.com", self: false, firstname: "Vin", email: "vin@cubedrive.com", name: "John/Vin", lastname: "John"},
        ...
    ],
    success: true,
    totalCount: 22
}

Dynamic Variables:

Tip: Return result includes a list of user information. And the contactUserId is the encrypted user id in the system. You can get user email and name in the list.