Tasks

Tasks. parenttaskid nests one level only; taskseq is the per-project number.

The object#

FieldTypeDescription
idread-onlyintegerNolaPro id.
teamprojectidintegerReference to teamprojects, by id. Write either this or teamproject.
teamprojectstring(30)Code for the referenced teamproject, instead of the id.
teamprojectmilestoneidintegerTeamprojectmilestoneid. Id only - teamprojectmilestone is read-only or has no code key.
parenttaskidintegerParenttaskid. Id only.
taskseqintegerPer-project sequence number. Assigned automatically (MAX+1 for the project) when omitted on create; send one only to control it explicitly.
displayidread-onlystring(30)The task id shown everywhere in TPM (TPM-001-15). Derived by the model from the project code and taskseq on every save. Read-only - a sent value would be silently overwritten, so it is refused instead.
titlestring(255)Task title.
descriptiontextDescription. Stored as text, no practical length limit.
teamprojectstatusidintegerReference to teamprojectstatuses, by id. Write either this or teamprojectstatus.
teamprojectstatusstring(100)Code for the referenced teamprojectstatus, instead of the id.
prioritystringPriority. Labels are Teamprojecttask_model::$priorities; stored as an int and never exposed or accepted as one (D35). One of low, normal, high, critical.
startdatestringDate work on the task starts.
duedatestringDate payment is due.
estimatedhoursmoneystring(6dp)Stored as decimal(18,6).
percentcompleteintegerProgress, 0 to 100.
sortorderintegerDisplay order. Lower sorts first.
requiresapprovalbooleanTrue routes task completion through an approval step.
approvaluseridintegerReference to genusers, by id. Write either this or approvaluser.
approvaluserstring(50)Login name of the approver. Send this or approvaluserid, not both unless they agree.
approvalstatusstringApproval workflow state. Labels are Teamprojecttask_model::$approvalstatuses; stored as an int and never exposed or accepted as one (D35). Only meaningful when requiresapproval is true. One of notrequested, pending, approved, rejected.
approvaldatestringDate the completed task was approved.
approvalcommenttextApprovalcomment. Stored as text, no practical length limit.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
worktypeidintegerReference to worktypes, by id. Write either this or worktype.
worktypestring(100)Code for the referenced worktype, instead of the id.
externalidstring(100)Your own key. Scoped to your company.

Endpoints#

POST/teamprojecttasks/batch 207

Create many.

Requires scope projects:write.

Parameters
NameInTypeNotes
Body array
FieldTypeDescription
parenttaskidintegerParenttaskid. Id only.
taskseqintegerPer-project sequence number. Assigned automatically (MAX+1 for the project) when omitted on create; send one only to control it explicitly.
displayidread-onlystring(30)The task id shown everywhere in TPM (TPM-001-15). Derived by the model from the project code and taskseq on every save. Read-only - a sent value would be silently overwritten, so it is refused instead.
titlestring(255)Task title.
descriptiontextDescription. Stored as text, no practical length limit.
teamprojectstatusidintegerReference to teamprojectstatuses, by id. Write either this or teamprojectstatus.
teamprojectstatusstring(100)Code for the referenced teamprojectstatus, instead of the id.
prioritystringPriority. Labels are Teamprojecttask_model::$priorities; stored as an int and never exposed or accepted as one (D35). One of low, normal, high, critical.
startdatestringDate work on the task starts.
duedatestringDate payment is due.
estimatedhoursmoneystring(6dp)Stored as decimal(18,6).
percentcompleteintegerProgress, 0 to 100.
sortorderintegerDisplay order. Lower sorts first.
requiresapprovalbooleanTrue routes task completion through an approval step.
approvaluseridintegerReference to genusers, by id. Write either this or approvaluser.
approvaluserstring(50)Login name of the approver. Send this or approvaluserid, not both unless they agree.
approvalstatusstringApproval workflow state. Labels are Teamprojecttask_model::$approvalstatuses; stored as an int and never exposed or accepted as one (D35). Only meaningful when requiresapproval is true. One of notrequested, pending, approved, rejected.
approvaldatestringDate the completed task was approved.
approvalcommenttextApprovalcomment. Stored as text, no practical length limit.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
worktypeidintegerReference to worktypes, by id. Write either this or worktype.
worktypestring(100)Code for the referenced worktype, instead of the id.
externalidstring(100)Your own key. Scoped to your company.
checklistarray of RefTeamprojectchecklistsCreateChecklist items on this task, in order.
assigneesarray of RefTeamprojecttaskassigneesCreateWho the task is assigned to.
watchersarray of RefTeamprojecttaskwatchersCreateWho gets notified about it.
tagsarray of RefTeamprojecttasktagsCreateTags to attach. The tag itself must already exist.
commentsarray of RefTeamprojectcommentsCreateAn opening comment or two.
teamprojectidintegerReference to teamprojects, by id. Write either this or teamproject.
teamprojectstring(30)Code for the referenced teamproject, instead of the id.
teamprojectmilestoneidintegerTeamprojectmilestoneid. Id only - teamprojectmilestone is read-only or has no code key.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks/batch' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '[
    {
        "priority": "low",
        "approvalstatus": "notrequested",
        "checklist": [
            {
                "title": "Example title",
                "iscomplete": false,
                "sortorder": 1,
                "parentchecklistid": 104,
                "teamprojecttaskid": 104
            }
        ],
        "assignees": [
            {
                "genuser": "Example genuser",
                "teamprojecttaskid": 104
            }
        ],
        "watchers": [
            {
                "genuser": "Example genuser",
                "teamprojecttaskid": 104
            }
        ],
        "tags": [
            {
                "teamprojecttagid": 104,
                "teamprojecttag": "Example teamprojecttag",
                "teamprojecttaskid": 104
            }
        ],
        "comments": [
            {
                "parentcommentid": 104,
                "comment": "Example comment",
                "teamprojecttaskid": 104
            }
        ]
    }
]'
GET/teamprojecttasks 200403

