Norwegian business deadlines for a given calendar year
Zero-auth, deterministic, cacheable public endpoint (distribution infrastructure). Returns the canonical list of universal Norwegian business deadlines for the requested year: the six MVA terminer, the twelve A-melding monthly deadlines, skattemelding for AS and ENK, årsregnskap for AS, and the Foretaksregisteret årsbekreftelse. The calendar is DATABASE-DRIVEN: the route fans out getActiveRulesForEntity across all five Norwegian entity types [AS, ENK, ANS, DA, NUF] (ANS/NUF have no seed rules today but participate in applies_to_entity_types when a cross-entity rule lists them; adding seed rules for those types later requires no code change), evaluates each rule set against a universal tier_2 context, expands the applicable obligations through the deadline engine over the requested year, and dedupes the results on (obligation_id, period) so cross-entity deadlines merge into a single row with a unioned applies_to_entity_types. The response is deterministic — same (year, Rulebook version) inputs produce byte-identical output — and _meta.rulebook_version / _meta.data_freshness carry the MAX last_verified across the rules that produced the calendar, giving CDN / client caches a single invalidation key.
Timezone semantics: every deadline and adjusted_from is an ISO 8601 string with an explicit +01:00 (CET) or +02:00 (CEST) offset derived dynamically from Europe/Oslo — never hardcoded. The offset applies to the ADJUSTED instant, not the pre-adjustment legal date, so a 31 May Sunday (+02:00 CEST) that pushes to 1 June Monday carries the +02:00 offset that applies on 1 June. timezone is always "Europe/Oslo" as the canonical reference.
Holiday semantics: the legal deadline is computed first (e.g. 10th of the month, 31 May, 31 July). If that date falls on a Saturday, Sunday, or a Norwegian public holiday — the five fixed (1. januar, 1. mai, 17. mai, 25. desember, 26. desember) plus the seven Easter-linked movable feasts (skjærtorsdag, langfredag, 1. and 2. påskedag, Kr. himmelfartsdag, 1. and 2. pinsedag, computed via the Meeus/Butcher Gregorian algorithm) — the deadline is pushed FORWARD day-by-day until the next business day. It is never pushed backward. The pre-adjustment legal deadline is preserved in adjusted_from; that field is null when no adjustment was needed.
Rate limiting: soft per-IP cap of 1000 requests per minute. Exceeding returns 429 with the standard RateLimitExceeded response.
Request
- Base URL: https://www.apier.no
- URL: https://www.apier.no/api/v1/public/deadlines
- Auth: none required
Query parameters
Calendar year to list deadlines for. Range 2020–2100 (out-of-range returns 400 VALIDATION_FAILED to guard against absurd input that would loop in the holiday calculation). Defaults to the current Europe/Oslo calendar year when omitted.
Response
Ordered list of deadlines for the requested year. The _meta block reports served_from: "live" (every request hits Supabase) and carries data_freshness / last_verified equal to the MAX last_verified across the rules that produced the calendar — consumers can use that timestamp as a single CDN invalidation key.
Example response
{
"data": {
"year": 2026,
"deadlines": [
{
"obligation_id": "mva-termin-1-2026",
"obligation_name": "MVA-melding, 1. termin 2026",
"period": "Januar–februar 2026",
"deadline": "2026-04-10T23:59:59+02:00",
"submission_window_closes": "2026-04-10T23:59:59+02:00",
"timezone": "Europe/Oslo",
"adjusted_from": "2026-05-31T23:59:59+02:00",
"legal_reference": "Skatteforvaltningsloven § 8-3",
"applies_to_entity_types": [
"AS"
]
}
]
},
"_meta": {
"rulebook_version": "v1.0.0",
"source": "apier.no",
"data_source": "Brønnøysund Enhetsregisteret + Apier Universal Rulebook",
"schema_version": "1.0.0",
"legal_basis": "NLOD — public registry reuse",
"response_timestamp": "2026-04-24T12:00:00.000Z",
"response_hash": "sha256:0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef",
"source_snapshot_id": "brreg-2026-04-24T02:00:00.000Z",
"cost_nok": 0.5,
"wallet_remaining_nok": 9.5,
"spend_cap_remaining_nok": 12.5
}
}Changes
No recorded changes to this operation across all 1 revision of this API.