# Cloudflare Cache Purge Manual

Use this when the deployed frontend has already updated on the servers, but the public site still shows an old version because Cloudflare or browser cache is serving stale files.

## Current API-token note

The current `ark-library.com` Cloudflare Zone ID is:

```text
ca1368486d3b0bf9f1066f2a2281dced
```

Cloudflare cache purge by API requires both a valid API token and this Zone ID. If API access is unavailable, use the manual dashboard method below.

> Security note: if a token was pasted into chat, terminal logs, or docs by mistake, revoke it in Cloudflare and create a new one.

## Manual purge in Cloudflare Dashboard

1. Open <https://dash.cloudflare.com/> and log in.
2. Go to **Websites**.
3. Select **ark-library.com**.
4. Go to **Caching** → **Configuration**.
5. Click **Purge Cache**.
6. Choose one of these:
   - **Purge Everything**: safest when a deploy looks stale.
   - **Custom Purge**: use when only specific pages/assets are stale.
7. For a stale frontend deploy, purge at least:
   - `https://ark-library.com/`
   - `https://ark-library.com/index.html`
8. Wait 10–60 seconds, then hard-refresh the browser:
   - macOS Chrome/Safari: `Cmd + Shift + R`
   - Windows/Linux Chrome: `Ctrl + Shift + R`

## Find the Cloudflare Zone ID

1. Open <https://dash.cloudflare.com/>.
2. Select **ark-library.com**.
3. Open **Overview**.
4. In the right sidebar, find **API** → **Zone ID**.
5. Copy the Zone ID for API purge commands.

For this project, the known Zone ID is `ca1368486d3b0bf9f1066f2a2281dced`.

## API purge after you have Zone ID

Store the token in an environment variable instead of writing it directly into commands:

```bash
export CLOUDFLARE_API_TOKEN='replace-with-new-token'
export CLOUDFLARE_ZONE_ID='replace-with-zone-id'
```

Purge everything:

```bash
curl -sS -X POST \
  "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"purge_everything":true}'
```

Purge only the main frontend files:

```bash
curl -sS -X POST \
  "https://api.cloudflare.com/client/v4/zones/$CLOUDFLARE_ZONE_ID/purge_cache" \
  -H "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
  -H "Content-Type: application/json" \
  --data '{"files":["https://ark-library.com/","https://ark-library.com/index.html"]}'
```

Expected success response includes:

```json
{"success":true}
```

## Create a safer Cloudflare API token

1. In Cloudflare Dashboard, open **My Profile** → **API Tokens**.
2. Click **Create Token**.
3. Use **Custom token**.
4. Add permissions:
   - `Zone` → `Cache Purge` → `Purge`
   - `Zone` → `Zone` → `Read`
5. Set zone resources:
   - `Include` → `Specific zone` → `ark-library.com`
6. Create the token, copy it once, and store it in a password manager or CI secret.

Do not commit Cloudflare tokens into this repository.
