Claude Skill

Autotask Configuration Items

Autotask Configuration Item (CI) asset management: CI types and categories, lifecycle status codes, the CI field schema, related-item relationships, DNS records, notes, and contract/billing associations for MSP infrastructure tracking.

LLM Mart · 0 points · 0 views 0 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download wyre-ai-msp-claude-plugins-msp-claude-plugins_kaseya_autotask_skills_configuration-items-147da75.zip · 7 KB
Part of wyre-ai/msp-claude-plugins — 48 skills

Install

skills CLI npx skills add https://github.com/WYRE-AI/msp-claude-plugins/tree/main/msp-claude-plugins/kaseya/autotask/skills/configuration-items
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install wyre-ai-msp-claude-plugins@llmmart
Git git clone https://github.com/WYRE-AI/msp-claude-plugins.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole wyre-ai/msp-claude-plugins collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

Autotask Configuration Items Management

Overview

Configuration Items (CIs) are the backbone of MSP asset management in Autotask. CIs represent any trackable asset—servers, workstations, network devices, software licenses, domains, and more. Proper CI management enables warranty tracking, lifecycle planning, ticket context, and contract-based billing.

Anti-triggers

  • The same asset as documentation rather than as a billable record — IT Glue holds the documentation copy with its own type schema; use itglue-configurations.
  • Live endpoint state — online/offline, last check-in, agent health — a CI is a static PSA record that does not know whether the machine is running; use datto-rmm-devices, or kaseya-vsa-api-patterns for VSA-managed endpoints.
  • Installed software or hardware specs — CIs carry procurement and warranty fields, not collected inventory; use datto-rmm-audit.

CI Status Codes

Status ID Name Description Business Logic
1 Active Currently in use Standard operational state
2 Inactive Not currently in use May be spare/storage
3 Retired End of life Historical record only
4 Missing Cannot be located Requires investigation
5 On Order Procurement in progress Expected arrival tracking

CI Lifecycle Workflow

On Order (5) ────> Active (1) ────> Inactive (2) ────> Retired (3)
                      │                    ↑
                      └────────────────────┘
                      (temporary deactivation)

      Active (1) ────> Missing (4) ────> (investigation)
                            │
                            ├──> Active (1)    (found)
                            └──> Retired (3)   (write-off)

Configuration Item Field Reference

Key fields on most CIs: referenceTitle (name), companyID, configurationItemType, configurationItemCategoryID, serialNumber, installDate / purchaseDate / warrantyExpirationDate, and rmmDeviceID for RMM-synced assets.

See references/fields.md for the complete field reference (identification, hardware, network, lifecycle, contract/billing, RMM integration, and user-defined fields) plus the CI category hierarchy and DNS record fields.

CI Types

Configuration Item Types classify assets at the highest level:

Type ID Common Name Examples
1 Server Physical servers, VMs, cloud instances
2 Workstation Desktops, laptops
3 Network Device Routers, switches, firewalls, APs
4 Printer Network printers, MFPs
5 Mobile Device Phones, tablets
6 Software Licenses, subscriptions
7 Domain Domain names
8 SSL Certificate SSL/TLS certificates
9 Cloud Service SaaS subscriptions
10 Other Miscellaneous assets

Note: Actual type IDs vary by Autotask instance. Query /v1.0/ConfigurationItemTypes to get your instance's specific values.

POST /v1.0/ConfigurationItemTypes/query
Content-Type: application/json
{
  "filter": [
    {"field": "isActive", "op": "eq", "value": true}
  ]
}

CI Categories

Categories provide secondary classification within types — e.g. Server → Physical Server / Virtual Server / Cloud Server; Network Device → Firewall / Switch / Wireless. See references/fields.md for the full category hierarchy and examples.

Related Items (CI Relationships)

Related Items establish connections between Configuration Items — Parent/Child, Dependency, Peer, Backup, and Network relationships:

POST /v1.0/ConfigurationItemRelatedItems
Content-Type: application/json
{
  "configurationItemID": 12345,
  "relatedConfigurationItemID": 67890,
  "relationshipDescription": "Hosted virtual machines",
  "relationshipTypeID": 1
}

DNS Records

