Skip to content
Back to skills

Tickets

ASecurity

NinjaOne's built-in ticketing system, which integrates with device monitoring: ticket creation and updates, core/status/metadata fields, status and priority values with SLA targets, log entry types, device linkage, tagging patterns, and error codes.

  • 48 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 2, 2026
ai-agentsgoapi

Works with

  • cli
  • api

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add wyre-technology/msp-claude-plugins --skill tickets --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tickets?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tickets
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/wyre-technology-tickets-8cdc8f1a/badge)](https://www.skillsdirectory.com/skills/wyre-technology-tickets-8cdc8f1a)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: "NinjaOne Tickets"
description: >
  NinjaOne's built-in ticketing system, which integrates with device monitoring:
  ticket creation and updates, core/status/metadata fields, status and priority
  values with SLA targets, log entry types, device linkage, tagging patterns, and
  error codes.
when_to_use: >-
  When creating, updating, searching, or working the NinjaOne ticket queue. Use when:
  ninjaone ticket, ninjarmm ticket, ninja ticket create, ninja ticket search, ticket
  status ninja, or ninja service ticket.
---

# NinjaOne Ticket Management

## Overview

NinjaOne includes a built-in ticketing system that integrates with device monitoring. Tickets can be manually created or auto-generated from alerts, providing a complete service desk solution.

## Anti-triggers

- **The MSP's real service desk** — most MSPs running NinjaOne keep their
  ticket queue in a PSA and use NinjaOne ticketing only for
  monitoring-generated work, or not at all. If the ticket has a contract,
  an SLA, and billable time against it, it is in the PSA: use
  `autotask-tickets`, `connectwise-psa-tickets`, `halopsa-tickets`,
  `syncro-tickets`, or `atera-tickets`. Check which system holds the queue
  before assuming this one.
- **How to prioritise, categorise, and route an incoming ticket** — this
  skill covers the NinjaOne ticket API; the triage practice itself is
  vendor-agnostic, so use `shared-skills-ticket-triage`.
- **Pulling device and alert context onto a ticket** — that is a
  cross-tool lookup; use `shared-skills-incident-correlation`.
- **The alert that would become a ticket** — use `ninjaone-alerts`.

## API Endpoints

### Create Ticket

```http
POST /api/v2/ticketing/ticket
Content-Type: application/json
Authorization: Bearer {token}
```

```json
{
  "clientId": 123,
  "subject": "Server disk space critical",
  "description": "C: drive on SERVER-01 is at 95% capacity",
  "priority": "HIGH",
  "status": "OPEN",
  "assignedTechnicianId": 456,
  "deviceId": 789,
  "tags": ["disk", "server", "critical"]
}
```

### Update Ticket

```http
PUT /api/v2/ticketing/ticket/{ticketId}
Content-Type: application/json
```

```json
{
  "status": "IN_PROGRESS",
  "priority": "MEDIUM",
  "assignedTechnicianId": 456
}
```

### Get Ticket Log Entries

```http
GET /api/v2/ticketing/ticket/{ticketId}/log-entry
```

Returns all log entries (comments, status changes, time entries) for a ticket.

## Ticket Fields

### Core Fields

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `id` | integer | System | Auto-generated ID |
| `subject` | string | Yes | Brief issue summary |
| `description` | text | No | Detailed description |
| `clientId` | integer | Yes | Organization ID |
| `deviceId` | integer | No | Related device |

### Status Fields

| Field | Type | Description |
|-------|------|-------------|
| `status` | string | Current ticket status |
| `priority` | string | Urgency level |
| `assignedTechnicianId` | integer | Assigned tech |

### Metadata

| Field | Type | Description |
|-------|------|-------------|
| `tags` | array | Categorization tags |
| `createTime` | datetime | Creation timestamp |
| `updateTime` | datetime | Last modified |

## Status Values

| Status | Description |
|--------|-------------|
| `OPEN` | New ticket, awaiting triage |
| `IN_PROGRESS` | Actively being worked |
| `WAITING` | Waiting for customer/vendor |
| `ON_HOLD` | Paused pending action |
| `RESOLVED` | Issue resolved |
| `CLOSED` | Ticket complete |

## Priority Levels

| Priority | Description | SLA Target |
|----------|-------------|------------|
| `CRITICAL` | Business down | Immediate |
| `HIGH` | Major impact | 1 hour |
| `MEDIUM` | Moderate impact | 4 hours |
| `LOW` | Minor issue | 24 hours |
| `NONE` | No urgency | Best effort |

## Log Entries

Log entries track all ticket activity:

### Entry Types

| Type | Description |
|------|-------------|
| `COMMENT` | Public or private comment |
| `STATUS_CHANGE` | Status transition |
| `ASSIGNMENT` | Technician assignment change |
| `TIME_ENTRY` | Logged work time |

### Log Entry Structure

```json
{
  "id": 123,
  "type": "COMMENT",
  "content": "Investigated and found corrupted index",
  "public": false,
  "createdBy": {
    "id": 456,
    "name": "John Tech"
  },
  "createTime": "2024-02-15T14:30:00Z"
}
```

## Common Workflows

### Create Ticket from Alert

1. Receive alert notification
2. Get device and organization context
3. Create ticket with device linked
4. Add alert details to description
5. Set priority based on alert severity
6. Assign to appropriate technician

### Ticket Resolution Flow

1. Update status to IN_PROGRESS
2. Add log entries documenting work
3. Log time entries for billing
4. Update status to RESOLVED
5. Add resolution notes
6. Close ticket

### Escalation Workflow

1. Review ticket age and SLA
2. Update priority if needed
3. Reassign to senior tech
4. Add escalation note
5. Notify stakeholders

## Integration with Devices

Link tickets to devices for context:

```json
{
  "subject": "Outlook crashes repeatedly",
  "deviceId": 12345,
  "description": "User reports Outlook crashes when opening attachments"
}
```

Benefits:
- Quick access to device details
- View device alerts in ticket context
- Run remote actions from ticket

## Tags for Categorization

```json
{
  "tags": [
    "email",
    "outlook",
    "crash",
    "user-reported"
  ]
}
```

Common tag patterns:
- Issue type: `hardware`, `software`, `network`
- Application: `outlook`, `office`, `vpn`
- Source: `user-reported`, `alert`, `scheduled`
- Priority override: `vip`, `urgent`

## Best Practices

1. **Use descriptive subjects** - Include who, what, where
2. **Log all work** - Essential for billing and knowledge
3. **Update status promptly** - Keeps queues accurate

## Error Handling

| Code | Description | Resolution |
|------|-------------|------------|
| 400 | Invalid request | Check required fields |
| 404 | Ticket not found | Verify ticket ID |
| 403 | Access denied | Check organization permissions |
| 422 | Validation error | Review field values |

## Related Skills

- [Devices](../devices/SKILL.md) - Device context
- [Alerts](../alerts/SKILL.md) - Alert-to-ticket flow
- [Organizations](../organizations/SKILL.md) - Client context
- [API Patterns](../api-patterns/SKILL.md) - Authentication

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…