id: axonius
name: Axonius
version: 1.0.0
description: "Axonius (REST API) — cybersecurity asset management: query devices and users with AQL filters, get a device by ID, and count devices matching a filter. API-key + API-secret authentication; stdlib-only, no extra Python dependencies."
changelog: "1.0.0 — Initial release: list/get devices, device count, list users."
category: asset_management

# Per-instance configuration. Auth uses the 'api-key' and 'api-secret' headers.
config_schema:
  properties:
    base_url:
      type: string
      description: "Axonius instance URL (e.g. https://axonius.example.com)"
    api_key:
      type: string
      description: "API key"
      x-soar-sensitive: true
    api_secret:
      type: string
      description: "API secret"
      x-soar-sensitive: true
  required:
    - base_url
    - api_key
    - api_secret

commands:
  - id: list_devices
    name: axonius-list-devices
    description: "Query devices with an optional AQL filter."
    risk: read
    inputs_schema:
      properties:
        filter: { type: string, description: "AQL filter (e.g. specific_data.data.hostname == \"host01\")" }
        limit: { type: number, description: "Max devices (default 50)" }
        offset: { type: number, description: "Offset (default 0)" }
      required: []
    outputs_schema: { properties: {} }
  - id: get_device
    name: axonius-get-device
    description: "Get a single device by its internal Axonius ID."
    risk: read
    inputs_schema:
      properties:
        device_id: { type: string, description: "Internal Axonius device ID" }
      required: [device_id]
    outputs_schema: { properties: {} }
  - id: device_count
    name: axonius-device-count
    description: "Count devices matching an AQL filter."
    risk: read
    inputs_schema:
      properties:
        filter: { type: string, description: "AQL filter (empty = all devices)" }
      required: []
    outputs_schema: { properties: {} }
  - id: list_users
    name: axonius-list-users
    description: "Query users with an optional AQL filter."
    risk: read
    inputs_schema:
      properties:
        filter: { type: string, description: "AQL filter" }
        limit: { type: number, description: "Max users (default 50)" }
        offset: { type: number, description: "Offset (default 0)" }
      required: []
    outputs_schema: { properties: {} }

  - id: test_connection
    name: axonius-test-connection
    description: "Verify connectivity and credentials (used by the Test button)."
    risk: read
    inputs_schema:
      properties: {}
      required: []
    outputs_schema: { properties: {} }
