ServiceNow

Enables the ServiceGraph Connector for Meraki to receive webhooks and generate incidents.

This template supports the required authentication headers and password complexity implemented with the San Diego release of ServiceNow.

meraki default JSON

The ServiceNow connector relies on Basic authentication to send a webhook to the service.

The setup previously required that the Meraki admin set the HTTPS Server URL to the following format.

https://username:passwordk@venXXXX.service-now.com/api/x_caci_sg_meraki/sgmeraki_device_alerts

However, with the ServiceNow San Diego release, passwords are automatically defined for you and are too complex for embeding in the URL.

This resulted in an incompatible URL

https://MerakiAlerts:::_4KNFuh@#$%&_nkdsjfn234^6@@venXXXX.service-now.com/api/x_caci_sg_meraki/sgmeraki_device_alerts

Solution:

Instead of encoding the username:password in the URL as before, with templates we can now base64 encode the sharedSecret value and apply the appropriate headers.

"Authorization":"Basic {{sharedSecret | base64_encode}}"

Meraki Dashboard Webhook


Template

body.liquid


{
    "version": "0.1",
    "sentAt": "{{sentAt}}",
    "organizationId": "{{organizationId}}",
    "organizationName": "{{organizationName}}",
    "organizationUrl": "{{organizationUrl}}",
    "networkId": "{{networkId}}",
    "networkName": "{{networkName}}",
    "networkUrl": "{{networkUrl}}",
    "networkTags": {{ networkTags | jsonify }},
    "deviceSerial": "{{deviceSerial}}",
    "deviceMac": "{{deviceMac}}",
    "deviceName": "{{deviceName}}",
    "deviceUrl": "{{deviceUrl}}",
    "deviceTags": {{ deviceTags | jsonify }},
    "deviceModel": "{{deviceModel}}",
    "alertId": "{{alertId}}",
    "alertType": "{{alertType}}",
    "alertTypeId": "{{alertTypeId}}",
    "alertLevel": "{{alertLevel}}",
    "occurredAt": "{{occurredAt}}",
    "alertData": {{ alertData | jsonify }}
    }
    

headers.liquid


{
    "Authorization":"Basic {{sharedSecret | base64_encode}}"
}