Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/OpenWebhook/webhook-store
Store and replay webhooks
https://github.com/OpenWebhook/webhook-store
api graphql nestjs open-source postgresql webhook webhook-receiver webhooks webhooks-management
Last synced: 1 day ago
JSON representation
Store and replay webhooks
- Host: GitHub
- URL: https://github.com/OpenWebhook/webhook-store
- Owner: OpenWebhook
- License: gpl-3.0
- Created: 2022-03-29T19:19:06.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-10-16T10:15:29.000Z (about 1 year ago)
- Last Synced: 2024-08-02T16:11:21.373Z (3 months ago)
- Topics: api, graphql, nestjs, open-source, postgresql, webhook, webhook-receiver, webhooks, webhooks-management
- Language: TypeScript
- Homepage: https://github.webhook.store
- Size: 649 KB
- Stars: 74
- Watchers: 0
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- jimsghstars - OpenWebhook/webhook-store - Store and replay webhooks (TypeScript)
README
[![webhook-store](https://github.com/OpenWebhook/webhook-store/actions/workflows/main.yml/badge.svg)](https://github.com/OpenWebhook/webhook-store/actions/workflows/main.yml) [![Maintainability](https://api.codeclimate.com/v1/badges/bc33884e66ac77707905/maintainability)](https://codeclimate.com/github/OpenWebhook/webhook-store/maintainability) [![Test Coverage](https://api.codeclimate.com/v1/badges/bc33884e66ac77707905/test_coverage)](https://codeclimate.com/github/OpenWebhook/webhook-store/test_coverage)
# OpenWebhook
[Openwebhook.io](https://www.openwebhook.io/) is an open source project for developpers working with webhooks.
## WebhookStore
> "Is the tunnel still up ?" "Did the third party send the webhook ?" "Where do I update the webhook url on this beautiful developer portal ?"
WebhookStore is a solution to debug webhooks on localhost.
### Some handy features:
- Permanent URLs: there are no generated urls, only user defined urls
- Available: Webhook store is **not a tunnel**, you don't have to run anything on your computer for the webhooks to be received
- Persistent: Webhooks are stored, and forwarded on localhost on demand. Meaning you can reuse a webhook from a dev session to another, instead of spending 2 minutes triggering the update webhook you need.| | Ngrok / Ultra hook | RequestBIn | WebhookStore |
| ------------------ | --------------------- | ---------------- | ----------------------------------------------------------- |
| Permanent Url | Upon Inscription | Upon Inscription | Yes |
| Availability | When tunnel is Up | All the time | All the time |
| Persistency | During tunnel session | All the time | All the time |
| Debug on localhost | With the cli | Not possible | With the cli |
| Inspect webhooks | Yes | Yes | Yes |
| Authentication | Yes | Yes | [Yes](https://www.openwebhook.io/docs/intro#authentication) |The project is inspired from [Yopmail](https://yopmail.com/en/): a Disposable Email Address - Temporary and anonymous inbox.
### How to use it
Way 1:
- Choose a webhook store url matching **`*.webhook.store`**: like `ilovewebhooks.webhook.store`.
- Use it as a webhook address `ilovewebhooks.webhook.store/send/me-the-webhook`, or send a POST request with a curl
- Visit the store website `ilovewebhooks.webhook.store` and see your webhook
- Send that webhook to your localhost by clicking on "Send" (and running the local proxy server)
- All new webhooks will be forwarded to your localhost automaticallyWay 2:
- run `npx webhook-store-cli --port 9000` and it will prompt you a webhook store based on your username.
### Debugging on localhost
```
npx webhook-store-cli --port 9000
```Here is a video of the proxy server receiving the webhooks.
![Demo with cli](demo.gif)
```mermaid
sequenceDiagram
Third party API->>OpenWebhook Store: Sends webhook
OpenWebhook Store->>OpenWebhook Client (browser): Sends stored webhook
OpenWebhook Client (browser)->>Localhost: Replays webhook```
# Deployment
Documentation for self [hosted webhook store](https://www.openwebhook.io/docs/self-hosting/install-store-heroku).
# Development
## Install dependencies
```
$ yarn
```## Create DB and set env
### Using postgresql
```
createdb webhook-store
```Add env file and configure `DATABASE_URL`:
```
cp .env.test .env
```Configure `DATABASE_URL`, replace `USER`.
```
DATABASE_URL="postgresql://USER[:PASSWORD]@localhost:5432/webhook-store?schema=public"
```### Run migrations
```
yarn prisma migrate dev
```## Start server
```
yarn start:dev
```# Configuration
## Hosts
Webhook-store is designed to work for multiple hosts. For instance all `*.webhook.store` requests go to the same infrastructure. The webhook-store will associate all the webhooks to a host making it easy to gather all the webhooks for an host.
You can have the same infrastructure for all your team and envs. If you use \*.sandbox.org.com, then your dev team-a can work on team-a.sandbox.org.com and another team on team-b.sandbox.org.com without the need to configure or manage multiple webhook-stores.## Targets
Webhook-store is designed as a proxy, all the incoming webhooks can be sent to targets. For instance you want a third party to send webhooks to all your sandbox environments:
payment-sandbox-webhooks => staging.org.com
payment-sandbox-webhooks => sandbox.org.com
payment-sandbox-webhooks => sandbox-2.org.com## Env
```
# Configuration
MAX_STORED_WEBHOOKS_PER_HOST=100 # Will keep only 100 webhooks (per hosts)
DEFAULT_TARGETS=production.org.com, preproduction.org.com # Will send all the webhooks to these urls
```# Using docker
Edit the docker.env
```
docker run --env-file ./docker.env -p 9000:9000 openwebhook/webhook-store:latest
```