Operations
An operation is your logic, called through Fóir. You host an HTTP endpoint and register its URL, and Fóir posts it a signed payload, retries on failure and records the result.
How one is triggered
An operation runs from a button in the console, a field in the record editor, a lifecycle hook, a schedule or a call to the public API. Each one gets its own typed GraphQL mutation, generated from its input and output schema, so an operation keyed ai-summarize becomes executeAiSummarize. Preconditions and usage quotas decide who may run it and how often.
Synchronous or in the background
In sync mode the caller waits and your response body is the result. The timeout defaults to 30 seconds and can be set as high as five minutes. In async mode your endpoint answers 202 and later reports progress, completion, failure or cancellation through a callback token. It has 24 hours by default to call back before the run is marked timed out.
Retries and the dead-letter queue
A failed call is retried, three times by default, and a circuit breaker opens after five failures and refuses calls for 60 seconds. A queued run that exhausts its retries goes to the dead-letter queue, where you can inspect, retry or dismiss it. An idempotency key on the call makes a retry adopt the first attempt's run, so the work is not done twice.
The run record
Every run is recorded with a status, its duration, the result or error, the trigger, the retry count and progress.
Calls to third-party APIs
A pass-through write has no service of yours behind it. Fóir calls the third-party API itself from a request template, with credentials drawn from secrets. A resolver operation surfaces a third-party API as a GraphQL query or as a field on a model, with caching and batching.
Read the detail
The operations guide covers registering an endpoint, the payload it receives, both modes and the run history.