Project, Task, Worklog V3 API Old Format vs New Format

The V3 API format for Project, Task, and Worklog has been revised. 
To consume the latest format of the API, update the value for Accept key under Headers as shown below:
 

Accept Header: application/vnd.manageengine.sdp.v3+json



For an easier transition, we have the below document which captures the differences between V3 API Old and V3 API New format. 

Differences are listed entity wise

Projects

Under Projects the major differences are in the following areas:

Field Names

OLD

NEW

Difference

project_code

code

The redundant word "project" is removed. 

 

project_type

type

requested_by

requester

Names updated for correctness

projected_on

projected_end_time

-

attachments

The new version supports attachments to entities. 
 


Field Restrictions

OLD

NEW

Difference

template

template

In the NEW format, if the template is provided, then it is not mandatory to provide Title and Status.

title

title

In the NEW format, the Title is not needed if the template is provided. 

status

status

In the NEW format, Status is not mandatory. The default Status 'Open' will be applied if no value is given. 


Difference in Response

OLD

NEW

Difference

description

description

 

In the NEW format, by default, it will be listed in the response.

project_type

type

-

template

-

attachments


Milestone

Under Milestone the major differences are in the following areas:

Field Name

OLD

NEW

Difference

projected_on

projected_end_time

Name updated for correctness

-

attachments

The new version supports attachments to entities

 

Field Restrictions

OLD

NEW

Difference

status

status

In the NEW format, Status is not mandatory. The default Status 'Open' will be applied if no value is given. 

project/projects
(editable)

project (read-only)

In the NEW format, the parent JSON is not allowed to be provided in the input data, but it is mandatory to add in the URL.


Overall Difference in the Response

OLD

NEW

Difference

Default fields in the response:

 

1. owner

2. project

3. id

4. title

5. status

 

By default, all the fields will be listed.

In the OLD format,  the rest of the fields need to be provided in the fields_required to be viewed in the response.

 

URL Difference

The primary difference in the URL is shown below

OLD

NEW

Difference

/api/v3/milestones/{id}

/api/v3/projects/{id}/milestones/{id}

In the NEW format, the direct milestone URL will not work. The project ID needs to be included as well.

 

New Operations

Operation

NEW API URL

Input

assign

/api/v3/projects/{id}/milestones/{id}/assign

"owner": {

            "id": 4

        }

 

Member

Under the entity Member, the differences are in the following areas

Field Name

OLD

NEW

Difference

project_role

role

Name changed

projects

project

Parent entity name changed to singular

active_status

is_active

Name changed

 

Field Restrictions

OLD

NEW

Difference

projects (editable)

project (read-only)

In the NEW format, the parent JSON is not allowed in input data, but it is mandatory to be provided in the URL.

 

URL Difference

OLD

NEW

Difference

api/v3/projects/{id}/project_members/

/api/v3/projects/{id}/members

Entity name changed "members"

api/v3/project_members

-

In the NEW format, the direct project member URL is not supported.

/api/v3/project_members/{member_id}

-

In the NEW format, the individual project member get operation is not supported.

 

Tasks

The major difference in the Tasks entity is in the below-mentioned areas. 
 

Field Name

OLD

NEW

Difference

estimated_effort_hours

estimated_effort: {

            hours: 0,

            minutes: 0,

            days: 0

        }

The format is changed as in the NEW format the input is required as a JSON object.
 

estimated_effort_minutes

estimated_effort_days

created_date

created_time

 Name updated for correctness.

task_type

type

Name updated for correctness.

 

Removed Field

OLD

NEW

Difference

comment

-

In the NEW format, the provision to add a comment along with the task is not supported.

 

Newly Added Fields

OLD

NEW

Difference

-

template

In the NEW format, the option to add tasks from the template is included.

-

index (read-only)

In the NEW format, the index field (Order) is included to display the order of the task which is under request/change/problem and milestone.

-

due_by_time(read-only)

In the NEW format, this field will have the same value as that of the scheduled_end_time.

-

attachments

In the NEW format, the option to add attachments along with the task. All attachments will be displayed in the response. 

 

 

Field Behavior Change

OLD

NEW

Difference

group

group

In the NEW format, these fields will be displayed for tasks under request/problem/change modules.

marked_group

marked_group

Format Difference

OLD Input / Output

NEW Input/Output

Difference

"estimated_effort_hours": 2,

"estimated_effort_days": 2,

"estimated_effort_minutes": 2

"estimated_effort": {

            "hours": "2",

            "minutes": "2",

            "days": "2"

        }

estimated_effort

The format for the estimated effort is changed as the input is to be given as a JSON object in the NEW format.

 

"estimated_effort_hours": "2 Hrs",

"estimated_effort_minutes": "2 Mins",

"estimated_effort_days": "2 Days "

"estimated_effort": {

"display_value": "2 Days 2 Hrs 2 Mins",

"hours": "2",

"minutes": "2",

"days": "2"

}

-

"template": {

        "id": "11"

    }

template

 

 

Newly added field. Requires input as a JSON Object.

 

