---
title: "Store the facts of one app host boot (ADR 0076 contract §5)"
method: POST
path: "/internal/app-host/facts"
---

# Store the facts of one app host boot (ADR 0076 contract §5)

`POST /internal/app-host/facts`

## Request

- Base URL: `https://api.eurobase.dev`
- URL: `https://api.eurobase.dev/internal/app-host/facts`
- Auth: none declared

Bearer: an app host producer token, scope app-host-facts, signed with the key derived for its producerId from APP_HOST_METERING_SECRET. The token is verified before the body is read. Accepted from a provisioning, active or draining member. vcpuCount is fixed at the first report of a boot; app_hosts mirrors the newest boot.

## Request body

- AppHostFactsV1
  - `hostId` string, required
  - `bootId` string, uuid, required
  - `softwareRevision` string, required
  - `vcpuCount` integer, required
  - `binaries` object[], required
    - `version` string, required
    - `maxCompatibilityDate` string, date, required
    - `sha256` string, required
  - `reportedAt` string, date-time, required

## Response `200`

Stored for its boot, unchanged (identical replay) or stale (an older report of a known boot)

- AppHostFactsResult
  - `disposition` 'stored' | 'unchanged' | 'stale', required
  - `mirrored` boolean, required: The report is now the newest boot mirrored into app_hosts

## Other responses

- `400`: Facts break a contract rule (app-host-facts-invalid, with the rule)
- `401`: Producer token invalid (app-host-producer-token-invalid)
- `403`: Facts name another host or boot than the token (app-host-producer-scope-mismatch), or the host is not a member (app-host-not-member)
- `409`: The boot already reported another vCPU count, or other facts at the same reportedAt (boot-facts-conflict)
- `503`: APP_HOST_METERING_SECRET is not configured (app-host-ingest-unconfigured); retry after Retry-After

---

[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)