Track DNS records (A, AAAA, CNAME, MX, TXT, etc.) associated with domain CIs:

POST /v1.0/ConfigurationItemDnsRecords
Content-Type: application/json
{
  "configurationItemID": 12345,
  "recordType": "A",
  "hostname": "mail.acmecorp.com",
  "value": "192.168.1.100",
  "ttl": 3600
}

See references/fields.md for the DNS record field table and references/examples.md for query patterns (e.g. finding CIs with expiring SSL certificates).

CI Notes

Attach notes to Configuration Items for documentation:

POST /v1.0/ConfigurationItemNotes
Content-Type: application/json
{
  "configurationItemID": 12345,
  "title": "Firmware Update Log",
  "description": "Updated to firmware v2.1.4 on 2024-02-15. Resolved memory leak issue.",
  "noteType": 1
}

noteType: 1 = Internal (MSP only), 2 = External (client visible).

Billing Product Associations

Link CIs to billing products for recurring revenue via configurationItemID, productID, quantity, unitPrice, and effectiveDate. See references/api.md for a full example.

API Patterns

Creating a Configuration Item

POST /v1.0/ConfigurationItems
Content-Type: application/json

Server Example:

{
  "companyID": 12345,
  "referenceTitle": "ACME-DC-SQL01",
  "referenceNumber": "SN-ABC123456",
  "configurationItemType": 1,
  "configurationItemCategoryID": 3,
  "make": "Dell",
  "model": "PowerEdge R750",
  "serialNumber": "ABC123456789",
  "ipAddress": "192.168.1.50",
  "hostname": "SQL01.acmecorp.local",
  "installDate": "2024-01-15",
  "purchaseDate": "2024-01-01",
  "warrantyExpirationDate": "2027-01-01",
  "isActive": true
}

See references/api.md for the workstation create example, retire/update patterns, and additional query patterns (expiring warranties, servers by type/location, CIs without RMM integration).

Query Patterns

All active CIs for a company:

{
  "filter": [
    {"field": "companyID", "op": "eq", "value": 12345},
    {"field": "isActive", "op": "eq", "value": true}
  ],
  "includeFields": ["Company.companyName"]
}

Common Workflows

Asset Onboarding

  1. Create CI with basic info
  2. Set type and category for classification
  3. Link to company location
  4. Record warranty dates
  5. Create relationships (if part of infrastructure)
  6. Associate billing (if recurring)
  7. Sync with RMM for ongoing monitoring

Warranty Tracking Report

Query CIs where warrantyExpirationDate is not null and lte a future cutoff date, then sort by days remaining. See references/examples.md for the implementation.

Lifecycle Planning

Compare each CI's age (from purchaseDate) against standard replacement cycles (servers ~5yr, workstations ~4yr, network devices ~7yr, printers ~5yr) to flag REPLACE / PLAN_REPLACEMENT / HEALTHY. See references/examples.md for the implementation.

RMM Sync Verification

Query active servers/workstations for a company and split by whether rmmDeviceID is set, to find assets missing RMM coverage. See references/examples.md for the implementation.

Error Handling

Common API Errors

Code Message Resolution
400 CompanyID required All CIs must have a company
400 Invalid configuration type Query ConfigurationItemTypes first
400 Duplicate reference number Reference numbers must be unique
404 Configuration item not found Verify CI ID exists
409 Cannot delete active CI Retire or inactivate first

Validation Errors

Error Cause Fix
ReferenceTitle required Missing name Add referenceTitle
Invalid IP format Bad IP address Use valid IPv4/IPv6
Invalid date format Wrong date format Use YYYY-MM-DD
Category not valid for type Mismatched category Check type/category relationship

Best Practices

  1. Standardize naming - Use consistent referenceTitle format (e.g., COMPANY-TYPE-NAME)
  2. Track serial numbers - Enable warranty lookups and asset verification
  3. Set warranty dates - Proactive renewal planning
  4. Link to RMM - Enable automated inventory sync
  5. Document relationships - Map infrastructure dependencies
  6. Use categories - Enable meaningful reporting
  7. Track purchase dates - Lifecycle planning
  8. Associate contracts - Enable billing automation
  9. Maintain DNS records - Track hosted services

