Monday 10 December 2018

Accessing Office 365 Project Web App Objects using REST API

This article describes accessing the objects present on the Office 365 project web app site collection using REST API.

PWA abbreviated as Project Web App, is available on Office 365, and it used for easily and efficiently planning projects, track status, and collaborate with other virtually. It is an application built on top of SharePoint, which has collaborating features. Any PWA site collection will have the project web app settings feature enabled on the site collection. To know more about PWA, refer to the official documentation available on the MSDN site.

Let us see the high level REST API (service end points), which can be used for accessing objects available on Office 365 PWA site collections.

Note: Replace the Office 365 PWA url with your respective URL.

To access the project server and list of available objects,
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer

The REST APIs used for accessing objects available on the project servers are explained below.


Custom Fields:

The enterprise custom fields are created on the project plans for managing additional project attributes. The custom field can be at project or task level. The following API is used to access all the enterprise custom fields.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/CustomFields

One specific field can be accessed using the field GUID:
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/CustomFields('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')


The lookup tables associated to the custom fields can be accessed using the following REST API.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/CustomFields('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/LookupTable

The lookup table entries associated to the custom fields can be accessed by the following REST API.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/CustomFields('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/LookupEntries


Lookup Tables:

These enterprise custom lookup tables are associated with the enterprise custom fields on project web apps. Any field can have lookup tables for easily accessing the data. The lookup tables are accessed using the REST API,
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/LookupTables

The specific lookup table can be accessed by using its GUID.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/LookupTables('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

The lookup table associated to a custom field can be accessed by any of the following APIs.
  • https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/LookupTables('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')
  • https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/CustomFields('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/LookupTable

The lookup table entries can be accessed by
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/LookupTables('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/entries


Project Types:

To get the enterprise project types.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EnterpriseProjectTypes

The specific project type is accessed with the help of GUID.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EnterpriseProjectTypes('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

The project detail pages within the project types are access by,
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EnterpriseProjectTypes('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/ProjectDetailPages


Resources:

To get the enterprise resources.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EnterpriseResources

The specific resource is accessed with the help of GUID.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EnterpriseResources('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

Under any specific resource, the objects like assignments, basecalendars, customfields, engagements, userpermissions, etc present. All these objects have relative REST API, which are listed in the above URL.


Entity Types:

To get the project server entity types. There are four entity types, and they are assignment, project, resource and task.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/EntityTypes

The four entity types are accessed by,
  • Assignment Entity: /_api/ProjectServer/EntityTypes/AssignmentEntity
  • Project Entity: /_api/ProjectServer/EntityTypes/ProjectEntity
  • Resource Entity: /_api/ProjectServer/EntityTypes/ResourceEntity
  • Task Entity: /_api/ProjectServer/EntityTypes/TaskEntity


Projects:

The projects available on the PWA can be accessed by,
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/Projects

Any project and project information can be accessed with GUID.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')

The other major properties of the project are accessed using REST APIs.
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/CheckedOutBy
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/CustomFields
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Engagements
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/EnterpriseProjectType
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/UserPermissions
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Phase
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/ProjectSummaryTask
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/QueueJobs
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Stage
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Assignments
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Calendar
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Draft
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/EntityLinks
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/IncludeCustomFields
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/TaskLinks
  • /_api/ProjectServer/Projects('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')/Tasks




Project Detail Pages: 

These pages are used to create, edit, and view the projects available on PWA. To get the project detail pages:
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/ProjectDetailPages


Calendars:

To get the list of calendars available on the PWA:
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/Calendars

The specific calendar can be accessed with the help of its GUID.
https://nakkeerann.sharepoint.com/sites/pwa/_api/ProjectServer/Calendars('xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx')