Webhooks

Webhooks are triggered after Netpicker completes a process. Use the {{ __ctx__ }} tag in the webhook template to get the results as dictionary or use the {{ __ctx__ | tojson }} tag to get the results of the process in JSON format.

Webhook callback request content

The __ctx__ variable has two properties: event and payload, where the type of the latter depends on the event.

finish:backup-config

The payload is a dictionary of ipaddress keys of devices and value the summary of the configuration fetched.

{  
 "event": "finish:backup-config",
  "payload": {  
   "192.168.60.190": {
      "id": "183901632300949504",
      "changed": False,   
      "upload_date": "2024-05-22T11:19:25.863658",   
      "file_size": 10774,   
      "digest": "3a616657755a8c66b5dc8f237fc2f8b5027d7e6eddbede818298c41a62531d76",   
      "commit": "6493afb1f1007651551de6c4f9ada34890cb823e"  
 }}}  

In case a backup fails, the value for a device will be None (null when converted to JSON):

{  
 "event": "finish:backup-config",
  "payload": {  
   "192.168.60.190": null
  }
}

Webhoook templates

You can use Jinja template syntax to write custom templates for your webhooks, for example:

{"text": "Config backup\n\n{% for d in __ctx__['payload'] %}{{ d }} - {% if __ctx__['payload'][d] %}Changed: {{ __ctx__['payload'][d]['changed'] }}{% else %}Backup failed{% endif %}\n{% endfor %}"}

Which will result in this output:

Config backup

192.168.60.201 – Changed: False
192.168.60.202 – Changed: False
172.21.0.3 – Backup failed

finish:execute-rules

The payload returns the filter criteria for devices, policies, rules and tags, and the summary of the results from executing the policies.

{  
 "event": "finish:execute-rules",
  "payload": {  
  "results": [
    { "192.168.60.190": {
       "MEDIUM": 3,
        "SUCCESS": 3  
       }
    }
    ],
    "initiator": "[[email protected]](mailto:[email protected])",   
    "devices": ["192.168.60.190"],   
    "policies": [],   
    "rules": [],   
    "tags": [],   
    "batch_id": "28819c59-5788-48d0-a377-02ed9b3a9a98"  
 }}