Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.dilli.studio/llms.txt

Use this file to discover all available pages before exploring further.

Dilli automations let you catch inbound webhooks, validate the payload, and respond or call other services without managing servers.

How it works

  • Trigger: Each automation has a unique URL. Point external tools (payments, forms, shipping, etc.) at it.
  • Validate: Define simple rules so bad payloads are stopped before actions run.
  • Act: Chain outgoing HTTP calls, branch on conditions, and shape the final response you want to return.
  • Respond: Send back a clean HTTP reply (status, headers, body) to the caller.

Pause and resume

  • Pause an automation to stop processing temporarily (helpful during maintenance or testing).
  • While paused, new requests get a “temporarily unavailable” response and no actions run.
  • Resume to pick up normal processing instantly.

Inbox and replay

  • Every request is logged in an Inbox with method, path, body, timestamps, and whether it succeeded.
  • Replay any past request to test changes without waiting for a live event.
  • Logs stay for 30 days by default (plan-dependent retention options may apply).

Common uses

  • Catch payment or subscription webhooks and sync them to CRM records.
  • Power dynamic redirects after form submissions (e.g., route to different thank-you pages).
  • Enrich incoming data with a quick call to a third-party API, then return a tailored response.
actions:
  - name: "Get Auth Token"
    type: "http_request"
    method: "POST"
    url: "https://api.example.com/token"
    headers:
      Content-Type: "application/x-www-form-urlencoded"
    data:
      auth_type: "DEV"
      grant_type: "password"
      username: "dummy_user"
      password: "dummy_pass"
    set:
      access_token: output.access_token

  - name: "Fetch Destination City Code"
    type: "http_request"
    method: "GET"
    url: "https://api.example.com/cities"
    headers:
      Authorization: "Bearer {{ vars.access_token }}"
    data:
      zipCode: "{{ request.destination.postal_code }}"
    set:
      destination_city_code: output.city_id

  - name: "Generate Shipping Quote"
    type: "http_request"
    method: "POST"
    url: "https://api.example.com/shipping"
    headers:
      Authorization: "Bearer {{ vars.access_token }}"
      Content-Type: "application/json"
    data:
      OriginZipCode: "{{ request.origin.postal_code }}"
      OriginCityId: 1234
      DestinationZipCode: "{{ request.destination.postal_code }}"
      DestinationCityId: "{{ vars.destination_city_code }}"
      TotalWeight: 10.0
      InvoiceValue: 999.99
      ReceiverCpfcnpj: "00000000000000"
      ContactName: "Contact Name"
      ContactPhoneNumber: "123456789"
      Packs:
        - AmountPackages: 1
    set:
      carrier_name: "Example Carrier"
      carrier_code: "EXPRESS"
      price: output.total_price
      currency: "BRL"
      type: "ship"
      min_delivery_date: "2025-01-01T00:00:00-0300"
      max_delivery_date: "2025-01-05T00:00:00-0300"
      phone_required: true
      reference: "dummy_ref"

Redirection

If defined, the flow will redirect the request to a specific URL after all actions are executed.
redirect:
  to: "https://example.com/success"

Response

Define the structure of the automation response, including HTTP status, headers, and body.
response:
  status: 200
  headers:
    Content-Type: "application/json"
    X-Powered-By: "Dilli Studio"
  body:
    rates:
      - name: "{{ vars.carrier_name }}"
        code: "{{ vars.carrier_code }}"
        price: "{{ vars.price }}"
        currency: "{{ vars.currency }}"
        type: "{{ vars.type }}"
        min_delivery_date: "{{ vars.min_delivery_date }}"
        max_delivery_date: "{{ vars.max_delivery_date }}"
        phone_required: true
        reference: "{{ vars.reference }}"