PPM Express exposes REST API that allows integrating PPM Express with third-party applications.
You can use it to build add-ons for PPM Express or develop integrations between PPM Express and other applications.
Authentication and Authorization
Access to the API is granted via personal tokens. You can create a personal token with the scopes you need on the PPM Express Automation settings page.
You need to insert the following header into each request:
Authorization: Bearer <your-token>
Please note: you will be able to operate data via API according to the token scopes and PPM Express user permissions.
Thus, in order to create a new project via API, users need to have both: permission to Create Project within PPM Express (People management) and Write Projects scope in the API token.
URL Structure
PPM Express API follows REST principles. You may access resources via URL paths. To use a REST API, your application makes secure HTTP requests.
Our REST API uses JSON as its communication format and the standard HTTP methods: GET, POST, and PATCH. URLs have the following structure:
https://host/@tenant-name/api-version/resource-name
You can get the actual URL for your tenant in the PPM Express Automation menu.
Resources
PPM Express REST API gives a possibility to create, read and update Projects, Project Key Dates, Tasks, and Ideas and Resources. As Projects and Ideas are separate entities with multiple sections, only fields from the Details section are available via API.
Besides, it is possible to get information about all fields of any entity (“Fields” feed), and details about the current User and token (“Me” feed).
The full list of all resources and methods can be obtained from the interactive API documentation tool (Swagger UI). Besides retrieving all resources, you can try to send a request directly from the browser and check the response.
You can access the Swagger UI depending on the location that your tenant is hosted on. The direct link can be found in your PPM Express tenant in the Automation menu.
Before making any requests, please make sure to authorize your session by clicking the Authorize button and filling it in with your token.
Once authorized, select the desired request and click the “Try it out” button:
Please note: You can get the full list of Tasks and Key Dates (created from PPM Express and External systems like Azure DevOps or Jira), but it is possible to edit only items created in PPM Express.
Requests features
Please take into account that POST and PATCH requests have different structures.
POST request:
{ "attributes": { "Name": "Sample name", "Field_1": 123, "Field_2": "Test string" } }
PATCH request:
{ "updates": { “Field_1": 12.5, "Field_2": "Test string edited" } }
Unlike PPMX UI, you can pass any attributes when creating a Project here.
Field input formats
Statuses: defines the status of a Project, Task, or Key Date.
Statuses transcript:
PPM Express value |
API value |
On Track |
0 |
At Risk |
1 |
Critical |
2 |
Done |
10 |
N/A |
-1 |
Project:
“OverallStatus”: 1
Task/Key Date:
“Status”: 0
Please note: status can be updated manually only in case status auto-calculation is disabled.
User and Resource: defines an assignee of a Task or Key Date, manager of a Project, or a custom field of these types. It is required to pass User/Resource Id, Email, or Name in the request body.
Task/Key Date:
“AssignedTo”: [ { “search”: “assignee1@gmail.com” }, “search”: “Anna Doe” }, { “id”: “f1dc4b2a-6ca8-449e-b58b-09b9d6c91139” } ]
Tags can be added to all entities and sub-entities.
"Tags": [ "#api_tag1", "#api_tag2" ]
Program/Portfolio. You can add a Project to an existing Program and Portfolio by passing its ID or Name.
Project:
"Portfolio": [ { "id": "13425407-63ae-4cb4-8104-bb5df22b9437" }, { "search": "e-Learning platform" } ]
Please note: in order to get Program/Portfolio Id, you can open it from PPM Express and copy the Id from the URL:
https://host/@tenant-name/portfolio/portfolioID
Project Progress
Progress transcript:
PPM Express value |
API value |
Not Started |
0 |
Completed |
1 |
In Progress |
2 |
On Hold |
3 |
Canceled |
4 |
“Progress”: 2
Priority, Risk, Cost, Effort, Impact, Revenue, Business Priority: defines Priority of Project and Task, Project and Ideas Cost, Effort, Impact, Risk, Revenue, and all custom fields of Impact type.
Field transcript:
PPM Express value |
API value |
N/A |
0 |
Low |
1 |
Normal |
2 |
Moderate |
3 |
Strong |
4 |
Extreme |
5 |
Group: defines Tasks Group. To change the Group, Group Id or name is required:
"Group": { "search": "Not Started Tasks" }
Predecessor: defines Task predecessor. To set a Predecessor, its Id or name is required:
"Predecessor": [
{
"id": "499b58c0-d898-40a6-9bbe-b84318e7cfe7"
},
{
"search": "Create QA environment"
}
],
Please note: Successor’s Start Date is dependent on Predecessor’s Due Date. In case a Task has a Predecessor, its Start Date can’t be edited.
Key Date Type
Type transcript:
PPM Express value |
API value |
Key Date |
0 |
Milestone |
1 |
Release |
2 |
“Type”: 1
Idea’s Stage
Stage transcript:
PPM Express value |
API value |
Draft |
0 |
Proposed |
1 |
Active |
2 |
Selected |
3 |
Not Selected |
4 |
Archived |
5 |
Please note: In order to update Idea’s Stage, you will need to use the separate POST request that has the following structure:
{ "Stage": 5 }
Please take into account that stages have a strict sequence that must be followed. In case stage shift is not possible, 400 status code will be returned. Please check the Managing Challenges and Ideas article for more details about the Idea stages.