Skip to main content
Query your data assets (tables, views, models) discovered by AnomalyArmor.

List Assets

GET /api/v1/assets

Query Parameters

ParameterTypeDescription
sourcestringFilter by data source name
typestringFilter by asset type (table, view, model)
limitintegerMax items to return (default: 50, max: 100)
offsetintegerNumber of items to skip (default: 0)

Example Request

curl -H "Authorization: Bearer aa_live_xxx" \
  "https://api.anomalyarmor.ai/api/v1/assets?source=snowflake&type=table&limit=10"

Example Response

{
  "data": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "qualified_name": "snowflake.prod.warehouse.orders",
      "name": "orders",
      "asset_type": "table",
      "source": "snowflake",
      "database": "prod",
      "schema": "warehouse",
      "description": "Customer order transactions",
      "row_count": 1500000,
      "column_count": 24,
      "created_at": "2024-01-15T10:30:00Z",
      "updated_at": "2024-12-04T08:00:00Z"
    }
  ],
  "pagination": {
    "total": 245,
    "limit": 10,
    "offset": 0,
    "has_more": true
  }
}

Get Asset

GET /api/v1/assets/{id}
Retrieve a single asset by qualified name or UUID.

Path Parameters

ParameterTypeDescription
idstringQualified name (e.g., snowflake.prod.warehouse.orders) or UUID

Example Request

curl -H "Authorization: Bearer aa_live_xxx" \
  "https://api.anomalyarmor.ai/api/v1/assets/snowflake.prod.warehouse.orders"

Example Response

{
  "data": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "qualified_name": "snowflake.prod.warehouse.orders",
    "name": "orders",
    "asset_type": "table",
    "source": "snowflake",
    "database": "prod",
    "schema": "warehouse",
    "description": "Customer order transactions",
    "row_count": 1500000,
    "column_count": 24,
    "columns": [
      {
        "name": "order_id",
        "data_type": "VARCHAR",
        "is_nullable": false,
        "is_primary_key": true
      },
      {
        "name": "customer_id",
        "data_type": "VARCHAR",
        "is_nullable": false
      },
      {
        "name": "order_date",
        "data_type": "TIMESTAMP",
        "is_nullable": false
      }
    ],
    "tags": ["pii", "financial"],
    "created_at": "2024-01-15T10:30:00Z",
    "updated_at": "2024-12-04T08:00:00Z"
  }
}

Asset Identification

AnomalyArmor supports two ways to identify assets:

Qualified Name (Primary)

Human-readable, hierarchical identifier:
{source}.{database}.{schema}.{table}
Examples:
  • snowflake.prod.warehouse.orders
  • databricks.main.analytics.daily_sales
  • postgresql.app_db.public.users
Use qualified names in code for readability. They’re stable as long as you don’t rename the underlying table.

UUID (Secondary)

System-generated unique identifier. Use for automation where names may change:
550e8400-e29b-41d4-a716-446655440000

Error Responses

StatusCodeDescription
404ASSET_NOT_FOUNDAsset doesn’t exist or you don’t have access
400VALIDATION_ERRORInvalid qualified name format
{
  "error": {
    "code": "ASSET_NOT_FOUND",
    "message": "Asset not found",
    "details": {
      "asset_id": "snowflake.prod.warehouse.orders",
      "suggestion": "Check the qualified name format: source.database.schema.table"
    }
  }
}