Denne guide har som formål at give et overblik over GM-CMS, herunder dets funktionalitet, arkitektur, og hvordan det integreres med relaterede services.
Denne guide er tilegnet anvendere af GM-CMS komponenten, dvs. udviklere af BFF laget på graviditets-appen. Der vil blive givet referencer til relevante dokumenter for at skabe en bredere forståelse af komponentens omgivelser.
GM-CMS er en backend-service, der understøtter indholdshåndtering for applikationen "Min Graviditet".
Systemet tilbyder fleksible værktøjer til oprettelse, redigering og publicering af indhold såsom artikler, billeder og videoer.
Al adgang til CMS komponenten sker gennem CMS Admin Panel (Strapi admin) eller via REST kald fra BFF.
Følgende ses diagram over GM-CMS struktur og relationer til relaterede services (Min Graviditet-app, BFF, m.fl.).

Der findes tre typer brugere i forhold til use cases:
GM-CMS skal understøtte use cases for "Min Graviditet" appen ved at udstille data. I den efterfølgende parentes angives use case nummer jf. Appendix 1b fra tilbudsmateriale.
Use cases for "Min Graviditet" appen:
For at undersøtte disse use cases skal GM-CMS overholde følgende use cases.
Dette dokument er henvendt til udviklere og arkitekter, der skal anvende GM-CMS. Det forventes, at læseren har kendskab til RESTful API'er samt grundlæggende webteknologier.
Forudsætninger for anvendelse af REST snitfalde inkluderer:
Service udstil type | REST |
Krævede adgange | Intern netværksadgang og API key (JWT) |
Whitelisting | Al adgang til REST servicen foregår indenfor samme TCS kubernetes miljø. REST servicen er ikke udstillet udad til. |
Krævet sikkerhedsniveau | API key som bearer token |
Forudsætninger for anvendelse af CMS Admin Panel inkluderer:
Service udstil type | Web UI |
Krævede adgange | 2FA via keycloak, brugernavn+password til Strapi Admin |
Whitelisting | CMS Admin Panel endpoints er beskyttet af IP whitelisting. Kun brugere fra specificerede netværk kan tilgå CMS Admin Panel. |
| Reference | Beskrivelse |
|---|---|
CMS | Content Management System |
GM | Graviditetsmappen |
BFF | Backend for frontend |
<Beskrivelse af hvordan service/komponent bruges, snitflade(r), endpoints, og andet relevant>
| Tilgængelig | Trifork Cloud Stack miljø for GMv2 |
| Endpoint(s) | Se afsnit 3.3.1 |
I Strapi administrationpanelet arbejdes der med følgende brugertyper:
Følgende bekriver Strapi og Meilisearch snitfladerne.
Strapi CMS'en udstiller en række endpoints til at hente de definerede indholdstyper. Alle API-endpoints er offentligt tilgængelige, hvilket betyder, at det ikke er nødvendigt at sætte en authentication header på anmodningerne.
Jf. use cases skal følgende indholdstyper konfigureres i GM-CMS.
Indholdstype | Beskrivelse | Relation | id |
Kategori | Indeholder titel og tilhørende artikler | Kategori “tilhører flere” artikler | category |
Artikel | Indeholder titel, beskrivelse, tags, boolean til angivelse af om artikel skal skjules på forside, samt tilhørende kategorier og sektioner | Kategori ”har flere” artikler Artikel “tilhører flere” sektioner | article |
Sektion | Indeholder titel, tekst, liste af ugenumre i graviditet/efter fødsel hvor sektionen er relevant, samt tilhørende artikler | Artikel “har flere” sektioner | section |
Tjekliste | Indeholder titel, beskrivelse, samt tilhørende tjektlistepunkter | Tjekliste ”tilhører flere” tjeklistepunkter | checklist |
Tjeklistepunkt | Indeholder titel, beskrivelse, samt tilhørende tjektliste | Tjekliste “har flere” tjeklistepunkter | checklist-point |
Ordforklaring | Indeholder ord og ordforklaring | glossary-term | |
Tekst | Indeholder titel, tekst, beskrivelse og unikt API-navn. Bruges til at oprette tekster om samtykkeerklæring, databeskyttelse osv. | text | |
FAQ | Indeholder spørgsmål og svar | faq |
Indholdstype | Endpoirt |
Kategori | /api/categories |
Artikel | /api/articles |
Sektion | /api/sections |
Tjekliste | /api/checklists |
Tjeklistepunkt | /api/checklist-points |
Ordforklaring | /api/glossary-terms |
Tekst | /api/texts |
FAQ | /api/faqs |
For at relationer mellem indholdstyperne inkluderes i responsen tilføjes:
| ?populate=* |
|---|
Eksempelvis for at få alle artikler, samt relaterede kategorier og sektioner kaldes:
| /api/articles?populate=* |
|---|
Herunder ses eksempler på Strapi request/responses der foretages af GM-BFF:
| Type | Request | Beskrivelse | Respons | |
|---|---|---|---|---|
| GET | /api/checklists&populate=* | Returnerer indholdstype samt alle relationer. |
| |
| GET | api/articles?filters[Sektioner][UgenummreEfterFoedsel][$contains]={UGENUMMER_EFTER_FOEDSEL}&populate=* | Returnerer alle sektioner (inkl. tilhørende artikler og kategorier) hvor parameter UGENUMMER_EFTER_FOEDSEL er i listen UgenummreEfterFoedsel. Anvendes til at finde relevante artikler til borger med angivet fødselsdato. |
| |
| GET | api/articles?filters[Sektioner][UgenumreUnderGraviditet][$contains]={UGENUMMER_UNDER_GRAVIDITET}&populate=* | Returnerer alle sektioner (inkl. tilhørende artikler og kategorier) hvor parameter UGENUMMER_UNDER_GRAVIDITET er i listenUgenumreUnderGraviditet. Anvendes til at finde relevante artikler til borger med terminsdato. |
| |
| GET | /api/texts?filters[ApiNavn][$eq]={API_NAVN} | Returnerer indholdstype tekst, hvor ApiNavn er lig parameter API_NAVN. Eksempelvis samtykke-tekst. |
|
Meilisearch services anvendes til at søge i de artikler (inklusive sektioner og kategorieR) som CMS'en udstiller.
I Strapi administrationspanelt under Meilisearch (forstørrelsesglas i venstre side) skal følgende bokse tjekkes af for at gøre indholdstyperne søgbare:

Herefter kan der søges i indholdstyperne.
Indholdstype | Endpoirt |
Category | /indexes/category/search |
Article | /indexes/article/search |
Section | /indexes/section/search |
Herunder ses eksempler på Meilisearch request/responses der foretages af GM-BFF:
| Type | Request | Beskrivelse | Respons | |
|---|---|---|---|---|
| GET | /indexes/article/search?q={SEARCH_STRING} | Returnerer fremsøgte artikler (inklusiv relaterede kategorier og sektioner releateret til søgestrengen. |
|
Ikke relevant
Herunder er nogle af de mest almindelige fejlbeskeder og deres årsager.
Strapi - 401 Unauthorized
Strapi - "error: meilisearch: Request to http://meilisearch:7700/stats has failed"
Ikke relevant.
| 3/4 2025 | Martin Henriksen/SDS | Etablering af dokumentation |
| 10/4 2025 | Dikte Straadt/Trifork | Initiel udfyldning af dokumentation |