Projects

Projects are created as a group of users. Because of that the word and group and the project are the same thing in the API.

Endpoints

Get Projects

GET https://cubicl.io/api/v1/groups

Query Parameters

NameTypeDescription

parent

string

Parent project id.

If not set, gets all projects in the organization.

recursive

boolean

Set false to get only direct children.

Set true to get all descendants.

Default is false.

Project[]

Data

Projects

type Project = {
    _id: string;
    name: string;
    // Projects can have multiple parents. The root project has no parents.
    parents: string[] | null;
    // Admin user ids
    admins: string[];
    // Member user ids
    members: string[];
    // Child group ids
    groups: string[];
    // Task state definitions. Exists only when states are customized. Read
    // Task States section for more info.
    taskStates?: TaskState[];
    // Permissions set in the project. Only exists when project permissions
    // are customized. Read the Permissions section for more info.
    perms?: {
        members: PermissionLevels,
        everybody: PermissionLevels,
        // An object where keys are userIds and values are permission levels object
        users?: {
            [userId: string]: PermissionLevels,
        }
    }
}

Task States

type TaskState = {
    name: string;
    type: 'waiting' | 'active' | 'completed' | 'suspended';
    color: string; // Hex color code
    textColor: string; // Hex color code
    // Shows whether this is the state tasks will be created in when the task
    // state is not specified in Create Task endpoint.
    isDefault?: boolean;
}

If task states are customized in the project, taskStates property will hold the list of task state definition objects. Otherwise, default values below are used.

[
	{
		name : 'cb_waiting',
		type : 'waiting',
		color : '#f39c12',
		textColor : '#fff',
		isDefault : true
	},
	{
		name : 'cb_active',
		type : 'active',
		color : '#2ecc71',
		textColor : '#fff'
	},
	{
		name : 'cb_completed',
		type : 'completed',
		color : '#d8d8d8',
		textColor : '#333'
	},
	{
		name : 'cb_suspended',
		type : 'suspended',
		color : '#7d5fff',
		textColor : '#fff'
	}
]

Permissions

Permissions are set and checked in 4 steps in the following order:

  1. Admins: Admins can perform all actions on the project. An admin has admin privilege in all descendant projects as well even if they are not a member of those projects.

  2. User Permissions: If permissions are customized for a user, they will be used without checking the following steps. User permissions are available under perms.users property.

  3. Project Members: General permissions are set for project members and other users. If the user is a project member, these permissions will be used without checking the following step.

  4. Non-Project Members: These permission levels are defined in the perms.everybody property.

Permission levels are set for each main feature in the project, separately.

type FeaturePermLevels = {
    // Used in Tasks, Calendar and Time Chart pages
    tasks: 'none' | 'view' | 'contribute' | 'edit' | 'manage',
    files: 'none' | 'view' | 'edit' | 'manage',
    gantt: 'none' | 'view' | 'edit',
    reports: 'none' | 'view',
}

Last updated