Tell me when this happens

Pick an alert recipe, draw the area you care about, and say how strong a signal has to be before it is worth interrupting you. You read the exact request and one plain sentence about what will fire, and only then does anything get created.

1. What you are watching

An alert layer is a recipe that scores every cell in a grid, on the cadence its source publishes. A subscription is your standing question about that score.

alert layer
loading
cells
loading
scored value
loading
refreshes on
loading
suggested cooldown
loading

The evaluator matches this against the refresh event's own alert_layer by exact string equality, so a subscription on alerts/firms-fire never hears from a driver publishing catalog://alerts/firms-fire@v1. The default here is the spelling the end-to-end script uses. Change it only to match your driver.

Recipe source: loading

2. Connect your gateway key

This is a gateway key, not an account. It is held in memory for this tab and is never written to storage, never put in the URL, and never baked into the build. Close the tab and it is gone. Changing the base clears it: a key is scoped to the gateway that issued it.

The key authorizes the request; it does not identify you. Who a subscription belongs to is the owner field you type below, which the gateway stores as written.

3. Where

Point, Polygon or MultiPolygon. This page checks the shape so a bad paste is caught before a round trip; the gateway parses it for real and its answer is the one that counts.

4. When it should reach you

How many cells have to cross in a single refresh before anything fires. It reads like a "do not wake me for one noisy pixel" knob and it is not one: cells still inside their cooldown are removed before this number is counted, so a minimum above 1 paired with a long cooldown can fire nothing while new cells keep crossing a few at a time. Leave it at 1 unless you can say why. Section 6 states the combination you have picked.

A duration (6h, 30m, 2d, 90s) or bare seconds. Empty means no cooldown, and the request carries 0 for it: an empty string is not a duration the gateway will parse, so the preview shows the 0 that replaces it rather than sending something that comes back 400.

Layer parameters

These belong to the layer's own maths, not to your notification taste. They are shown with the values the recipe declares.

5. Where a firing goes

Required. Every firing is signed with it, and a signature over an empty key proves nothing to your receiver. Note that the gateway echoes the stored secret back on a read; this page never prints it.

Off by default, matching the gateway. A loopback target is reachable only where the person creating the subscription owns the machine, which means local development, and everywhere else it is a way to make the gateway POST to its own neighbours.

A subscription's delivery list cannot be edited afterwards, by design: each entry's position is its identity in the per-endpoint delivery record, so reordering one would silently re-point every firing already in flight. Changing delivery means creating a new subscription.

6. Exactly what will fire

The request, verbatim

This is the body, not a rendering of it. The only thing held back is your secret, which is sent as typed.

There is no layer_params key in it, and that is deliberate: the subscription API declares no such field and does not reject unknown ones, so a parameter block sent today would come back 201 and be discarded. Rather than print a key the gateway throws away, this page sends none and refuses to create a subscription whose parameters differ from the layer's declared defaults.

7. Confirm, then create

Editing any field above unticks this box. Consent is to a specific subscription, and a tick that survived an edit would be consent to a different one.