# Journaux et activité

> Ce que le service écrit, ce qu'on a fait dessus, ce qu'il consomme.

## Le journal du service

```http
GET /api/resources/{id}/logs?lines=100
```

```json
{ "lines": ["[13:02:11 INFO]: Starting minecraft server version 1.21.4"] }
```

`lines` va de 1 à 100, et vaut 100 par défaut. Le journal vient du nœud quand il répond,
et de ce qu'on a gardé sinon — c'est ce qui permet de lire un service qui a planté.

Pour suivre en direct plutôt que sonder, passe par [la console](/api/console) : son
WebSocket pousse chaque ligne dès qu'elle sort.

## L'activité

```http
GET /api/resources/{id}/events?cursor=…
```

```json
{
  "items": [
    { "id": "cmu5zhbdn0003itf6t6o45aqz", "type": "POWER_START", "at": "2026-09-17T20:30:05.531Z" },
    { "id": "cmu4k1tz30005itmnoh2ez6mv", "type": "PROVISIONED", "at": "2026-09-16T20:30:22.720Z" }
  ],
  "nextCursor": null
}
```

Le journal des faits administratifs : créations, ordres de marche, sauvegardes,
suspensions, interventions de notre équipe. Il se pagine par curseur — passe le
`nextCursor` reçu pour la page suivante, `null` veut dire qu'il n'y a plus rien.

C'est cette liste qui rend l'audit possible : **ce que notre équipe fait sur ton service
y figure au même titre que ce que tu fais toi.**

## La consommation

```http
GET /api/resources/{id}/usage?range=30
```

```json
{
  "range": 30,
  "totalCents": 112,
  "days": [
    { "date": "2026-09-17", "totalCents": 4 },
    { "date": "2026-09-18", "totalCents": 0 }
  ]
}
```

Une ligne par jour sur la fenêtre demandée — 30 par défaut, et la série est complète :
les jours sans dépense y figurent à zéro, ce qui évite d'avoir à combler les trous pour
tracer une courbe.

## Le total facturé sur une fenêtre

```http
GET /api/resources/{id}/billed-totals
  ?hourStart=2026-09-18T09:00:00.000Z
  &dayStart=2026-09-18T00:00:00.000Z
  &weekStart=2026-09-14T00:00:00.000Z
  &monthStart=2026-09-01T00:00:00.000Z
```

```json
{ "hourCents": 0, "dayCents": 4, "weekCents": 31, "monthCents": 112 }
```

Les quatre bornes sont **obligatoires** : c'est toi qui décides où commencent l'heure, le
jour, la semaine et le mois, parce que le fuseau de celui qui regarde n'est pas celui du
serveur. Une borne manquante rend un `400` qui la nomme.
