From superops-ai
Logs a time entry against a SuperOps.ai ticket via GraphQL. Requires ticket_id and duration (minutes); optional: description, billable (default true), start_time, work_type. Validates inputs and confirms with entry ID and total time.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin superops# Log Time on SuperOps.ai Ticket Log a time entry against a SuperOps.ai ticket for billing and tracking purposes. ## Prerequisites - Valid SuperOps.ai API token configured - Ticket must exist in SuperOps.ai - User must have time entry permissions ## Steps 1. **Validate ticket exists** - Query ticket by ID or ticket number - Return error if ticket not found - Show current ticket subject for confirmation 2. **Validate duration** - Must be a positive integer - Represents minutes (e.g., 30 = 30 minutes) - Warn if unusually long (> 480 minutes / 8 hours) 3. **Calculate s...
/log-timeLogs work hours on an Atera ticket via API. Requires ticket_id and hours; supports optional notes, date, billable flag, and hourly_rate. Validates ticket, creates entry, returns confirmation with ID and summary.
/log-timeLogs a time entry against a Syncro ticket using ticket ID and duration (minutes or HH:MM); optional notes, billable flag, start time, and product ID. Validates and confirms via API.
/log-timeLogs a time entry against a ConnectWise PSA ticket using ticket ID, start time, end time or hours, notes, billing option, work type, and role. Returns confirmation with totals.
Log a time entry against a SuperOps.ai ticket for billing and tracking purposes.
Validate ticket exists
Validate duration
Calculate start time
Log the time entry
mutation addTicketTimeEntry($input: AddTimeEntryInput!) {
addTicketTimeEntry(input: $input) {
timeEntryId
ticketId
duration
description
billable
startTime
endTime
workType
technician {
id
name
}
createdTime
}
}
Variables:
{
"input": {
"ticketId": "<ticket_id>",
"duration": 30,
"description": "<description>",
"billable": true,
"startTime": "2026-02-04T10:00:00Z",
"workType": "REMOTE_SUPPORT"
}
}
Confirm time entry was logged
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| ticket_id | string | Yes | - | Ticket ID or ticket number |
| duration | integer | Yes | - | Duration in minutes |
| description | string | No | - | Work description |
| billable | boolean | No | true | Mark as billable |
| start_time | datetime | No | now - duration | Start time (ISO 8601) |
| work_type | string | No | - | Type of work performed |
Common work types in SuperOps.ai:
/log-time TICK-12345 30
/log-time TICK-12345 30 --description "Troubleshot network connectivity issue"
/log-time TICK-12345 90 --billable true --description "Server migration work"
/log-time TICK-12345 45 --billable false --description "Internal documentation"
/log-time TICK-12345 60 --description "On-site printer repair" --work_type "On-Site Support"
/log-time TICK-12345 120 --start_time "2026-02-04T09:00:00Z" --description "Morning troubleshooting session"
Time Entry Logged Successfully
Ticket: TICK-12345 - Email not working - Outlook disconnected
Client: Acme Corporation
Time Entry Details:
Entry ID: time_abc123
Duration: 30 minutes (0.5 hours)
Billable: Yes
Work Type: Remote Support
Start: 2026-02-04 10:00 UTC
End: 2026-02-04 10:30 UTC
Description:
-----------
Troubleshot network connectivity issue
-----------
Logged By: Jane Technician
Logged At: 2026-02-04 14:32:00
Ticket Time Summary:
Total Logged: 2.5 hours
Billable: 2.0 hours
Non-Billable: 0.5 hours
curl -X POST 'https://yourcompany.superops.ai/graphql' \
-H 'Authorization: Bearer YOUR_API_TOKEN' \
-H 'Content-Type: application/json' \
-d '{
"query": "mutation addTicketTimeEntry($input: AddTimeEntryInput!) { addTicketTimeEntry(input: $input) { timeEntryId ticketId duration description billable startTime endTime workType technician { id name } createdTime } }",
"variables": {
"input": {
"ticketId": "ticket-uuid-here",
"duration": 30,
"description": "Troubleshot network connectivity issue",
"billable": true,
"startTime": "2026-02-04T10:00:00Z",
"workType": "Remote Support"
}
}
}'
Ticket not found: "TICK-99999"
Please verify the ticket ID or number is correct.
Use /search-tickets to find the correct ticket.
Invalid duration: "-30"
Duration must be a positive number of minutes.
Examples:
30 = 30 minutes
60 = 1 hour
90 = 1.5 hours
Warning: Duration of 600 minutes (10 hours) is unusually long.
Are you sure this is correct?
- If working multiple days, consider logging separate entries per day
- Maximum recommended single entry: 480 minutes (8 hours)
Continue anyway? [y/N]
Invalid start time: Start time cannot be in the future.
Current time: 2026-02-04 14:00 UTC
Provided start: 2026-02-04 16:00 UTC
Please provide a past start time or omit to use current time.
| Error | Resolution |
|---|---|
| Invalid ticket ID | Verify ticket exists using /search-tickets |
| Invalid duration | Must be positive integer (minutes) |
| Invalid work type | Check available work types in SuperOps.ai |
| Permission denied | Check user permissions for time entry |
| Ticket closed | Some workflows prevent time on closed tickets |
| Rate limited | Wait and retry (800 req/min limit) |
/create-ticket - Create a new ticket/update-ticket - Update ticket status/add-ticket-note - Add documentation to ticket/list-assets - View client assets