Destinations
Outpost supports multiple event destination types. Each tenant can have multiple destinations, up to a maximum set by the MAX_DESTINATIONS_PER_TENANT
environment variable (defaulting to 20
). Destinations can be registered either through the tenant-facing portal or with the API. The current supported destination types are:
- Webhooks
- Hookdeck Event Gateway
- AWS SQS
- AWS Kinesis
- RabbitMQ (AMQP)
Plans for additional event destination types include:
- GCP Pub/Sub
- Azure ServiceBus
- Amazon EventBridge
- Kafka
We recommend setting the
MAX_DESTINATIONS_PER_TENANT
value as low as is appropriate for your use case to prevent abuse and performance degradation. Updating the value to a lower value later will not delete existing destinations.
See the roadmap for more information on planned destination types. To be eligible as a destination type, it must be asynchronous in nature and not run any business logic.
Creating a destination
Destinations can be registered either through the tenant-facing portal or with the API. Since each destination type uses its own credentials and configuration, the required fields are different. Refer to the Create Destination API for the required config
and credentials
fields for each destination type.
For example, creating a "Webhook" destination requires the config.url
field.
sh
Getting Destination Types & Schemas
When using the API, you may want to build your own UI to capture user input on the destination configuration. Since each destination requires a specific configuration, the GET /destination-types
endpoint provides a JSON schema for standardized input fields for each destination type.
For example, for the webhook
type:
json
config_fields
Field[]
Config fields are non-secret values that can be stored and displayed to the user in plain text.
credential_fields
Field[]
Credential fields are secret values that will be AES encrypted and obfuscated to the user. Some credentials may not be obfuscated; the destination type dictates the obfuscation logic.
instructions
string
Some destinations will require instructions to configure. For instance, with Pub/Sub, the user will need to create a service account and grant some permissions to that service account. The value is a markdown string to be rendered with any markdown rendering library. Images will be hosted through the GitHub repository.
remote_setup_url
Some destinations may have OAuth flow or other managed setup flow that can be triggered with a link. If a remote_setup_url
is set, then the user should be prompted to follow the link to configure the destination.
See the building your own UI guide for recommended UI patterns and wireframes for implementation in your own app.
Customizing destination type definitions & instructions
The destination type definitions (label, description, icon, etc) and instructions can be customized by setting the DESTINATIONS_METADATA_PATH
environment variable to a path on disk containing the destination type definitions and instructions. Outpost will load both the default destination type definitions and any custom destination type definitions and merge them.
The metadata path is a directory containing a providers
directory with a subdirectory for each destination type. Each destination type directory contains a metadata.json
file and an instructions.md
file. You can find the default destination type definitions and instructions in the outpost-providers folder.