AutoTask LCP#45
Conversation
… into work/tw/AutoTask
- Rename displayName AutoTask → Autotask, update name to autotask - Update description to reference Datto Autotask PSA with full stop - Add documentation link to metadata.json; bump version to 1.0.1 - Change category from User Defined to Service Management - Update configValidation, custom_types, ui.json, README: AutoTask → Autotask - Fix ui.json help text to start with verbs and drop possessive phrasing - Add computed statusName with state mapping to projectStatus.json - Add plugins/AutoTask to CODEOWNERS - Remove CLAUDE.md, CLAUDE.local.md, and test-present.txt from PR Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
🧩 Plugin PR Summary📦 Modified Plugins
📋 Results
🔍 Validation Details✅
|
clarkd
left a comment
There was a problem hiding this comment.
Looks great - a few minor comments/discussion, but nothing blocking. Take it or leave it!
| @@ -0,0 +1,2 @@ | |||
| const selectedIds = new Set(context.objects.map(o => String(o.companyId))); | |||
There was a problem hiding this comment.
I presume there's not an API parameter to filter by company ID/name?
| "config": { | ||
| "httpMethod": "get", | ||
| "expandInnerObjects": true, | ||
| "endpointPath": "atservicesrest/v1.0/Companies/query?search={\"MaxRecords\":500,\"filter\":[{\"op\":\"exist\",\"field\":\"id\"}]}", |
There was a problem hiding this comment.
Given you have paging added, you could reduce the 500 needed here if you hit size limits - or it could be faster fetching more smaller pages.
| "name": "statusName", | ||
| "displayName": "Status", | ||
| "computed": true, | ||
| "valueExpression": "{{ $['status'] == 1 ? 'Active' : $['status'] == 2 ? 'Upcoming' : $['status'] == 3 ? 'Cancelled' : $['status'] == 4 ? 'Completed' : $['status'] == 6 ? 'Inactive' : 'Unknown' }}", |
There was a problem hiding this comment.
Are you using a value expression AND a map here so users can both see our statues like 'success', 'error' as well as nicer raw names like 'Active' and 'Completed'? I think it's OK, just not seen this before.
| "computed": true, | ||
| "valueExpression": "{{ $['contractType'] == 1 ? 'Time and Materials' : $['contractType'] == 3 ? 'Fixed Price' : $['contractType'] == 4 ? 'Block Hours' : $['contractType'] == 6 ? 'Retainer' : $['contractType'] == 7 ? 'Recurring Service' : $['contractType'] == 8 ? 'Incident' : 'Unknown' }}" | ||
| }, | ||
| { "name": "estimatedRevenue", "displayName": "Estimated Revenue", "shape": ["number", { "decimalPlaces": 2 }] }, |
There was a problem hiding this comment.
You can specify the currency dynamically if it's returned in the data / as a column FYI.
| "label": "Status", | ||
| "allowCustomValues": true, | ||
| "isMulti": true, | ||
| "defaultValue": "1,5,8,9,10,11,12,13", |
There was a problem hiding this comment.
I'm a little surprised & intrigued that this works ok?
| @@ -0,0 +1,37 @@ | |||
| [ | |||
| { | |||
| "name": "Autotask Company", | |||
There was a problem hiding this comment.
I don't think the name is used for much, but this has a space in while the others do not...
🔌 Plugin overview
🖼️ Plugin screenshots
🧪 Testing
Tested all data streams return results. Status and state mappings validated for tickets, contracts, and projects. OOB tickets dashboard loads and displays data correctly. Object indexing confirmed for companies, contacts, contracts, projects, and resources.
None at this time.
📚 Checklist