Skip to main content

Bindings API

Using the Catalyst Bindings API, you can trigger your app with events coming in from external systems and interface with external systems. See Bindings API Reference.

With the Bindings API, you can:

  • Avoid the complexities of connecting to and polling from messaging systems, such as queues and message buses.
  • Focus on business logic, instead of the implementation details of interacting with a system.
  • Decrease your dependence on third-party SDKs and libraries.
  • Handle retries and failure recovery.
  • Build portable applications with environment-specific bindings and no required code changes.

There are two primary binding types: Input and Output.

Input bindings

With input bindings, you can trigger your application when an event from an external resource occurs. An optional payload and metadata may be sent with the request.

To receive events from an input binding:

  1. Onboard a Catalyst Component for the input binding source
  2. Listen for the incoming event using:
    • An HTTP endpoint
    • The gRPC proto library to receive events
Note

On startup, Catalyst will send an OPTIONS request for all defined input bindings to the application. If the application wants to subscribe to the binding, Catalyst expects a status code of 2xx or 405.

Output bindings

With output bindings, you can invoke external resources. An optional payload and metadata can be sent with the invocation request.

To invoke an input binding:

  1. Onboard a Catalyst Component for the output binding target service
  2. Use the HTTP endpoint or gRPC method to invoke the binding with an optional payload
  3. Specify an output operation. Output operations depend on the binding component you use, and can include:
    • "create"
    • "update"
    • "delete"
    • "exec"
Component operations support

Binding components may vary in the capabilities they support, you can use the Catalyst console to filter by operation when determining if a binding provides the functionality you need.

Supported Binding Components

NameInputOutput
AWS S3: aws.s3
AWS SNS: aws.sns
Azure Blob Storage: azure.blobstorage
Azure Cosmos DB (SQL API): azure.cosmosdb
Azure Event Hubs: azure.eventhubs
Azure Service Bus Queues: azure.servicebus.queues
Azure Storage Queues: azure.storagequeues
HTTP: http
Apache Kafka: kafka
PostgreSQL: postgres
RabbitMQ: rabbitmq
Redis: redis