Skip to main content
Version: 0.11.10 (stable)

Use Webhooks

This tutorial assumes that fluvio is installed, and logged-in to InfinyOn Cloud. Follow the Quick Start to get set up.

Webhooks are special connectors with an associated external url. Users can send data to their topics via a HTTP POST request.

Create a Webhook via CLI​

Copy this example Webhook config file and save it as example-webhook.yaml

meta:
name: my-webhook
topic: my-webhook-topic

# optional
webhook:
outputParts: full
outputType: json

Create the webhook using the example config file

$ fluvio cloud webhook create --config example-webhook.yaml

Your output should look similar to this. We'll cover sending data to this url.

Webhook "my-webhook" created with url: https://infinyon.cloud/webhooks/v1/[random string]

If you need this url again, you can run this command to list your webhooks, and their urls.

$ fluvio cloud webhook list

Example output

 NAME        TOPIC             URL
my-webhook my-webhook-topic https://infinyon.cloud/webhooks/v1/[random string]

Send data to webhook​

For this section, it is recommended to open second terminal in view watch data arrive.

Run this command to create a consumer to our topic in the second terminal.

$ fluvio consume my-webhook-topic

We'll be sending json data {"key": "value"} to our webhook using curl. Replace the url so [random string] matches your unique url. Keep this command close because we'll refer to this example curl command later.

$ curl -v -X POST https://infinyon.cloud/webhooks/v1/[random string] -H "Content-Type: application/json" -d '{"key": "value"}'

Expected output is a long json request with the HTTP headers and body

{"headers":{"accept":"*/*","accept-encoding":"gzip","content-length":"16","content-type":"application/json","host":"infinyon.cloud","user-agent":"curl/7.88.1","x-forwarded-for":"..."},"body":{"key":"value"}}

Remove HTTP request headers from output​

We don't need the headers. Just the data we sent. We can update the output so it only includes body data.

Modify the outputParts value from our webhook config example-webhook.yaml to the value body

meta:
name: my-webhook
topic: my-webhook-topic

# optional
webhook:
outputParts: body
outputType: json

Run this command to update your webhook.

$ fluvio cloud webhook update -c example-webhook.yaml
Webhook "my-webhook" updated

Running the example curl command output only the body of the request. Our request data is included, but it was automatically modified so it can be a valid json value.

{"key": "value"}

Conclusion​

You now know how to create and configure the output of Webhooks. Check out the Webhook Config reference to see how to configure other transformations.