{"id":13733756,"url":"https://github.com/danihodovic/django-webhook","last_synced_at":"2025-04-05T05:03:04.259Z","repository":{"id":195274788,"uuid":"661761924","full_name":"danihodovic/django-webhook","owner":"danihodovic","description":"Django webhooks triggered on model changes","archived":false,"fork":false,"pushed_at":"2024-08-19T18:56:35.000Z","size":401,"stargazers_count":207,"open_issues_count":6,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-03-29T04:03:46.445Z","etag":null,"topics":["django","integrations","models","signals","webhooks"],"latest_commit_sha":null,"homepage":"https://django-webhook.readthedocs.io","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danihodovic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-03T15:28:28.000Z","updated_at":"2025-03-26T08:21:06.000Z","dependencies_parsed_at":"2023-10-13T08:56:15.387Z","dependency_job_id":"7d560d4f-f1c8-4baa-8911-fd105ab617b5","html_url":"https://github.com/danihodovic/django-webhook","commit_stats":null,"previous_names":["danihodovic/django-webhook"],"tags_count":14,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danihodovic%2Fdjango-webhook","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danihodovic%2Fdjango-webhook/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danihodovic%2Fdjango-webhook/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danihodovic%2Fdjango-webhook/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danihodovic","download_url":"https://codeload.github.com/danihodovic/django-webhook/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247289409,"owners_count":20914464,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["django","integrations","models","signals","webhooks"],"created_at":"2024-08-03T03:00:48.525Z","updated_at":"2025-04-05T05:03:04.242Z","avatar_url":"https://github.com/danihodovic.png","language":"Python","readme":"# Django Webhooks ![badge](https://github.com/danihodovic/django-webhook/actions/workflows/ci.yml/badge.svg?event=push)\n\nA plug-and-play Django app for sending outgoing webhooks on model changes.\n\nDjango has a built-in signal system which allows programmers to schedule functions to be executed on\nmodel changes. django-webhook leverages the signal system together with Celery to send HTTP requests\nwhen models change.\n\nSuppose we have a User model\n```python\nclass User(models.Model):\n    name = models.CharField(max_length=50)\n    age = models.PositiveIntegerField()\n```\n\nIf a webhook is configured, any time the above model is created, updated or deleted django-webhook\nwill send an outgoing HTTP request to a third party:\n\n```\nPOST HTTP/1.1\nhost: webhook.site\nuser-agent: python-urllib3/2.0.3\ndjango-webhook-uuid: 5e2ee3ba-905e-4360-94bf-18ef21c0e844\ndjango-webhook-signature-v1:\ndjango-webhook-request-timestamp: 1697818014\n\n{\n  \"topic\": \"users.User/create\",\n  \"object\": {\n    \"id\": 3,\n    \"name\": \"Dani Doo\",\n    \"age\": 30\n  },\n  \"object_type\": \"users.User\",\n  \"webhook_uuid\": \"5e2ee3ba-905e-4360-94bf-18ef21c0e844\"\n}\n```\n\n### 🔥 Features\n- Automatically sends webhooks on model changes\n- Leverages Celery for processing\n- Webhook authentication using HMAC\n- Retries with exponential backoff\n- Admin integration\n- Audit log with past webhook events\n- Protection from replay attacks\n- Allows rotating webhook secrets\n\n### 📖 Documentation\n\nhttps://django-webhook.readthedocs.io\n\n\n### Contributors\n\u003ca href=\"https://github.com/danihodovic/django-webhook/graphs/contributors\"\u003e\n  \u003cimg src=\"https://contrib.rocks/image?repo=danihodovic/django-webhook\" /\u003e\n\u003c/a\u003e\n\nMade with [contrib.rocks](https://contrib.rocks).\n","funding_links":[],"categories":["Third-Party Packages","Python"],"sub_categories":["APIs"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanihodovic%2Fdjango-webhook","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanihodovic%2Fdjango-webhook","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanihodovic%2Fdjango-webhook/lists"}