Related Skills

Files (msp-claude-plugins)
  • references
    • api.md 2 KB
      # Autotask Configuration Items — Extended API Reference
      
      ## Creating a Configuration Item
      
      **Workstation Example:**
      ```json
      {
        "companyID": 12345,
        "referenceTitle": "ACME-WS-JSmith",
        "configurationItemType": 2,
        "make": "Dell",
        "model": "Latitude 5540",
        "serialNumber": "XYZ789012345",
        "rmmDeviceAuditLastUser": "jsmith@acmecorp.com",
        "purchaseDate": "2024-02-01",
        "warrantyExpirationDate": "2027-02-01",
        "isActive": true
      }
      ```
      
      ## Query Patterns
      
      **CIs with expiring warranties (next 90 days):**
      ```json
      {
        "filter": [
          {"field": "warrantyExpirationDate", "op": "isNotNull"},
          {"field": "warrantyExpirationDate", "op": "lte", "value": "2024-05-15"},
          {"field": "warrantyExpirationDate", "op": "gte", "value": "2024-02-15"},
          {"field": "isActive", "op": "eq", "value": true}
        ]
      }
      ```
      
      **Servers by type and location:**
      ```json
      {
        "filter": [
          {"field": "configurationItemType", "op": "eq", "value": 1},
          {"field": "companyLocationID", "op": "eq", "value": 99}
        ]
      }
      ```
      
      **CIs without RMM integration:**
      ```json
      {
        "filter": [
          {"field": "rmmDeviceID", "op": "isNull"},
          {"field": "isActive", "op": "eq", "value": true},
          {"field": "configurationItemType", "op": "in", "value": [1, 2]}
        ]
      }
      ```
      
      ## Updating a Configuration Item
      
      ```http
      PATCH /v1.0/ConfigurationItems
      Content-Type: application/json
      ```
      
      **Retire an asset:**
      ```json
      {
        "id": 12345,
        "isActive": false,
        "retirementDate": "2024-02-15"
      }
      ```
      
      **Update warranty information:**
      ```json
      {
        "id": 12345,
        "warrantyExpirationDate": "2028-01-01"
      }
      ```
      
      ## Billing Product Associations
      
      ### Association Fields
      
      | Field | Type | Description |
      |-------|------|-------------|
      | `configurationItemID` | int | The CI |
      | `productID` | int | Billing product |
      | `quantity` | decimal | Quantity units |
      | `unitPrice` | decimal | Price per unit |
      | `effectiveDate` | date | Billing start date |
      
      ### Creating a Billing Association
      
      ```json
      {
        "configurationItemID": 12345,
        "productID": 999,
        "quantity": 1,
        "unitPrice": 49.99,
        "effectiveDate": "2024-02-01"
      }
      ```
      
    • examples.md 2.6 KB
      # Autotask Configuration Items — Code Examples
      
      ## Common DNS Tracking Patterns
      
      ```javascript
      // Track all DNS records for a domain CI
      const dnsRecords = await queryDnsRecords({
        filter: [
          {field: 'configurationItemID', op: 'eq', value: domainCiId}
        ]
      });
      
      // Find CIs with expiring SSL certs
      const expiringSSL = await queryCIs({
        filter: [
          {field: 'configurationItemType', op: 'eq', value: SSL_CERT_TYPE},
          {field: 'warrantyExpirationDate', op: 'lte', value: thirtyDaysFromNow}
        ]
      });
      ```
      
      ## Warranty Tracking Report
      
      ```javascript
      async function getExpiringWarranties(daysAhead = 90) {
        const futureDate = new Date();
        futureDate.setDate(futureDate.getDate() + daysAhead);
      
        const cis = await queryCIs({
          filter: [
            {field: 'warrantyExpirationDate', op: 'isNotNull'},
            {field: 'warrantyExpirationDate', op: 'lte', value: futureDate.toISOString().split('T')[0]},
            {field: 'isActive', op: 'eq', value: true}
          ],
          includeFields: ['Company.companyName']
        });
      
        return cis.map(ci => ({
          name: ci.referenceTitle,
          company: ci.companyName,
          expires: ci.warrantyExpirationDate,
          daysRemaining: Math.ceil(
            (new Date(ci.warrantyExpirationDate) - new Date()) / (1000 * 60 * 60 * 24)
          )
        })).sort((a, b) => a.daysRemaining - b.daysRemaining);
      }
      ```
      
      ## Lifecycle Planning
      
      ```javascript
      function calculateAssetAge(ci) {
        if (!ci.purchaseDate) return null;
      
        const purchase = new Date(ci.purchaseDate);
        const now = new Date();
        const ageYears = (now - purchase) / (1000 * 60 * 60 * 24 * 365);
      
        // Standard lifecycle recommendations
        const lifecycles = {
          server: 5,
          workstation: 4,
          networkDevice: 7,
          printer: 5
        };
      
        const expectedLife = lifecycles[ci.typeCategory] || 5;
        const remainingLife = expectedLife - ageYears;
      
        return {
          ageYears: Math.round(ageYears * 10) / 10,
          expectedLife,
          remainingLife: Math.round(remainingLife * 10) / 10,
          status: remainingLife <= 0 ? 'REPLACE' :
                  remainingLife <= 1 ? 'PLAN_REPLACEMENT' :
                  'HEALTHY'
        };
      }
      ```
      
      ## RMM Sync Verification
      
      ```javascript
      async function findUnmatchedAssets(companyId) {
        const cis = await queryCIs({
          filter: [
            {field: 'companyID', op: 'eq', value: companyId},
            {field: 'isActive', op: 'eq', value: true},
            {field: 'configurationItemType', op: 'in', value: [1, 2]} // Servers, workstations
          ]
        });
      
        return {
          withRMM: cis.filter(ci => ci.rmmDeviceID),
          withoutRMM: cis.filter(ci => !ci.rmmDeviceID),
          coverage: `${Math.round((cis.filter(ci => ci.rmmDeviceID).length / cis.length) * 100)}%`
        };
      }
      ```
      
    • fields.md 4.2 KB
      # Autotask Configuration Items — Field Reference
      
      ## Core Identification Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `id` | int | System | Auto-generated unique identifier |
      | `referenceTitle` | string(100) | Yes | Primary name/identifier |
      | `referenceNumber` | string(50) | No | Serial number or reference |
      | `companyID` | int | Yes | Owner company |
      | `companyLocationID` | int | No | Location within company |
      | `configurationItemType` | int | Yes | Type classification |
      | `configurationItemCategoryID` | int | No | Category classification |
      
      ## Hardware Specification Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `productID` | int | No | Link to Autotask product |
      | `serialNumber` | string(100) | No | Manufacturer serial number |
      | `make` | string(50) | No | Manufacturer |
      | `model` | string(100) | No | Model name/number |
      
      ## Network Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `ipAddress` | string(50) | No | Primary IP address |
      | `macAddress` | string(50) | No | MAC address |
      | `hostname` | string(100) | No | Network hostname |
      
      ## Lifecycle Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `isActive` | boolean | System | Active status flag |
      | `installDate` | date | No | When installed/deployed |
      | `purchaseDate` | date | No | When purchased |
      | `warrantyExpirationDate` | date | No | Warranty end date |
      | `endOfLifeDate` | date | No | EOL date from manufacturer |
      | `retirementDate` | date | No | When retired from service |
      | `lastPhysicalLocationDate` | date | No | Last physical audit |
      
      ## Contract & Billing Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `contractID` | int | No | Associated contract |
      | `contractServiceID` | int | No | Service on contract |
      | `contractServiceBundleID` | int | No | Service bundle |
      | `monthlyUnitCost` | decimal | No | Monthly recurring cost |
      | `setupFee` | decimal | No | One-time setup fee |
      | `hourlyRate` | decimal | No | Hourly rate for T&M work |
      
      ## RMM Integration Fields
      
      | Field | Type | Required | Description |
      |-------|------|----------|-------------|
      | `rmmDeviceID` | int | No | RMM platform device ID |
      | `rmmDeviceUID` | string | No | RMM unique identifier |
      | `rmmDeviceAuditID` | int | No | RMM audit record ID |
      | `rmmDeviceAuditLastUser` | string | No | Last logged-in user from RMM |
      | `rmmDeviceAuditOperatingSystem` | string | No | OS from RMM audit |
      | `rmmDeviceAuditDeviceNetworkAddress` | string | No | IP from RMM |
      
      ## User-Defined Fields
      
      CIs support custom user-defined fields (UDFs) for organization-specific tracking:
      - Asset tags
      - Cost centers
      - Business criticality
      - Compliance tags
      - Custom lifecycle flags
      
      ## CI Categories
      
      ### Category Examples
      
      | Category Examples | Parent Type | Description |
      |-------------------|-------------|-------------|
      | Physical Server | Server | On-premises physical |
      | Virtual Server | Server | VMware, Hyper-V |
      | Cloud Server | Server | AWS, Azure, GCP |
      | Windows Workstation | Workstation | Windows PCs |
      | Mac Workstation | Workstation | Apple devices |
      | Firewall | Network Device | Security appliances |
      | Managed Switch | Network Device | L2/L3 switches |
      | Wireless AP | Network Device | Access points |
      
      ### Category Hierarchy
      
      ```
      Type: Server
      ├── Category: Physical Server
      │   ├── Rack Mount
      │   └── Tower
      ├── Category: Virtual Server
      │   ├── VMware
      │   └── Hyper-V
      └── Category: Cloud Server
          ├── AWS EC2
          ├── Azure VM
          └── GCP Compute
      
      Type: Network Device
      ├── Category: Firewall
      │   ├── Hardware Firewall
      │   └── Virtual Firewall
      ├── Category: Switch
      │   ├── Core Switch
      │   └── Access Switch
      └── Category: Wireless
          ├── Access Point
          └── Controller
      ```
      
      ## DNS Record Fields
      
      | Field | Type | Description |
      |-------|------|-------------|
      | `configurationItemID` | int | Parent CI |
      | `recordType` | string | A, AAAA, CNAME, MX, TXT, etc. |
      | `hostname` | string | Record hostname |
      | `value` | string | Record value |
      | `ttl` | int | Time to live |
      | `priority` | int | Priority (for MX) |
      
  • SKILL.md 9.6 KB
    ---
    name: "Autotask Configuration Items"
    description: >
      Autotask Configuration Item (CI) asset management: CI types and
      categories, lifecycle status codes, the CI field schema, related-item
      relationships, DNS records, notes, and contract/billing associations for
      MSP infrastructure tracking.
    when_to_use: >-
      When working with asset management, inventory tracking, warranty monitoring, lifecycle
      management, and relationship mapping in Autotask Configuration Items (CIs). Use when: autotask
      configuration item, autotask asset, autotask ci, configuration item, asset management, device
      inventory, warranty tracking, asset lifecycle, network device, server inventory, workstation
      tracking, ssl certificate tracking, or dns management.
    ---
    
    # Autotask Configuration Items Management
    
    ## Overview
    
    Configuration Items (CIs) are the backbone of MSP asset management in Autotask. CIs represent any trackable asset—servers, workstations, network devices, software licenses, domains, and more. Proper CI management enables warranty tracking, lifecycle planning, ticket context, and contract-based billing.
    
    ## Anti-triggers
    
    - **The same asset as documentation rather than as a billable record**
      — IT Glue holds the documentation copy with its own type schema; use
      `itglue-configurations`.
    - **Live endpoint state — online/offline, last check-in, agent health**
      — a CI is a static PSA record that does not know whether the machine
      is running; use `datto-rmm-devices`, or `kaseya-vsa-api-patterns` for
      VSA-managed endpoints.
    - **Installed software or hardware specs** — CIs carry procurement and
      warranty fields, not collected inventory; use `datto-rmm-audit`.
    
    ## CI Status Codes
    
    | Status ID | Name | Description | Business Logic |
    |-----------|------|-------------|----------------|
    | **1** | Active | Currently in use | Standard operational state |
    | **2** | Inactive | Not currently in use | May be spare/storage |
    | **3** | Retired | End of life | Historical record only |
    | **4** | Missing | Cannot be located | Requires investigation |
    | **5** | On Order | Procurement in progress | Expected arrival tracking |
    
    ### CI Lifecycle Workflow
    
    ```
    On Order (5) ────> Active (1) ────> Inactive (2) ────> Retired (3)
                          │                    ↑
                          └────────────────────┘
                          (temporary deactivation)
    
          Active (1) ────> Missing (4) ────> (investigation)
                                │
                                ├──> Active (1)    (found)
                                └──> Retired (3)   (write-off)
    ```
    
    ## Configuration Item Field Reference
    
    Key fields on most CIs: `referenceTitle` (name), `companyID`, `configurationItemType`, `configurationItemCategoryID`, `serialNumber`, `installDate` / `purchaseDate` / `warrantyExpirationDate`, and `rmmDeviceID` for RMM-synced assets.
    
    See [references/fields.md](references/fields.md) for the complete field reference (identification, hardware, network, lifecycle, contract/billing, RMM integration, and user-defined fields) plus the CI category hierarchy and DNS record fields.
    
    ## CI Types
    
    Configuration Item Types classify assets at the highest level:
    
    | Type ID | Common Name | Examples |
    |---------|-------------|----------|
    | 1 | Server | Physical servers, VMs, cloud instances |
    | 2 | Workstation | Desktops, laptops |
    | 3 | Network Device | Routers, switches, firewalls, APs |
    | 4 | Printer | Network printers, MFPs |
    | 5 | Mobile Device | Phones, tablets |
    | 6 | Software | Licenses, subscriptions |
    | 7 | Domain | Domain names |
    | 8 | SSL Certificate | SSL/TLS certificates |
    | 9 | Cloud Service | SaaS subscriptions |
    | 10 | Other | Miscellaneous assets |
    
    **Note:** Actual type IDs vary by Autotask instance. Query `/v1.0/ConfigurationItemTypes` to get your instance's specific values.
    
    ```http
    POST /v1.0/ConfigurationItemTypes/query
    Content-Type: application/json
    ```
    ```json
    {
      "filter": [
        {"field": "isActive", "op": "eq", "value": true}
      ]
    }
    ```
    
    ## CI Categories
    
    Categories provide secondary classification within types — e.g. Server → Physical Server / Virtual Server / Cloud Server; Network Device → Firewall / Switch / Wireless. See [references/fields.md](references/fields.md) for the full category hierarchy and examples.
    
    ## Related Items (CI Relationships)
    
    Related Items establish connections between Configuration Items — Parent/Child, Dependency, Peer, Backup, and Network relationships:
    
    ```http
    POST /v1.0/ConfigurationItemRelatedItems
    Content-Type: application/json
    ```
    ```json
    {
      "configurationItemID": 12345,
      "relatedConfigurationItemID": 67890,
      "relationshipDescription": "Hosted virtual machines",
      "relationshipTypeID": 1
    }
    ```
    
    ## DNS Records
    
    Track DNS records (A, AAAA, CNAME, MX, TXT, etc.) associated with domain CIs:
    
    ```http
    POST /v1.0/ConfigurationItemDnsRecords
    Content-Type: application/json
    ```
    ```json
    {
      "configurationItemID": 12345,
      "recordType": "A",
      "hostname": "mail.acmecorp.com",
      "value": "192.168.1.100",
      "ttl": 3600
    }
    ```
    
    See [references/fields.md](references/fields.md) for the DNS record field table and [references/examples.md](references/examples.md) for query patterns (e.g. finding CIs with expiring SSL certificates).
    
    ## CI Notes
    
    Attach notes to Configuration Items for documentation:
    
    ```http
    POST /v1.0/ConfigurationItemNotes
    Content-Type: application/json
    ```
    ```json
    {
      "configurationItemID": 12345,
      "title": "Firmware Update Log",
      "description": "Updated to firmware v2.1.4 on 2024-02-15. Resolved memory leak issue.",
      "noteType": 1
    }
    ```
    
    `noteType`: 1 = Internal (MSP only), 2 = External (client visible).
    
    ## Billing Product Associations
    
    Link CIs to billing products for recurring revenue via `configurationItemID`, `productID`, `quantity`, `unitPrice`, and `effectiveDate`. See [references/api.md](references/api.md) for a full example.
    
    ## API Patterns
    
    ### Creating a Configuration Item
    
    ```http
    POST /v1.0/ConfigurationItems
    Content-Type: application/json
    ```
    
    **Server Example:**
    ```json
    {
      "companyID": 12345,
      "referenceTitle": "ACME-DC-SQL01",
      "referenceNumber": "SN-ABC123456",
      "configurationItemType": 1,
      "configurationItemCategoryID": 3,
      "make": "Dell",
      "model": "PowerEdge R750",
      "serialNumber": "ABC123456789",
      "ipAddress": "192.168.1.50",
      "hostname": "SQL01.acmecorp.local",
      "installDate": "2024-01-15",
      "purchaseDate": "2024-01-01",
      "warrantyExpirationDate": "2027-01-01",
      "isActive": true
    }
    ```
    
    See [references/api.md](references/api.md) for the workstation create example, retire/update patterns, and additional query patterns (expiring warranties, servers by type/location, CIs without RMM integration).
    
    ### Query Patterns
    
    **All active CIs for a company:**
    ```json
    {
      "filter": [
        {"field": "companyID", "op": "eq", "value": 12345},
        {"field": "isActive", "op": "eq", "value": true}
      ],
      "includeFields": ["Company.companyName"]
    }
    ```
    
    ## Common Workflows
    
    ### Asset Onboarding
    
    1. **Create CI** with basic info
    2. **Set type and category** for classification
    3. **Link to company location**
    4. **Record warranty** dates
    5. **Create relationships** (if part of infrastructure)
    6. **Associate billing** (if recurring)
    7. **Sync with RMM** for ongoing monitoring
    
    ### Warranty Tracking Report
    
    Query CIs where `warrantyExpirationDate` is not null and `lte` a future cutoff date, then sort by days remaining. See [references/examples.md](references/examples.md) for the implementation.
    
    ### Lifecycle Planning
    
    Compare each CI's age (from `purchaseDate`) against standard replacement cycles (servers ~5yr, workstations ~4yr, network devices ~7yr, printers ~5yr) to flag `REPLACE` / `PLAN_REPLACEMENT` / `HEALTHY`. See [references/examples.md](references/examples.md) for the implementation.
    
    ### RMM Sync Verification
    
    Query active servers/workstations for a company and split by whether `rmmDeviceID` is set, to find assets missing RMM coverage. See [references/examples.md](references/examples.md) for the implementation.
    
    ## Error Handling
    
    ### Common API Errors
    
    | Code | Message | Resolution |
    |------|---------|------------|
    | 400 | CompanyID required | All CIs must have a company |
    | 400 | Invalid configuration type | Query ConfigurationItemTypes first |
    | 400 | Duplicate reference number | Reference numbers must be unique |
    | 404 | Configuration item not found | Verify CI ID exists |
    | 409 | Cannot delete active CI | Retire or inactivate first |
    
    ### Validation Errors
    
    | Error | Cause | Fix |
    |-------|-------|-----|
    | ReferenceTitle required | Missing name | Add referenceTitle |
    | Invalid IP format | Bad IP address | Use valid IPv4/IPv6 |
    | Invalid date format | Wrong date format | Use YYYY-MM-DD |
    | Category not valid for type | Mismatched category | Check type/category relationship |
    
    ## Best Practices
    
    1. **Standardize naming** - Use consistent referenceTitle format (e.g., COMPANY-TYPE-NAME)
    2. **Track serial numbers** - Enable warranty lookups and asset verification
    3. **Set warranty dates** - Proactive renewal planning
    4. **Link to RMM** - Enable automated inventory sync
    5. **Document relationships** - Map infrastructure dependencies
    6. **Use categories** - Enable meaningful reporting
    7. **Track purchase dates** - Lifecycle planning
    8. **Associate contracts** - Enable billing automation
    9. **Maintain DNS records** - Track hosted services
    
    ## Related Skills
    
    - [Autotask Tickets](../tickets/SKILL.md) - Link tickets to CIs
    - [Autotask Contracts](../contracts/SKILL.md) - Contract associations
    - [Autotask CRM](../crm/SKILL.md) - Company and location management
    - [Autotask API Patterns](../api-patterns/SKILL.md) - Query builder and authentication
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related