REST /api/v1/report-previews 7 endpoints
GET /api/v1/report-previews/api/v1/report-previews

List all report previews for the authenticated organization

Public

Response Example

{
  "data": [
    {
      "preview_id": "prev-001",
      "organization_id": "org-1042",
      "organization_name": "Barnevernstjenesten Oslo Sør",
      "period_id": "2024",
      "period_label": "2024 — Årsrapport",
      "status": "draft",
      "completion_percentage": 72,
      "has_blocking_issues": false,
      "validation_issue_count": 3,
      "last_refreshed_at": "2026-03-25T14:32:00Z",
      "created_at": "2026-03-20T09:00:00Z",
      "updated_at": "2026-03-25T14:32:00Z"
    },
    {
      "preview_id": "prev-002",
      "organization_id": "org-1042",
      "organization_name": "Barnevernstjenesten Oslo Sør",
      "period_id": "2023",
      "period_label": "2023 — Årsrapport",
      "status": "submitted",
      "completion_percentage": 100,
      "has_blocking_issues": false,
      "validation_issue_count": 0,
      "last_refreshed_at": "2025-01-10T10:00:00Z",
      "created_at": "2025-01-05T08:00:00Z",
      "updated_at": "2025-01-10T10:00:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 2
  }
}
GET /api/v1/report-previews/api/v1/report-previews/:id

Get full report preview by ID, including all sections and field values

Public

Response Example

{
  "preview_id": "prev-001",
  "organization_id": "org-1042",
  "organization_name": "Barnevernstjenesten Oslo Sør",
  "period_id": "2024",
  "period_label": "2024 — Årsrapport",
  "status": "draft",
  "completion_percentage": 72,
  "has_blocking_issues": false,
  "validation_issue_count": 3,
  "sections": [
    {
      "section_id": "barn-under-omsorg",
      "section_title": "Barn under omsorg",
      "completion_percentage": 100,
      "issue_count": 0,
      "fields": [
        {
          "field_key": "antall_barn_plassert_utenfor_hjemmet",
          "label": "Antall barn plassert utenfor hjemmet",
          "value": 47,
          "validation_state": "valid"
        },
        {
          "field_key": "antall_akuttplasseringer",
          "label": "Antall akuttplasseringer",
          "value": 8,
          "validation_state": "valid"
        }
      ]
    },
    {
      "section_id": "undersokelser",
      "section_title": "Undersøkelser",
      "completion_percentage": 50,
      "issue_count": 3,
      "fields": [
        {
          "field_key": "antall_undersokelser_igangsatt",
          "label": "Antall undersøkelser igangsatt",
          "value": 132,
          "validation_state": "valid"
        },
        {
          "field_key": "antall_undersokelser_henlagt",
          "label": "Antall undersøkelser henlagt",
          "value": null,
          "validation_state": "error"
        }
      ]
    }
  ],
  "last_refreshed_at": "2026-03-25T14:32:00Z",
  "created_at": "2026-03-20T09:00:00Z",
  "updated_at": "2026-03-25T14:32:00Z"
}
POST /api/v1/report-previews/api/v1/report-previews

Create a new report preview for an organization and period

Public

Request Example

{
  "organization_id": "org-1042",
  "period_id": "2024"
}

Response Example

{
  "preview_id": "prev-003",
  "organization_id": "org-1042",
  "organization_name": "Barnevernstjenesten Oslo Sør",
  "period_id": "2024",
  "period_label": "2024 — Årsrapport",
  "status": "draft",
  "completion_percentage": 0,
  "has_blocking_issues": false,
  "validation_issue_count": 0,
  "sections": [],
  "last_refreshed_at": "2026-03-26T08:00:00Z",
  "created_at": "2026-03-26T08:00:00Z",
  "updated_at": "2026-03-26T08:00:00Z"
}
PUT /api/v1/report-previews/api/v1/report-previews/:id

Refresh and update a report preview, re-aggregating data from source

Public

Request Example

{
  "force_refresh": true
}

Response Example

{
  "preview_id": "prev-001",
  "organization_id": "org-1042",
  "period_id": "2024",
  "status": "draft",
  "completion_percentage": 78,
  "has_blocking_issues": false,
  "validation_issue_count": 2,
  "last_refreshed_at": "2026-03-26T08:15:00Z",
  "updated_at": "2026-03-26T08:15:00Z"
}
DELETE /api/v1/report-previews/api/v1/report-previews/:id

Delete a draft report preview

Public

Response Example

{
  "deleted": true,
  "preview_id": "prev-001"
}
GET /api/v1/report-previews/api/v1/report-previews/:id/export

Get the report preview formatted for export (PDF/XML submission to Bufdir)

Public

Response Example

{
  "preview_id": "prev-001",
  "organization_id": "org-1042",
  "period_id": "2024",
  "export_format": "bufdir-xml-v3",
  "export_ready": true,
  "blocking_issues": [],
  "export_payload": {
    "rapportperiode": "2024",
    "organisasjonsnummer": "912345678",
    "seksjoner": [
      {
        "seksjon_id": "barn-under-omsorg",
        "felter": [
          {
            "felt_nokkel": "antall_barn_plassert_utenfor_hjemmet",
            "verdi": 47
          },
          {
            "felt_nokkel": "antall_akuttplasseringer",
            "verdi": 8
          }
        ]
      }
    ]
  },
  "generated_at": "2026-03-26T08:20:00Z"
}
GET /api/v1/report-previews/api/v1/report-previews/:id/validation-issues

Get all validation issues for a report preview, optionally filtered by section or severity

Public

Response Example

{
  "data": [
    {
      "issue_id": "issue-001",
      "section_id": "undersokelser",
      "section_title": "Undersøkelser",
      "field_key": "antall_undersokelser_henlagt",
      "field_label": "Antall undersøkelser henlagt",
      "severity": "error",
      "is_blocking": true,
      "message": "Feltet er påkrevd og kan ikke være tomt.",
      "current_value": null,
      "prior_period_value": 89
    },
    {
      "issue_id": "issue-002",
      "section_id": "undersokelser",
      "section_title": "Undersøkelser",
      "field_key": "andel_undersokelser_innen_frist",
      "field_label": "Andel undersøkelser innen frist (%)",
      "severity": "warning",
      "is_blocking": false,
      "message": "Verdien er 45% lavere enn forrige periode (82%). Vennligst bekreft at dette er korrekt.",
      "current_value": 45,
      "prior_period_value": 82
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 2
  }
}

Additional Metadata

{
  "contract_summary": {
    "total_contracts": 410,
    "total_endpoints": 2416,
    "api_styles_used": [
      "rest"
    ]
  },
  "generated_at": "2026-03-26T06:55:53.316Z"
}