Returns a list of PSA projects.
GET /psa/projects
Group: PSA › Projects · Operation ID: projects
Returns the PSA project collection. There is no lookup by name or code, and no way to list the projects of one department or one sales arrangement from the server, so finding a project by name means listing and matching in your client.
Open in the interactive reference
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Api-Version |
header | "v1" |
yes | The API version this request targets, named by its public identifier. Required on every request; omitting it, or naming a version this company does not have, is answered with 400. This document describes version v1. |
showArchivedProjects |
query | boolean | no | When true, archived projects are included in the results. Set via ?showArchivedProjects=true, not a filter[] entry. |
showPlanningProjects |
query | boolean | no | When true, projects in Planning and PlanningDraft status are included in the results. Set via ?showPlanningProjects=true, not a filter[] entry. |
Query surface
id— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likelastModifiedDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecategory— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestatus— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likecurrency— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeinvoiced— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likestartDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeendDate— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeprojectTypeId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likequoteId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, likeopportunityId— filter by eq, ne, gt, gte, lt, lte, in, notIn, between, like- Orderable: id, lastModifiedDate, category, status, currency, invoiced, startDate, endDate
- Selectable: id, lastModifiedDate, name, code, category, status, currency, invoiced, startDate, endDate, notes, enforceActivityDateRange, budgetAmount, budgetCurrency, departmentId, teamId, teamName, teamStartDate, teamEndDate, salesRepresentativeId, salesRepresentativeName, projectTypeId, projectTypeName, quoteId, quoteNumber, opportunityId, opportunityName, opportunityCurrency, salesArrangementId, salesArrangementCurrency, salesArrangementCustomerId, salesArrangementCustomerName, salesArrangementEntityId, salesArrangementEntityName, revenueRecordedTimeToDate, revenueAccomplishedMilestones, revenueFixedFeeToDate, revenueToDate, budgetRemaining
Response
200 Success
Under data, an array of projectsRow:
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | no | The unique identifier for the project. |
lastModifiedDate |
string (date-time) or null | no | The date and time the project last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
name |
string or null | no | The display name of the project. |
code |
string or null | no | The project code, for example 'PSA-29767'. Absent when none has been set. |
category |
string or null | no | The project category. Possible values: 'Billable', 'Internal', 'NonBillable'. |
status |
string or null | no | The project status. Possible values: 'Tentative', 'Planning', 'PlanningDraft', 'NotStarted', 'InProgress', 'Paused', 'Completed', 'Cancelled'. |
currency |
string or null | no | The project's default currency. Format ISO 4217, for example 'USD'. It applies to revenueRecordedTimeToDate, revenueAccomplishedMilestones, revenueFixedFeeToDate, revenueToDate, and budgetRemaining. |
invoiced |
boolean or null | no | Whether the project is marked as invoiced. |
startDate |
string (date) or null | no | The project start date. Format YYYY-MM-DD. |
endDate |
string (date) or null | no | The project end date. Format YYYY-MM-DD. |
notes |
string or null | no | Free-form notes about the project. |
enforceActivityDateRange |
boolean or null | no | Whether time entries must fall within the project's startDate and endDate. |
budgetAmount |
string (decimal) or null | no | The project budget amount, in budgetCurrency. |
budgetCurrency |
string or null | no | The currency of budgetAmount. Format ISO 4217, for example 'USD'. |
departmentId |
number or null | no | The numeric identifier of the department the project is allocated to. GET departments/:id takes a UUID, so the number cannot be used to fetch the department. |
teamId |
number or null | no | The numeric identifier of the team assigned to this project. GET people/teams/:id takes a UUID, so the number cannot be used to fetch the team. |
teamName |
string or null | no | The display name of the team. |
teamStartDate |
string (date) or null | no | The team's start date, which may differ from startDate. Format YYYY-MM-DD. |
teamEndDate |
string (date) or null | no | The team's end date, which may differ from endDate. Format YYYY-MM-DD. |
salesRepresentativeId |
number or null | no | The numeric identifier of the sales representative, an employee. There is no endpoint for it. |
salesRepresentativeName |
string or null | no | The display name of the sales representative. |
projectTypeId |
number or null | no | The numeric identifier of the project type. GET psa/project-types/:id takes a UUID, so the number cannot be used to fetch the project type. |
projectTypeName |
string or null | no | The display name of the project type. |
quoteId |
number or null | no | The numeric identifier of the CRM quote this project was created from. GET crm/quotes/:id takes a UUID, so the number cannot be used to fetch the quote. |
quoteNumber |
string or null | no | The quote number. |
opportunityId |
number or null | no | The numeric identifier of the CRM opportunity this project is linked to. GET crm/opportunities/:id takes a UUID, so the number cannot be used to fetch the opportunity. |
opportunityName |
string or null | no | The display name of the opportunity. |
opportunityCurrency |
string or null | no | The currency of the opportunity. Format ISO 4217, for example 'USD'. |
salesArrangementId |
number or null | no | The numeric identifier of the sales arrangement that links the project to billing terms. There is no endpoint for it. |
salesArrangementCurrency |
string or null | no | The functional currency of the sales arrangement. Format ISO 4217, for example 'USD'. |
salesArrangementCustomerId |
number or null | no | The numeric identifier of the customer on the sales arrangement. GET accounting/customers/:id takes a UUID, so the number cannot be used to fetch the customer. |
salesArrangementCustomerName |
string or null | no | The display name of the customer on the sales arrangement. |
salesArrangementEntityId |
number or null | no | The numeric identifier of the legal entity on the sales arrangement. There is no endpoint for it. |
salesArrangementEntityName |
string or null | no | The display name of the legal entity on the sales arrangement. |
revenueRecordedTimeToDate |
string (decimal) or null | no | The revenue from recorded time up to today, in the project currency. Absent when the project has no time entries. |
revenueAccomplishedMilestones |
string (decimal) or null | no | The revenue from accomplished and invoiced milestones, in the project currency. Absent when the project has no completed milestones. |
revenueFixedFeeToDate |
string (decimal) or null | no | The fixed-fee revenue to date, in the project currency. Absent when the project has no fixed fees. |
revenueToDate |
string (decimal) or null | no | The total revenue to date, in the project currency: revenueRecordedTimeToDate + revenueAccomplishedMilestones + revenueFixedFeeToDate. |
budgetRemaining |
string (decimal) or null | no | The budget remaining, in the project currency: budgetAmount - revenueToDate. |
Statuses
400— Invalid request or business failure401— Missing or invalid access token403— Not authorized404— Not found429— Too many requests500— Internal server error