Atera Ticket Management
Overview
Atera tickets are the core unit of service delivery in the RMM/PSA platform. Every client request, incident, and service call flows through the ticketing system. This skill covers comprehensive ticket management including creation, updates, comments, and time tracking.
Anti-triggers
- The MSP's system-of-record helpdesk — plenty of shops run Atera
for RMM and a separate PSA for service desk. If tickets live
elsewhere, use
connectwise-psa-tickets, autotask-tickets,
halopsa-tickets, syncro-tickets, or superops-tickets; a ticket
created in the wrong system is a ticket nobody is watching.
- The alert behind the ticket — alert-to-ticket conversion rules and
the alert side of that workflow are
atera-alerts.
Ticket Status Values
| Status |
Description |
Business Logic |
| Open |
Newly created or reopened ticket |
Default for new tickets |
| Pending |
Awaiting customer response or information |
SLA clock may pause |
| Resolved |
Issue has been fixed |
Awaiting customer confirmation |
| Closed |
Ticket is complete |
Final state, no further action |
Ticket Priority Levels
| Priority |
Description |
Typical SLA |
| Critical |
Complete business outage |
1 hour response |
| High |
Major productivity impact |
4 hour response |
| Medium |
Single user/workaround exists |
8 hour response |
| Low |
Minor issue/enhancement |
24 hour response |
Ticket Types
| Type |
Description |
| Problem |
Standard service issue |
| Request |
Service request |
| Incident |
Unplanned interruption |
| Change |
Planned change |
Complete Ticket Field Reference
Core Fields
| Field |
Type |
Required |
Description |
TicketID |
int |
System |
Auto-generated unique identifier |
TicketTitle |
string |
Yes |
Brief issue summary |
Description |
string |
No |
Detailed description |
TicketPriority |
string |
No |
Low, Medium, High, Critical |
TicketStatus |
string |
No |
Open, Pending, Resolved, Closed |
TicketType |
string |
No |
Problem, Request, Incident, Change |
Customer/Contact Fields
| Field |
Type |
Required |
Description |
CustomerID |
int |
Conditional |
Customer reference (required if no EndUserID) |
CustomerName |
string |
System |
Customer display name |
EndUserID |
int |
Conditional |
Contact reference |
EndUserEmail |
string |
System |
Contact email address |
EndUserFirstName |
string |
System |
Contact first name |
EndUserLastName |
string |
System |
Contact last name |
Assignment Fields
| Field |
Type |
Required |
Description |
TechnicianContactID |
int |
No |
Assigned technician ID |
TechnicianFullName |
string |
System |
Technician display name |
TechnicianEmail |
string |
System |
Technician email |
Timeline Fields
| Field |
Type |
Required |
Description |
TicketCreatedDate |
datetime |
System |
When ticket was created |
TicketResolvedDate |
datetime |
System |
When marked resolved |
FirstResponseDate |
datetime |
System |
First response timestamp |
LastActivityDate |
datetime |
System |
Last update timestamp |
DueDate |
datetime |
No |
SLA due date |
Source Fields
| Field |
Type |
Description |
TicketSource |
string |
How ticket was created (Portal, Email, Agent, API) |
API Patterns
Create a Ticket
POST /api/v3/tickets
X-API-KEY: {api_key}
Content-Type: application/json
{
"TicketTitle": "Unable to access email - multiple users affected",
"Description": "Sales team (5 users) reporting Outlook disconnected since 9am",
"EndUserID": 67890,
"TicketPriority": "High",
"TicketType": "Problem",
"TechnicianContactID": 12345
}
Response:
{
"ActionID": 54321,
"TicketID": 54321,
"TicketTitle": "Unable to access email - multiple users affected"
}
Get Ticket Details
GET /api/v3/tickets/{ticketId}
X-API-KEY: {api_key}
Response:
{
"TicketID": 54321,
"TicketTitle": "Unable to access email - multiple users affected",
"TicketStatus": "Open",
"TicketPriority": "High",
"TicketType": "Problem",
"CustomerID": 12345,
"CustomerName": "Acme Corporation",
"EndUserID": 67890,
"EndUserFirstName": "John",
"EndUserLastName": "Smith",
"EndUserEmail": "john.smith@acme.com",
"TechnicianContactID": 11111,
"TechnicianFullName": "Jane Tech",
"TicketCreatedDate": "2024-02-15T09:00:00Z",
"TicketSource": "Email"
}
Update a Ticket
POST /api/v3/tickets/{ticketId}
X-API-KEY: {api_key}
Content-Type: application/json
{
"TicketStatus": "Resolved",
"TicketPriority": "Medium"
}
List All Tickets (Paginated)
GET /api/v3/tickets?page=1&itemsInPage=50
X-API-KEY: {api_key}
Response:
{
"items": [...],
"totalItems": 2847,
"page": 1,
"itemsInPage": 50,
"totalPages": 57
}
Get Tickets Modified After Date
GET /api/v3/tickets/statusmodified?modifiedAfter=2024-02-01T00:00:00Z
X-API-KEY: {api_key}
Get Ticket Comments
GET /api/v3/tickets/{ticketId}/comments
X-API-KEY: {api_key}
Response:
{
"items": [
{
"CommentID": 11111,
"TicketID": 54321,
"CommentText": "Initial triage: Checking Exchange connectivity",
"CommentDate": "2024-02-15T09:15:00Z",
"CreatorContactID": 12345,
"IsInternal": true
}
]
}
Create Ticket Comment
POST /api/v3/tickets/{ticketId}/comments
X-API-KEY: {api_key}
Content-Type: application/json
{
"CommentText": "Identified root cause - Exchange certificate expired",
"IsInternal": false
}
Get Billable Duration
GET /api/v3/tickets/{ticketId}/billableduration
X-API-KEY: {api_key}
Response:
{
"TotalBillableDuration": 3600,
"TotalBillableHours": 1.0
}
Get Work Hours
GET /api/v3/tickets/{ticketId}/workhours
X-API-KEY: {api_key}
Response:
{
"items": [
{
"WorkHourID": 22222,
"TicketID": 54321,
"TechnicianContactID": 12345,
"StartDate": "2024-02-15T09:00:00Z",
"EndDate": "2024-02-15T10:30:00Z",
"Duration": 5400,
"IsBillable": true,
"Notes": "Initial investigation and resolution"
}
]
}
Common Workflows
Ticket Creation Flow
- Receive request - Via portal, email, phone, or API
- Validate customer - Ensure customer exists in system
- Set priority - Based on impact and urgency
- Assign technician - Route to appropriate team member
- Send acknowledgment - Notify customer of ticket creation
Ticket Resolution Flow
- Investigate issue - Document findings in comments
- Implement fix - Perform remediation steps
- Log time - Record billable/non-billable hours
- Update status - Set to Resolved
- Notify customer - Send resolution summary
Status Transition Validation
Open ──────────────────────────────> Closed
│ ↑
↓ │
Pending ──────────────> Resolved ──────┘
│ ↑
└─────────────────────────┘
Rules:
- Cannot skip directly from Open to Closed (must resolve first)
- Resolved tickets can be reopened to Open
- Pending can transition to any status
Error Handling
Common API Errors
| Code |
Message |
Resolution |
| 400 |
Invalid ticket ID |
Verify ticket exists |
| 401 |
Unauthorized |
Check API key |
| 403 |
Forbidden |
Verify permissions |
| 404 |
Ticket not found |
Confirm ticket ID |
| 429 |
Rate limited |
Wait and retry (700 req/min limit) |
Validation Errors
| Error |
Cause |
Fix |
| Title required |
Missing TicketTitle |
Add title to request |
| Invalid priority |
Typo in priority value |
Use Low, Medium, High, or Critical |
| Customer not found |
Invalid EndUserID |
Verify contact exists |
Best Practices
- Use descriptive titles - Include affected system and symptom
- Set accurate priority - Use impact/urgency matrix
- Document thoroughly - Add comments for all actions
- Log time promptly - Don't batch at end of day
- Update status regularly - Keep customers informed
- Use internal notes - Separate technical details from customer-facing
- Link related tickets - Reference previous issues
Related Skills