Connectors / APIs & web

Webhook

source

Webhook HTTP receiver source

Install

cargo install faucet-cli --features source-webhook
faucet init --source webhook
# Cargo.toml — use it as a library
cargo add faucet-source-webhook

Starter config

source:
  type: webhook
  config:
    # listen_addr: "127.0.0.1:8080"    # Address to bind the HTTP server to (default: `"127.0.0.1:8080"`).
    # path: "/webhook"    # Endpoint path for receiving webhooks (default: `"/webhook"`).
    # max_payloads: null    # Stop after receiving this many payloads.
    # timeout_secs: 30    # How long to listen before returning, in seconds (default: 30).
    # max_body_bytes: 1048576    # Maximum accepted request body size in bytes (default: 1 MiB).
    # max_buffered_bytes: 268435456    # Most request-body bytes held in memory for one window (default: 256 MiB).
    # auth_token: null    # Optional shared secret.
    # batch_size: 1000    # Records per emitted `StreamPage`.
    # signature: null    # Optional HMAC request-signature verification for senders that sign the raw body instead of sending a static secret.

Capabilities

Replay Non-deterministic replay
Exactly-once replay No
Incremental No
Dataset discovery No
Reports lag No
Compression No

Config fields

FieldTypeDefaultDescription
listen_addr string "127.0.0.1:8080" Address to bind the HTTP server to (default: "127.0.0.1:8080").
path string /webhook Endpoint path for receiving webhooks (default: "/webhook").
max_payloads integer — Stop after receiving this many payloads.
timeout_secs integer 30 How long to listen before returning, in seconds (default: 30).
max_body_bytes integer 1048576 Maximum accepted request body size in bytes (default: 1 MiB). Larger POSTs are rejected with 413 Payload Too Large so a single huge request can't exhaust memory.
max_buffered_bytes integer 268435456 Most request-body bytes held in memory for one window (default: 256 MiB). Once a POST would cross it the window closes, the payloads already stored are emitted, and that POST and later ones are refused with 503 Service Unavailable + Retry-After. An empty window always takes one POST, however large (max_body_bytes bounds it), and closes once it reaches the bound. 0 removes the bound.
auth_token string — Optional shared secret. When set, every request must carry it in the Authorization header (either the raw token or Bearer <token>); requests without it are rejected with 401 Unauthorized. When None (default) the endpoint is unauthenticated.
batch_size integer 1000 Records per emitted StreamPage. The webhook source has no native streaming primitive — it accumulates incoming POSTs into an in-memory buffer during the receive window, then the default Source::stream_pages impl chunks that buffer into pages of this size. Defaults to DEFAULT_BATCH_SIZE.
signature object — Optional HMAC request-signature verification for senders that sign the raw body instead of sending a static secret. Unsigned or mis-signed requests are rejected with 401.
Get started

Your first pipeline runs in five minutes.

Install the CLI, scaffold a config, and move real data — nothing external to stand up.

curl -LsSf https://github.com/faucet-hq/faucet-stream/releases/latest/download/faucet-cli-installer.sh | sh
brew install faucet-hq/faucet-stream/faucet-cli