"template": {

            "id": "11",

            "name": "test"

     }

 

-

-

index

 

New read-only field, -1 for project and general. Positive increments for the rest of the modules. 

 

"index": "-1" 

---------------------------

"index": "3"

 

-

"attachments": [

            {

                "id": 53

            }

        ]

attachments

 

In the NEW format, attachments can be added along with the task addition and all the attachments will be displayed in the response.

 

"attachments": [

        {

            "content_type": "image/png",

            "size": {

                "display_value": "170.88KB",

                "value": 174990

            },

            "module": "task",

            "name": "filename.png",

            "content_url": "/api/v3/requests/101/tasks/5564/attachments/53/download",

            "id": "53"

        }

    ]

 

 

Field Restriction

OLD

NEW

Difference

request (editable)

 

request(read-only)

 

 

 

In the NEW format, the parent JSON is not allowed to be provided in the input data, but it is mandatory to be included in the URL.

 

 

 

problem (editable)

problem(read-only)

change(editable)

change (read-only)

project (editable)

project (read-only)

 

URL Difference

OLD

NEW

Difference

 

/api/v3/tasks

 

/api/v3/tasks

In the NEW format, the direct task URL is to access only the general task (To access other module tasks, the parent module and its ID need to be mentioned in the URL)

 

New Operations

Operation

NEW API URL

Input

assign 
and
Bulk assign is also supported

(operation: put)

/api/v3/requests/{id}/tasks/{id}/assign

{

    "task": {

        "owner": {

            "id": 6

        },

        "group": {

            "id": 1

        }

    }

}

mark

and
Bulk mark is also supported

(operation: put)

/api/v3/requests/{id}/tasks/{id}/mark

{

    "task": {

        "marked_owner": {

            "id": 6

        },

        "marked_group": {

            "id": 1

        }

    }

}

trigger

(operation: put)

/api/v3/requests/{id}/tasks/{id}/trigger

-

close

(operation: put)

/api/v3/requests/{id}/tasks/{id}/close

-

/api/v3/requests/{id}/tasks/organize?ids={id},{id}

-

 

Major Difference: To access a task that has the parent entity, the respective parent module name and it's ID need to be provided in the URL.

Worklog 


Differences are in the following areas

Field Name

OLD

NEW

Difference

technician

owner

Name changed for correctness

inc_nonOperationalHours

include_nonoperational_hours

Name changed for correctness

total_time_spent

time_spent: {

      hours: 00,

      minutes: 00

    }

Name changed for correctness. Input is required as a JSON object. 

add_time_linked_requests

add_time_for_linked_requests

Name changed for correctness

worklog_type

type

Name changed for correctness

tech_charge

owner_cost

Name changed for correctness as not only technicians but also requesters can have worklog entries in case of project tasks.

other_charge

other_cost

Name changed

total_charge

total_cost

 

Field Restriction

OLD

NEW

Difference

request (editable)

 

request(read-only)

 

 

 

 

 

 

In the NEW format, the parent JSON is not allowed to be included in the input data, but it is mandatory to be provided in the URL.

problem (editable)

problem(read-only)

change(editable)

change (read-only)

task (editable)

task (read-only)

 

Newly Included Field:

NEW

Difference

udf_fields

In the NEW format, udf_fields are supported.

 

URL Difference:

OLD

NEW

Difference

/api/v3/worklog

-

In the NEW format, the direct worklog URL is not supported.

/api/v3/worklog_timetaken

/api/v3/{parent}/{id}/worklogs/get_time_spent

In the NEW format, the direct URL is not supported. 

 

 

Major Difference

The OLD format will continue to work without any issues, as the OLD and NEW APIs are using different URLs for Worklog API.

To access the worklog which has the parent entity, the respective parent module's name and its ID need to be provided (in case if it has the grand/g-grandparent, the IDs need to be provided for them too in the URL).

New Bulk Operations

The following bulk operations are added for Project, Milestone, Member, Task, and Worklog entities
 

Operation

URL

Input

 

 

bulk add

 

 

/api/v3/<module_name>

{

    "<module_name>": [

        {

            "title": "bulk add1"

        },

        {

            "title": "bulk add2"

        }

    ]

}

bulk edit

/api/v3/<module_name>?ids={id},{id}

{

    "<module_name>": [

        {

            "title": "bulk edit2"

        },

        {

            "title": "bulk edit2"

        }

    ]

}

bulk delete

/api/v3/<module_name>?ids={id},{id}

-

 

  If it's a child module like task/worklog, then the parent module and its ID need to be mentioned in the URL. (/api/v3/<parent_name>/<parent_id>/<module_name>)

 

Project and Worklog UDF PickList format change

OLD

NEW

Difference

"udf_fields": {

        "udf_pick_301": "option1"

}
{
    "udf_fields": {
        "udf_pick_301": {
            "id": 1,
            "name": "option1"
        }
    }
}

UDF picklist has been changed from string to ID based. In the NEW format, the picklist value needs to be provided as a JSON Object.