List tasks.

Requires scope projects:read.

Parameters
NameInTypeNotes
descriptionquerystringdescription. Partial match, case-insensitive.
titlequerystringPartial match, case insensitive.
cancelquerystringDefaults to false. Pass true or any.
modifiedsincequerystringRFC 3339 UTC timestamp. Returns only records changed since then, including cancelled ones - so cancel defaults to any rather than false when this is used. The response carries _meta.synced_through; store it and send it back next time.
externalidquerystringExact match on your own key.
teamprojectidquerystringFilter to one .
includequerystringComma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions.
When it fails
StatusCodeMeaning
403insufficient_scopeToken lacks read scope.
curl \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks' \
  -H 'Authorization: Bearer $NP_TOKEN'
POST/teamprojecttasks 201400

Create.

Requires scope projects:write.

Parameters
NameInTypeNotes
Body
FieldTypeDescription
parenttaskidintegerParenttaskid. Id only.
taskseqintegerPer-project sequence number. Assigned automatically (MAX+1 for the project) when omitted on create; send one only to control it explicitly.
displayidread-onlystring(30)The task id shown everywhere in TPM (TPM-001-15). Derived by the model from the project code and taskseq on every save. Read-only - a sent value would be silently overwritten, so it is refused instead.
titlestring(255)Task title.
descriptiontextDescription. Stored as text, no practical length limit.
teamprojectstatusidintegerReference to teamprojectstatuses, by id. Write either this or teamprojectstatus.
teamprojectstatusstring(100)Code for the referenced teamprojectstatus, instead of the id.
prioritystringPriority. Labels are Teamprojecttask_model::$priorities; stored as an int and never exposed or accepted as one (D35). One of low, normal, high, critical.
startdatestringDate work on the task starts.
duedatestringDate payment is due.
estimatedhoursmoneystring(6dp)Stored as decimal(18,6).
percentcompleteintegerProgress, 0 to 100.
sortorderintegerDisplay order. Lower sorts first.
requiresapprovalbooleanTrue routes task completion through an approval step.
approvaluseridintegerReference to genusers, by id. Write either this or approvaluser.
approvaluserstring(50)Login name of the approver. Send this or approvaluserid, not both unless they agree.
approvalstatusstringApproval workflow state. Labels are Teamprojecttask_model::$approvalstatuses; stored as an int and never exposed or accepted as one (D35). Only meaningful when requiresapproval is true. One of notrequested, pending, approved, rejected.
approvaldatestringDate the completed task was approved.
approvalcommenttextApprovalcomment. Stored as text, no practical length limit.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
worktypeidintegerReference to worktypes, by id. Write either this or worktype.
worktypestring(100)Code for the referenced worktype, instead of the id.
externalidstring(100)Your own key. Scoped to your company.
checklistarray of RefTeamprojectchecklistsCreateChecklist items on this task, in order.
assigneesarray of RefTeamprojecttaskassigneesCreateWho the task is assigned to.
watchersarray of RefTeamprojecttaskwatchersCreateWho gets notified about it.
tagsarray of RefTeamprojecttasktagsCreateTags to attach. The tag itself must already exist.
commentsarray of RefTeamprojectcommentsCreateAn opening comment or two.
teamprojectidintegerReference to teamprojects, by id. Write either this or teamproject.
teamprojectstring(30)Code for the referenced teamproject, instead of the id.
teamprojectmilestoneidintegerTeamprojectmilestoneid. Id only - teamprojectmilestone is read-only or has no code key.
When it fails
StatusCodeMeaning
400invalid_requestA required field was missing.
curl -X POST \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "priority": "low",
    "approvalstatus": "notrequested",
    "checklist": [
        {
            "title": "Example title",
            "iscomplete": false,
            "sortorder": 1,
            "parentchecklistid": 104,
            "teamprojecttaskid": 104
        }
    ],
    "assignees": [
        {
            "genuser": "Example genuser",
            "teamprojecttaskid": 104
        }
    ],
    "watchers": [
        {
            "genuser": "Example genuser",
            "teamprojecttaskid": 104
        }
    ],
    "tags": [
        {
            "teamprojecttagid": 104,
            "teamprojecttag": "Example teamprojecttag",
            "teamprojecttaskid": 104
        }
    ],
    "comments": [
        {
            "parentcommentid": 104,
            "comment": "Example comment",
            "teamprojecttaskid": 104
        }
    ]
}'
Response 201
{
    "priority": "low",
    "approvalstatus": "notrequested"
}
GET/teamprojecttasks/{id} 200404

