Naar inhoud

P2000 meldingen ophalen ​

Haal Nederlandse P2000-meldingen op via GraphQL: recente berichten, filters (discipline, tekst, regio, …) en meldingen gekoppeld aan een kazerne.

Live endpoint: POST https://graphql.persmonitor.nl/graphql
Auth: Authorization: Bearer <api-token> (verplicht)

Nog aan het prototypen?

Gebruik eerst demo/p2000-messages.json. Zelfde response-vorm, geen token. Live data: account + API-plan.

Recente meldingen ​

graphql
query RecentP2000($first: Int!) {
  p2000Messages(first: $first) {
    uuid
    message
    messageReadable
    sended
    discipline {
      name
    }
    urgency {
      uuid
      slug
      name
    }
    url
  }
}
bash
curl -X POST https://graphql.persmonitor.nl/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <api-token>" \
  -d '{"query":"query { p2000Messages(first: 10) { uuid message sended discipline { name } urgency { uuid slug name } url } }"}'

Filteren ​

Filters via filter (P2000MessageFilterInput). Combinaties worden AND-gecombineerd. Optioneel: p2000MessagesCount voor het totaal.

graphql
query FilteredMessages($first: Int!, $filter: P2000MessageFilterInput) {
  p2000Messages(first: $first, filter: $filter) {
    uuid
    message
    sended
    discipline {
      name
    }
    urgency {
      uuid
      slug
      name
    }
  }
  p2000MessagesCount(filter: $filter)
}

Veelgebruikte filters ​

FilterVoorbeeldBetekenis
disciplines["brandweer"]Minstens één van deze disciplines
urgencies["spoed"]Minstens één urgentie-slug (zie Urgentiewaarden)
keyword"A2"Zoekwoord in de meldingstekst
sended{ from, to }Verzendtijd (ISO-8601)
fireStation{ slug: "asten" }Meldingen via alarmcodes van die kazerne
vehicle{ number: "16-1630" }Meldingen waarbij dit voertuig is opgeroepen
exerciseType"geen"Alleen echte meldingen (geen oefening/proefalarm)

Voorbeeld: alleen brandweer ​

json
{
  "first": 25,
  "filter": {
    "disciplines": ["brandweer"],
    "exerciseType": "geen"
  }
}

Voorbeeld: spoed (urgentie-slug) ​

json
{
  "first": 25,
  "filter": {
    "urgencies": ["spoed"],
    "exerciseType": "geen"
  }
}

Voorbeeld: gepaste spoed (urgentie-slug) ​

json
{
  "first": 25,
  "filter": {
    "urgencies": ["gepaste-spoed"],
    "exerciseType": "geen"
  }
}

Urgentiewaarden ​

ContextVeldTypeWaarden
GraphQL P2000MessageurgencyP2000Urgency of nullObject { uuid, slug, name }. name is de weergavenaam (Spoed, Gepaste spoed); slug is de sleutel (spoed, gepaste-spoed). uuid kan een lege string zijn. null = normale melding. Zie demo.
Filter P2000MessageFilterInputurgencies[String]Urgentie-slugs (minstens één match).
Webhook v2 dataurgencies[String]Zelfde slugs als filter.urgencies.
Webhook v1 contenturgencyobject{ "name": "<urgentie-slug>" } (bijv. "spoed").

Urgentie-slugs voor filter en webhook v2 (filter.urgencies / data.urgencies):

Slugname (weergave)
spoedSpoed
gepaste-spoedGepaste spoed

Oefeningen vallen niet onder urgentie: gebruik filter.exerciseType (bijv. "geen" of "oefening") naast urgencies waar nodig.

Voorbeeld: de test-webhook in Webhooks krijgt "urgencies": ["spoed"]. In de demo-JSON staat urgency.name op Spoed of Gepaste spoed, of urgency is null bij een melding zonder match; vergelijk in code op slug, niet op name.

Meldingen per kazerne ​

"Alles van een kazerne" is een filter op meldingen: berichten waarbij minstens één gekoppelde alarmcode aan die kazerne hangt (fireStation met slug of uuid).

Gebruik de slug of uuid van de kazerne (in demo: velden in fire-stations.json, bijvoorbeeld "slug": "kazerne-demo-noord").

graphql
query StationMessages($first: Int!, $filter: P2000MessageFilterInput) {
  p2000Messages(first: $first, filter: $filter) {
    uuid
    message
    sended
    discipline {
      name
    }
    urgency {
      uuid
      slug
      name
    }
    url
  }
  p2000MessagesCount(filter: $filter)
}
json
{
  "first": 50,
  "filter": {
    "fireStation": { "slug": "asten" },
    "exerciseType": "geen"
  }
}
bash
curl -X POST https://graphql.persmonitor.nl/graphql \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <api-token>" \
  -d '{"query":"query($first:Int!,$filter:P2000MessageFilterInput){p2000Messages(first:$first,filter:$filter){uuid message sended discipline { name } urgency { uuid slug name } } p2000MessagesCount(filter:$filter)}","variables":{"first":20,"filter":{"fireStation":{"slug":"asten"},"exerciseType":"geen"}}}'

Eén melding ​

graphql
query OneMessage($uuid: String!) {
  p2000Message(uuid: $uuid) {
    uuid
    message
    sended
    discipline {
      name
    }
    urgency {
      uuid
      slug
      name
    }
    url
  }
}

Push i.p.v. pollen ​

Voor realtime notificaties: configureer een webhook-kanaal in de Monitor. Payload-voorbeelden: Webhooks.

Van demo naar productie ​

  1. Demo JSON laden
  2. Queries schrijven tegen api-for-llms
  3. Prijzen → registreren + plan met API
  4. API-token aanmaken, Bearer meesturen

Zie ook: Webhooks · Voor AI-tools · API-gebruik