Receber por email
← Voltar para o catálogo

HaloPSA Assets

Use this skill when working with HaloPSA assets - tracking devices, managing configuration items, hardware lifecycle, and asset relationships. Covers asset fields, types, statuses, links to clients/sites, and RMM integration. Essential for MSP asset management and CMDB operations.

31estrelas
Atualizado há 4 meses

Ver no GitHub ↗ Licença: Apache-2.0

Como adicionar

/plugin marketplace add wyre-technology/msp-claude-plugins

O comando exato pode variar conforme o repositório. Confira o README no GitHub.

Para o autor da skill

Cole no README do seu repo

Mostra que sua skill está catalogada na Skillteca, gera backlink e tráfego rastreável.

[![Skillteca](https://www.skillteca.com.br/api/badge/halopsa-assets/svg)](https://www.skillteca.com.br/skills/halopsa-assets)

Skills relacionadas

Ver todas de Documentos →

Alerta por categoria

Receba novas skills de Documentos toda segunda

1 email curto, só com as skills novas de Documentos. 4 minutos de leitura, sem spam, cancela com 1 clique.

Você confirma o email no primeiro envio. Sem spam. Cancela com 1 clique.

Ler descrição completa

HaloPSA Asset Management

Overview

Assets (also called Configuration Items or CIs) in HaloPSA represent managed devices, software, and other trackable items. Effective asset management is crucial for MSPs to track what's deployed at client sites, manage hardware lifecycle, and link service tickets to affected equipment.

Key Concepts

Asset

The primary entity representing a managed device or configuration item.

| Field | Type | Required | Description | |-------|------|----------|-------------| | id | int | System | Unique identifier | | inventory_number | string | No | Internal asset tag | | client_id | int | Yes | Associated client | | site_id | int | No | Physical location | | user_id | int | No | Assigned user | | devicetype_id | int | No | Asset type category | | status_id | int | No | Asset status |

Asset Identification Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | devicename | string(255) | Yes | Device hostname/name | | serialnumber | string | No | Manufacturer serial | | assettag | string | No | Company asset tag | | barcode | string | No | Barcode identifier | | macaddress | string | No | Network MAC address |

Asset Details

| Field | Type | Required | Description | |-------|------|----------|-------------| | manufacturer | string | No | Device manufacturer | | model | string | No | Device model | | operatingsystem | string | No | OS name/version | | operatingsystemversion | string | No | OS detailed version | | ipaddress | string | No | IP address |

Asset Lifecycle Fields

| Field | Type | Required | Description | |-------|------|----------|-------------| | purchasedate | date | No | Date acquired | | purchaseprice | decimal | No | Purchase cost | | warrantyexpires | date | No | Warranty end date | | lastauditdate | datetime | No | Last RMM sync | | inactive | bool | No | Active status |

Contract & Billing

| Field | Type | Required | Description | |-------|------|----------|-------------| | contract_id | int | No | Associated contract | | supplier_id | int | No | Vendor/supplier | | notes | text | No | Asset notes |

Asset Types

Common asset types in HaloPSA:

| Type ID | Name | Examples | |---------|------|----------| | 1 | Workstation | Desktop, laptop | | 2 | Server | Physical/virtual server | | 3 | Network Device | Router, switch, firewall | | 4 | Printer | Network/local printer | | 5 | Mobile Device | Phone, tablet | | 6 | Software | License, subscription | | 7 | Other | Miscellaneous |

Note: Asset types are configurable per instance. Query /api/AssetType for your values.

Asset Status

| Status ID | Name | Description | |-----------|------|-------------| | 1 | Active | In production use | | 2 | Spare | Available backup | | 3 | In Repair | Under maintenance | | 4 | Retired | End of life | | 5 | On Order | Pending delivery | | 6 | Lost/Stolen | Missing |

Note: Status IDs are configurable per instance. Query /api/AssetStatus for your values.

API Patterns

Creating an Asset

POST /api/Asset
Authorization: Bearer {token}
Content-Type: application/json
[
  {
    "devicename": "ACME-WS-001",
    "client_id": 123,
    "site_id": 456,
    "user_id": 789,
    "devicetype_id": 1,
    "status_id": 1,
    "manufacturer": "Dell",
    "model": "OptiPlex 7090",
    "serialnumber": "ABC123XYZ",
    "assettag": "ACME-001",
    "operatingsystem": "Windows 11 Pro",
    "operatingsystemversion": "22H2",
    "ipaddress": "192.168.1.100",
    "macaddress": "00:1A:2B:3C:4D:5E",
    "purchasedate": "2024-01-15",
    "purchaseprice": 1299.99,
    "warrantyexpires": "2027-01-15"
  }
]

Response

{
  "assets": [
    {
      "id": 5001,
      "devicename": "ACME-WS-001",
      "client_id": 123,
      "client_name": "Acme Corporation",
      "site_name": "Acme HQ",
      "status_id": 1,
      "status_name": "Active"
    }
  ]
}

Searching Assets

By client:

GET /api/Asset?client_id=123

By site:

GET /api/Asset?site_id=456

By type:

GET /api/Asset?devicetype_id=1

Active assets only:

GET /api/Asset?inactive=false

Search by name:

GET /api/Asset?search=ACME-WS

Warranty expiring soon:

GET /api/Asset?warrantyexpires_before=2024-03-31

Getting a Single Asset

GET /api/Asset/5001

With related data:

GET /api/Asset/5001?includedetails=true

Updating an Asset

POST /api/Asset
Authorization: Bearer {token}
Content-Type: application/json
[
  {
    "id": 5001,
    "status_id": 3,
    "notes": "Sent to vendor for motherboard repair"
  }
]

Bulk Asset Update

[
  { "id": 5001, "status_id": 1 },
  { "id": 5002, "status_id": 1 },
  { "id": 5003, "status_id": 4, "inactive": true }
]

Asset Relationships

Linking Asset to Ticket

When creating or updating a ticket, reference the asset:

[
  {
    "summary": "Workstation not booting",
    "client_id": 123,
    "asset_id": 5001,
    "tickettype_id": 1,
    "status_id": 1
  }
]

Linking Assets Together

Parent-child relationships (e.g., server and its VMs):

[
  {
    "id": 5010,
    "parent_id": 5009,
    "notes": "VM hosted on ACME-SRV-001"
  }
]

Asset History

Track changes via the audit log or custom fields.

RMM Integration

HaloPSA integrates with RMM tools to auto-sync assets.

Auto-Sync Fields

When integrated with an RMM, these fields typically auto-populate:

  • devicename
  • operatingsystem
  • operatingsystemversion
  • ipaddress
  • macaddress
  • lastauditdate

RMM Identifier

| Field | Description | |-------|-------------| | ncentral_device_id | N-central device ID | | datto_device_id | Datto RMM device ID | | connectwise_device_id | Automate device ID |

Matching Assets

async function matchOrCreateAsset(rmmDevice) {
  // 1. Try to match by RMM ID
  let asset = await findAssetByRmmId(rmmDevice.id);

  if (!asset) {
    // 2. Try to match by serial number
    asset = await findAssetBySerial(rmmDevice.serialNumber);
  }

  if (!asset) {
    // 3. Try to match by hostname + client
    asset = await findAssetByHostname(
      rmmDevice.hostname,
      rmmDevice.clientId
    );
  }

  if (asset) {
    // Update existing
    return updateAsset(asset.id, rmmDevice);
  } else {
    // Create new
    return createAsset(rmmDevice);
  }
}

Common Workflows

Hardware Procurement

  1. Create asset as "On Order"

``json [{ "devicename": "New Laptop", "status_id": 5, "client_id": 123 }] ``

  1. Receive and configure
  2. Update with serial, asset tag
  3. Install software
  4. Update status to "Spare"
  1. Deploy to user
  2. Assign user_id and site_id
  3. Update status to "Active"
  4. Create deployment ticket

Hardware Refresh

  1. Identify aging assets

``http GET /api/Asset?purchasedate_before=2020-01-01&inactive=false ``

  1. Generate refresh report
  2. List assets over X years old
  3. Calculate replacement cost
  1. Plan replacement
  2. Order new equipment
  3. Schedule deployment tickets
  4. Update old assets to "Retired"

Warranty Management

  1. Find expiring warranties

``http GET /api/Asset?warrantyexpires_before=2024-06-30&warrantyexpires_after=2024-01-01 ``

  1. Generate renewal quotes
  2. Update warranty dates after renewal

Asset Audit

async function auditClientAssets(clientId) {
  const assets = await getClientAssets(clientId);
  const report = {
    total: assets.length,
    active: 0,
    noWarranty: [],
    missingSerial: [],
    oldOS: []
  };

  assets.forEach(asset => {
    if (!asset.inactive) report.active++;

    if (!asset.warrantyexpires || new Date(asset.warrantyexpires) < new Date()) {
      report.noWarranty.push(asset);
    }

    if (!asset.serial
Compartilhar X LinkedIn