Public

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.

get/api/v1/public/deadlines

Request

  • Base URL: https://www.apier.no
  • URL: https://www.apier.no/api/v1/public/deadlines
  • Auth: none required

Query parameters

yearinteger
Example:2026

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.

successtrue required

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.