Files
core/bible/architecture/api-surface.md

2.1 KiB
Raw Blame History

API Surface

Health

  • GET /health

Registry

  • GET /assets
  • POST /assets
  • GET /registry/assets/{id}
  • PUT /registry/assets/{id}
  • DELETE /registry/assets/{id}
  • GET /components
  • POST /components
  • GET /registry/components/{id}
  • PUT /registry/components/{id}

Registry invariants:

  • Assets do not carry project_id in request/response contracts.

Ingest

  • POST /ingest/hardware
  • POST /ingest/manual/csv
  • GET /ingest/manual/csv/jobs/{id}

Manual CSV ingest contract:

  • POST /ingest/manual/csv is asynchronous and returns 202 Accepted with job_id.
  • Final result is read from GET /ingest/manual/csv/jobs/{id}.

Timeline

  • GET /assets/{id}/timeline
  • GET /components/{id}/timeline

Failures

  • GET /failures
  • POST /failures

UI Routes

  • GET /ui
  • GET /ui/assets
  • GET /ui/assets/{id}
  • GET /ui/components
  • GET /ui/components/{id}
  • GET /ui/failures
  • GET /ui/ingest
  • GET /ui/ingest/manual-template.csv

CSV Export Contract

Route: GET /ui/ingest/manual-template.csv

Rules:

  • Encoding: UTF-8.
  • UTF-8 BOM is included at file start for Excel compatibility.
  • Delimiter: ;.
  • Line endings: \r\n.
  • Escaping: RFC4180-compatible (fields with ;, ", \n, \r are quoted; inner " is doubled).
  • Header row is always present.
  • Stable column order (deterministic, no map-driven order).
  • Exported header order:
    • дата_осмотра
    • серийный_номер_сервера
    • вендор
    • p/n_устройства
    • s/n_устройства
    • локейшн_в_сервере
    • версия_прошивки
    • состояние_оборудования
  • Identifier-like columns are exported with Excel-safe text protection (to preserve leading zeros/codes).
  • Empty values are exported as empty cells (no null/undefined).
  • HTTP headers:
    • Content-Type: text/csv; charset=utf-8
    • Content-Disposition: attachment; filename="manual-import-template.csv"

Routing Notes

  • API router is registered in internal/api/server.go.
  • Registry, ingest, failures, asset/component pages, and UI routes are attached to http.ServeMux.