NinjaOne management API

Management

OpenAPI Specification

ninjaone-management-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: NinjaOne Public API 2.0 Asset Tags management API
  description: NinjaOne Public API documentation.
  contact:
    email: api@ninjarmm.com
  version: 2.0.9-draft
security:
- oauth2:
  - monitoring
  - management
  - control
- sessionKey:
  - monitoring
  - management
  - control
tags:
- name: management
  description: Management
paths:
  /v2/contacts:
    post:
      tags:
      - management
      summary: Create a contact
      description: Create a new contact
      operationId: createContact
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateContactRequest'
      responses:
        '200':
          description: Contact created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '400':
          description: Bad request
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
  /v2/contact/{id}:
    delete:
      tags:
      - management
      summary: Delete a contact
      description: Delete a contact by their ID
      operationId: deleteContact
      parameters:
      - name: id
        in: path
        description: Contact identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: Contact deleted
        '400':
          description: Several possible validation errors
        '404':
          description: Contact not found
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
    patch:
      tags:
      - management
      summary: Update a contact
      description: Update a contact by their ID
      operationId: updateContact
      parameters:
      - name: id
        in: path
        description: Contact identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        description: Contact request payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ContactPatchRequest'
      responses:
        '200':
          description: Contact updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Contact'
        '404':
          description: Contact not found
        '400':
          description: Bad request
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
  /v2/policies/{policy_id}/condition/custom-fields:
    get:
      tags:
      - management
      summary: Get custom fields policy conditions
      description: Get all custom fields policy conditions for specified policy
      operationId: getCustomFieldsPolicyConditions
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CustomFieldPolicyConditionResponse'
    post:
      tags:
      - management
      summary: Create custom fields policy condition
      description: Creates custom fields policy condition for specified policy
      operationId: createCustomFieldsPolicyCondition
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CustomFieldsPolicyConditionCreateRequest'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldPolicyConditionResponse'
  /v2/policies/{policy_id}/condition/windows-event:
    get:
      tags:
      - management
      summary: Get windows event conditions
      description: Get all windows event conditions for specified policy
      operationId: getWindowsEventPolicyConditions
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/WindowsEventPolicyConditionResponse'
    post:
      tags:
      - management
      summary: Create windows event condition
      description: Creates windows event condition for specified policy
      operationId: createWindowsEventPolicyCondition
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WindowsEventPolicyConditionCreateRequest'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WindowsEventPolicyConditionResponse'
  /v2/policies/{policy_id}/condition/{condition_id}:
    delete:
      tags:
      - management
      summary: Delete policy condition
      description: Deletes specified policy condition from specified agent policy
      operationId: deletePolicyCondition
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: condition_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/policies/{policy_id}/condition/custom-fields/{condition_id}:
    get:
      tags:
      - management
      summary: Get custom fields policy condition
      description: Get specified custom fields condition for specified policy
      operationId: getCustomFieldsPolicyCondition
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: condition_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomFieldPolicyConditionResponse'
  /v2/policies/{policy_id}/condition/windows-event/{condition_id}:
    get:
      tags:
      - management
      summary: Get windows event condition
      description: Get specified windows event condition for specified policy
      operationId: getWindowsEventPolicyCondition
      parameters:
      - name: policy_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: condition_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WindowsEventPolicyConditionResponse'
  /v2/organizations:
    post:
      tags:
      - management
      summary: Create new organization
      description: 'Creates new organization with optional list of locations and policy mappings.

        Template organization ID can be specified to copy various settings'
      operationId: createOrganization
      parameters:
      - name: templateOrganizationId
        in: query
        schema:
          type: integer
          description: Model/Template organization to copy settings from
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationWithLocationsAndPolicyAssignmentsModel'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrganizationDetailed'
  /v2/devices/approval/{mode}:
    post:
      tags:
      - management
      summary: Approve/Reject devices
      description: Approve or reject devices that are waiting for approval
      operationId: nodeApprovalOperation
      parameters:
      - name: mode
        in: path
        required: true
        schema:
          type: string
          description: Approval action to perform
          enum:
          - APPROVE
          - REJECT
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceIDList'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/alert/{uid}:
    delete:
      tags:
      - management
      summary: Reset alert/condition
      description: Resets alert/condition by UID
      operationId: resetAlert
      parameters:
      - name: uid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/alert/{uid}/reset:
    post:
      tags:
      - management
      summary: Reset alert/condition and provide custom data for activity
      description: Resets alert/condition by UID
      operationId: resetAlertSetActivityData
      parameters:
      - name: uid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      requestBody:
        content:
          application/json:
            schema:
              type: object
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/device/{id}/maintenance:
    put:
      tags:
      - management
      summary: Schedule maintenance
      description: Schedule maintenance window for device
      operationId: updateDeviceMaintenance
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MaintenanceSettings'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
    delete:
      tags:
      - management
      summary: Cancel maintenance
      description: Cancel pending or active maintenance for device
      operationId: cancelDeviceMaintenance
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v2/device/{id}/windows-service/{serviceId}/control:
    post:
      tags:
      - management
      summary: Windows service control
      description: Start/Stop/Restart Windows Service on a device
      operationId: controlWindowsService
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: serviceId
        in: path
        description: Service identifier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WindowsServiceControlRequest'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/device/{id}:
    patch:
      tags:
      - management
      summary: Update device information
      description: Change device friendly name, user data, etc.
      operationId: updateDevice
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeviceMutableProperties'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
      security:
      - oauth2:
        - management
  /v2/device/{id}/dashboard-url:
    get:
      tags:
      - management
      summary: Device link
      description: Returns link to device
      operationId: getDeviceLink
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: redirect
        in: query
        description: Return redirect response
        schema:
          type: boolean
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceLink'
  /v2/device/{id}/policy/overrides:
    delete:
      tags:
      - management
      summary: Reset device policy overrides
      description: Submit request to remove device policy overrides
      operationId: resetPolicyOverrides
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        default:
          description: default response
          content:
            application/json: {}
  /v2/device/{id}/reboot/{mode}:
    post:
      tags:
      - management
      summary: Reboot device
      description: Sends a command to restart the computer
      operationId: rebootDevices
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: mode
        in: path
        description: Reboot mode
        required: true
        schema:
          type: string
          enum:
          - NORMAL
          - FORCED
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RebootRequest'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/device/{id}/owner:
    delete:
      tags:
      - management
      summary: Remove device owner
      description: Removes the owner of the device.
      operationId: removeDeviceOwner
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        default:
          description: default response
          content:
            '*/*': {}
      security:
      - oauth2:
        - management
  /v2/device/{id}/scripting/options:
    get:
      tags:
      - management
      summary: Device scripting options
      description: Returns scripting options (built-in actions, custom scripts) available for device
      operationId: requestScriptingOptions
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: lang
        in: query
        description: Language
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceScriptingOptions'
  /v2/device/{id}/script/run:
    post:
      tags:
      - management
      summary: Run script or built-in action
      description: Run script or built-in action on a device
      operationId: runScriptOnDevice
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RunScriptRequest'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/device/{id}/owner/{ownerUid}:
    post:
      tags:
      - management
      summary: Set device owner
      description: Sets the owner of the device.
      operationId: setDeviceOwner
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: ownerUid
        in: path
        description: Device owner identifier
        required: true
        schema:
          type: string
          format: uuid
      responses:
        default:
          description: default response
          content:
            '*/*': {}
      security:
      - oauth2:
        - management
  /v2/device/{id}/windows-service/{serviceId}/configure:
    post:
      tags:
      - management
      summary: Modify Windows Service configuration
      description: Configures Windows Service startup settings
      operationId: setWindowsServiceConfiguration
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      - name: serviceId
        in: path
        description: Service identifier
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WindowsServiceConfiguration'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/device/{id}/patch/os/apply:
    post:
      tags:
      - management
      summary: Run OS patch apply
      description: Submit a job to start a device OS patch apply
      operationId: submitOSPatchApply
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: No Content
        '400':
          description: Device is not applicable for os apply.
  /v2/device/{id}/patch/os/scan:
    post:
      tags:
      - management
      summary: Run OS patch scan
      description: Submit a job to start a device OS patch scan
      operationId: submitOSPatchScan
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: No Content
        '400':
          description: Device is not applicable for os scan.
  /v2/device/{id}/patch/software/apply:
    post:
      tags:
      - management
      summary: Run Software patch apply
      description: Submit a job to start a device software patch apply
      operationId: submitSoftwarePatchApply
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: No Content
        '400':
          description: Device is not applicable for software apply.
  /v2/device/{id}/patch/software/scan:
    post:
      tags:
      - management
      summary: Run Software patch scan
      description: Submit a job to start a device software patch scan
      operationId: submitSoftwarePatchScan
      parameters:
      - name: id
        in: path
        description: Device identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: No Content
        '400':
          description: Device is not applicable for software scan.
  /v2/organization/{id}/locations:
    post:
      tags:
      - management
      summary: Add new location to organization
      description: Creates new location for organization
      operationId: createLocationForOrganization
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationModel'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
  /v2/organization/generate-installer:
    post:
      tags:
      - management
      summary: Generate installer
      description: Generates and returns URL for installer with specified settings
      operationId: getInstaller
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateInstallerRequestDto'
            examples:
              example with nodeRole param auto:
                description: example with nodeRole param auto
                value:
                  organizationId: 1
                  locationId: 1
                  installerType: WINDOWS_MSI
                  content:
                    nodeRoleId: auto
              example with nodeRole param integer:
                description: example with nodeRole param integer
                value:
                  organizationId: 1
                  locationId: 1
                  installerType: WINDOWS_MSI
                  content:
                    nodeRoleId: '201'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
  /v2/organization/{id}/location/{location_id}/installer/{installer_type}:
    get:
      tags:
      - management
      summary: Generate installer
      description: Generates and returns URL for installer for specified organization/location
      operationId: getInstallerForLocation
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: location_id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: installer_type
        in: path
        required: true
        schema:
          type: string
          enum:
          - WINDOWS_MSI
          - MAC_DMG
          - MAC_PKG
          - LINUX_DEB
          - LINUX_RPM
          - LINUX_ARM64_DEB
          - LINUX_ARMV7A_DEB
          - LINUX_ARM64_RPM
          - LINUX_ARMV7A_RPM
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Link'
  /v2/organization/{id}:
    patch:
      tags:
      - management
      summary: Update organization
      description: Change organization name, description and policy mappings
      operationId: updateOrganization
      parameters:
      - name: id
        in: path
        description: Organization identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationModel'
      responses:
        default:
          description: default response
          content:
            '*/*': {}
  /v2/organization/{id}/locations/{locationId}:
    patch:
      tags:
      - management
      summary: Update location
      description: Change location name, address, description, custom data
      operationId: updateLocation
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      - name: locationId
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LocationModel'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Location'
  /v2/organization/{id}/policies:
    put:
      tags:
      - management
      summary: Change organization policy mappings
      description: Update policy assignment for node role(s). Returns list of affected device IDs
      operationId: updateNodeRolePolicyAssignmentForOrganization
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/NodeRolePolicyAssignment'
      responses:
        default:
          description: default response
          content:
            '*/*':
              schema:
                type: array
                items:
                  type: integer
                  format: int32
  /v2/policies:
    post:
      tags:
      - management
      summary: Creates new Policy
      description: Creates new policy using (New Root, Child, Copy)
      operationId: createPolicy
      parameters:
      - name: mode
        in: query
        description: Policy creation mode
        schema:
          type: string
          enum:
          - NEW
          - CHILD
          - COPY
      - name: templatePolicyId
        in: query
        description: Template Policy identifier
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PolicyInfo'
      responses:
        default:
          description: default response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Policy'
  /v2/user/end-users:
    post:
      tags:
      - management
      summary: Create end user
      description: Create an end user
      operationId: createEndUser
      parameters:
      - name: sendInvitation
        in: query
        description: Whether to send invitation to end user during creation
        schema:
          type: boolean
          default: false
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateEndUserRequest'
      responses:
        '200':
          description: Created end user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndUser'
        '400':
          description: Several possible validation errors
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
  /v2/user/end-user/{id}:
    delete:
      tags:
      - management
      summary: Delete end user
      description: Delete an end user
      operationId: deleteEndUser
      parameters:
      - name: id
        in: path
        description: End user identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: Deleted end user
        '400':
          description: Several possible validation errors
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: User not found
    patch:
      tags:
      - management
      summary: Update a specific end user
      description: Update a specific end user by their ID
      operationId: patchEndUser
      parameters:
      - name: id
        in: path
        description: End user identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EndUserPatchRequest'
      responses:
        '200':
          description: End user updated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EndUser'
        '404':
          description: User not found
        '400':
          description: Bad request or invalid user type
        '403':
          description: Forbidden
        '401':
          description: Unauthorized
  /v2/user/technicians:
    post:
      tags:
      - management
      summary: Create a technician
      description: Create a new technician
      operationId: createTechnician
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTechnicianRequest'
      responses:
        '200':
          description: Created technician
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Technician'
        '400':
          description: Several possible validation errors
        '401':
          description: Unauthorized
        '403':
          description: Must be a System Administrator
  /v2/user/technician/{id}:
    delete:
      tags:
      - management
      summary: Delete a technician
      description: Delete a technician by their ID
      operationId: deleteTechnician
      parameters:
      - name: id
        in: path
        description: Technician identifier
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '204':
          description: Deleted technician
        '400':
          description: Several possible validation errors
        '404':
          description: Technician was not found
        '401':
          description: Unauthorized
        '403':
          description: Must be a System Administrator
    patch:
      tags:
      - management
      summary: Update a technician
      description: Update technician by their ID
      operationId: updateTechnician
      parameters:
      - name: id
        in: path
        description: Technician identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTechnicianRequest'
      responses:
        '200':
          description: Updated technician
        '400':
          description: Several possible validation errors
        '404':
          description: Technician was not found
        '401':
          description: Unauthorized
        '403':
          description: Must be a System Administrator
  /v2/user/role/{roleId}/add-members:
    patch:
      tags:
      - management
      summary: Add user role members
      description: Add members to user role
      operationId: addUserRoleMembers
      parameters:
      - name: roleId
        in: path
        description: Role identifier
        required: true
        schema:
          type: integer
          format: int32
      requestBody:
        content:
          '*/*':
            schema:
              uniqueItems: true
              type: array
              items:
                type: integer
                format: int32
      responses:
        '200':
          description: User role
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UserRole'
        '400':
          description: Several possible validation errors
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Role or members not 

# --- truncated at 32 KB (71 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/ninjaone/refs/heads/main/openapi/ninjaone-management-api-openapi.yml