API Breaking Changes Guide

Overview

This release transitions from integer IDs to UUIDs for primary identifiers across most API endpoints, modernizes THOR scan configuration, and removes deprecated features.

Migration Checklist

High-level list of what developers need to audit in their code:

  • Update all asset ID references from integers to UUIDs

  • Replace integer task/group-task/scheduled-group-tasks IDs with UUIDs

  • Remove deprecated Bifrost Quarantine integration

  • Update THOR scan parameters (scanner/signatures → lite/version-pinning)

  • Handle removed software_list in asset search responses

Changes by Category

Asset Management

Endpoints requiring UUID migration

  • POST /asset/labels/add - client array now requires UUIDs

  • POST /assets/labels/remove - client array now requires UUIDs

Modified responses

GET /assets/search

  • data.id is now a string UUID (integer ID available as data.old_id)

  • ⚠️ BREAKING: data.additional.software_list removed

    • The data is still available in the Asset Details or in the new Software Inventory page

    • If you need access to this data via the API, please contact support

Documentation changes

  • GET /assets/search/all

  • GET /assets/search/deleted

  • Note: These endpoints still function as before, but are now documented as path parameters for /assets/search instead of separate endpoints


Response Control

Endpoints with UUID path parameters

All previously integer {id} parameters are now UUIDs:

  • POST /cron-grouped-tasks/edit/generic/{id}

  • POST /cron-grouped-tasks/edit/interrogate/{id}

  • POST /cron-grouped-tasks/edit/update/{id}

  • GET /playbooks/commandline/{type}/download/{task}/{step} - task param

  • GET /playbooks/uploadfile/{type}/download/{task}/{step} - task param

  • GET /grouped-tasks/results/{id}

  • GET /thor-scan-result/{id}

Endpoints requiring UUID in request body

POST /tasks/new-task/{type}

  • client array now requires UUID strings

POST /grouped-tasks/new-grouped-task/{type}

  • Asset IDs in (AQL) queries must now be UUID strings

POST /cron-grouped-tasks/new-cron-grouped-task/{type}

  • Asset IDs in (AQL) queries must now be UUID strings

Where {type} is one of: generic, interrogate, update

Modified search responses

All search endpoints now return UUIDs as primary identifier:

  • GET /tasks/search

  • GET /grouped-tasks/search

  • GET /cron-grouped-tasks/search

Changes:

  • data[n].id is now a UUID string (was integer)

  • data[n].uuid removed (merged into id)

  • data[n].asgard_id removed


Scan Control (THOR)

THOR scan parameter changes

All THOR scan creation/editing endpoints have updated parameters.

Removed parameters:

  • scanner (string)

  • signatures (string)

New parameters:

  • signatures-version-pinning (UUID string)

  • thor-version-pinning (UUID string)

  • lite (boolean)

    • Whether to use THOR Lite

Affected endpoints:

  • POST /tasks/new-task/thor

    • client array now requires UUID strings

  • POST /grouped-tasks/new-grouped-task/thor

    • Asset (client) IDs in (AQL) queries must now be UUID strings

  • POST /cron-grouped-tasks/new-cron-grouped-task/thor

    • Asset (client) IDs in (AQL) queries must now be UUID strings

  • POST /cron-grouped-tasks/edit/thor/{id}

THOR scan search response changes

GET /tasks/search/thor and GET /tasks/search/{module}

Changes:

  • data[n].id is now a UUID string (integer ID available as data[n].old_id)

  • data[n].asgard_id removed

  • data[n].uuid removed (now data[n].id)

  • data[n].client is now a UUID string

  • data[n].grouped_task is now a UUID string

  • data[n].master_grouped_task is now a UUID string

GET /grouped-tasks/search/thor and GET /grouped-tasks/search/{module}

Changes:

  • data[n].id is now a UUID string (integer ID available as data[n].old_id)

  • data[n].asgard_id removed

  • data[n].uuid removed (now data[n].id)

  • data[n].cron_grouped_task is now a UUID string

  • data[n].master_grouped_task is now a UUID string

GET /cron-grouped-tasks/search/thor and GET /cron-grouped-tasks/search/{module}

Changes:

  • data[n].id is now a UUID string (integer ID available as data[n].old_id)

  • data[n].asgard_id removed


Thunderstorm

GET /thunderstorm/config and POST /thunderstorm/config

  • thorVersion has been replaced with thorVersionPinningID

POST /thunderstorm/deleteLicense

  • REMOVED


Removed Features

Bifrost Quarantine

Completely removed - Bifrost is no longer supported.

THOR and Signatures Updates Section

Removed - functionality replaced by version pinning. Use the UI to manage THOR and signature versions.


Migration Examples

Example 1: Asset ID migration

JavaScript
// Before: Integer IDs
POST /tasks/new-task/generic
{
  "client": [123, 456, 789]
}

// After: UUID strings
POST /tasks/new-task/generic
{
  "client": [
    "550e8400-e29b-41d4-a716-446655440000",
    "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
    "7c9e6679-7425-40de-944b-e07fc1f90ae7"
  ]
}

Example 2: THOR scanner configuration

JavaScript
// Before: Scanner selection
POST /tasks/new-task/thor
{
  "scanner": "thor10",
  "signatures": "latest",
  "client": [123, 456]
}

// After: Version pinning
POST /tasks/new-task/thor
{
  "thor-version-pinning": "550e8400-e29b-41d4-a716-446655440000",
  "signatures-version-pinning": "6ba7b810-9dad-11d1-80b4-00c04fd430c8",
  "lite": false,
  "stream-events": true,
  "client": [
    "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "8d0f7780-8536-51ef-a05c-f18ad2e10bf9"
  ]
}

Example 3: Handling search response changes

JavaScript
// Before: Integer IDs
GET /tasks/search
Response:
{
  "data": [
    {
      "id": 12345,
      "uuid": "550e8400-e29b-41d4-a716-446655440000",
      "asgard_id": 1,
      "client": 789
    }
  ]
}

// After: UUID as primary ID
GET /tasks/search
Response:
{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "old_id": 12345,
      "client": "7c9e6679-7425-40de-944b-e07fc1f90ae7"
    }
  ]
}

Getting Help

If you need assistance updating your internal tooling or have questions about these changes, please contact our support team before upgrading.