API 2.0
Folders & Projects

Folders & Projects

Query Projects

Retrieve a list of company projects
/projects

Parameters

Name Required Default Type/Format Description
archived no False Boolean set to true to retrieve archived/closed projects
rootOnly no False Boolean if set to true returns only root projects

Response

Sample response →
[
    {
        "id": "PROJECT-ID",
        "name": "Client Projects",
        "description": "",
        "endDate": null,
        "estimate": null,
        "moment_created": "2015-11-14T14:52:57.26943",
        "parentProjectId": "PARENT-ID",
        "priority": 5,
        "progress": null,
        "startDate": null,
        "status": "In Progress",
        "systemStatus": 2
        "statusComments": "comments",

    },
    ...
]

Get Project

Get project details
/project/PROJECT-ID

Response

Sample response →
{
    "id": "PROJECT-ID",
    "name": "Client Project",
    "description": "",
    "endDate": null,
    "estimate": null,
    "moment_created": "2015-11-14T14:52:57.26943",
    "parentProjectId": "PARENT-PROJECT-ID",
    "priority": 5,
    "progress": null,
    "startDate": null,
    "status": "In Progress",
    "statusComments": "",
    "systemStatus": 2
}

Update Project

Update project properties. All the parameters are optional and won't be updated if not passed. Set to null to reset.
/project/PROJECT-ID

Parameters

Name Required Type/Format Description
userId yes String User on behalf of whom API will execute update
name no String Project name
color no Integer Project color (1-24)
health no Integer Project health (0,1,2,null)
statusComments no String Project status comments
parentProjectId no String Move a project to a different project/folder
startDate no YYYY-MM-DD Project start date, 'null' to reset
endDate no YYYY-MM-DD Project end date, 'null' to reset
priority no Integer Project priority (1-10), 50 - Blocker, 100 - Emergency
estimate no Integer Project estimate in minutes, 'null' to reset
progress no Integer Project progress percentage (0-100) or 'null' to reset
systemStatus no Integer Pass 5 to archive, 2 to re-open
Sample CURL →
curl -X PUT 
    https://api.goodday.work/2.0/project/PROJECT-ID 
    -H "Content-Type: application/json" 
    -H "gd-api-token: AUTH-TOKEN" 
    -d '{
        "userId": "USER-ID",
        "startDate":"2023-01-15",
        "endDate":"2023-01-25",
        "progress":70
        }'

Create Folder

Create new workfolder
/projects/new-folder

Parameters

Name Required Type/Format Description
createdByUserId yes String ID of a user, a new record is created on behalf of
parentProjectId no String Pass parent project ID to create a subfolder
name yes String Folder name
color no Integer Folder color (1..24)
Sample CURL →

curl -X POST 
    https://api.goodday.work/2.0/projects/new-folder 
    -H "Content-Type: application/json" 
    -H "gd-api-token: AUTH-TOKEN" 
    -d '{
        "createdByUserId": "USER-ID",
        "name": "New Folder name",
        "parentProjectId": "PROJECT-ID"
        }'    
    

Response

Sample response →
{
    "id": "PROJECT-ID",
    "name": "Folder Name",
    "description": "",
    "endDate": null,
    "estimate": null,
    "moment_created": "2015-11-14T14:52:57.26943",
    "parentProjectId": "PARENT-PROJECT-ID",
    "priority": 5,
    "progress": null,
    "startDate": null,
    "status": "In Progress",
    "statusComments": "",
    "systemStatus": 2
}

Create Project

Create new project
/projects/new-project

Parameters

Name Required Type/Format Description
createdByUserId yes String ID of a user, a new record is created on behalf of
projectTemplateId yes String Project template (type) ID you can find in Organization settings → Project templates
parentProjectId no String Pass parent project ID to create a sub project
name yes String Project name
color no Integer Folder color (1..24)
projectOwnerUserId no String Project owner user ID
startDate no YYYY-MM-DD Project start date
endDate no YYYY-MM-DD Project end date
deadline no YYYY-MM-DD Project deadline
Sample CURL →

curl -X POST 
    https://api.goodday.work/2.0/projects/new-project 
    -H "Content-Type: application/json" 
    -H "gd-api-token: AUTH-TOKEN" 
    -d '{
        "createdByUserId": "USER-ID",
        "projectTemplateId": "TEMPLATE-ID",
        "name": "New Project name",
        "parentProjectId": "PARENT-PROJECT-ID",
        "projectOwnerUserId": "PROJECT-OWNER-USER-ID",
        "deadline": "2020-04-01"        
        }'    
    

Response

Sample response →
{
    "id": "PROJECT-ID",
    "name": "New Project Name",
    "description": "",
    "endDate": null,
    "estimate": null,
    "moment_created": "2020-03-28T14:52:57.26943",
    "parentProjectId": "PARENT-PROJECT-ID",
    "priority": 5,
    "progress": null,
    "startDate": null,
    "status": "In Progress",
    "statusComments": "",
    "systemStatus": 2
}

Query project tasks

Retrieve a list of project tasks
/project/PROJECT-ID/tasks

Parameters

Name Required Default Type/Format Description
closed no False Boolean set to true to retrieve all open and closed tasks
subfolders no False Boolean if set to true returns tasks from project it's subfolders

Response

Sample response →
[
    {
        "id": "TASK-ID",
        "shortId": "75",
        "actionRequiredUserId": USER-ID,
        "assignedToUserId": "USER-ID",
        "createdByUserId": "USER-ID",
        "customFieldsData": {},
        "deadline": null,
        "endDate": null,
        "estimate": null,
        "momentClosed": null,
        "momentCreated": "2018-09-07T19:35:32.09136",
        "name": "Sample task name",
        "parentTaskId": null,
        "priority": 5,
        "progress": null,
        "projectId": "PROJECT-ID",
        "recentActivityMoment": "2018-10-30T15:15:20.437519",
        "reportedTime": null,
        "scheduleDate": null,
        "scheduleStatus": 0,
        "startDate": null,
        "status": {
            "id": "STATUS-ID",
            "name": "New"
            },
        "systemStatus": 1,
        "systemType": 1,
        "taskType": {
            "id": "TASK-TYPE-ID",
            "name": "Task"
        },
        "users": [
            "USER-ID",
            "USER-ID"
        ]
    },
    ...
]

Query project users

Retrieve project users list
/project/PROJECT-ID/users

Response

Sample response →
[
    {
        "access": "Standard",
        "id": "USER-ID",
        "name": "Alex Kim",
        "primaryEmail": "alex@company.com",
        "watchAll": false
    },
    ...
]