Skip to main content

Local NGO chapters per kommune

Atlas view

Local NGO chapters per kommune

api_v1.kommune_local_chapters

One row per local chapter resolved to a kommune, with its NGO and category.

First 5 rows · api_v1.kommune_local_chapters
snapshot 2026-05-12
kommune_nrchapter_idnamengo_orgnrngo_namengo_brand_nameservice_category_codeservice_category_label_nosort_order
1101redcross-L136Egersund og Dalane Røde Kors864139442Norges Røde KorsRøde Korsrescue_corpsHjelpekorps1
1101redcross-L136Egersund og Dalane Røde Kors864139442Norges Røde KorsRøde Korsfirst_aid_standbyBeredskapsvakt2
1101redcross-L136Egersund og Dalane Røde Kors864139442Norges Røde KorsRøde Korsfirst_aid_trainingFørstehjelpskurs3
1101redcross-L136Egersund og Dalane Røde Kors864139442Norges Røde KorsRøde Korselderly_visitingBesøkstjeneste4
1101redcross-L136Egersund og Dalane Røde Kors864139442Norges Røde KorsRøde Korslanguage_practiceNorsktrening5

Built from​

This Atlas view joins data from the following upstream sources. Click through for provenance, methodology, and citation.

Showing direct dbt parents. See full lineage in /lineage/ →

Columns​

ColumnDescription
kommune_nr🔴 WHERE THE CHAPTER IS REGISTERED, NOT WHERE IT WORKS. This description said "where the local chapter operates" until 2026-09-20 and that was a stronger claim than the data supports: the value is a dim_postnummer lookup on the chapter's POSTAL ADDRESS (see supply__redcross_branches). ⚠️ So a chapter serving three neighbouring kommuner appears in one of them, and a chapter with a PO box in the next kommune appears in the wrong one. A consumer asking "is Røde Kors here?" gets "is Røde Kors registered here?" — which is the same limitation as searching the Enhetsregisteret by name, and this relation does not remove it (urb-agents #1289). Declared service areas are not modelled for Red Cross at all. `marts.chapter_kommune_coverage` holds one row per (regional chapter, kommune), but its rows are INFERRED from where the regional chapter's local children are registered — so it inherits this same defect rather than fixing it, and it is not published to api_v1. FK to dim_kommune, the primary filter dimension for this view. Chapters with NULL kommune_nr are excluded (this isn't "local chapters in a kommune" if there's no kommune). ⚠️ The relationships test is `warn`-severity because Longyearbyen Røde Kors is a real chapter whose Svalbard code is not in dim_kommune — SSB Klass 131 contains no 21xx code. So this relation is built to publish a Svalbard row that no dimension can describe. See urb-agents #700.
chapter_idComposite slug for the local chapter (e.g. 'redcross-oslo-grunerløkka'). Repeats across rows when the chapter offers multiple service categories.
nameDisplay name for the local chapter.
ngo_orgnr9-digit Brreg organisasjonsnummer of the NGO that owns the chapter.
ngo_nameJoined from dim_ngo (legal name).
ngo_brand_nameJoined from dim_ngo (brand name when distinct from legal name). NULL when the NGO doesn't use a brand alias.
service_category_codeICNPO-derived service category code for one of the activities this chapter offers. Combined with chapter_id forms the natural key of this view (rows are unique on (chapter_id, service_category_code)).
service_category_label_noHuman-readable Norwegian label for service_category_code, joined from ref_atlas_service_category.
sort_orderDisplay order from ref_atlas_service_category. Used by the UI to render service categories in a consistent sequence; carry on the row so consumers can sort without a separate query.

Sample query​

Live PostgREST query that returns the first 5 rows. URL adapts to the current host — local dev shows api-atlas.localhost; the deployed site shows the configured API base.

https://api-atlas.urbalurba.com/kommune_local_chapters?limit=5

About this view​

One row per local chapter resolved to a kommune, with its NGO and category. Empty today. 🔵 EXPECTED EMPTY TODAY, AND THAT IS NOT A DEFECT. Its one row per local chapter, so it is empty until Red Cross chapter data is loaded. Terje's position, 2026-09-21: the Red Cross data is not coming now, it will be there later. The relation is published and answers so a consumer can build against its shape before the rows arrive. ⚠️ A consumer cannot tell "empty by design" from "broken" without being told, and two of these three were asked about on the day someone noticed (urb-agents #1351). If this relation is still empty and this note is gone, something regressed. Active local chapters in each kommune, decorated with the NGO name/brand and the service-category labels offered. Backs the kommune detail page (atlas-frontend /kommuner/[kommune_nr]); equivalent to listChaptersInKommune(). **Important:** this view returns *multiple rows per chapter* — one per service category the chapter offers. A chapter that provides three service categories appears as three rows for the same kommune_nr / chapter_id, with different service_category_code values. Consumers that want unique chapters should distinct on chapter_id (or aggregate service categories into an array client-side). GRAIN: one row per (kommune_nr, chapter_id, service_category_code), asserted by a test rather than only described here. It is neither one row per chapter nor one row per chapter-kommune coverage relation — a consumer told us those were the two shapes it would guess between (urb-agents #1289). PostgREST consumers filter via ?kommune_nr=eq.X. Inactive chapters, non-local chapters (regional, national), and chapters with NULL kommune_nr are excluded. ⚠️ Excluding regional chapters means the kommuner a regional chapter serves do NOT appear here; see kommune_nr for why that gap is not closed elsewhere either. Svalbard (Longyearbyen Røde Kors) is included even though no 21xx code is in dim_kommune — the FK relationships test is `warn`-severity to keep this row visible.