Receive Notifications

When Layer1 detects a managed balance transaction , the following webhooks types are sent out:

  • layer1:treasury:notification sends updates on Treasury events to Slack.
  • layer1:treasury:notice sends updates to custom webpages.

You can receive the following notifications:

  • ℹ️ Executing operation(s): TRANSFER {managedBalanceId1}->{managedBalanceId2} {amount}.
  • ℹ️ {managedBalanceId} balance adjusted by {amount}.
  • ℹ️ Treasury transfer(s) {transactionId} adjusting {managedBalanceId} by {amount} auto-approved.
  • ⚠️ Treasury transfer(s) {transactionId} adjusting {managedBalanceId} by {amount} awaiting approval at https://app.layer1.bvnk.com/approvals.
  • ⚠️ Adjustment of {amount} for {managedBalanceId1} rejected.
  • ⚠️ Current balance for {managedBalanceId1} is {value}, which is below the warning threshold of {WARNING_value}.

The payload always features the same fields. The only distinction is the Source field, which can be one of the following:

  • CONFIGURATION: Parameters of a Managed Balance are configured via API.
  • FORECAST: Parameters of a Managed Balance are dynamically adjusted by the prediction feature.
{
  "type": "INFO",
  "eventType": "TREASURY_OPERATIONS_QUEUED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Treasury operations queued",
  "context": {
    "operations": [
      {
        "amount": 2500.00,
        "operationId": "01972084-cd4e-7800-bfb3-8c98eb355e8b",
        "source": "bvnk_binance_usdt",
        "type": "TRANSFER",
        "target": "bvnk_kraken_usdt"
      },
      {
        "amount": 1000.00,
        "operationId": "01972084-cd4e-7dbe-bfb5-fd0c6428b38a",
        "source": "bvnk_coinbase_usdt",
        "type": "TRANSFER",
        "target": "bvnk_kraken_usdt"
      }
    ]
  }
}
{
  "type": "INFO",
  "eventType": "BALANCE_ADJUSTMENT_SUCCEEDED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Balance adjustment succeeded",
  "context": {
    "amount": 3500.00,
    "thresholds": [
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ]
  }
}
{
  "type": "WARNING",
  "eventType": "TREASURY_OPERATION_TIMED_OUT",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Treasury operation timed out",
  "context": {
    "operationId": "01972084-cd50-7395-aab2-58a1c261cf20",
    "amount": 3000.00,
    "source": "bvnk_binance_usdt",
    "type": "TRANSFER",
    "target": "bvnk_kraken_usdt"
  }
}
{
  "type": "ERROR",
  "eventType": "TREASURY_OPERATION_FAILED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Treasury operation failed",
  "context": {
    "operationId": "01972084-cd50-7400-aab5-9f2dd3857ca2",
    "amount": 3000.00,
    "source": "bvnk_binance_usdt",
    "type": "TRANSFER",
    "target": "bvnk_kraken_usdt"
  }
}
{
  "type": "INFO",
  "eventType": "APPROVAL_REQUESTED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Approval requested",
  "context": {
    "sources": [
      {
        "managedBalanceId": "bvnk_binance_usdt",
        "amount": 3000.00,
        "asset": "usdt"
      },
      {
        "managedBalanceId": "bvnk_tron_usdt",
        "amount": 3000.00,
        "asset": "usdt"
      }
    ],
    "thresholds": [
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ],
    "amount": 3500.00
  }
}
{
  "type": "INFO",
  "eventType": "AUTO_APPROVAL_GRANTED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Auto approval granted",
  "context": {
    "sources": [
      {
        "managedBalanceId": "bvnk_binance_usdt",
        "amount": 3000.00,
        "asset": "usdt"
      },
      {
        "managedBalanceId": "bvnk_tron_usdt",
        "amount": 3000.00,
        "asset": "usdt"
      }
    ],
    "thresholds": [
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ],
    "amount": 3500.00
  }
}
{
  "type": "WARNING",
  "eventType": "LOW_BALANCE_DETECTED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Low balance detected",
  "context": {
    "thresholds": [
      {
        "type": "WARNING",
        "value": 2000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ]
  }
}
{
  "type": "WARNING",
  "eventType": "NO_ELIGIBLE_SOURCES_FOUND",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "No eligible sources found",
  "context": {
    "thresholds": [
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ],
    "amount": 3500.00
  }
}
{
  "type": "WARNING",
  "eventType": "APPROVAL_REQUEST_REJECTED",
  "entityCode": "ethereum",
  "asset": "usdt",
  "balanceAtEventTimestamp": 1500.50,
  "message": "Approval request rejected",
  "context": {
    "amount": 3500.00,
    "thresholds": [
      {
        "type": "MIN",
        "value": 1000.00,
        "source": "CONFIGURATION"
      },
      {
        "type": "TARGET",
        "value": 5000.00,
        "source": "CONFIGURATION"
      }
    ]
  }
}