"""An opaque pagination cursor.""" scalar Cursor """Publieke, alleen-lezen toegang tot gepubliceerde Dorpsplein-inhoud.""" type Query { """Contract metadata and links for client developers.""" apiInfo: ApiInfo! """ Publieke Supabase-configuratie waarmee een lokale frontend de magic-linklogin kan starten. """ authConfiguration: AuthConfiguration! """All active, public Dorpspleinen.""" communities( """Aantal resultaten voor deze pagina; minimaal 1 en maximaal 100.""" first: Int = 20 """ Cursor uit pageInfo.endCursor van de vorige pagina; laat leeg voor de eerste pagina. """ after: Cursor ): CommunityConnection! """One active, public Dorpsplein.""" community( """Stabiele URL-slug van het Dorpsplein.""" slug: String! ): Community """The shared editorial categories.""" categories: [Category!]! """Approved news only, scoped to one public Dorpsplein.""" news( """Slug van het Dorpsplein waarbinnen deze operatie wordt uitgevoerd.""" communitySlug: String! """Optionele filters; weggelaten velden beperken de resultaten niet.""" filter: NewsFilter """Aantal resultaten voor deze pagina; minimaal 1 en maximaal 100.""" first: Int = 20 """ Cursor uit pageInfo.endCursor van de vorige pagina; laat leeg voor de eerste pagina. """ after: Cursor ): NewsConnection! """One approved news dossier in a public Dorpsplein.""" newsItem( """Slug van het Dorpsplein waarbinnen deze operatie wordt uitgevoerd.""" communitySlug: String! """Stabiele identifier van het op te halen dossier.""" id: ID! ): NewsItem """Approved events only, scoped to one public Dorpsplein.""" events( """Slug van het Dorpsplein waarbinnen deze operatie wordt uitgevoerd.""" communitySlug: String! """Optionele filters; weggelaten velden beperken de resultaten niet.""" filter: EventFilter """Aantal resultaten voor deze pagina; minimaal 1 en maximaal 100.""" first: Int = 20 """ Cursor uit pageInfo.endCursor van de vorige pagina; laat leeg voor de eerste pagina. """ after: Cursor ): EventConnection! """One approved event dossier in a public Dorpsplein.""" event( """Slug van het Dorpsplein waarbinnen deze operatie wordt uitgevoerd.""" communitySlug: String! """Stabiele identifier van het op te halen dossier.""" id: ID! ): Event """Public neighborhoods in one Dorpsplein.""" neighborhoods( """Slug van het Dorpsplein waarbinnen deze operatie wordt uitgevoerd.""" communitySlug: String! ): [Neighborhood!]! } """ Publieke bootstrapconfiguratie voor Supabase Auth; bevat nooit een secret- of service-sleutel. """ type AuthConfiguration { """Publieke URL van het Supabase Auth-project.""" supabaseUrl: String! """ Publieke Supabase-sleutel die veilig in een frontend mag worden gebruikt. """ publishableKey: String! """Voorbeeld van de vereiste HTTP Authorization-header.""" authorizationHeader: String! } """Metadata over de publieke API en de geldende contractversie.""" type ApiInfo { """Naam van de API.""" name: String! """Versie van het publieke contract.""" version: String! """Stabiliteitsniveau van deze versie.""" stability: String! """Geeft aan dat dit endpoint uitsluitend leesoperaties bevat.""" readOnly: Boolean! """URL van de Nederlandstalige ontwikkelaarsdocumentatie.""" documentationUrl: String! """URL van het downloadbare publieke GraphQL-schema.""" schemaUrl: String! """Grootste toegestane waarde voor first bij gepagineerde queries.""" maxPageSize: Int! } """Paginagegevens voor cursorpaginering.""" type PageInfo { """ Cursor van het laatste item; gebruik deze als after voor de volgende pagina. """ endCursor: Cursor """True wanneer na deze pagina nog meer resultaten bestaan.""" hasNextPage: Boolean! } """Gepagineerde lijst met openbare Dorpspleinen.""" type CommunityConnection { """ Resultaten met per item de cursor die voor paginering kan worden gebruikt. """ edges: [CommunityEdge!]! """Resultaten van deze pagina, zonder cursorverpakking.""" nodes: [Community!]! """Cursorinformatie waarmee de client de volgende pagina kan ophalen.""" pageInfo: PageInfo! """Totaal aantal resultaten over alle pagina's heen.""" totalCount: Int! } """Eén Dorpsplein met de cursor die bij zijn positie hoort.""" type CommunityEdge { """ Ondoorzichtige paginacursor; behandel de inhoud niet als publiek contract. """ cursor: Cursor! """Het resultaatobject dat bij deze paginacursor hoort.""" node: Community! } """Gepagineerde lijst met goedgekeurde nieuwsdossiers.""" type NewsConnection { """ Resultaten met per item de cursor die voor paginering kan worden gebruikt. """ edges: [NewsEdge!]! """Resultaten van deze pagina, zonder cursorverpakking.""" nodes: [NewsItem!]! """Cursorinformatie waarmee de client de volgende pagina kan ophalen.""" pageInfo: PageInfo! """Totaal aantal resultaten over alle pagina's heen.""" totalCount: Int! } """Eén nieuwsdossier met de cursor die bij zijn positie hoort.""" type NewsEdge { """ Ondoorzichtige paginacursor; behandel de inhoud niet als publiek contract. """ cursor: Cursor! """Het resultaatobject dat bij deze paginacursor hoort.""" node: NewsItem! } """Gepagineerde lijst met goedgekeurde evenementdossiers.""" type EventConnection { """ Resultaten met per item de cursor die voor paginering kan worden gebruikt. """ edges: [EventEdge!]! """Resultaten van deze pagina, zonder cursorverpakking.""" nodes: [Event!]! """Cursorinformatie waarmee de client de volgende pagina kan ophalen.""" pageInfo: PageInfo! """Totaal aantal resultaten over alle pagina's heen.""" totalCount: Int! } """Eén evenementdossier met de cursor die bij zijn positie hoort.""" type EventEdge { """ Ondoorzichtige paginacursor; behandel de inhoud niet als publiek contract. """ cursor: Cursor! """Het resultaatobject dat bij deze paginacursor hoort.""" node: Event! } """Een openbaar Dorpsplein voor één plaats of gemeenschap.""" type Community { """ Stabiel intern ID; geschikt voor relaties maar niet voor zichtbare URL's. """ id: ID! """Stabiele URL-code, bijvoorbeeld marknesse.""" slug: String! """Publieke naam van het Dorpsplein.""" name: String! """Korte openbare omschrijving; null als deze niet is ingevuld.""" description: String """Langere openbare introductietekst; null als deze niet is ingevuld.""" about: String """Absolute URL van het openbare logo.""" logoUrl: String """Absolute URL van de openbare omslagafbeelding.""" coverUrl: String """Hexkleur die een client optioneel als accent kan gebruiken.""" accentColor: String! """Naam van de plaats waarop dit Dorpsplein betrekking heeft.""" placeName: String """Gemeente waarin de plaats ligt.""" municipality: String """IANA-tijdzone voor lokale datum- en tijdberekeningen.""" timezone: String! """Openbare contactgegevens van de beheerorganisatie.""" publicContact: PublicContact """Aantal openbare organisaties; kan null zijn wanneer niet berekend.""" organizationCount: Int """ Aantal toekomstige gepubliceerde evenementen; kan null zijn wanneer niet berekend. """ upcomingEventCount: Int } """Openbare contactgegevens van de beheerder van een Dorpsplein of buurt.""" type PublicContact { """Leesbare naam.""" name: String """E-mailadres van de gebruiker of het openbare contact.""" email: String """Openbaar telefoonnummer.""" phone: String """Openbare adresregel.""" addressLine: String } """Redactionele categorie voor nieuws of evenementen.""" type Category { """Stabiele URL-veilige code.""" slug: String! """Leesbare naam.""" name: String! } """Compacte verwijzing naar een andere entiteit.""" type NamedEntity { """Stabiele identifier van dit object.""" id: ID! """Leesbare naam.""" name: String! } """Optionele combinatie van filters voor de publieke nieuwsfeed.""" input NewsFilter { """Stabiele slug van een bestaande redactionele categorie.""" categorySlug: String """Onderscheid tussen een regulier artikel en een officiële aankondiging.""" newsKind: NewsKind """Alleen nieuws vanaf dit ISO 8601-moment.""" publishedFrom: String """Alleen nieuws tot en met dit ISO 8601-moment.""" publishedUntil: String """Niet-hoofdlettergevoelige zoektekst voor titel en inhoud.""" search: String } """Soort nieuws: regulier artikel of officiële aankondiging.""" enum NewsKind { """Regulier nieuwsartikel.""" ARTICLE """Officiële mededeling van de beheergroep.""" ANNOUNCEMENT } """ Een goedgekeurd openbaar nieuwsdossier; meerdere bronpublicaties kunnen hetzelfde dossier voeden. """ type NewsItem { """Stabiel ID van het nieuwsdossier.""" id: ID! """Actuele redactionele titel van het dossier.""" title: String! """ Korte samenvatting; null als geen betrouwbare samenvatting beschikbaar is. """ summary: String """ Afbeelding van de primaire bron of een gekozen representatieve afbeelding. """ imageUrl: String """Voorkeurs-URL van de primaire externe bron.""" canonicalUrl: String """Openbare bronlabels, bijvoorbeeld @netlpark of netl.nl.""" sourceLabels: [String!]! """Onderscheid tussen regulier nieuws en een aankondiging.""" newsKind: NewsKind! """Actuele redactionele categorie.""" category: Category! """Publicatiemoment van de primaire bron als ISO 8601-string.""" publishedAt: String! """Moment van de nieuwste relevante bronbijdrage of wijziging.""" activityAt: String! """ True wanneer na de oorspronkelijke publicatie een update is toegevoegd. """ isUpdated: Boolean! """Aantal actieve bronpublicaties dat dit dossier onderbouwt.""" sourceMomentCount: Int! """Buurten waaraan het dossier expliciet is gekoppeld.""" neighborhoods: [NamedEntity!]! """Bron die de titel, afbeelding en hoofdlink van het dossier bepaalt.""" primarySource: NewsSourceMoment """Alle actieve bronpublicaties en updates van dit dossier.""" sourceMoments: [NewsSourceMoment!]! """ Evenementen waarover dit nieuwsbericht gaat of waaraan het gerelateerd is. """ relatedEvents: [RelatedEvent!]! } """ Eén concrete externe of handmatige publicatie binnen een nieuwsdossier. """ type NewsSourceMoment { """Stabiel ID van het bronmoment.""" id: ID! """Publiek bronlabel; geschikt om rechtstreeks in de frontend te tonen.""" sourceLabel: String! """Technische bronsoort, bijvoorbeeld instagram, website of manual.""" sourceKind: String! """Titel zoals die voor deze bronbijdrage is vastgelegd.""" title: String """Korte tekst of samenvatting van deze bronbijdrage.""" excerpt: String """Afbeelding die bij deze bronbijdrage hoort.""" imageUrl: String """Directe externe URL van de bronbijdrage.""" externalUrl: String! """Paginanummer bij een handmatige verwijzing naar een publicatie.""" sourcePage: Int """Publicatiemoment van deze bronbijdrage als ISO 8601-string.""" publishedAt: String! """Betekenis van de bijdrage ten opzichte van het dossier.""" relationKind: NewsRelationKind """True wanneer deze bijdrage momenteel de primaire bron is.""" isPrimary: Boolean! } """Betekenis van nieuws ten opzichte van een gekoppeld evenement.""" enum NewsRelationKind { """Nieuws doet achteraf verslag van het evenement.""" REPORT """Nieuws wijzigt of actualiseert informatie over het evenement.""" UPDATE """ Nieuws houdt inhoudelijk verband met het evenement zonder verslag of wijziging te zijn. """ RELATED } """Compact evenementdossier dat vanuit een nieuwsbericht wordt getoond.""" type RelatedEvent { """Stabiele identifier van dit object.""" id: ID! """Publieke of voorgestelde redactionele titel.""" title: String! """Lokale kalenderdatum in JJJJ-MM-DD.""" startsOn: String! """Lokale begintijd in UU:MM.""" startsAt: String! """ Lokale eindtijd in UU:MM; null wanneer geen betrouwbare eindtijd bekend is. """ endsAt: String """ Publiek getoonde locatie; null wanneer deze niet betrouwbaar uit de bron volgt. """ locationName: String """Betekenis van de relatie tussen beide dossiers.""" relationKind: NewsRelationKind! } """Optionele combinatie van filters voor de publieke agenda.""" input EventFilter { """Stabiele slug van een bestaande redactionele categorie.""" categorySlug: String """Alleen evenementen op of na deze lokale datum in JJJJ-MM-DD.""" startsFrom: String """Alleen evenementen op of vóór deze lokale datum in JJJJ-MM-DD.""" startsUntil: String """Alleen evenementen waarvan de status in deze lijst voorkomt.""" statuses: [EventStatus!] """Niet-hoofdlettergevoelige zoektekst voor titel en inhoud.""" search: String } """ Actuele levenscyclusstatus van een evenement. PAST wordt door Dorpsplein afgeleid. """ enum EventStatus { """Het evenement staat gepland.""" SCHEDULED """Het evenement is afgelast.""" CANCELLED """Het evenement is uitgesteld; een nieuwe datum kan nog ontbreken.""" POSTPONED """Afgeleide status vanaf de dag na de evenementdatum.""" PAST } """ Een goedgekeurd openbaar evenementdossier; meerdere bronnen kunnen hetzelfde evenement bijwerken. """ type Event { """Stabiel ID van het evenementdossier.""" id: ID! """Actuele redactionele titel.""" title: String! """ Beschrijving; null wanneer geen betrouwbare beschrijving beschikbaar is. """ description: String """ Lokale kalenderdatum in JJJJ-MM-DD; null voor een onvolledig historisch dossier. """ startsOn: String """ Lokale begintijd in UU:MM; null voor een onvolledig historisch dossier. """ startsAt: String """Lokale eindtijd in UU:MM; null wanneer onbekend.""" endsAt: String """IANA-tijdzone waarin datum en tijden moeten worden geïnterpreteerd.""" timezone: String! """Publiek getoonde locatie; null wanneer niet in de bronnen vermeld.""" locationName: String """Actuele status, inclusief de afgeleide status PAST.""" status: EventStatus! """Voorkeurs-URL van de primaire externe bron.""" sourceUrl: String! """Openbare bronlabels van de actieve bronbijdragen.""" sourceLabels: [String!]! """Moment waarop het dossier voor het laatst is gewijzigd.""" updatedAt: String! """Oplopend revisienummer voor veilige bewerkingen.""" revision: Int! """Aantal actieve bronmomenten in de evenementtijdlijn.""" sourceMomentCount: Int! """Redactionele categorieën van het evenement.""" categories: [Category!]! """ Herhaalreeks waarvan dit evenement deel uitmaakt; null voor losse evenementen. """ series: EventSeries """Chronologische bronmomenten en wijzigingen van dit evenement.""" sourceMoments: [EventSourceMoment!]! """Nieuwsberichten die over dit evenement gaan.""" relatedNews: [RelatedNews!]! """Andere inhoudelijk gerelateerde evenementen; dit zijn geen duplicaten.""" relatedEvents: [RelatedEventLink!]! } """Regel waarmee terugkerende evenementen worden aangemaakt.""" type EventSeries { """Stabiel ID van de reeks.""" id: ID! """Technische frequentie, bijvoorbeeld WEEKLY.""" frequency: String! """Aantal frequentie-eenheden tussen twee voorkomens.""" intervalCount: Int! """Weekdag als ISO-nummer: maandag 1 tot en met zondag 7.""" weekday: Int! """Volgnummer van de weekdag binnen de maand bij maandelijkse reeksen.""" monthOrdinal: Int """Eerste geldige datum van de reeks.""" startsOn: String! """Verplichte einddatum; reeksen lopen nooit onbeperkt door.""" endsOn: String! } """ Eén bronbijdrage of goedgekeurde wijziging in de tijdlijn van een evenement. """ type EventSourceMoment { """Stabiel ID van het bronmoment.""" id: ID! """ ID van de concrete bronkoppeling; null voor handmatige revisies. Mutaties autoriseren dit ID altijd opnieuw. """ mentionId: ID """Revisie van het evenement die door deze bijdrage ontstond.""" revision: Int! """Technische soort wijziging, bijvoorbeeld CREATED of UPDATED.""" updateKind: String! """Namen van de evenementvelden die door deze bijdrage veranderden.""" changedFields: [String!]! """Publicatie- of invoermoment van de bron.""" sourcePublishedAt: String! """ Directe URL van de bron; bij handmatige invoer kan dit een opgegeven referentie zijn. """ sourceUrl: String! """Optioneel paginanummer binnen een publicatie.""" sourcePage: Int """Publiek bronlabel.""" sourceLabel: String! """Beschikbare oorspronkelijke brontekst.""" sourceText: String """Technische herkomst, bijvoorbeeld instagram, website of manual.""" originType: String! } """Compact nieuwsdossier dat vanuit een evenement wordt getoond.""" type RelatedNews { """Stabiele identifier van dit object.""" id: ID! """Publieke of voorgestelde redactionele titel.""" title: String! """Moment van de nieuwste actieve bijdrage of wijziging.""" activityAt: String! """Betekenis van de relatie tussen beide dossiers.""" relationKind: NewsRelationKind! } """ Inhoudelijk gerelateerd evenement; dit is geen duplicaat of samenvoeging. """ type RelatedEventLink { """Stabiele identifier van dit object.""" id: ID! """Publieke of voorgestelde redactionele titel.""" title: String! """Lokale kalenderdatum in JJJJ-MM-DD.""" startsOn: String """Lokale begintijd in UU:MM.""" startsAt: String """ Publiek getoonde locatie; null wanneer deze niet betrouwbaar uit de bron volgt. """ locationName: String """Betekenis van de relatie tussen beide dossiers.""" relationKind: String! } """Openbaar buurtprofiel binnen een Dorpsplein.""" type Neighborhood { """Stabiele identifier van dit object.""" id: ID! """Stabiele URL-veilige code.""" slug: String! """Leesbare naam.""" name: String! """ Inhoudelijke omschrijving; kan leeg zijn wanneer de bron geen betrouwbare omschrijving bevat. """ description: String """Absolute URL van het logo.""" logoUrl: String """Absolute URL van de omslagafbeelding.""" coverUrl: String """Absolute URL van de website; null wanneer niet ingevuld.""" websiteUrl: String """Optionele externe link naar een buurtapp of buurtomgeving.""" communityAppUrl: String """Openbare contactgegevens; null wanneer niets is gepubliceerd.""" publicContact: PublicContact """Aantal evenementdossiers dat aan dit object is gekoppeld.""" eventCount: Int! """Aantal nieuwsdossiers dat aan dit object is gekoppeld.""" newsCount: Int! """ Eerstvolgende gepubliceerde activiteit; null wanneer er geen toekomstige activiteit is. """ nextEvent: NeighborhoodNextEvent } """Compacte weergave van de eerstvolgende activiteit van een buurt.""" type NeighborhoodNextEvent { """Stabiele identifier van dit object.""" id: ID! """Publieke of voorgestelde redactionele titel.""" title: String! """Lokale kalenderdatum in JJJJ-MM-DD.""" startsOn: String }