> ## Documentation Index
> Fetch the complete documentation index at: https://docs.thefaithapp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Platform Access and Webhooks

> Store member-owned access preferences and verify signed outgoing event deliveries.

## Member Access Profile

Use `GET /v1/platform/access-profile` to load the authenticated member's
display, language, bandwidth, and accessibility-support preferences. Use
`PUT /v1/platform/access-profile` to update them. Both calls require the
church API key and the member bearer token, and both are bound to the same
church tenant.

Support details remain private from church staff unless
`share_with_support_team` is `true`. A request with `request_support: true` is
rejected unless the member has enabled sharing in that request or previously.

The response also describes supported church languages and offline
capabilities. Treat that list as runtime capability information rather than a
promise that every piece of content has already been downloaded.

## Outgoing Webhook Events

Church administrators configure outgoing HTTPS endpoints in the dashboard.
An endpoint subscribes to one or more of these event families:

* Event created, updated, published, or deleted
* Event registration created, updated, checked in, or canceled
* Giving record created, updated, settled, refunded, or disputed
* Safe test delivery

Giving webhook payloads intentionally omit donor identity and confidential
member narratives. Endpoint URLs cannot contain credentials, target localhost,
or resolve to a private or reserved network address; redirects are not
followed during delivery.

## Verify a Delivery

Every request contains:

| Header                    | Meaning                                        |
| ------------------------- | ---------------------------------------------- |
| `X-TheFaithApp-Event`     | Event type, such as `event.updated`            |
| `X-TheFaithApp-Event-Id`  | Stable delivery event UUID used across retries |
| `X-TheFaithApp-Timestamp` | Unix timestamp used when signing               |
| `X-TheFaithApp-Signature` | `v1=` followed by the hexadecimal HMAC         |

Build the signed message as the timestamp, a period, and the exact raw request
body:

```text theme={null}
{timestamp}.{raw_body}
```

Calculate HMAC-SHA256 with the endpoint signing secret and compare it to the
hexadecimal value after `v1=` using a timing-safe comparison. Reject stale
timestamps according to your replay window, and store processed event IDs so a
retry cannot apply the same business change twice.

Return any `2xx` status only after the receiver has durably accepted the
event. Failed deliveries use bounded automatic retries, and an administrator
can also request a manual retry with the same event ID.

<Warning>
  The signing secret is shown only at endpoint creation or rotation. Store it
  in the receiver's secret manager. Rotating it immediately invalidates the
  previous signature key.
</Warning>
