Background
Deprovisioning webhooks send identity data from Lumos to an endpoint you control. This article describes how that connection is protected and exactly what the payload contains. Lumos sends every outbound webhook over HTTPS to an endpoint you register, and signs every payload. Your receiving system can confirm that the request came from Lumos and was not altered in transit. The payload carries only the business identity attributes needed to act on an offboarding event. It contains no HR-sensitive data, no compensation or personal record data, and no credentials.How the connection is protected
- HTTPS is required. Lumos rejects a plain HTTP endpoint when you configure the webhook. A payload can’t be sent unencrypted, even by misconfiguration.
- Redirects are not followed. If your endpoint, or anything in front of it, responds with a redirect, the delivery fails. Lumos does not forward your data to a second destination.
- Private addresses are blocked. Lumos rejects an endpoint that resolves to a private or internal network address. This prevents a webhook from pointing at internal infrastructure.
- Source addresses are fixed. Outbound traffic leaves from a fixed set of IP addresses, so you can allowlist them at the network layer in front of your endpoint. For the current list, see Lumos IP addresses.
How the payload is authenticated
Each request carries an HMAC-SHA256 signature. Lumos computes it over a timestamp plus the request body, using a signing secret unique to that webhook. The signature and the timestamp travel together in theX-Lumos-Webhook-Signature header. For the header format and sample verification code, see Verifying Webhook Signatures.
The signature gives your receiving side three guarantees:
- The request came from Lumos. Only the two parties that hold the shared secret can produce a valid signature.
- The body was not modified in transit. Any change to the payload invalidates the signature.
- A captured request can’t be replayed. The timestamp is part of the signed material, so your receiver can reject anything outside an acceptable time window.
What the payload contains
The deprovisioning payload contains:- The user: email address, given name, and family name.
- The account on the target application: the application’s own identifier for that account, plus email and username where they exist.
- The application: its name and instance identifier.
- The permissions or entitlements being removed, by name.
- A comment field that describes the reason for the action.
- Custom fields, only if your team configures them for that application.