Metadata-Version: 2.1
Name: django-webhook
Version: 0.0.15
Summary: 
Home-page: https://github.com/danihodovic/django-webhook
License: MIT
Keywords: webhooks,http,microservices
Author: Dani Hodovic
Author-email: you@example.com
Requires-Python: >=3.11,<4.0
Classifier: Framework :: Celery
Classifier: Framework :: Django
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Internet :: WWW/HTTP
Classifier: Topic :: System :: Distributed Computing
Requires-Dist: celery (==5.*)
Requires-Dist: django (>=4.0,<6.0)
Requires-Dist: django-model-utils (==4.*)
Requires-Dist: requests (==2.*)
Project-URL: Documentation, https://django-webhook.readthedocs.io/en/latest/
Project-URL: Repository, https://github.com/danihodovic/django-webhook
Description-Content-Type: text/markdown

# Django Webhooks ![badge](https://github.com/danihodovic/django-webhook/actions/workflows/ci.yml/badge.svg?event=push)

A plug-and-play Django app for sending outgoing webhooks on model changes.

Django has a built-in signal system which allows programmers to schedule functions to be executed on
model changes. django-webhook leverages the signal system together with Celery to send HTTP requests
when models change.

Suppose we have a User model
```python
class User(models.Model):
    name = models.CharField(max_length=50)
    age = models.PositiveIntegerField()
```

If a webhook is configured, any time the above model is created, updated or deleted django-webhook
will send an outgoing HTTP request to a third party:

```
POST HTTP/1.1
host: webhook.site
user-agent: python-urllib3/2.0.3
django-webhook-uuid: 5e2ee3ba-905e-4360-94bf-18ef21c0e844
django-webhook-signature-v1:
django-webhook-request-timestamp: 1697818014

{
  "topic": "users.User/create",
  "object": {
    "id": 3,
    "name": "Dani Doo",
    "age": 30
  },
  "object_type": "users.User",
  "webhook_uuid": "5e2ee3ba-905e-4360-94bf-18ef21c0e844"
}
```

### 🔥 Features
- Automatically sends webhooks on model changes
- Leverages Celery for processing
- Webhook authentication using HMAC
- Retries with exponential backoff
- Admin integration
- Audit log with past webhook events
- Protection from replay attacks
- Allows rotating webhook secrets

### 📖 Documentation

https://django-webhook.readthedocs.io


### Contributors
<a href="https://github.com/danihodovic/django-webhook/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=danihodovic/django-webhook" />
</a>

Made with [contrib.rocks](https://contrib.rocks).

