Sevro

Connections

Configure REST and SMTP connections to integrate Sevro with external services.

What are connections?

Connections are reusable integrations with external services. A workflow node can reference a connection to make HTTP requests, send emails, or call external APIs without hardcoding credentials.

Supported providers

ProviderTypeUse case
RESTHTTPCall any REST API (GET, POST, PUT, PATCH, DELETE)
SMTPEmailSend transactional emails

Postgres (planned)

Postgres connections are declared in the schema but not yet implemented. They will allow direct SQL queries from workflow nodes.

Creating a connection

Via the CLI

sevro connection create \
  --name stripe-api \
  --provider rest \
  --auth-type bearer \
  --config '{"base_url":"https://api.stripe.com/v1"}' \
  --credentials '{"token":"sk_live_..."}'

Via the API

curl -X POST http://localhost:8080/platform.v1.PlatformService/CreateConnection \
  -H "Authorization: Bearer $SEVRO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "stripe-api",
    "provider": "rest",
    "auth_type": "bearer",
    "config": {"base_url": "https://api.stripe.com/v1"},
    "credentials": {"token": "sk_live_..."}
  }'

Connection configuration

REST connections

FieldDescription
base_urlThe base URL for all requests (e.g. https://api.stripe.com/v1)
auth_typebearer, basic, api_key, or none
credentialsAuth credentials (token, username/password, API key)

SMTP connections

FieldDescription
hostSMTP server hostname (e.g. smtp.gmail.com)
portSMTP port (usually 587 for TLS, 465 for SSL)
auth_typeplain or none
credentialsUsername and password
sevro connection create \
  --name email \
  --provider smtp \
  --auth-type plain \
  --config '{"host":"smtp.gmail.com","port":587}' \
  --credentials '{"username":"jack@sevro.dev","password":"app-password"}'

Using connections in workflows

Reference a connection by name in a workflow node:

nodes:
  - id: charge-card
    type: http_request
    connection: stripe-api
    config:
      method: POST
      path: /charges
      body: |
        {
          "amount": {{ record.amount * 100 }},
          "currency": "gbp",
          "customer": "{{ record.customer_id }}"
        }

  - id: send-receipt
    type: send_email
    connection: email
    config:
      to: "{{ record.customer_email }}"
      subject: "Receipt for your order"
      body: "Thank you for your payment of £{{ record.amount }}."

Managing connections

# List all connections
sevro connection list

# Get a specific connection
sevro connection get <connection-id>

# Test a connection (sends a test request/email)
sevro connection test <connection-id>

# Delete a connection
sevro connection delete <connection-id>

Security

Connection credentials are encrypted at rest using AES-256-GCM. The encryption key is set via the SEVRO_ENCRYPTION_KEY environment variable. If not set, a dev key is auto-generated (not suitable for production).

Credentials are never returned in API responses — only the connection metadata (name, provider, auth type, config) is visible.

Next steps

  • Workflows — use connections in workflow nodes
  • Triggers — start workflows on events
  • Self-hosting — configure the encryption key in production

On this page