Interface webhook data does not include connected endpoints when a cable connection is made #433

Open
opened 2026-04-05 16:32:19 +02:00 by MrUnknownDE · 0 comments
Owner

Originally created by @edaleand on 2/1/2026

NetBox Edition

NetBox Community

NetBox Version

v4.4.10

Python Version

3.12

Steps to Reproduce

  1. In the Netbox web UI, create a webhook localhost testing webhook using URL: 127.0.0.1:9000, Method: POST and Content type application/json
  2. Create an event rule localhost testing event rule with Object types DCIM > Interface and Event Types Object updated, Action type webhook and Webhook localhost testing webhook (the one created in step one)
  3. SSH or exec to netbox underlying OS, activate virtual environment and run the webhook listener with python3 netbox/manage.py webhook_receiver
  4. Back in the Netbox web UI, create a device mydevice1 off some device type. Select a Device role and a Site. Make sure there is an interface on the device, otherwise create one.
  5. Create a device mydevice2 off some device type. Select a Device role and a Site. Make sure there is an interface on the device, otherwise create one.
  6. On an interface on mydevice1, create a cable connecting to an interface on mydevice2
  7. On the webhook listener, observe the output. There should be two completed requests, one for each interface at the cable endpoints.

Expected Behavior

  • On request #1, connected_endpoints and link_peers will be lists containing json data describing the interface from mydevice2
  • On request #2, connected_endpoints and link_peers will be lists containing json data describing the interface from mydevice1

Observed Behavior

  • On request #1, connected_endpoints is null and link_peers is []
  • On request #2. connected_endpoints is null and link_peers is a list containing json data describing the interface from mydevice1
*Originally created by @edaleand on 2/1/2026* ### NetBox Edition NetBox Community ### NetBox Version v4.4.10 ### Python Version 3.12 ### Steps to Reproduce 1. In the Netbox web UI, create a webhook `localhost testing webhook` using URL: `127.0.0.1:9000`, Method: `POST` and Content type `application/json` 2. Create an event rule `localhost testing event rule` with Object types `DCIM > Interface` and Event Types `Object updated`, Action type `webhook` and Webhook `localhost testing webhook` (the one created in step one) 3. SSH or exec to netbox underlying OS, activate virtual environment and run the webhook listener with `python3 netbox/manage.py webhook_receiver` 4. Back in the Netbox web UI, create a device `mydevice1` off some device type. Select a Device role and a Site. Make sure there is an interface on the device, otherwise create one. 5. Create a device `mydevice2` off some device type. Select a Device role and a Site. Make sure there is an interface on the device, otherwise create one. 6. On an interface on `mydevice1`, create a cable connecting to an interface on `mydevice2` 7. On the webhook listener, observe the output. There should be two completed requests, one for each interface at the cable endpoints. ### Expected Behavior - On `request #1`, `connected_endpoints` and `link_peers` will be lists containing json data describing the interface from `mydevice2` - On `request #2`, `connected_endpoints` and `link_peers` will be lists containing json data describing the interface from `mydevice1` ### Observed Behavior - On `request #1`, `connected_endpoints` is `null` and `link_peers` is `[]` - On `request #2`. `connected_endpoints` is `null` and `link_peers` is a list containing json data describing the interface from `mydevice1`
MrUnknownDE added the status: needs ownertype: bugnetboxstatus: needs ownerseverity: lowstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownerstatus: needs ownertype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugtype: bugnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxnetboxseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: lowseverity: low labels 2026-04-05 16:32:26 +02:00
Sign in to join this conversation.
No Label netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox netbox severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low severity: low status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner status: needs owner type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug type: bug
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github/netbox#433