Retrieve one record.

Requires scope projects:read.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
includequerystringComma-separated extras to embed. Only custom_fields is available: the extra fields this install has defined on the record. Off by default, and an unrecognised value is refused rather than ignored. See Conventions.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "priority": "low",
    "approvalstatus": "notrequested"
}
PATCH/teamprojecttasks/{id} 200404

Update.

Only the fields you send change. Children cannot be sent here - milestones and tasks are create-only (see Conventions). Use the child resource to add, change or cancel one.

Requires scope projects:write.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
Body
FieldTypeDescription
idread-onlyintegerNolaPro id.
teamprojectidintegerReference to teamprojects, by id. Write either this or teamproject.
teamprojectstring(30)Code for the referenced teamproject, instead of the id.
teamprojectmilestoneidintegerTeamprojectmilestoneid. Id only - teamprojectmilestone is read-only or has no code key.
parenttaskidintegerParenttaskid. Id only.
taskseqintegerPer-project sequence number. Assigned automatically (MAX+1 for the project) when omitted on create; send one only to control it explicitly.
displayidread-onlystring(30)The task id shown everywhere in TPM (TPM-001-15). Derived by the model from the project code and taskseq on every save. Read-only - a sent value would be silently overwritten, so it is refused instead.
titlestring(255)Task title.
descriptiontextDescription. Stored as text, no practical length limit.
teamprojectstatusidintegerReference to teamprojectstatuses, by id. Write either this or teamprojectstatus.
teamprojectstatusstring(100)Code for the referenced teamprojectstatus, instead of the id.
prioritystringPriority. Labels are Teamprojecttask_model::$priorities; stored as an int and never exposed or accepted as one (D35). One of low, normal, high, critical.
startdatestringDate work on the task starts.
duedatestringDate payment is due.
estimatedhoursmoneystring(6dp)Stored as decimal(18,6).
percentcompleteintegerProgress, 0 to 100.
sortorderintegerDisplay order. Lower sorts first.
requiresapprovalbooleanTrue routes task completion through an approval step.
approvaluseridintegerReference to genusers, by id. Write either this or approvaluser.
approvaluserstring(50)Login name of the approver. Send this or approvaluserid, not both unless they agree.
approvalstatusstringApproval workflow state. Labels are Teamprojecttask_model::$approvalstatuses; stored as an int and never exposed or accepted as one (D35). Only meaningful when requiresapproval is true. One of notrequested, pending, approved, rejected.
approvaldatestringDate the completed task was approved.
approvalcommenttextApprovalcomment. Stored as text, no practical length limit.
cancelbooleanCancelled. NolaPro cancels rather than deletes, so a cancelled row is still readable.
entrydateread-onlystringWhen the record was created.
lastchangedateread-onlystringLast modification. Drives modifiedsince.
worktypeidintegerReference to worktypes, by id. Write either this or worktype.
worktypestring(100)Code for the referenced worktype, instead of the id.
externalidstring(100)Your own key. Scoped to your company.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X PATCH \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks/104' \
  -H 'Authorization: Bearer $NP_TOKEN' \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: your-unique-key' \
  -d '{
    "priority": "low",
    "approvalstatus": "notrequested"
}'
Response 200
{
    "priority": "low",
    "approvalstatus": "notrequested"
}
DELETE/teamprojecttasks/{id} 200404

Cancel.

Requires scope projects:cancel.

Parameters
NameInTypeNotes
idrequiredpathintegerThe record id.
When it fails
StatusCodeMeaning
404not_foundNo record with that id.
curl -X DELETE \
  'https://acme.nolapro.com/!/api/v2/teamprojecttasks/104' \
  -H 'Authorization: Bearer $NP_TOKEN'
Response 200
{
    "priority": "low",
    "approvalstatus": "notrequested"
}