---
title: "Apply one frozen page of grouped Mini WAF blocks exactly once (ADR 0109)"
method: POST
path: "/internal/gateway/blocks/settle"
---

# Apply one frozen page of grouped Mini WAF blocks exactly once (ADR 0109)

`POST /internal/gateway/blocks/settle`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/internal/gateway/blocks/settle`
- Auth: HTTP bearer

The body is passed to the DB unchanged. A page holds up to 80 items: up to 70 groups (one blocked path, project and minute with its exact count and up to 50 client IPs) and drop counts. Each item is validated and its route ownership checked; accepted groups become one Logs row each in the blocked retention category. A retried page answers its stored outcome and writes nothing; the same page id with other bytes is a conflict.

## Request body

- object
  - `schemaVersion` 'gateway-blocks-page.v1', required
  - `storeUid` string, required
  - `pageId` string, required
  - `groups` object[], required
  - `drops` object[], required

## Response `200`

The page outcome: settled with one result per item in page order (replay true for a retried page), or conflict when the page id was already used with other bytes

- object
  - `schemaVersion` 'gateway-blocks-page.v1', required
  - `storeUid` string, required
  - `pageId` string, required
  - `bodySha256` string, required
  - `status` 'settled' | 'conflict', required
  - `replay` boolean
  - `reason` string
  - `results` object[]
    - `index` integer, required
    - `kind` 'group' | 'drop', required
    - `outcome` 'accepted' | 'rejected' | 'project-deleted', required
    - `reason` string

## Other responses

- `401`: Gateway blocks settlement token is invalid, or the body is not the one it names
- `422`: The page is not a gateway-blocks-page.v1 page of the token store within its bounds, or of a store the DB did not register (gateway-blocks-page-invalid); nothing was written and the Gateway parks the page
- `503`: Settlement is unavailable or over its deadline; the page stays in the Gateway WAL and is retried

---

[API](https://skmtc.dev/eurobase/apis/eurobase-api.md) · [All operations](https://skmtc.dev/eurobase/apis/eurobase-api/llms.txt) · [OpenAPI document](https://skmtc.dev/eurobase/apis/eurobase-api/revisions/5266a299d18a?raw)
