charge utile du webhook d’alerte SQL

Lorsqu’une alerte SQL de Databricks change d’état, une destination de notification webhook reçoit une charge utile JSON qui décrit l’alerte et son évaluation. Ce format de charge utile s’applique à la dernière version des alertes SQL de Databricks. Les alertes héritées utilisent une charge utile différente.

Important

Les configurations d’alerte déterminent quels champs supplémentaires sont inclus dans la charge utile. Les champs sans valeurs sont omis. Configurez votre récepteur webhook pour ignorer les champs inconnus et gérer les champs optionnels manquants.

Exemple de charge utile

L’exemple suivant montre la charge utile d’une alerte qui est passée à l’état TRIGGERED. Les identifiants, noms et horodatages sont des exemples fictifs.

{
  "event": "alert_state_change",
  "url_base": "https://<workspace-url>/sql?o=1234567890123456",
  "alert": {
    "title": "Alert \"Daily revenue\" changed status to TRIGGERED",
    "description": "Daily revenue exceeded the configured threshold.",
    "alert": {
      "id": "9876543210987654",
      "name": "Daily revenue",
      "owner": {
        "id": 2468013579246801,
        "name": "Alex Smith",
        "email": "alex.smith@example.com"
      },
      "created_at": 1767225600000,
      "parent": "folders/1357924680135792",
      "query_text": "SELECT SUM(revenue) AS total_revenue FROM main.sales.daily",
      "warehouse_id": "4b9b953939869799",
      "custom_summary": "Alert \"{{ALERT_NAME}}\" changed status to {{ALERT_STATUS}}",
      "custom_description": "Daily revenue exceeded the configured threshold.",
      "evaluations": [
        {
          "id": "9a1f0fc0-7d18-4f42-8ec0-9c1f8e72d3a4",
          "source": {
            "name": "total_revenue",
            "display": "total_revenue",
            "aggregation": "AGGREGATION_UNSPECIFIED"
          },
          "comparison_operator": "GREATER_THAN",
          "threshold": {
            "value": {
              "double_value": 100000.0
            }
          },
          "empty_result_state": "OK",
          "notification": {
            "seconds_to_retrigger": 3600,
            "notify_on_ok": true,
            "subscriptions": [
              {
                "destination_id": "6d1f7e62-a9d4-4b32-b79d-2b1f9f5a6c80"
              }
            ]
          },
          "state": "TRIGGERED",
          "last_evaluated_at": 1767229200000,
          "last_triggered_at": 1767229200000
        }
      ],
      "schedule": {
        "quartz_cron_schedule": "0 0 * * * ?",
        "timezone_id": "UTC",
        "paused": false
      },
      "custom_template_format": "HTML"
    }
  }
}

Champs de payload

La charge utile contient les champs d’enveloppe suivants :

Champ Type Description
event String Type d’événement. Pour les changements d’état d’alerte, la valeur est alert_state_change.
url_base String L’URL de base pour Databricks SQL dans l’espace de travail.
alert Object Les détails de la notification et de l’alerte.
alert.title String Le sujet de notification personnalisé rendu. Ce champ est omis lorsque l’alerte ne définit pas un sujet personnalisé.
alert.description String Le corps de notification personnalisé affiché. Ce champ est omis lorsque l’alerte ne définit pas un body personnalisé.
alert.alert Object Un instantané de l’alerte lors de l’envoi de la notification.

L’objet imbriqué alert.alert peut contenir les champs suivants :

Champ Type Description
id String L’identifiant de la ressource d’alerte.
name String Nom de l’alerte.
owner Object L’identifiant, le nom et l’adresse e-mail du propriétaire de l’alerte. Ce champ est omis lorsque les détails du propriétaire ne sont pas disponibles.
created_at Integer Le temps de création de l’alerte, en millisecondes depuis l’époque Unix.
parent String Le nom de la ressource du dossier contenant l’alerte.
query_text String La requête SQL que l’alerte évalue.
warehouse_id String L’identifiant de l’entrepôt SQL qui exécute la requête.
custom_summary String Le modèle personnalisé de sujet de notification. Ce champ est omis lorsqu’un sujet personnalisé n’est pas configuré.
custom_description String Le modèle personnalisé de corps de notification. Ce champ est omis lorsqu’un corps du message personnalisé n’est pas configuré.
custom_template_format String Le format des modèles personnalisés, tels que HTML ou MARKDOWN.
evaluations Array Les conditions d’évaluation configurées et leur état. La state valeur reflète le changement d’état qui a causé la notification.
schedule Object Le calendrier du cron Quartz, le fuseau horaire et l’état en pause. Ce champ est omis lorsque l’alerte n’a pas de planning.

Selon la configuration d’alerte, l’objet imbriqué peut aussi inclure parameters, genie_analysis_enabled, genie_analysis_custom_prompt, et genie_analysis_references.

Chaque objet du evaluations tableau peut contenir les champs suivants :

Champ Type Description
id String L’ID de la condition d’évaluation.
source Object Colonne de résultat de la requête et agrégation évaluées par la condition.
comparison_operator String L’opérateur de comparaison, tel que GREATER_THAN, EQUAL, ou IS_NULL.
threshold Object La colonne de valeur ou de résultat de requête contre laquelle la source est comparée.
empty_result_state String L’état à utiliser lorsque la requête ne retourne aucune ligne. Ce champ est omis lorsque l’alerte ne définit pas un état de résultat vide.
notification Object L’intervalle de redéclenchement, le réglage de notification à l’état OK et les identifiants de destination des notifications.
state String L’état d’évaluation qui a causé la notification : TRIGGERED, OK, ou ERROR.
last_evaluated_at Integer Le temps d’évaluation, en millisecondes depuis l’époque Unix.
last_triggered_at Integer L’horodatage du dernier déclenchement, en millisecondes depuis l’époque Unix. Ce champ est omis lorsque l’alerte n’a pas été déclenchée.

Sécuriser la charge utile du webhook

La charge utile peut contenir des métadonnées sensibles de l’espace de travail, y compris la requête SQL, l’identité du propriétaire de l’alerte et le contenu personnalisé des notifications. Protégez le point de terminaison de réception et limitez l’accès aux données stockées. Pour les options de réseautage et d’authentification des webhooks, voir Gérer les destinations de notification.