From ninjaone-rmm
Manages NinjaOne organizations: creates, lists, configures locations, policy mappings, and node approvals for MSP client device containers.
npx claudepluginhub wyre-technology/msp-claude-plugins --plugin ninjaone-rmmThis skill uses the workspace's default tool permissions.
Organizations in NinjaOne represent your MSP clients. Each organization contains devices, locations, and has policy mappings that determine how devices are monitored and managed.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides agent creation for Claude Code plugins with file templates, frontmatter specs (name, description, model), triggering examples, system prompts, and best practices.
Organizations in NinjaOne represent your MSP clients. Each organization contains devices, locations, and has policy mappings that determine how devices are monitored and managed.
GET /api/v2/organizations
Authorization: Bearer {token}
Query parameters:
pageSize - Results per page (default: 50)after - Cursor for paginationResponse:
{
"organizations": [
{
"id": 1,
"name": "Acme Corporation",
"description": "Main client account",
"nodeApprovalMode": "AUTOMATIC",
"tags": ["premium", "24x7"],
"fields": {
"customField1": "value"
}
}
],
"pageInfo": {
"hasNextPage": true,
"endCursor": "abc123"
}
}
POST /api/v2/organizations
Content-Type: application/json
{
"name": "New Client Inc",
"description": "Description of the organization",
"nodeApprovalMode": "AUTOMATIC",
"tags": ["standard"],
"fields": {
"primaryContact": "John Smith",
"contractType": "Managed"
},
"locations": [
{
"name": "Headquarters",
"address": "123 Main St",
"description": "Main office location"
}
],
"policies": {
"nodeRoleId": 1,
"policyId": 100
}
}
| Mode | Description |
|---|---|
AUTOMATIC | New devices auto-approved |
MANUAL | Devices require manual approval |
REJECT | New devices rejected by default |
Locations represent physical sites within an organization.
| Field | Type | Description |
|---|---|---|
id | integer | Location identifier |
name | string | Location name |
address | string | Physical address |
description | string | Additional details |
Policies define monitoring and management behavior for devices.
{
"policies": [
{
"nodeRoleId": 1,
"policyId": 100
},
{
"nodeRoleId": 2,
"policyId": 101
}
]
}
| ID | Role |
|---|---|
| 1 | Windows Workstation |
| 2 | Windows Server |
| 3 | Mac |
| 4 | Linux Workstation |
| 5 | Linux Server |
Organizations can have custom fields for tracking business data:
{
"fields": {
"contractStart": "2024-01-01",
"contractEnd": "2024-12-31",
"primaryContact": "Jane Doe",
"billingCode": "ACME-001"
}
}
Tags help categorize and filter organizations:
{
"tags": ["premium", "healthcare", "24x7-support"]
}
Common tag patterns:
premium, standard, basichealthcare, finance, education24x7, business-hoursmanaged, break-fix, projectNinjaOne uses cursor-based pagination:
GET /api/v2/organizations?pageSize=50
GET /api/v2/organizations?pageSize=50&after=cursor123
Continue fetching while pageInfo.hasNextPage is true.
| Code | Description | Resolution |
|---|---|---|
| 400 | Invalid request | Check required fields |
| 409 | Name conflict | Organization name must be unique |
| 403 | Access denied | Check API permissions |