diff --git a/docs/additional-features/webhooks.md b/docs/additional-features/webhooks.md
index ebbff8f62..310e67bf5 100644
--- a/docs/additional-features/webhooks.md
+++ b/docs/additional-features/webhooks.md
@@ -42,7 +42,7 @@ The following data is available as context for Jinja2 templates:
### Default Request Body
-If no body template is specified, and the HTTP content type is `application/json`, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows:
+If no body template is specified, the request body will be populated with a JSON object containing the context data. For example, a newly created site might appear as follows:
```no-highlight
{
diff --git a/netbox/extras/admin.py b/netbox/extras/admin.py
index 7122f3842..f66cc248f 100644
--- a/netbox/extras/admin.py
+++ b/netbox/extras/admin.py
@@ -58,7 +58,7 @@ class WebhookAdmin(admin.ModelAdmin):
}),
('HTTP Request', {
'fields': (
- 'http_method', 'payload_url', 'http_content_type', 'additional_headers', 'body_template', 'secret',
+ 'payload_url', 'http_method', 'http_content_type', 'additional_headers', 'body_template', 'secret',
)
}),
('SSL', {
diff --git a/netbox/extras/models.py b/netbox/extras/models.py
index eaeface6b..d81fbeab9 100644
--- a/netbox/extras/models.py
+++ b/netbox/extras/models.py
@@ -106,10 +106,9 @@ class Webhook(models.Model):
)
body_template = models.TextField(
blank=True,
- help_text='Jinja2 template for a custom request body. If blank, a JSON object or form data representing the '
- 'change will be included. Available context data includes: event
, '
- 'timestamp
, model
, username
, request_id
, and '
- 'data
.'
+ help_text='Jinja2 template for a custom request body. If blank, a JSON object representing the change will be '
+ 'included. Available context data includes: event
, model
, '
+ 'timestamp
, username
, request_id
, and data
.'
)
secret = models.CharField(
max_length=255,
@@ -165,12 +164,13 @@ class Webhook(models.Model):
return ret
def render_body(self, context):
+ """
+ Render the body template, if defined. Otherwise, jump the context as a JSON object.
+ """
if self.body_template:
return render_jinja2(self.body_template, context)
- elif self.http_content_type == HTTP_CONTENT_TYPE_JSON:
- return json.dumps(context, cls=JSONEncoder)
else:
- return context
+ return json.dumps(context, cls=JSONEncoder)
#