Returns the activity with the given identifier.
GET /psa/activities/{id}
Group: PSA › Activities · Operation ID: getActivity
An activity is a project task. This route returns the activity itself, not who is assigned to it: assignment is a separate concern with its own cardinality, and no assignment fields are published here.
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. |
id |
path | string | yes | The unique identifier for the activity to return. |
Response
200 Success
Under data (getActivityOutput):
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | yes | The unique identifier for the activity. |
name |
string | yes | The display name of the activity. |
description |
string | no | A free-form description of the activity. Absent when none was set. |
hoursBudget |
string (decimal) | no | The budgeted hours for this activity, as a count of hours. It is not a monetary amount. |
billable |
boolean | no | Whether the activity is billable to a customer. Derived from category being 'ClientBillable'. |
invoiced |
boolean | no | Whether the activity has been invoiced. |
startDate |
string (date) | no | The activity's start date. Format YYYY-MM-DD. It is within the owning project's date range when the project's enforceActivityDateRange setting is on. |
endDate |
string (date) | no | The activity's end date. Format YYYY-MM-DD. |
billingType |
string | yes | The activity's billing type. Possible values: 'Hours', 'Milestone', 'FixedFee'. |
category |
string | no | The activity's category. Possible values: 'ClientBillable', 'NonBillable', 'NonValuable', 'Valuable'. |
milestoneId |
number | no | The id of the milestone this activity is billed against. Absent unless billingType is 'Milestone'. It is a numeric package-layer key, not the UUID that GET psa/milestones/:id takes. |
fixedFeeId |
number | no | The id of the fixed fee this activity is billed against. Absent unless billingType is 'FixedFee'. It is a numeric package-layer key, not the UUID that GET psa/fixed-fees/:id takes. |
activityStatusId |
number | no | The id of the activity's progress status. Absent when no status is set. Status values are tenant-configured, and there is no endpoint that lists them. Use statusName for the label. |
statusName |
string | no | The name of the activity's progress status, for example 'In progress'. Absent when no status is set. |
parentActivityId |
number | no | The id of the parent activity when this is a sub-task. Absent when the activity is top-level. It is a numeric package-layer key, not the UUID that GET psa/activities/:id takes. |
psaProjectId |
number | no | The id of the PSA project that owns this activity. Absent for a timetracking project with no PSA layer. It is a numeric key you can filter on here, but not the UUID that GET psa/projects/:id takes. |
lastModifiedDate |
string (date-time) | yes | The date and time this activity last changed, in UTC. Format YYYY-MM-DDTHH:mm:ss.sssZ. |
Errors
| Code | Status |
|---|---|
NOT_FOUND |
400 |
Statuses
400— Invalid request or business failure. Codes: NOT_FOUND401— Missing or invalid access token403— Not authorized404— Not found429— Too many requests500— Internal server error