Bufdir Preview Service
API Contract
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
}
}