What exactly is the function of Defender's Relay when using metatransactions?

@spalladino Thanks for the helpful workshop and thanks the OZ team for creating this much-needed product. To clarify, when you say

The relayer is a service that just takes users' signed messages, wraps them in a transaction, and sends it to the application contract , paying the gas for it.

That means the steps for using the Relayer API to submit meta txns would be:

  • App generate the unsigned txn
  • User signs the transaction
  • App sends the signed txn via the Defender Relay API to the /txs endpoint to be submitted on chain

The docs for that /txs endpoint suggest that the it only accepts unsigned requests, however, so am I missing something?

I'd like to note that I'm not using the defender-relay-client JS package but instead am writing my own client for the Relayer API in my server-side python web app. I know in your demo and also this more recent demo the steps involve using Autotasks, but I'm curious if there's a way for me to submit user-signed transactions directly to the relayer without calling an autotask.

EDIT: just saw you already answered this here. So to confirm, directly calling the /txs should work?