
Taal 🇳🇱 Nederlands
API-bronnen
Authenticatie
Aggregaties
Auditlogs
Reacties
E-mailsjablonen
Feedberichten
Hashtags
Mij
Moderators
Meldingsaantal
Meldingen
Pagina-reacties
Pagina's
Polls
Pollstemmen
In afwachting webhook‑gebeurtenissen
SSO‑gebruikers
Abonnementen
Tenant‑dagelijks‑gebruik
Tenants
Tenant‑pakketten
Tenant‑gebruikers
Gebruikers
Stemmen
Domeinconfiguraties
Vraagconfiguraties
Vraagresultaten
Aggregatie van vraagresultaten
Gebruikersbadges
Gebruikersbadgevoortgang
Live commentaar API's
De FastComments API
FastComments biedt een API voor interactie met veel resources. Bouw integraties met ons platform, of bouw zelfs je eigen clients!
In deze documentatie vind je alle door de API ondersteunde resources, gedocumenteerd met hun aanvraag- en responsetype.
Voor Enterprise-klanten wordt alle API-toegang vastgelegd in het auditlog.
Gegenereerde SDK's
FastComments genereert nu een API Spec vanuit onze code (dit is nog niet volledig, maar bevat veel API's).
We hebben nu ook SDK's voor populaire talen:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Authenticatie
De API wordt geauthenticeerd door je api key mee te geven als een X-API-KEY header of API_KEY query‑parameter. Je hebt ook je tenantId nodig voor het doen van API‑aanroepen. Deze kan worden opgehaald op dezelfde pagina als je api‑key.
Beveiligingsopmerking
Deze routes zijn bedoeld om aangeroepen te worden vanaf een server. ROEP ZE NIET aan vanuit een browser. Dit zal je API‑key blootleggen – dit geeft volledige toegang tot je account aan iedereen die de broncode van een pagina kan bekijken!
Authenticatieoptie één - Headers
- Header:
X-API-KEY - Header:
X-TENANT-ID
Authenticatieoptie twee - Query‑parameters
- Query Param:
API_KEY - Query Param:
tenantId
Authenticatieoptie drie - OAuth Bearer Token
- Header:
Authorization: Bearer fcat_...
Derde‑partij applicaties zoals Zapier en clients van de MCP server verkrijgen een token via OAuth in plaats van een API‑key. Dat token werkt op elk endpoint hier. De tenant wordt geïmpliceerd door het token, dus tenantId is optioneel, maar moet overeenkomen met het token wanneer opgegeven. GET‑verzoeken hebben de read‑scope nodig en elke andere methode de write‑scope. De volledige flow, inclusief clientregistratie, PKCE, vernieuwing en intrekking, is gedocumenteerd onder OAuth Authorization. Ontdekking start op https://fastcomments.com/.well-known/oauth-authorization-server.
Je Eigen Writes Lezen
FastComments biedt Active‑Active beschikbaarheid. Verzoeken vanuit je datacenter worden gerouteerd naar het dichtstbijzijnde point of presence van jou. Dit gebeurt automatisch, en normaal kun je read‑your‑write‑semantiek waarnemen. Als je er zeker van wilt zijn dat je je eigen writes leest, kun je je verzoeken vastzetten op een bepaalde regio door die regio als API‑host te gebruiken (hoewel dit meestal niet nodig is voor de meeste integraties):
- gdc-oregon.fastcomments.com
- gdc-virginia.fastcomments.com
- gdc-singapore.fastcomments.com
- gdc-falkenstein2.fastcomments.com
- gdc-sao-paulo.fastcomments.com
- eudc-helsinki2.fastcomments.com
- eudc-limburg.fastcomments.com
- eudc-france.fastcomments.com
Let op dat je, als je dit doet, mogelijk een fallback wilt definiëren, aangezien we in het verleden verouderde entrypoint‑nodes hebben en nieuwe namen gebruiken voor de overschakeling.
API-bronnen 
Resourcegebruik
Het moet worden opgemerkt dat het ophalen van gegevens van de API wordt geteld als gebruik op uw account.
Elke resource zal vermelden wat dat gebruik is in zijn eigen sectie.
Sommige resources kosten meer om te leveren dan andere. Elk eindpunt heeft een vaste kost van credits per API‑aanroep. Voor sommige eindpunten varieert het aantal credits op basis van de opties en de grootte van de respons.
API‑gebruik kan worden gecontroleerd op de Facturatie‑analyse pagina en wordt elke paar minuten bijgewerkt.
Opmerking!
We raden aan eerst de Pages‑documentatie te lezen, om verwarring te beperken bij het bepalen welke waarden moeten worden doorgegeven voor urlId in de Comment API.
Webhooks
Webhook‑abonnementen hebben hun eigen gids. POST, GET en DELETE /api/v1/webhooks, en GET /api/v1/webhooks/sample-payloads, worden gedocumenteerd onder Beheer van abonnementen via API, en de gebeurtenispayloads onder Webhook‑structuren.
OAuth-autorisatie 
FastComments is een OAuth 2.1 autorisatieserver. Een applicatie kan een token verkrijgen dat is gekoppeld aan één FastComments‑account en dit gebruiken op elk eindpunt in deze gids in plaats van een API‑sleutel. Zo verbinden de Zapier‑app, de MCP‑server en andere integraties van derden.
Tokens worden uitgegeven via de autorisatiecode‑flow met PKCE. Er is geen client‑credentials‑ of impliciete grant.
Discovery
Endpointlocaties, ondersteunde grants en authenticatiemethoden worden gepubliceerd op de standaard metadata‑URL:

De eindpunten die het beschrijft:

Accounts in de EU‑regio gebruiken https://eu.fastcomments.com als issuer, met dezelfde paden.
Registering a client
Een client heeft een client_id en een geregistreerde redirect_uri nodig voordat hij de flow kan starten. Er zijn twee manieren om er één te krijgen:
- Dynamische clientregistratie.
POST /oauth/registermet een JSON‑body volgens RFC 7591 (redirect_uris,client_name,client_uri,logo_uri,token_endpoint_auth_method). Het antwoord bevat declient_iden, voor vertrouwelijke clients, declient_secret. Registratie is niet‑geauthenticeerd en per IP rate‑gelimiteerd. - Client‑ID‑metadata‑document. De client gebruikt een
https‑URL die hij beheert als zijnclient_id. FastComments haalt die URL op en leest dezelfde metadata‑velden ervan. Een registratie‑aanroep is niet nodig.
Partnerapplicaties die in het FastComments‑dashboard staan, zoals Zapier, worden rechtstreeks door FastComments geregistreerd. Neem contact op met de support als je een marktplaatsvermelding bouwt en een first‑party client nodig hebt.
Scopes

Een verzoek dat geen scope vraagt, krijgt beide toegekend. De gebruiker ziet de gevraagde scopes op de toestemmingspagina. Een verzoek voor een andere scope dan deze twee mislukt met invalid_scope.
Stap 1 – Autorisatie‑verzoek
Stuur de browser van de gebruiker naar het autorisatie‑eindpunt. PKCE met de S256‑methode is vereist voor elke client.


De gebruiker logt in op FastComments indien nodig en ziet een toestemmingspagina met de naam van je applicatie, het account waarmee deze wordt verbonden, en de gevraagde scopes. De gebruiker moet de API Admin‑permissie op dat account hebben; anderen zien een permissiefout in plaats van het toestemmingsformulier. Goedkeuren leidt tot een redirect van de browser naar je redirect_uri met code en state. Afwijzen leidt tot een redirect met error=access_denied.
De autorisatiecode is 10 minuten geldig en kan één keer worden ingewisseld. Een tweede uitwisseling van dezelfde code intrekt elk token dat de eerste uitwisseling heeft opgeleverd.
Stap 2 – Token‑verzoek
Wissel de code in voor tokens. De body is form‑gecodeerd. Vertrouwelijke clients authenticeren met client_secret_basic (HTTP Basic) of client_secret_post (geheim in de body). Publieke clients sturen alleen client_id.



Fouten volgen RFC 6749: een JSON‑body met error en error_description, HTTP 400 voor invalid_request, invalid_grant, invalid_scope, invalid_target en unsupported_grant_type, HTTP 401 voor invalid_client, HTTP 429 bij rate‑limiting.
Stap 3 – API‑aanroep
Stuur het access‑token als een bearer‑token. De tenant wordt afgeleid van het token, dus tenantId is optioneel. Indien opgegeven moet het overeenkomen met het token, anders faalt het verzoek.

GET /api/v1/me retourneert de tenant, de autoriserende gebruiker en de toegekende scopes, waardoor het de juiste oproep is voor een verbindingstest. Een verzoek met een verlopen of ingetrokken token krijgt HTTP 401. Een verzoek waarvan de methode een scope vereist die het token niet bezit, krijgt HTTP 403.
Stap 4 – Vernieuwing


Het antwoord heeft dezelfde structuur als de code‑uitwisseling. Refresh‑tokens roteren: elke vernieuwing geeft een nieuw refresh_token terug en intrekt het oude na een wachttijd van 30 seconden voor gelijktijdige verzoeken. Het presenteren van een refresh‑token dat meer dan 30 seconden geleden is geroteerd, wordt behandeld als replay en intrekt de volledige grant. Partnerapplicaties die door FastComments zijn geregistreerd, zijn vrijgesteld van rotatie en krijgen hetzelfde refresh‑token terug met een verlengde vervaldatum van nog eens 30 dagen.
Een vernieuwing controleert ook opnieuw of de autoriserende gebruiker nog steeds API Admin op het account heeft. Zo niet, dan wordt de grant ingetrokken en is het antwoord invalid_grant.
Intrekking

Het intrekken van een refresh‑token intrekt elk access‑token dat uit dezelfde grant is uitgegeven. Het intrekken van een access‑token intrekt alleen dat token. Het eindpunt retourneert HTTP 200 met een leeg JSON‑object, ongeacht of het token werd gevonden, volgens RFC 7009.
Gebruikers kunnen ook een verbinding intrekken via Connected Apps in het FastComments‑dashboard. Elk token voor die applicatie stopt onmiddellijk met werken.
Gegevens aggregeren 
Deze API aggregeert documenten door ze te groeperen (als groupBy is opgegeven) en meerdere bewerkingen toe te passen. Verschillende bewerkingen (bijv. sum, countDistinct, avg, enz.) worden ondersteund.
De kosten zijn variabel. Elke 500 gescande objecten kost 1 API-credit.
Het maximale geheugenverbruik dat standaard per API-aanroep is toegestaan is 64MB, en standaard mag u slechts één aggregatie tegelijk laten draaien. Als u meerdere aggregaties gelijktijdig indient, worden deze in de wachtrij geplaatst en uitgevoerd in de volgorde van indiening. In afwachting zijnde aggregaties wachten maximaal 60 seconden, daarna loopt het verzoek time-out. Individuele aggregaties kunnen tot 5 minuten draaien.
Als u beheerde tenants heeft, kunt u alle onderliggende tenant-resources in één aanroep aggregeren door de query-parameter parentTenantId door te geven.
Voorbeelden
Voorbeeld: Unieke waarden tellen


Voorbeeld: Aantal unieke waarden

Antwoord:

Voorbeeld: Som van waarden van meerdere velden

Antwoord:

Voorbeeld: Gemiddelde waarden van meerdere velden

Antwoord:

Voorbeeld: Min/Max waarden van meerdere velden

Antwoord:

Voorbeeld: Unieke waarden tellen voor meerdere velden

Antwoord:

Voorbeeld: Query aanmaken

Antwoord:

Voorbeeld: Aantal opmerkingen in afwachting van beoordeling

Antwoord:

Voorbeeld: Opsplitsing van goedgekeurde, beoordeelde en spam-opmerkingen

Antwoord:

Structuren


De volgende resources kunnen worden geaggregeerd:
- AffiliateEvent
- AnonymousVote
- BannedUser
- BatchJob
- BlockedUser
- Comment
- CommentDeleted
- CommentIdToSyncOutbound
- CommentScheduled
- CommentSyncLog
- CustomConfig
- CustomEmailTemplateRenderError
- EmailToSend
- EventLogEntry
- ImportedCommentScheduled
- ModerationGroup
- Moderator
- Page
- PageReact
- PendingVote
- QuestionResult
- SSOUser
- SentEmail
- SpamEvent
- Tenant
- TenantAuditLog
- TenantBadge
- TenantDailyUsage
- TenantInvoiceHistory
- TenantPackage
- User
- UserBadge
- UserBadgeProgress
- UserNotification
- UserSubscription
- UserUsage
- Vote
Auditlog-structuur 
Een AuditLog is een object dat een geaudit evenement vertegenwoordigt voor huurders die toegang hebben tot deze functie.
De structuur voor het AuditLog-object is als volgt:

targetId en targetLabel beschrijven waarop het evenement werd uitgevoerd; userId en username beschrijven wie het heeft uitgevoerd. Voor updates bevat objectDetails.changes een {field: {from, to}} kaart van wat daadwerkelijk is veranderd.
Het auditlogboek is onveranderlijk. Het kan ook niet handmatig worden geschreven. FastComments.com mag alleen beslissen wanneer er naar het auditlogboek wordt geschreven. U kunt er echter via deze API uit lezen.
Evenementen in het auditlogboek verlopen na twee jaar.
GET /api/v1/audit-logs 
Deze API gebruikt paginering, geleverd door de skip, limit, before en after parameters. AuditLogs worden standaard geretourneerd in pagina's van 1000, tot een maximum limit van 10000, gesorteerd op when en id. De pagina's zijn groot omdat dit eindpunt meestal wordt gebruikt om de geschiedenis te dumpen in plaats van er interactief doorheen te pagineren.
Elke 100 teruggegeven logs kost 1 credit.
Standaard ontvang je een lijst met de nieuwste items eerst. Op deze manier kun je pollen beginnend met skip=0, paginerend totdat je de laatste record die je hebt verbruikt vindt.
Alternatief kun je sorteren op oudste eerst, en pagineren totdat er geen records meer zijn.
Sorteren kan worden gedaan door order in te stellen op ASC of DESC. Standaard is DESC.
Opvragen op datum is mogelijk via before en after als timestamps met milliseconden. before en after zijn NIET inclusief, en elk kan afzonderlijk worden gebruikt.
Vinden wat er met een persoon is gebeurd
Elk evenement registreert wie het heeft uitgevoerd (username, userId, ip) en, afzonderlijk, waarop het is uitgevoerd. targetLabel is een menselijk leesbaar label voor dat object, bijvoorbeeld jsmith (jsmith@example.com), en targetId is de id ervan. Gebruik target voor een case-insensitive substring match op het label wanneer je de naam of e‑mail van een persoon kent maar niet hun id.
Verwijderingen leggen het label vast op het moment van het evenement, zodat een verwijderde gebruiker of moderator nog steeds kan worden geïdentificeerd nadat het onderliggende record is verdwenen.
Beheerde tenants
Als jouw tenant andere tenants beheert, stel includeManagedTenants=true in om events van jouw tenant en elke tenant die het beheert in één respons terug te geven. De tenantId van elk teruggegeven log vertelt je van welke tenant het afkomstig is.



Reactie-structuur 
Een Comment object vertegenwoordigt een opmerking die door een gebruiker is achtergelaten.
De relatie tussen ouder- en kindreacties wordt gedefinieerd via parentId.
De structuur voor het Comment object is als volgt:

Sommige van deze velden zijn gemarkeerd als READONLY - deze worden door de API teruggegeven maar kunnen niet worden ingesteld.
Comment Text Structure
Reacties worden geschreven in een FastComments-variant van markdown, wat gewoon markdown is plus traditionele bbcode-stijl tags voor afbeeldingen, zoals [img]path[/img].
Tekst wordt in twee velden opgeslagen. De tekst die de gebruiker invoerde, wordt ongewijzigd opgeslagen in het veld comment. Deze wordt gerenderd en opgeslagen in het veld commentHTML.
De toegestane HTML-tags zijn b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Het wordt aanbevolen om de HTML te renderen; omdat het een heel kleine subset van HTML is, is het vrij eenvoudig om een renderer te bouwen. Er zijn bijvoorbeeld meerdere bibliotheken voor React Native en Flutter die hierbij kunnen helpen
Je kunt ervoor kiezen om de niet-genormaliseerde waarde van het veld comment te renderen. Een voorbeeld-parser vind je hier..
De voorbeeld-parser kan ook worden aangepast om met HTML te werken en de HTML-tags om te zetten naar de verwachte elementen voor jouw platform.
Tagging
Wanneer gebruikers in een opmerking worden getagd, wordt die informatie opgeslagen in een lijst genaamd mentions. Elk object in die lijst
heeft de volgende structuur.
Run 
HashTags
Wanneer hashtags worden gebruikt en succesvol geparseerd, wordt die informatie opgeslagen in een lijst genaamd hashTags. Elk object in die lijst
heeft de volgende structuur. Hashtags kunnen ook handmatig aan de hashTags-array van de opmerking worden toegevoegd voor querydoeleinden, als retain is ingesteld.
Run 
GET /api/v1/comments 
Deze API wordt gebruikt om reacties op te halen voor weergave aan een gebruiker. Bijvoorbeeld, hij filtert automatisch niet-goedgekeurde of spamreacties.
Pagination
Paginering kan op één van twee manieren worden gedaan, afhankelijk van prestatie-eisen en gebruikssituatie:
- Snelste: Precalculated Pagination:
- Dit is hoe FastComments werkt wanneer je onze kant-en-klare widgets en clients gebruikt.
- Op "volgende" klikken verhoogt simpelweg het paginanummer.
- Je kunt dit zien als opgehaald uit een key-value store.
- Op deze manier definieer je eenvoudig een
page-parameter die start bij0en een sorteerrichting alsdirection. - Paginagroottes kunnen worden aangepast via aanpassingsregels.
- Meest flexibel: Flexible Pagination:
- Op deze manier kun je aangepaste
limit- enskip-parameters definiëren. Geef geenpagemee. directionsortering wordt ook ondersteund.limitis het totale aantal dat moet worden geretourneerd nadatskipis toegepast.- Voorbeeld: stel
skip = 200, limit = 100in wanneerpage size = 100enpage = 2.
- Voorbeeld: stel
- Kindreacties tellen nog steeds mee in de paginering. Je kunt dit omzeilen met de
asTree-optie.- Je kunt kinderen pagineren via
limitChildrenenskipChildren. - Je kunt de diepte van de teruggegeven threads beperken via
maxTreeDepth.
- Je kunt kinderen pagineren via
- Op deze manier kun je aangepaste
Threads
- Bij gebruik van
Precalculated Paginationworden reacties gegroepeerd per page en beïnvloeden reacties in threads de gehele pagina.- Op deze manier kunnen threads op de client worden bepaald op basis van
parentId. - Bijvoorbeeld, met een pagina met één top-level reactie en 29 antwoorden, en
page=0in de API - je krijgt alleen de top-level reactie en de 29 kinderen.
- Op deze manier kunnen threads op de client worden bepaald op basis van
- Bij gebruik van
Flexible Paginationkun je eenparentId-parameter definiëren.- Stel dit in op null om alleen top-level reacties te krijgen.
- Roep vervolgens de API opnieuw aan en geef
parentIddoor om threads te bekijken. - Een veelvoorkomende oplossing is een API-aanroep te doen voor de top-level reacties en vervolgens parallel API-aanroepen te doen om reacties voor de kinderen van elke reactie op te halen.
- NIEUW vanaf feb 2023! Haal op als een boom met
&asTree=true.- Je kunt dit zien als
Flexible Pagination als een Boom. - Alleen de top-level reacties tellen mee in de paginering.
- Stel
parentId=nullin om de boom bij de root te starten (je moetparentIdinstellen). - Stel
skipenlimitin voor paginering. - Stel
asTreein optrue. - De creditkosten stijgen met
2x, omdat onze backend in dit scenario veel meer werk moet doen. - Stel
maxTreeDepth,limitChildrenenskipChildrenin naar wens.
- Je kunt dit zien als
Trees Explained
Bij gebruik van asTree kan het moeilijk zijn om over paginering na te denken. Hier is een handige afbeelding:
Fetching Comments in The Context of a User
De /comments API kan in twee contexten worden gebruikt, voor verschillende gebruikssituaties:
- Voor het retourneren van reacties gesorteerd en getagd met informatie voor het bouwen van je eigen client.
- Definieer in dit geval een
contextUserIdquery-parameter.
- Definieer in dit geval een
- Voor het ophalen van reacties van je backend voor aangepaste integraties.
- Het platform zal dit standaard doen zonder
contextUserId.
- Het platform zal dit standaard doen zonder




Get Comments as a Tree
Het is mogelijk om de reacties als een boom te ontvangen, waarbij alleen de top-level reacties meetellen voor paginering.

Wil je alleen de top-level reacties en de directe kinderen ophalen? Hier is één manier:

Echter, in je UI moet je mogelijk weten of je een "toon antwoorden"-knop op elke reactie moet weergeven. Bij het ophalen van reacties via een boom is er een hasChildren-eigenschap getagd op reacties wanneer van toepassing.
Get Comments as a Tree, Searching by Hash Tag
Het is mogelijk om te zoeken op hashtag via de API, over je volledige tenant (niet beperkt tot één pagina, of urlId).
In dit voorbeeld laten we urlId weg en zoeken we op meerdere hashtags. De API zal alleen reacties retourneren die alle gevraagde hashtags bevatten.

All Request Params

The Response

Helpful Tips
URL ID
Je wilt waarschijnlijk de Comment API gebruiken met de urlId-parameter. Je kunt eerst de Pages API aanroepen om te zien hoe de beschikbare urlId-waarden eruitzien.
Anonymous Actions
Voor anonieme reacties wil je waarschijnlijk anonUserId doorgeven bij het ophalen van reacties, en bij het uitvoeren van vlaggen en blokkeren.
(!) Dit is vereist voor veel app stores omdat gebruikers in staat moeten zijn om door hen bekeken gebruikersgegenereerde inhoud te markeren, zelfs als ze niet zijn ingelogd. Het niet doen kan ertoe leiden dat je app uit die store wordt verwijderd.
Comments Not Being Returned
Controleer of je reacties zijn goedgekeurd en geen spam zijn.
GET /api/v1/comments/:id 
Deze API biedt de mogelijkheid om een enkele reactie op te halen op basis van id.



POST /api/v1/comments 
Dit API-eindpunt biedt de mogelijkheid om reacties te maken.
Veelvoorkomende gebruikssituaties zijn aangepaste UIs, integraties of imports.
Opmerkingen:
- Deze API kan het reactiewidget "live" bijwerken indien gewenst (dit verhoogt de
creditsCostvan1naar2). - Deze API maakt automatisch gebruikersobjecten in ons systeem aan als een e-mailadres wordt opgegeven.
- Poging om twee reacties op te slaan met verschillende e-mails, maar dezelfde gebruikersnaam, resulteert in een fout voor de tweede reactie.
- Als u
parentIdopgeeft, en een kindreactie heeftnotificationSentForParentals false, zullen wij meldingen voor de ouderreactie verzenden. Dit gebeurt elk uur (we groeperen de meldingen om het aantal verzonden e-mails te verminderen). - Als u welkomst-e-mails wilt verzenden bij het aanmaken van gebruikers, of e-mails voor reactie-verificatie, zet
sendEmailsoptruein de queryparameters. - Reacties die via deze API worden gemaakt verschijnen in de Analytics- en Moderation-pagina's van de beheerapp.
- "ongepaste woorden" blijven nog steeds gemaskeerd in de namen van reageerders en de reactietekst als de instelling is ingeschakeld.
- Reacties gemaakt via deze API kunnen desgewenst nog steeds op spam worden gecontroleerd.
- Configuraties zoals maximale reactielengte, indien geconfigureerd via de Customization Rule-beheerpagina, zijn hier van toepassing.
De minimale gegevens die vereist zijn om te verzenden en die in het reactiewidget worden weergegeven, zijn als volgt:

Een realistischer verzoek kan er als volgt uitzien:



PATCH /api/v1/comments/:id 
Dit API-eindpunt biedt de mogelijkheid om een enkele opmerking bij te werken.
Opmerkingen:
- Deze API kan het reacties-widget "live" bijwerken indien gewenst (dit verhoogt de basis
creditsCostvan1naar2).- Hiermee kunnen migraties van opmerkingen tussen pagina's "live" worden gemaakt (door
urlIdte wijzigen). - Migraties kosten een extra
2credits omdat pagina's worden voorgecalculeerd en dit CPU-intensief is.
- Hiermee kunnen migraties van opmerkingen tussen pagina's "live" worden gemaakt (door
- In tegenstelling tot de create-API zal deze API GEEN gebruikersobjecten automatisch aanmaken in ons systeem als een e-mail wordt opgegeven.
- Via deze API bijgewerkte opmerkingen kunnen indien gewenst nog steeds op spam worden gecontroleerd.
- Configuratie zoals maximale commentaarlengte, indien geconfigureerd via de Customization Rule-beheerpagina, is hier van toepassing.
- Om gebruikers toe te staan hun commentaartekst bij te werken, kunt u gewoon
commentopgeven in de request body. Wij zullen de resulterendecommentHTMLgenereren.- Als u zowel
commentalscommentHTMLopgeeft, zullen we de HTML niet automatisch genereren. - Als de gebruiker mentions of hashtags aan zijn nieuwe tekst toevoegt, wordt dit nog steeds verwerkt zoals bij de
POST-API.
- Als u zowel
- Wanneer u
commenterEmailbijwerkt op een opmerking, is het het beste ookuserIdop te geven. Anders moet u ervoor zorgen dat de gebruiker met dit e-mailadres tot uw tenant behoort, anders zal het verzoek mislukken. - Als de doelopmerking vergrendeld is (
isLocked: true), wordt het verzoek afgewezen metcode: 'locked'. Ontgrendel de opmerking eerst, werk deze bij, en vergrendel opnieuw indien gewenst.



DELETE /api/v1/comments/:id 
Dit API-eindpunt biedt de mogelijkheid om een reactie te verwijderen.
Opmerkingen:
- Deze API kan de reactie-widget "live" bijwerken indien gewenst (dit verhoogt
creditsCostvan1naar2). - Deze API zal alle onderliggende reacties verwijderen.
- Als de doelreactie is vergrendeld (
isLocked: true), wordt het verzoek afgewezen metcode: 'locked'. Ontgrendel eerst de reactie en verwijder deze daarna.



POST /api/v1/comments/:id/flag 
Deze API-endpoint biedt de mogelijkheid om een opmerking voor een specifieke gebruiker te markeren.
Opmerkingen:
- Deze oproep moet altijd worden gedaan in de context van een gebruiker. De gebruiker kan een FastComments.com-gebruiker, SSO-gebruiker of Tenant-gebruiker zijn.
- Als er een drempel is ingesteld waarbij een opmerking bij voldoende flags wordt verborgen, wordt de opmerking meteen automatisch verborgen nadat het gedefinieerde aantal flags is bereikt.
- Nadat de opmerking automatisch is afgekeurd (verborgen), kan deze alleen opnieuw worden goedgekeurd door een beheerder of moderator. Het verwijderen van de vlag zal de opmerking niet opnieuw goedkeuren.

Voor anoniem flaggen moeten we een anonUserId opgeven. Dit kan een ID zijn die de anonieme sessie vertegenwoordigt, of een willekeurige UUID.
Dit stelt ons in staat om het markeren en demarkeren van opmerkingen te ondersteunen, zelfs als een gebruiker niet is ingelogd. Op deze manier kan de opmerking als
gemarkeerd worden weergegeven wanneer opmerkingen worden opgehaald met dezelfde anonUserId.



POST /api/v1/comments/:id/un-flag 
Dit API-eindpunt maakt het mogelijk om de vlag van een reactie voor een specifieke gebruiker te verwijderen.
Opmerkingen:
- Deze oproep moet altijd worden gedaan in de context van een gebruiker. De gebruiker kan een FastComments.com User, SSO User, or Tenant User zijn.
- Nadat een reactie automatisch is afgekeurd (verborgen) - kan de reactie alleen opnieuw worden goedgekeurd door een beheerder of moderator. Het verwijderen van de vlag zal de reactie niet opnieuw goedkeuren.

Voor anoniem vlaggen moeten we een anonUserId opgeven. Dit kan een ID zijn die de anonieme sessie vertegenwoordigt, of een willekeurige UUID.



POST /api/v1/comments/:id/block 
Dit API-eindpunt biedt de mogelijkheid om een gebruiker te blokkeren die een bepaalde opmerking heeft geschreven. Het ondersteunt blokkeren van opmerkingen geschreven door FastComments.com-gebruikers, SSO-gebruikers en tenantgebruikers.
Het ondersteunt een body-parameter commentIdsToCheck om te controleren of andere mogelijk zichtbare opmerkingen op de client geblokkeerd of gedeblokkeerd moeten worden nadat deze actie is uitgevoerd.
Notities:
- Deze oproep moet altijd worden uitgevoerd in de context van een gebruiker. De gebruiker kan een FastComments.com-gebruiker, een SSO-gebruiker of een tenantgebruiker zijn.
- Het
userIdin het verzoek is de gebruiker die de blokkering uitvoert. Bijvoorbeeld:User AwilUser Bblokkeren. GeefuserId=User Aen de comment-id dieUser Bschreef. - Volledig anonieme opmerkingen (geen user id, geen e-mail) kunnen niet worden geblokkeerd en er wordt een fout geretourneerd.

Voor anonieme blokkering moeten we een anonUserId opgeven. Dit kan een ID zijn die de anonieme sessie vertegenwoordigt, of een willekeurige UUID.
Dit stelt ons in staat om opmerkingen te blokkeren, zelfs als een gebruiker niet is ingelogd, door de opmerkingen op te halen met hetzelfde anonUserId.



POST /api/v1/comments/:id/un-block 
Deze API-endpoint biedt de mogelijkheid om een gebruiker die een bepaalde reactie schreef te deblokkeren. Het ondersteunt het deblokkeren van reacties geschreven door FastComments.com Users, SSO Users, and Tenant Users.
Het ondersteunt een body-parameter commentIdsToCheck om te controleren of andere mogelijk zichtbare reacties in de client na deze actie geblokkeerd of gedeblokkeerd moeten worden.
Notes:
- Deze oproep moet altijd worden gedaan in de context van een gebruiker. De gebruiker kan een FastComments.com User, SSO User, or Tenant User zijn.
- The
userIdin the request is the user that is die het deblokkeren uitvoert. For example:User AwilUser Bdeblokkeren. PassuserId=User Aand the comment id thatUser Bwrote. - Completely anonymous comments (no user id, no email) cannot be blocked and an error will be returned.




E-mail sjabloonstructuur 
Een EmailTemplate-object vertegenwoordigt de configuratie voor een aangepast e-mailsjabloon voor een tenant.
Het systeem selecteert het e-mailsjabloon dat gebruikt wordt via:
- Het type-identifier, dit noemen we
emailTemplateId. Dit zijn constanten. - De
domain. We proberen eerst een sjabloon te vinden voor de domain waaraan het gerelateerde object (zoals eenComment) is gekoppeld, en als er geen overeenkomst wordt gevonden zullen we proberen een sjabloon te vinden waarbij domain null of*is.
De structuur van het EmailTemplate-object is als volgt:

Opmerkingen
- Je kunt de geldige
emailTemplateId-waarden verkrijgen via het/definitions-endpoint. - Het
/definitions-endpoint bevat ook de standaardvertalingen en testgegevens. - Sjablonen slaan niet op als de structuur of testgegevens ongeldig zijn.
GET /api/v1/email-templates/:id 
Individuele EmailTemplates kunnen worden opgehaald met hun bijbehorende id (NIET emailTemplateId).



GET /api/v1/email-templates 
Deze API gebruikt paginering, geleverd door de queryparameter page. EmailTemplates worden geretourneerd in pagina's van 100, gesorteerd op createdAt en vervolgens id.



PATCH /api/v1/email-templates/:id 
Dit API-eindpunt biedt de mogelijkheid om een e-mailtemplate bij te werken door alleen de id en de attributen die bijgewerkt moeten worden op te geven.
Houd er rekening mee dat alle validaties die gelden bij het aanmaken van een template ook van toepassing zijn, bijvoorbeeld:
- De template moet renderen. Dit wordt bij elke update gecontroleerd.
- Er mogen geen dubbele templates voor hetzelfde domein bestaan (anders wordt er één stilzwijgend genegeerd).



POST /api/v1/email-templates 
Dit API-endpoint biedt de mogelijkheid om e-mailsjablonen te maken.
Opmerkingen:
- Je kunt niet meerdere sjablonen hebben met dezelfde
emailTemplateIdvoor hetzelfde domein. - Maar je kunt wel een wildcard-sjabloon hebben (
domain=*) en een domeinspecifiek sjabloon voor dezelfdeemailTemplateId. - Het opgeven van
domainis alleen relevant als je meerdere domeinen hebt, of specifieke sjablonen wilt gebruiken voor testen (domainingesteld oplocalhostetc). - Als je
domainopgeeft, moet dit overeenkomen met eenDomainConfig. Bij een fout wordt een lijst met geldige domeinen verstrekt. - De sjabloonsyntaxis is EJS en wordt gerenderd met een timeout van 500ms. P99 voor renderen is <5ms, dus als je de 500ms bereikt is er iets mis.
- Je sjabloon moet renderen met de opgegeven
testDataom op te slaan. Renderfouten worden samengevoegd en gerapporteerd op het dashboard (binnenkort via de API beschikbaar).
De minimale gegevens die nodig zijn om een sjabloon toe te voegen, zijn als volgt:

Je wilt mogelijk per site sjablonen hebben, in dat geval definieer je domain:



POST /api/v1/email-templates/render 
Dit API-eindpunt maakt het mogelijk e-mailsjablonen te bekijken.



DELETE /api/v1/email-templates/:id 
Deze route verwijdert een enkele EmailTemplate op basis van id.



Feedpost-structuur 
A FeedPost object represents a post in a FastComments feed. A feed is a stream of posts with their own comment threads, rendered by the Feed widget. Every post has an author, optional rich content, media, and links, and can be tagged so that a feed can be filtered.
The structure for the FeedPost object is as follows:

Notes:
- Sommige van deze velden zijn gemarkeerd als
ALLEEN-LEZEN- deze worden door de API geretourneerd maar kunnen niet worden ingesteld. - De opmerkingen op een bericht zijn reguliere opmerkingen waarvan de
urlIdpost:is, gevolgd door de bericht_id. Gebruik die waarde met de Comment API om opmerkingen op een bericht te lezen of te maken.
GET /api/v1/feed-posts 
Haalt berichten op in een feed, nieuwste eerst. Paginering is cursor‑gebaseerd: geef de _id van het laatste bericht dat je hebt ontvangen als
afterId om de volgende pagina te krijgen.
Kosten één credit per tien geretourneerde berichten, met een minimum van één credit.



POST /api/v1/feed-posts 
Deze route maakt een enkele FeedPost aan. Elke post heeft een auteur, dus fromUserId is vereist en moet de id zijn van een bestaande FastComments- of SSO-gebruiker op het account.



PATCH /api/v1/feed-posts/:id 
Deze route werkt een enkele FeedPost bij. Stuur alleen de velden die je wilt wijzigen.



Hashtag-structuur 
Een HashTag object vertegenwoordigt een tag die door een gebruiker kan worden achtergelaten. HashTags kunnen worden gebruikt om naar een extern stuk inhoud te linken of om gerelateerde opmerkingen met elkaar te verbinden.
De structuur van het HashTag object is als volgt:

Opmerkingen:
- In sommige API endpoints zie je dat de hashtag in de URL wordt gebruikt. Vergeet niet waarden te URI-encoderen. Bijvoorbeeld,
#moet in plaats daarvan worden weergegeven als%23. - Sommige van deze velden zijn gemarkeerd als
READONLY- deze worden door de API geretourneerd maar kunnen niet worden ingesteld.
GET /api/v1/hash-tags 
Deze API gebruikt paginering, geleverd door de queryparameter page. HashTags worden geretourneerd in pagina's van 100, gesorteerd op tag.



PATCH /api/v1/hash-tags/:tag 
Deze route biedt de mogelijkheid om een enkele HashTag bij te werken.



POST /api/v1/hash-tags 
Deze route biedt de mogelijkheid om een enkele HashTag toe te voegen.



POST /api/v1/hash-tags/bulk 
Deze route biedt de mogelijkheid om tot 100 HashTag-objecten tegelijk toe te voegen.



DELETE /api/v1/hash-tags/:tag 
Deze route verwijdert een HashTag op basis van de opgegeven tag.
Houd er rekening mee dat, tenzij automatische creatie van HashTag is uitgeschakeld, hashtags opnieuw kunnen worden aangemaakt wanneer een gebruiker de hashtag opgeeft bij het plaatsen van een reactie.



GET /api/v1/me 
Beschrijft de referentie die het verzoek maakt: de tenant waartoe het behoort en, voor OAuth-toegangstokens, de gebruiker die de applicatie heeft geautoriseerd. Integraties gebruiken het om een verbinding te testen en te labelen.
Met een API-sleutel identificeert de respons alleen de tenant. Met een OAuth bearer-token draagt het ook de autoriserende gebruiker en de verleende scopes.


Moderator-structuur 
Een Moderator-object vertegenwoordigt de configuratie voor een moderator.
Er zijn drie typen moderators:
- Beheerdersgebruikers die de
isCommentModeratorAdminflag hebben. - SSO-gebruikers met de
isCommentModeratorAdminflag. - Gewone commentatoren, of FastComments.com-gebruikers, die worden uitgenodigd als Moderators.
De Moderator-structuur wordt gebruikt om de moderatiestatus van use case 3 weer te geven.
Als u een gebruiker via de API wilt uitnodigen om moderator te worden, gebruik dan de Moderator API door een Moderator aan te maken en ze te inviting.
Als de gebruiker geen FastComments.com-account heeft, helpt de uitnodigings-e-mail hen bij het opzetten. Als ze al een account hebben, krijgen ze moderatietoegang tot uw tenant en zal het userId van het Moderator-object worden bijgewerkt om naar hun gebruiker te verwijzen. U zult geen API-toegang tot hun gebruiker hebben, omdat deze in dat geval van henzelf is en wordt beheerd door FastComments.com.
Als u volledige beheer over het account van de gebruiker nodig heeft, raden we aan ofwel SSO te gebruiken, of ze toe te voegen als een Tenant-gebruiker en vervolgens een Moderator-object toe te voegen om hun statistieken bij te houden.
De Moderator-structuur kan worden gebruikt als een mechanisme voor statistiekregistratie voor use cases 1 en 2. Nadat u de gebruiker hebt aangemaakt, voegt u een Moderator-object toe met hun userId gedefinieerd en hun statistieken worden bijgehouden op de Pagina voor comment-moderatoren.
De structuur van het Moderator-object is als volgt:

GET /api/v1/moderators/:id 
Deze route retourneert een enkele moderator op basis van het id.



GET /api/v1/moderators 
Deze API gebruikt paginering via de queryparameter skip. Moderators worden geretourneerd in pagina's van 100, gesorteerd op createdAt en id.
De kosten zijn gebaseerd op het aantal geretourneerde moderators; het kost 1 credit per 10 geretourneerde moderators.



PATCH /api/v1/moderators/:id 
Dit API-eindpunt biedt de mogelijkheid om een Moderator bij te werken via id.
Het bijwerken van een Moderator kent de volgende beperkingen:
- De volgende waarden mogen niet worden opgegeven bij het bijwerken van een
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Als een
userIdis opgegeven, moet die gebruiker bestaan. - Als een
userIdis opgegeven, moet deze behoren tot dezelfdetenantIddie in de queryparameters is opgegeven. - Twee moderators in dezelfde tenant kunnen niet worden toegevoegd met hetzelfde
email. - U mag de
tenantIddie aan eenModeratoris gekoppeld niet wijzigen.



POST /api/v1/moderators 
Deze route biedt de mogelijkheid om één Moderator toe te voegen.
Het aanmaken van een Moderator heeft de volgende beperkingen:
- Een
nameenemailmoeten altijd worden opgegeven. EenuserIdis optioneel. - De volgende waarden mogen niet worden opgegeven bij het aanmaken van een
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Wanneer een
userIdis opgegeven, moet die gebruiker bestaan. - Wanneer een
userIdis opgegeven, moet die tot dezelfdetenantIdbehoren die in de queryparameters is opgegeven. - Twee moderators binnen dezelfde tenant kunnen niet worden toegevoegd met hetzelfde
email.
We kunnen een Moderator aanmaken voor een gebruiker waarvan we alleen het e-mailadres kennen:

Of we kunnen een Moderator aanmaken voor een gebruiker die tot onze tenant behoort, om hun moderatiestatistieken bij te houden:



POST /api/v1/moderators/:id/send-invite 
Deze route biedt de mogelijkheid om één Moderator uit te nodigen.
De volgende beperkingen gelden om een uitnodigingsmail naar een Moderator te sturen:
- De
Moderatormoet al bestaan. - De
fromNamemag niet langer zijn dan100 characters.
Opmerkingen:
- Als een gebruiker met het opgegeven e-mailadres al bestaat, wordt hij uitgenodigd om de opmerkingen van uw tenant te modereren.
- Als een gebruiker met het opgegeven e-mailadres niet bestaat, leidt de uitnodigingslink die persoon door het aanmaken van een account.
- De uitnodiging verloopt na
30 days.
We kunnen een Moderator aanmaken voor een gebruiker waarvan we alleen het e-mailadres kennen:

Dit zal een e-mail sturen zoals Bob at TenantName is inviting you to be a moderator...


DELETE /api/v1/moderators/:id 
Deze route biedt het verwijderen van een Moderator op basis van het id.



Meldingsaantal-structuur 
Een NotificationCount object vertegenwoordigt het aantal ongelezen meldingen en metadata voor een gebruiker.
Als er geen ongelezen meldingen zijn, bestaat er geen NotificationCount voor de gebruiker.
NotificationCount-objecten worden automatisch aangemaakt en kunnen niet via de API worden gemaakt. Ze verlopen ook na één jaar.
U kunt het aantal ongelezen meldingen van een gebruiker wissen door hun NotificationCount te verwijderen.
De structuur van het NotificationCount-object is als volgt:

GET /api/v1/notification-count/:user_id 
Deze route retourneert een enkele NotificationCount op basis van user id. Bij SSO staat de user id in het formaat <tenant id>:<user id>.
Als er geen ongelezen meldingen zijn, zal er geen NotificationCount zijn - u krijgt dan een 404.
Dit verschilt van notifications/count doordat het veel sneller is, maar geen filtering toestaat.



DELETE /api/v1/notification-count/:user_id 
Deze route verwijdert een enkele NotificationCount op basis van gebruikers-id. Bij SSO heeft de gebruikers-id het formaat <tenant id>:<user id>.
Dit wist de ongelezen meldingtelling van de gebruiker (het rode bel-icoon in de reactie-widget vervaagt en het aantal verdwijnt).



Meldingsstructuur 
Een Notification object vertegenwoordigt een notificatie voor een gebruiker.
Notification objects worden automatisch aangemaakt en kunnen niet via de API worden aangemaakt. Ze verlopen ook na één jaar.
Notificaties kunnen niet worden verwijderd. Ze kunnen echter wel worden bijgewerkt om viewed op false te zetten, en je kunt zoeken op viewed.
Een gebruiker kan zich ook afmelden voor notificaties voor een specifiek comment door optedOut in de notificatie op true te zetten. Je kunt je weer aanmelden door het op false te zetten.
Er zijn verschillende notificatie-types - controleer relatedObjectType en type.
De manieren waarop notificaties worden aangemaakt zijn vrij flexibel en kunnen door veel scenario's worden getriggerd (zie NotificationType).
Op dit moment impliceert het bestaan van een Notification niet noodzakelijk dat er een e-mail is of zou moeten worden verzonden. In plaats daarvan worden de notificaties gebruikt voor de notificatiefeed en gerelateerde integraties.
De structuur voor het Notification object is als volgt:

GET /api/v1/notifications 
Deze route retourneert maximaal 30 Notification objecten, gesorteerd op createdAt, nieuwste eerst.
U kunt filteren op userId. Bij SSO is de gebruikers-id in het formaat <tenant id>:<user id>.



GET /api/v1/notifications/count 
Deze route retourneert een object met het aantal meldingen onder de parameter count.
Het is trager dan /notification-count/ en kost twee keer zoveel credits, maar maakt filteren op meer dimensies mogelijk.
Je kunt filteren op dezelfde parameters als de /notifications endpoint, zoals userId. Bij SSO heeft de gebruikers-id het formaat <tenant id>:<user id>.




PATCH /api/v1/notifications/:id 
Dit API-eindpunt maakt het mogelijk om een Notification bij id bij te werken.
Het bijwerken van een Notification heeft de volgende beperkingen:
- Je kunt alleen de volgende velden bijwerken:
viewedoptedOut



Pagina-reacties openbare API 
Page Reacts laten uw gebruikers een pagina leuk vinden, of erop reageren met uw eigen set reactievormafbeeldingen. De Page Reacts widget en de Floating Likes widget zijn gebouwd op deze eindpunten, en u kunt ze zelf aanroepen om uw eigen like‑knop te bouwen.
In tegenstelling tot de rest van deze gids, zijn de Page Reacts‑eindpunten openbaar. Ze worden aangeroepen vanuit de browsers van uw gebruikers, vereisen geen API‑sleutel en kosten geen API‑credits. Elke reactie behoort tot de gebruiker die het verzoek doet, dus een gebruiker kan alleen zijn eigen reacties toevoegen of verwijderen.
Er zijn twee sets eindpunten:
/page-reacts/v1/likes/:tenantId– één enkele “like” per gebruiker per pagina. Gebruik deze voor een like‑knop./page-reacts/v2/:tenantId– meerdere reacties per pagina, elk geïdentificeerd door een korteiddie u kiest (bijvoorbeeldheartoflaugh).
Beide zijn ook beschikbaar in onze SDK’s als onderdeel van de PublicApi, bijvoorbeeld getV1PageLikes, createV1PageReact en deleteV1PageReact in de JavaScript SDK.
De gebruiker identificeren
Reacties zijn gekoppeld aan de gebruiker die het verzoek doet:
- SSO‑gebruikers: geef de
sso‑queryparameter mee, ingesteld op de URI‑gecodeerde JSON van hetzelfde SSO‑object dat u aan de commentaarwidget geeft. Zie SSO. - Anonieme gebruikers: wanneer er geen
sso‑parameter is en geen FastComments‑login, kent de server de browser een anonieme id toe die wordt opgeslagen in de FastComments‑sessiecookie. Verstuur verzoeken metcredentials: 'include'zodat de cookie tussen verzoeken behouden blijft. Browsers die third‑party cookies blokkeren, behouden de anonieme id niet, dus gebruik SSO wanneer elke gebruiker betrouwbaar herkend moet worden.
De urlId
urlId identificeert de pagina, hetzelfde als voor reacties. Gebruik dezelfde urlId die u aan de commentaarwidget geeft zodat likes en reacties op dezelfde pagina worden geteld. Vergeet niet om deze URI‑gecodeerd te gebruiken.

GET /page-reacts/v1/likes/:tenantId 
Retourneert het aantal likes op een pagina, en of de huidige gebruiker deze heeft geliket. Pagina's die nog niet bestaan, geven een likeCount van 0 terug.



POST /page-reacts/v1/likes/:tenantId 
Vindt een pagina leuk als de huidige gebruiker. Elke gebruiker kan een pagina één keer leuk vinden: opnieuw leuk vinden slaagt met de code already-liked en verandert de telling niet.
De pagina wordt aangemaakt als deze nog niet bestaat. Geef title door om de titel van de pagina in te stellen of bij te werken.



DELETE /page-reacts/v1/likes/:tenantId 
Verwijdert de like van de huidige gebruiker van een pagina. Als de gebruiker de pagina niet heeft geliket, slaagt het verzoek met de code not-liked en verandert de telling niet.



GET /page-reacts/v2/:tenantId 
Retourneert het aantal voor elke reactie op een pagina, en welke reacties de huidige gebruiker heeft toegevoegd.



GET /page-reacts/v2/:tenantId/list 
Retourneert de namen van de gebruikers die een reactie aan een pagina hebben toegevoegd, gesorteerd op alfabetische volgorde. Er worden maximaal 100 reacties opgezocht, en anonieme gebruikers worden niet opgenomen.



POST /page-reacts/v2/:tenantId 
Voegt een reactie toe aan een pagina als de huidige gebruiker. Een gebruiker kan elke reactie-id één keer toevoegen: het opnieuw toevoegen slaagt met de code already-reacted en verandert de telling niet. Een gebruiker kan verschillende reacties aan dezelfde pagina toevoegen.
Reactie-id's worden door jou gekozen en mogen tot 36 tekens bevatten. De pagina wordt aangemaakt als deze nog niet bestaat. Geef title door om de titel van de pagina in te stellen of bij te werken.



DELETE /page-reacts/v2/:tenantId 
Verwijdert een van de reacties van de huidige gebruiker van een pagina. Als de gebruiker die reactie niet heeft toegevoegd, slaagt het verzoek met de code no-react en verandert de telling niet.



Pagina-structuur 
Een Page-object vertegenwoordigt de pagina waartoe veel opmerkingen kunnen behoren. Deze relatie wordt gedefinieerd door
urlId.
Een Page slaat informatie op zoals de paginatitel, het aantal opmerkingen en urlId.
De structuur voor het Page-object is als volgt:

GET /api/v1/pages 
Je kunt momenteel alleen alle pagina's ophalen (of een enkele pagina via /by-url-id) die aan je account zijn gekoppeld. Als je fijnmaziger zoeken wilt, neem contact met ons op.



Handige tip
De Comment API vereist een urlId. Je kunt eerst de Pages API aanroepen om te zien hoe de voor jou beschikbare urlId-waarden eruitzien.
GET /api/v1/pages/by-url-id 
Individuele pagina's kunnen worden opgehaald met hun bijbehorende urlId. Dit kan handig zijn om paginatitels of het aantal reacties op te zoeken.



Handige tip
Vergeet niet waarden zoals de urlId te URI-encoderen.
PATCH /api/v1/pages/:id 
Deze route biedt de mogelijkheid om een enkele Page bij te werken. De bijbehorende reacties worden bijgewerkt.



Opmerking
Sommige parameters in het Page-object worden automatisch bijgewerkt. Dit zijn de aantallen en de title-attributen. Aantallen kunnen niet via de API worden bijgewerkt omdat het berekende waarden zijn. De pagina title kan via de API worden ingesteld, maar wordt overschreven als de reactiewidget wordt gebruikt op een pagina met dezelfde urlId en een andere paginatitel.
POST /api/v1/pages 
Dit API-eindpunt maakt het mogelijk om pagina's aan te maken.
Een veelvoorkomend gebruiksgeval is toegangscontrole.
Opmerkingen:
- Als je op een comment-thread hebt gereageerd, of de API hebt aangeroepen om een
Commentte maken, heb je al eenPage-object aangemaakt! Je kunt proberen het op te halen via de/by-url-idPage-route, door hetzelfdeurlIddoor te geven dat aan de commentaar-widget is doorgegeven. - De
Page-structuur bevat enkele berekende waarden. Momenteel zijn ditcommentCountenrootCommentCount. Deze worden automatisch gevuld en kunnen niet door de API worden ingesteld. Pogingen daartoe zullen ertoe leiden dat de API een fout teruggeeft.



DELETE /api/v1/pages/:id 
Deze route verwijdert een enkele pagina op basis van het id.
Let op dat interactie met de reactie-widget voor een pagina met hetzelfde urlId de Page naadloos opnieuw zal aanmaken.



Poll-structuur 
Een Poll is gekoppeld aan een reactie, in plaats van een eigen object te zijn. Deze wordt aangemaakt samen met de reactie (zie POST /api/v1/comments), of later toegevoegd aan een bestaande reactie met PUT /api/v1/polls/:commentId.
De stemtellingen worden bewaard op de poll zelf, zodat het lezen van een poll je de resultaten geeft zonder dat je iets hoeft op te tellen. De individuele stemmen achter die tellingen zijn PollVote objecten.
Elke optie heeft een id die wordt gegenereerd wanneer de poll wordt aangemaakt. Die id gebruik je om een stem uit te brengen, om een optie een nieuw label te geven, en om een optie (en de stemmen ervan) te behouden wanneer je de poll PUT met toegevoegde of verwijderde opties. Het is de enige veilige manier om naar een optie te verwijzen – nooit naar de positie in de lijst.

Limits
- Een vraag is verplicht en mag maximaal 200 tekens bevatten.
- Een poll heeft tussen de 2 en 10 opties.
- Een optielabel is verplicht, mag maximaal 100 tekens bevatten en moet uniek zijn binnen de poll (hoofdletterongevoelig).
closesAtmoet in de toekomst liggen wanneer de poll wordt aangemaakt. Om een poll onmiddellijk te sluiten,PATCHje deze met een datum in het verleden.
Site Settings
Polls volgen de configuratie van je site, die je kunt aanpassen onder Customize Widget:
- Polls moeten ingeschakeld zijn voordat een poll kan worden aangemaakt, anders reageert de API met
polls-disabled. - Stemmen kan worden beperkt tot ingelogde gebruikers; in dat geval wordt een stem die alleen een
anonUserIdbevat afgewezen metpoll-login-required.
GET /api/v1/polls/:commentId 
Leest de poll die aan een opmerking is gekoppeld, met de huidige stemtellingen.
Polls worden ook teruggegeven op de opmerking zelf door de commentaar-API's, dus gebruik dit wanneer je alleen de resultaten wilt en niet de volledige opmerking.



Een opmerking zonder poll, een opmerking die is verwijderd, en een opmerking-id die niet bestaat reageren
op dezelfde manier, met poll-not-found.
PUT /api/v1/polls/:commentId 
Voegt een poll toe aan een bestaande reactie, of stelt de volledige status van de poll in die het al heeft.
De body is de volledige poll, en de opties die je verzendt worden de opties van de poll, in die volgorde. Elke optie wordt gematcht op zijn id:
- Een optie die wordt verzonden met de
idvan een bestaande optie behoudt die optie en zijn stemmen. Het label en de positie worden bijgewerkt naar wat je hebt verzonden. - Een optie die zonder een
idwordt verzonden, wordt toegevoegd, zonder stemmen. - Een bestaande optie die je weglaat, wordt verwijderd, samen met de daarop uitgebrachte stemmen.
totalVotesdaalt met hetzelfde aantal.
Dus om een optie toe te voegen, stuur je de huidige opties met hun ids plus de nieuwe zonder een id. Om er een te verwijderen, stuur je de lijst zonder die optie. De optie‑ids staan in de poll die wordt geretourneerd door GET /api/v1/polls/:commentId.
Het verzenden van helemaal geen ids vervangt elke optie en verwijdert elke stem die al op de poll is uitgebracht. Als de poll stemmen heeft, vereist dit replaceVotes=true, en zonder dit reageert de API met replace-votes-required.
De andere velden worden ook vervangen: het weglaten van closesAt, privacy of requireVoteToSeeResults zet deze terug naar de standaardwaarde. Om één veld te wijzigen en de rest ongewijzigd te laten, gebruik je PATCH /api/v1/polls/:commentId.



Overige opmerkingen
- Een
iddie niet in de poll voorkomt, of dezelfdeiddie twee keer wordt opgegeven, faalt metpoll-invalid. Een reactie zonder poll heeft nog geen optie‑ids, dus elke optie die ernaar wordt verzonden moetidweglaten. - Poll‑privacy kan worden verscherpt maar niet verbreed zodra er stemmen zijn.
- Deze API volgt de instellingen van je site. Als polls niet zijn ingeschakeld voor de site of pagina, faalt het met
polls-disabled. - Een vergrendelde reactie kan zijn poll niet wijzigen, en faalt met
locked. - Verbonden widgets worden live bijgewerkt, zodat kijkers de nieuwe poll zien zonder te herladen.
PATCH /api/v1/polls/:commentId 
Bewerk een poll zonder de stemmen te verstoren. Gebruik dit om een typefout in de vraag of een optie te corrigeren, om de poll te sluiten of te heropenen, of om te wijzigen wie mag zien wie heeft gestemd.
Opties worden aangesproken via hun id, en een PATCH hernoemt de door jou genoemde. Om opties toe te voegen, te verwijderen of te herschikken, stuur je de volledige optielijst naar PUT /api/v1/polls/:commentId: opties die je met hun id's stuurt behouden hun stemmen ook.
Elk veld is optioneel, maar er moet minstens één worden opgegeven.




Other Notes
- Het benoemen van een optie-id die niet in de poll aanwezig is, resulteert in een fout
poll-invalidin plaats van stilletjes niets te doen. - Labels moeten uniek blijven binnen de poll, inclusief de opties die je niet wijzigt.
- In tegenstelling tot het aanmaken van een poll, mag
closesAthier in het verleden liggen – dat is hoe je een poll onmiddellijk sluit. - Poll-privacy kan worden vernauwd maar niet verbreed zodra er stemmen zijn.
- Een vergrendelde reactie kan niet van poll worden veranderd, en resulteert in een fout
locked.
DELETE /api/v1/polls/:commentId 
Verwijdert een poll van zijn commentaar, samen met elke stem die erop is uitgebracht. Het commentaar zelf blijft onaangetast.
Het verwijderen van het commentaar verwijdert ook de poll en stemmen, dus dit is alleen nodig wanneer je het commentaar wilt behouden.



Pollstem-structuur 
A PollVote is one person's answer to a poll. The counts shown on the poll itself are kept in step with these,
so you only need these when you want to know who voted for what, rather than the totals.
A voter has at most one vote per poll. Voting again moves their existing vote to the new option instead of
adding a second one, and updatedAt records when that happened.
voterId is the userId when the voter was logged in, and the anonUserId otherwise.

Privacy
The poll's privacy setting applies to this API the same way it applies in the comment widget:
- Anoniem (the default): nobody can see how anyone voted, so the votes cannot be read.
GET /api/v1/poll-votesandGET /api/v1/poll-votes/:idrespond withpoll-anonymous. The poll's counts are still available fromGET /api/v1/polls/:commentId. - Admins and moderators: your API key belongs to your site's admin, so it can read the votes.
- Everyone: the votes can be read.
Poll privacy can be narrowed but not widened once it has votes.
GET /api/v1/poll-votes 
Lijst de individuele stemmen achter de tellingen van één poll, oudste eerst. Eén credit per 100 teruggegeven stemmen.
Een poll behoort tot een commentaar, dus stemmen worden per poll gelezen en commentId is vereist. Verfijn verder met voterId om te controleren hoe één persoon heeft gestemd, of met optionId om iedereen te tonen die een bepaalde optie heeft gekozen.
Maximaal 1000 stemmen worden per oproep teruggegeven. Gebruik skip om door meer pagina's te bladeren.
De poll's privacy-instelling wordt gerespecteerd: de stemmen op een anonieme poll kunnen niet worden gelezen, en het verzoek mislukt met poll-anonymous. Zie de PollVote-structuur voor details.



Stemmen per optie tellen
U hoeft deze niet op te tellen om de resultaten te krijgen - de poll bevat zijn eigen tellingen. Lees de poll in plaats daarvan met GET /api/v1/polls/:commentId, en gebruik deze API wanneer u wilt weten wie heeft gestemd.
Elke poll op een pagina
Er is geen overzicht van stemmen voor de hele pagina. Om een volledige pagina te rapporteren, haal de commentaren op met GET /api/v1/comments, die voor elk commentaar de poll en de tellingen retourneert, en lees vervolgens de stemmen voor de polls die u interesseren.
GET /api/v1/poll-votes/:id 
Leest een enkele pollstem op basis van zijn id.
Een stem op een anonieme poll kan niet worden gelezen, en het verzoek mislukt met poll-anonymous. Zie de PollVote-structuur voor hoe de privacy-instelling van de poll van toepassing is.



POST /api/v1/poll-votes 
Registreert een stem op een poll.
Een kiezer heeft maximaal één stem per poll. Als je dit opnieuw aanroept voor dezelfde kiezer, wordt hun stem verplaatst naar de nieuwe optie in plaats van een tweede stem toe te voegen, en stemmen op de optie die ze al gekozen hebben doet niets.
De respons bevat de poll, zodat je de bijgewerkte tellingen krijgt zonder een tweede verzoek.




Anonieme stemmen
Stel anonUserId in plaats van userId in om een stem te registreren voor iemand die niet is ingelogd. Die id hoeft nergens overeen te komen met een gebruiker – hij identificeert alleen de sessie, zodat dezelfde persoon niet twee keer wordt geteld.
Anoniem stemmen moet voor je site zijn ingeschakeld. Als stemmen beperkt is tot ingelogde gebruikers, mislukt een stem met alleen een anonUserId met poll-login-required.
Anonieme stemmen zijn ook per IP per poll rate‑gelimiteerd, om te voorkomen dat één persoon een poll vult door hun sessie te wissen. Stuur de ip van de eindgebruiker zodat de limiet op hen wordt toegepast in plaats van op je server.
Andere opmerkingen
- Een
userIdmoet een gebruiker zijn die bestaat op je site. Stemmen voor een gebruiker die tot een andere site behoort, worden afgewezen. - Stemmen op een gesloten poll mislukt met
poll-closed. - Deze API werkt de tellingen op de poll bij en stuurt ze live naar verbonden widgets.
DELETE /api/v1/poll-votes/:id 
Trekt een stem in. De optie waarop de stem werd uitgebracht krijgt zijn teller terug, en de kiezer kan opnieuw stemmen.



Overige opmerkingen
- Het verwijderen van dezelfde stem twee keer geeft
not-foundals reactie de tweede keer, en de tellers blijven ongewijzigd. - Als de poll sinds het uitbrengen van de stem is vervangen, wordt de stem verwijderd maar verandert er niets aan de tellingen, omdat de vervanging vanaf nul begon.
In afwachting webhook‑gebeurtenis-structuur 
Een PendingWebhookEvent-object vertegenwoordigt een webhook-event in de wachtrij dat nog in behandeling is.
PendingWebhookEvent-objecten worden automatisch aangemaakt en kunnen niet handmatig via de API worden aangemaakt. Ze verlopen ook na één jaar.
Ze kunnen worden verwijderd, wat de taak uit de wachtrij verwijdert.
Er zijn verschillende eventtypes - controleer eventType (OutboundSyncEventType) en type (OutboundSyncType).
Een veelvoorkomend gebruik van deze API is het implementeren van aangepaste monitoring. U wilt mogelijk periodiek het /count-endpoint aanroepen om het openstaande aantal voor bepaalde filters op te vragen.
De structuur van het PendingWebhookEvent-object is als volgt:

GET /api/v1/pending-webhook-events 
Deze route retourneert een lijst met openstaande webhook-events onder de parameter pendingWebhookEvents.
Deze API gebruikt paginering, geleverd door de skip parameter. PendingWebhookEvents worden geretourneerd in pagina's van 100, gesorteerd op createdAt met de nieuwste eerst.



GET /api/v1/pending-webhook-events/count 
Deze route retourneert een object dat het aantal in behandeling zijnde webhook-events bevat onder de parameter count.
Je kunt filteren op dezelfde parameters als het /pending-webhook-events eindpunt



DELETE /api/v1/pending-webhook-events/:id 
Deze route maakt het mogelijk om een enkele PendingWebhookEvent te verwijderen.
Als u een bulkverwijdering moet uitvoeren, roept u de GET-API aan met paginering en roept u vervolgens deze API opeenvolgend aan.



SSO‑gebruiker-structuur 
FastComments biedt een gebruiksvriendelijke SSO-oplossing. Het bijwerken van de gegevens van een gebruiker met de HMAC-gebaseerde integratie is zo eenvoudig als de gebruiker de pagina laten laden met een bijgewerkte payload.
Het kan echter wenselijk zijn om een gebruiker buiten die flow te beheren, om de consistentie van uw applicatie te verbeteren.
De SSO User API biedt een manier om CRUD-bewerkingen uit te voeren op objecten die we SSOUsers noemen. Deze objecten verschillen van reguliere Users en worden apart gehouden voor typeveiligheid.
De structuur van het SSOUser-object is als volgt:

Facturering voor SSO-gebruikers
SSO-gebruikers worden verschillend gefactureerd op basis van hun permissievlaggen:
- Regular SSO Users: Gebruikers zonder admin- of moderatorrechten worden gefactureerd als reguliere SSO-gebruikers
- SSO Admins: Gebruikers met
isAccountOwnerofisAdminAdminvlaggen worden apart gefactureerd als SSO Admins (zelfde tarief als reguliere tenant-beheerders) - SSO Moderators: Gebruikers met de
isCommentModeratorAdminvlag worden apart gefactureerd als SSO Moderators (zelfde tarief als reguliere moderators)
Belangrijk: Om dubbele facturering te voorkomen, dedupliceert het systeem automatisch SSO-gebruikers ten opzichte van reguliere tenant-gebruikers en moderators op basis van e-mailadres. Als een SSO-gebruiker hetzelfde e-mailadres heeft als een reguliere tenant-gebruiker of moderator, wordt er niet twee keer gefactureerd.
Toegangscontrole
Gebruikers kunnen in groepen worden verdeeld. Hiervoor is het veld groupIds bedoeld, en het is optioneel.
@Mentions
Standaard zullen @mentions username gebruiken om andere sso-gebruikers te doorzoeken wanneer het @ teken wordt getypt. Als displayName wordt gebruikt, worden resultaten die overeenkomen met username genegeerd wanneer er een overeenkomst is voor displayName, en zullen de @mention-zoekresultaten displayName gebruiken.
Abonnementen
Met FastComments kunnen gebruikers zich op een pagina abonneren door op het belpictogram in de reactie-widget te klikken en op Abonneren te klikken.
Bij een reguliere gebruiker sturen we notificatie-e-mails op basis van hun notificatie-instellingen.
Bij SSO-gebruikers splitsen we dit om achterwaartse compatibiliteit te behouden. Gebruikers krijgen deze aanvullende abonnementsmeldings-e-mails alleen als u optedInSubscriptionNotifications op true zet.
Badges
U kunt badges toewijzen aan SSO-gebruikers met behulp van de badgeConfig-eigenschap. Badges zijn visuele indicaties die naast de naam van een gebruiker in reacties verschijnen.
badgeIds- Een array met badge-ID's om aan de gebruiker toe te wijzen. Dit zijn globale badges zichtbaar op alle pagina's. Moeten geldige badge-IDs zijn die in uw FastComments-account zijn gemaakt. Beperkt tot 30 badges.pageBadgeIds- Een optionele array met badge-ID's die zijn gescopeerd naar de huidige pagina (urlId). Deze badges worden alleen weergegeven op de pagina waar ze zijn toegewezen. Verschillende pagina's kunnen verschillende pagina-gescopeerde badges hebben voor dezelfde gebruiker.override- Als true, worden alle bestaande weergegeven badges vervangen door de opgegeven. Globale en pagina-gescopeerde badges worden onafhankelijk overschreven — het overschrijven van globale badges heeft geen effect op pagina-gescopeerde badges, en omgekeerd. Als false of weggelaten, worden de opgegeven badges toegevoegd aan eventuele bestaande badges.update- Als true, worden de weergave-eigenschappen van badges bij elke login van de gebruiker bijgewerkt vanuit de tenantconfiguratie.
GET /api/v1/sso-users 
Deze route retourneert SSO-gebruikers in pagina's van 100. Paginering wordt geregeld met de parameter skip. Gebruikers worden gesorteerd op hun signUpDate en id.



GET /api/v1/sso-users/by-id/:id 
Deze route retourneert een enkele SSO-gebruiker op basis van hun id.



GET /api/v1/sso-users/by-email/:email 
Deze route retourneert een enkele SSO-gebruiker op basis van hun e-mailadres.



PATCH /api/v1/sso-users/:id 
Deze route biedt de mogelijkheid om een enkele SSO-gebruiker bij te werken.



POST /api/v1/sso-users 
Deze route maakt het mogelijk één SSO-gebruiker aan te maken.
Als u probeert twee gebruikers met hetzelfde ID aan te maken, resulteert dat in een fout.

In dit voorbeeld specificeren we groupIds voor toegangscontrole, maar dit is optioneel.


Integratie-opmerking
Door de API doorgegeven gegevens kunnen worden overschreven door simpelweg een andere SSO User HMAC-payload mee te geven. Als u bijvoorbeeld een gebruikersnaam instelt via de API, maar bij het SSO-proces bij het laden van de pagina een andere opgeeft, zullen wij hun gebruikersnaam automatisch bijwerken.
We zullen gebruikersparameters in deze flow niet bijwerken tenzij u ze expliciet opgeeft of ze op null zet (niet undefined).
PUT /api/v1/sso-users/:id 
Deze route biedt de mogelijkheid om een enkele SSO-gebruiker bij te werken.

In dit voorbeeld geven we groupIds op voor toegangscontrole, maar dit is optioneel.


DELETE /api/v1/sso-users/:id 
Deze route verzorgt het verwijderen van een enkele SSO-gebruiker op basis van hun id.
Let op: het opnieuw laden van de commentaarwidget met een payload voor deze gebruiker zal de gebruiker eenvoudig en naadloos opnieuw aanmaken.
Het verwijderen van de opmerkingen van de gebruiker is mogelijk via de queryparameter deleteComments. Let op: als dit true is:
- Alle opmerkingen van de gebruiker worden live verwijderd.
- Alle child (nu verweesde) opmerkingen worden verwijderd of geanonimiseerd op basis van de paginaconfiguratie die aan elke opmerking is gekoppeld. Bijvoorbeeld, als de thread deletion mode "anonymize" is, blijven de antwoorden staan en worden de opmerkingen van de gebruiker geanonimiseerd. Dit geldt alleen wanneer
commentDeleteModeRemoveis (de standaardwaarde). - De
creditsCostwordt2.
Geanonimiseerde opmerkingen
U kunt de opmerkingen van de gebruiker behouden maar eenvoudigweg anonimiseren door commentDeleteMode=1 in te stellen.
Als de opmerkingen van de gebruiker geanonimiseerd worden, worden de volgende waarden op null gezet:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted en isDeletedUser worden op true gezet.
Bij het renderen gebruikt de commentaarwidget DELETED_USER_PLACEHOLDER (standaard: "[deleted]") voor de naam van de gebruiker en DELETED_CONTENT_PLACEHOLDER voor de opmerking. Deze kunnen aangepast worden via de UI voor widgetaanpassing.
Voorbeelden



Abonnementsstructuur 
Een Subscription-object vertegenwoordigt een abonnement voor een gebruiker.
Subscription-objecten worden aangemaakt wanneer een gebruiker op de meldingsbel in de reactie-widget klikt en op "Abonneer op deze pagina" klikt.
Abonnementen kunnen ook via de API worden aangemaakt.
Het hebben van een Subscription-object zorgt ervoor dat er Notification-objecten worden gegenereerd en e-mails worden verzonden wanneer er nieuwe reacties worden geplaatst op de root van de bijbehorende pagina waarvoor de Subscription geldt. Het verzenden van e-mails hangt af van het type gebruiker. Voor reguliere gebruikers is dit afhankelijk van optedInNotifications. Voor SSO-gebruikers is dit afhankelijk van optedInSubscriptionNotifications. Let op dat sommige applicaties mogelijk niet het concept van een via het web toegankelijke pagina hebben; in dat geval stelt u eenvoudig urlId in op de id van het item waarop u zich abonneert (dezelfde waarde voor urlId die u aan de reactie-widget zou doorgeven).
De structuur van het Subscription-object is als volgt:

GET /api/v1/subscriptions/:id 
Deze route retourneert maximaal 30 Subscription-objecten, gesorteerd op createdAt, van nieuw naar oud.
Je kunt filteren op userId. Bij SSO is de gebruikers-id in het formaat <tenant id>:<user id>.



POST /api/v1/subscriptions 
Deze API-endpoint maakt het mogelijk een Subscription te creëren. Let op dat een gebruiker slechts één subscription per pagina mag hebben, omdat meer overbodig is, en proberen
meer dan één subscription voor dezelfde gebruiker voor dezelfde pagina aan te maken zal resulteren in een fout.
Het aanmaken van een subscription resulteert in het aanmaken van Notification-objecten wanneer een nieuwe comment op de root van de geabonneerde urlId wordt geplaatst (wanneer comment parentId null is).



DELETE /api/v1/subscriptions/:id 
Deze route verwijdert een enkel Subscription-object op basis van id.



Tenant‑dagelijkse‑gebruik-structuur 
Een TenantDailyUsage object represents the usage for a tenant on a given day. If there was no activity for a given tenant on a given
day, that day will not have a TenantDailyUsage object.
The TenantDailyUsage object is not real time and may be minutes behind actual usage.
The structure for the TenantDailyUsage object is as follows:

GET /api/v1/tenant-daily-usage 
Deze route maakt het mogelijk om het gebruik van een tenant te doorzoeken op jaar, maand en dag. Er kunnen maximaal 365 objecten worden geretourneerd, en de kosten zijn 1 API-credit per 10 objecten.
Response-objecten worden gesorteerd op de datum waarop ze zijn aangemaakt (de oudste eerst).



Tenant-structuur 
De Tenant definieert een FastComments.com-klant. Ze kunnen via de API worden aangemaakt door tenants met white-labeling toegang. White-labeled tenants kunnen geen andere white-labeled tenants aanmaken (er is slechts één niveau van nesting toegestaan).
De structuur voor het Tenant-object is als volgt:

GET /api/v1/tenants/:id 
Deze route retourneert een enkele Tenant op basis van id.



GET /api/v1/tenants 
Deze API retourneert tenants die door uw tenant worden beheerd.
Paginering wordt verzorgd door de queryparameter skip. Tenants worden geretourneerd in pagina's van 100, gesorteerd op signUpDate en id.
De kosten zijn gebaseerd op het aantal geretourneerde tenants; het kost 1 credit per 10 geretourneerde tenants.

U kunt meta-parameters definiëren op de Tenant-objecten en zoeken naar overeenkomende tenants. Bijvoorbeeld, voor de sleutel someKey en de meta-waarde some-value, kunnen we
een JSON-object met deze sleutel/waarde maken en vervolgens URI-encoden als queryparameter om te filteren:



POST /api/v1/tenants 
Deze route biedt de mogelijkheid om een enkele Tenant toe te voegen.
Het aanmaken van een Tenant kent de volgende beperkingen:
- Een
nameis verplicht. domainConfigurationis verplicht.- De volgende waarden mogen niet worden meegegeven bij het aanmaken van een
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
- De
signUpDatemag niet in de toekomst liggen. - De
namemag niet langer zijn dan200 characters. - De
emailmag niet langer zijn dan300 characters. - De
emailmoet uniek zijn over alle FastComments.com tenants. - U mag geen tenants aanmaken als de parent tenant geen geldige
TenantPackageheeft gedefinieerd.- Als uw tenant via FastComments.com is aangemaakt, zou dit geen probleem moeten zijn.
- U mag niet meer tenants aanmaken dan gedefinieerd onder
maxWhiteLabeledTenantsin uw package. - U moet de queryparameter
tenantIdopgeven, dit is de id van uwparent tenantmet white labeling ingeschakeld.
We kunnen een Tenant aanmaken met slechts een paar parameters:



PATCH /api/v1/tenants/:id 
Dit API-eindpunt maakt het mogelijk een Tenant op basis van id bij te werken.
Het bijwerken van een Tenant heeft de volgende beperkingen:
- De volgende waarden mogen niet worden bijgewerkt:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
- De
signUpDatemag niet in de toekomst liggen. - De
namemag niet langer zijn dan200 characters. - De
emailmag niet langer zijn dan300 characters. - De
emailmoet uniek zijn voor alle tenants van FastComments.com. - Wanneer
billingInfoValidoptruewordt gezet, moetbillingInfoin hetzelfde verzoek worden meegegeven. - U mag de
packageIddie aan uw eigen tenant is gekoppeld niet bijwerken. - U mag de
paymentFrequencydie aan uw eigen tenant is gekoppeld niet bijwerken.



DELETE /api/v1/tenants/:id 
Deze route zorgt voor het verwijderen van een Tenant en alle bijbehorende gegevens (gebruikers, reacties, etc.) op basis van id.
De volgende beperkingen gelden bij het verwijderen van tenants:
- De tenant moet van uzelf zijn, of een white-labeled tenant die u beheert.
- De queryparameter
suremoet optrueworden gezet.



Tenant‑pakket-structuur 
De TenantPackage definieert pakketinformatie die beschikbaar is voor een Tenant. Een tenant kan meerdere pakketten beschikbaar hebben, maar slechts
één tegelijk in gebruik.
Een Tenant kan niet voor producten worden gebruikt totdat zijn packageId naar een geldige TenantPackage verwijst.
Er zijn twee soorten TenantPackage-objecten:
- Pakketten met vaste prijs - waarbij
hasFlexPricingfalse is. - Flexibele prijsstelling - waarbij
hasFlexPricingtrue is.
In beide gevallen worden limieten gedefinieerd op het account dat het pakket gebruikt, maar bij Flex wordt de tenant een basisprijs in rekening gebracht plus
wat ze gebruikt hebben, gedefinieerd door de flex* parameters.
Een tenant kan meerdere tenant-pakketten hebben en kan het pakket zelf wijzigen vanaf de Pagina met facturatiegegevens.
Als u zelf de facturering voor tenants afhandelt, moet u nog steeds voor elke tenant een pakket definiëren om hun limieten vast te leggen. Stel eenvoudig billingHandledExternally in op true op de Tenant en zij
zullen hun facturatiegegevens of actieve pakket niet zelf kunnen wijzigen.
U mag geen pakketten aanmaken met hogere limieten dan de bovenliggende tenant.
De structuur van het TenantPackage-object is als volgt:

GET /api/v1/tenant-packages/:id 
Deze route retourneert een enkel Tenant Package op basis van id.



GET /api/v1/tenant-packages 
Deze API gebruikt paginering, geleverd via de queryparameter skip. TenantPackages worden in pagina's van 100 teruggegeven, gesorteerd op createdAt en id.
De kosten zijn gebaseerd op het aantal geretourneerde tenant packages: 1 credit per 10 tenant packages.



POST /api/v1/tenant-packages 
Deze route biedt de mogelijkheid om een enkele TenantPackage toe te voegen.
Het aanmaken van een TenantPackage kent de volgende beperkingen:
- De volgende parameters zijn verplicht:
nametenantIdmonthlyCostUSD- Can be null.yearlyCostUSD- Can be null.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- If true, then allflex*parameters are required.
- De
namemag niet langer zijn dan50 characters. - Elk
forWhoTextitem mag niet langer zijn dan200 characters. - Elk
featureTaglinesitem mag niet langer zijn dan100 characters. - De
TenantPackagemoet "kleiner" zijn dan de parent tenant. Bijvoorbeeld, allemax*parameters moeten lagere waarden hebben dan de parent tenant. - Een white-labeled tenant mag maximaal vijf pakketten hebben.
- Alleen tenants met toegang tot white labeling mogen een
TenantPackageaanmaken. - Je mag geen pakketten toevoegen aan je eigen tenant. :)
We kunnen een TenantPackage als volgt aanmaken:



PATCH /api/v1/tenant-packages/:id 
Deze API-endpoint biedt de mogelijkheid om een TenantPackage op basis van id bij te werken.
Het bijwerken van een TenantPackage kent de volgende beperkingen:
- Als u
hasFlexPricingop true zet, dan zijn alleflex*-parameters vereist in datzelfde verzoek. - De
namemag niet langer zijn dan50 characters. - Elk
forWhoText-item mag niet langer zijn dan200 characters. - Elk
featureTaglines-item mag niet langer zijn dan100 characters. - De
TenantPackagemoet "kleiner" zijn dan de bovenliggende tenant. Bijvoorbeeld moeten allemax*-parameters lagere waarden hebben dan de bovenliggende tenant. - U mag de
tenantIddie aan eenTenantPackageis gekoppeld niet wijzigen.



DELETE /api/v1/tenant-packages/:id 
Deze route verzorgt het verwijderen van een TenantPackage op basis van het id.
U mag geen TenantPackage verwijderen die in gebruik is (de packageId van een tenant verwijst naar het pakket). Werk eerst de Tenant bij.



Tenant‑gebruiker-structuur 
De TenantUser definieert een User die wordt beheerd door een specifieke tenant. Hun account staat volledig onder controle van de tenant waarmee ze zijn geassocieerd, en hun account kan worden bijgewerkt of verwijderd via de UI of de API.
Tenantgebruikers kunnen beheerders zijn met alle rechten en toegang tot de Tenant, of ze kunnen beperkt zijn tot specifieke rechten om opmerkingen te modereren, toegang te krijgen tot API-sleutels, enz.
De structuur voor het TenantUser-object is als volgt:

GET /api/v1/tenant-users/:id 
Deze route retourneert een enkele TenantUser op basis van id.



GET /api/v1/tenant-users 
Deze API gebruikt paginering, geleverd door de skip queryparameter. TenantUsers worden geretourneerd in pagina's van 100, gesorteerd op signUpDate, username en id.
De kosten zijn gebaseerd op het aantal TenantUsers dat wordt geretourneerd; de kosten zijn 1 credit per 10 geretourneerde TenantUsers.



POST /api/v1/tenant-users 
Deze route biedt de mogelijkheid om één TenantUser toe te voegen.
Het aanmaken van een TenantUser heeft de volgende beperkingen:
- Een
usernameis verplicht. - Een
emailis verplicht. - De
signUpDatemag niet in de toekomst liggen. - De
localemoet voorkomen in de lijst met Ondersteunde Locales. - De
usernamemoet uniek zijn op heel FastComments.com. Als dit een probleem is, raden we aan in plaats daarvan SSO te gebruiken. - De
emailmoet uniek zijn op heel FastComments.com. Als dit een probleem is, raden we aan in plaats daarvan SSO te gebruiken. - U mag niet meer tenant users aanmaken dan gedefinieerd onder
maxTenantUsersin uw pakket.
We kunnen een TenantUser als volgt aanmaken



POST /api/v1/tenant-users/:id/send-login-link 
Deze route biedt de mogelijkheid om een aanmeldlink te verzenden naar een enkele TenantUser.
Handig bij het batchgewijs aanmaken van gebruikers, zodat je ze niet hoeft uit te leggen hoe ze kunnen inloggen op FastComments.com. Dit stuurt hen eenvoudig een "magische link" om in te loggen die vervalt na 30 days.
De volgende beperkingen gelden voor het verzenden van een aanmeldlink naar een TenantUser:
- De
TenantUsermoet al bestaan. - Je moet toegang hebben om de
Tenantte beheren waartoe deTenantUserbehoort.
We kunnen een aanmeldlink naar een TenantUser verzenden als volgt:

Dit zal een e-mail sturen zoals Bob at TenantName is inviting you to be a moderator...


PATCH /api/v1/tenant-users/:id 
Deze route biedt de mogelijkheid om een enkele TenantUser bij te werken.
Het bijwerken van een TenantUser heeft de volgende beperkingen:
- De
signUpDatemag niet in de toekomst liggen. - De
localemoet in de lijst van Ondersteunde locales staan. - De
usernamemoet uniek zijn op heel FastComments.com. Als dit een probleem is, raden we aan in plaats daarvan SSO te gebruiken. - De
emailmoet uniek zijn op heel FastComments.com. Als dit een probleem is, raden we aan in plaats daarvan SSO te gebruiken. - U kunt de
tenantIdvan een gebruiker niet bijwerken.
We kunnen een TenantUser als volgt aanmaken



DELETE /api/v1/tenant-users/:id 
Deze route maakt het mogelijk om een TenantUser te verwijderen op basis van id.
Het is mogelijk om de opmerkingen van de gebruiker te verwijderen via de queryparameter deleteComments. Let op dat wanneer dit waar is:
- Alle opmerkingen van de gebruiker worden direct verwijderd.
- Alle child (nu wees) opmerkingen worden verwijderd of geanonimiseerd op basis van de pagina-configuratie die aan elke opmerking is gekoppeld. Bijvoorbeeld, als thread deletion mode "anonymize" is, blijven reacties behouden en worden de opmerkingen van de gebruiker geanonimiseerd. Dit geldt alleen wanneer
commentDeleteModeRemoveis (de standaardwaarde). - De
creditsCostwordt2.
Geanonimiseerde opmerkingen
U kunt de opmerkingen van de gebruiker behouden maar eenvoudigweg anonimiseren door commentDeleteMode=1 in te stellen.
Als de opmerkingen van de gebruiker geanonimiseerd worden, worden de volgende waarden op null gezet:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted en isDeletedUser worden ingesteld op true.
Bij weergave zal de comment-widget DELETED_USER_PLACEHOLDER (standaard: "[deleted]") gebruiken voor de naam van de gebruiker en DELETED_CONTENT_PLACEHOLDER voor de opmerking. Deze kunnen worden aangepast via de Widget Customization UI.
Voorbeelden



Gebruiker-structuur 
User is een object dat het meest voorkomende gemeenschappelijke kenmerk van alle gebruikers vertegenwoordigt.
Houd er rekening mee dat we bij FastComments verschillende gebruikssituaties voor gebruikers hebben:
- Secure SSO
- Simple SSO
- Tenant Users (For example: Administrators)
- Commenters
Deze API is voor Commenters en gebruikers die via Simple SSO zijn aangemaakt. In feite kan elke gebruiker die via uw site is aangemaakt via deze API worden benaderd. Tenant Users kunnen ook op deze manier worden opgehaald, maar u krijgt meer informatie door te werken met de /tenant-users/ API.
Gebruik voor Secure SSO de /sso-users/ API.
U kunt deze soorten gebruikers niet bijwerken. Ze hebben hun account via uw site aangemaakt, dus we bieden beperkte alleen-lezen toegang, maar u kunt geen wijzigingen aanbrengen. Als u dit soort flow wilt hebben, moet u Secure SSO instellen.
De structuur van het User-object is als volgt:

GET /api/v1/users/:id 
Deze route retourneert een enkele gebruiker op basis van id.



Stem-structuur 
Een Vote-object vertegenwoordigt een door een gebruiker achtergelaten stem.
De relatie tussen reacties en stemmen wordt gedefinieerd via commentId.
De structuur voor het Vote-object is als volgt:

GET /api/v1/votes 
Stemmen moeten worden opgehaald via urlId.
Soorten stemmen
Er zijn drie soorten stemmen:
- Geauthenticeerde stemmen, die worden toegepast op de bijbehorende opmerking. Je kunt deze via deze API aanmaken.
- Geauthenticeerde stemmen, die in afwachting zijn van verificatie, en dus nog niet op de opmerking worden toegepast. Deze worden aangemaakt wanneer een gebruiker het FastComments.com inloggen om te stemmen-mechanisme gebruikt.
- Anonieme stemmen, die worden toegepast op de bijbehorende opmerking. Deze worden aangemaakt samen met anoniem reageren.
Deze worden in afzonderlijke lijsten in de API teruggegeven om verwarring te verminderen.



Opmerkingen over anonieme stemmen
Let op dat anonieme stemmen die via deze API zijn aangemaakt, verschijnen in de lijst appliedAuthorizedVotes. Ze worden als geautoriseerd beschouwd omdat ze via de API met een API key zijn aangemaakt.
De structuur appliedAnonymousVotes is voor stemmen die zijn aangemaakt zonder e-mail, API key, enz.
GET /api/v1/votes/for-user 
Maakt het mogelijk om stemmen op te halen die een gebruiker heeft achtergelaten voor een bepaalde urlId. Vereist een userId dat een FastComments.com- of een SSO User-account kan zijn.
Dit is handig als je wilt laten zien of een gebruiker op een reactie heeft gestemd. Wanneer je reacties ophaalt, roep je simpelweg deze API tegelijkertijd aan voor de gebruiker met dezelfde urlId.
Als je anoniem stemmen gebruikt, geef je in plaats daarvan anonUserId mee.


Let op dat anonieme stemmen zullen verschijnen in de appliedAuthorizedVotes lijst. Ze worden als geautoriseerd beschouwd omdat ze via de API met een API key zijn aangemaakt.


POST /api/v1/votes 
Deze route biedt de mogelijkheid om één geautoriseerde Vote toe te voegen. Votes kunnen up (+1) of down (-1) zijn.




Creating Anonymous Votes
Anonieme stemmen kunnen worden aangemaakt door anonUserId in de queryparameters te zetten in plaats van userId.
Deze id hoeft nergens overeen te komen met een gebruikersobject (vandaar anoniem). Het is simpelweg een identificator voor de sessie, zodat je stemmen opnieuw kunt ophalen in dezelfde sessie, om te controleren of op een reactie is gestemd.
Als je niet zoiets hebt als "anonymous sessions" zoals FastComments - je kunt dit eenvoudig instellen op een willekeurige ID, zoals een UUID (hoewel we kleinere identificatoren waarderen om ruimte te besparen).
Other Notes
- Deze API houdt zich aan tenant-niveau instellingen. Bijvoorbeeld, als je stemmen uitschakelt voor een bepaalde pagina, en je probeert via de API een stem aan te maken, zal dit falen met foutcode
voting-disabled. - Deze API is standaard actief.
- Deze API zal de
votesvan de overeenkomstigeCommentbijwerken.
DELETE /api/v1/votes/:id 
Deze route biedt de mogelijkheid om een enkele Vote te verwijderen.



Opmerkingen:
- Deze API respecteert instellingen op tenant-niveau. Bijvoorbeeld, als je stemmen uitschakelt voor een bepaalde pagina en je via de API probeert een stem te maken, zal dit mislukken met foutcode
voting-disabled. - Deze API is standaard actief.
- Deze API zal de
votesvan de overeenkomstigeCommentbijwerken.
Domeinconfiguratie-structuur 
Een DomainConfig-object vertegenwoordigt de configuratie voor een domein voor een tenant.
De structuur voor het DomainConfig-object is als volgt:


Voor authenticatie
Domain-configuratie wordt gebruikt om te bepalen welke sites de FastComments-widget voor uw account kunnen hosten. Dit is een basale vorm van authenticatie, wat betekent dat het toevoegen of verwijderen van domeinconfiguraties invloed kan hebben op de beschikbaarheid van uw FastComments-installatie in productie.
Verwijder of wijzig de domain-eigenschap van een Domain Config niet voor een domein dat momenteel in gebruik is, tenzij het de bedoeling is dat dat domein wordt uitgeschakeld.
Dit heeft hetzelfde gedrag als het verwijderen van een domein via /auth/my-account/configure-domains.
Houd er ook rekening mee dat het verwijderen van een domein vanuit de My Domains-UI alle bijbehorende configuratie voor dat domein verwijdert die mogelijk via deze UI is toegevoegd.
Voor e-mailaanpassing
De afmeldlink in de e-mailvoettekst en de 'one-click unsubscribe'-functie die door veel e-mailclients wordt aangeboden, kunnen via deze API worden geconfigureerd door respectievelijk footerUnsubscribeURL en emailHeaders te definiëren.
Voor DKIM
Nadat u uw DKIM-DNS-records heeft gedefinieerd, werkt u eenvoudig de DomainConfig bij met uw DKIM-configuratie met behulp van de gedefinieerde structuur.
GET /api/v1/domain-configs 
Deze API maakt het mogelijk om alle DomainConfig objecten voor een tenant op te halen.



GET /api/v1/domain-configs/:domain 
Individuele DomainConfigs kunnen worden opgehaald via hun overeenkomstige domain.



POST /api/v1/domain-configs 
Dit API-eindpunt biedt de mogelijkheid om domeinconfiguraties aan te maken.
Het toevoegen van een configuratie voor een domein machtigt dat domein voor het FastComments-account.
Veelvoorkomende gebruikssituaties voor deze API zijn de initiële installatie, wanneer veel domeinen toegevoegd moeten worden, of aangepaste configuratie voor het verzenden van e-mails.



PATCH /api/v1/domain-configs/:domain 
Dit API-eindpunt biedt de mogelijkheid om een domeinconfiguratie bij te werken door alleen het domein en het attribuut dat moet worden bijgewerkt op te geven.



PUT /api/v1/domain-configs/:domain 
Dit API-eindpunt biedt de mogelijkheid om een domeinconfiguratie te vervangen.



DELETE /api/v1/domain-configs/:domain 
Deze route biedt het verwijderen van een enkele DomainConfig op basis van id.
- Opmerking: Het verwijderen van een
DomainConfigzal dat domein niet langer machtigen om FastComments te gebruiken. - Opmerking: Het opnieuw toevoegen van een domein via de UI zal het object opnieuw aanmaken (met alleen
domainingevuld).



Vraagconfiguratie-structuur 
FastComments biedt een manier om vragen te maken en de resultaten ervan te aggregeren. Een voorbeeld van een vraag (hierna aangeduid als QuestionConfig) kan een sterrenbeoordeling, een schuifregelaar of een NPS-vraag zijn (bepaald via type).
Vraaggegevens kunnen individueel, gezamenlijk, over de tijd, in totaal, per pagina, enzovoort worden geaggregeerd.
Het framework bevat alle mogelijkheden die nodig zijn om client-side widgets (met uw server voor deze API), beheerdersdashboards en rapportagetools te bouwen.
Eerst moeten we een QuestionConfig definiëren. De structuur is als volgt:

GET /api/v1/question-configs 
Deze route retourneert tot 100 QuestionConfig-objecten tegelijk, gepagineerd. De kosten zijn 1 per 100 objecten. Ze worden
gesorteerd op oplopende vraagtekst (veld question).



GET /api/v1/question-configs/:id 
Deze route retourneert een enkele QuestionConfig op basis van zijn id.



POST /api/v1/question-configs 
Dit API-endpoint biedt de mogelijkheid om een QuestionConfig aan te maken.



PATCH /api/v1/question-configs/:id 
Deze route biedt de mogelijkheid om één QuestionConfig bij te werken.
De volgende structuur geeft alle waarden weer die gewijzigd kunnen worden:




DELETE /api/v1/question-configs/:id 
Deze route verwijdert een QuestionConfig op basis van id.
Dit verwijdert alle bijbehorende vraagresultaten (maar niet de reacties). Dit maakt deel uit van de hoge creditkosten.



Vraagresultaat-structuur 
Om resultaten voor vragen op te slaan, maakt u een QuestionResult. U kunt vervolgens vraagresultaten aggregeren, en ook
ze aan opmerkingen koppelen voor rapportagedoeleinden.

GET /api/v1/question-results 
Deze route retourneert maximaal 1000 QuestionResults objecten tegelijk, gepagineerd. De kosten zijn 1 per 100 objecten. Ze worden
gesorteerd op createdAt, oplopend. Je kunt filteren op verschillende parameters.



GET /api/v1/question-results/:id 
Deze route retourneert een enkele QuestionResult met zijn id.



POST /api/v1/question-results 
Dit API-eindpunt biedt de mogelijkheid om een QuestionResult aan te maken.



PATCH /api/v1/question-results/:id 
Deze route biedt de mogelijkheid om één QuestionResult bij te werken.
De volgende structuur geeft alle waarden weer die gewijzigd kunnen worden:




DELETE /api/v1/question-results/:id 
Deze route zorgt voor het verwijderen van een QuestionResult op basis van id.



GET /api/v1/question-results-aggregate 
Hier vindt de aggregatie van resultaten plaats.
De structuur van het aggregatieantwoord is als volgt:

Hier zijn de queryparameters die beschikbaar zijn voor aggregatie:

Hier is een voorbeeldverzoek:

Voorbeeldantwoord:


Prestatieopmerkingen
- Bij een cache-miss duren aggregaties doorgaans vijf seconden per miljoen resultaten.
- In andere gevallen zijn verzoeken constant qua tijd.
Cache- en kostenopmerkingen
- Wanneer
forceRecalculateis opgegeven, zijn de kosten altijd10, in plaats van de normale2. - Als de cache verloopt en de gegevens opnieuw worden berekend, blijven de kosten een constante
2alsforceRecalculateniet is opgegeven. De cache verloopt afhankelijk van de grootte van de geaggregeerde dataset (kan variëren tussen 30 seconden en 5 minuten). - Dit is om het gebruik van de cache te stimuleren.
GET /api/v1/question-results-aggregate/combine/comments 
Dit is waar de combinatie van resultaten met reacties plaatsvindt. Handig voor het maken van een grafiek met "recente positieve en negatieve reacties" voor een product, bijvoorbeeld.
Je kunt zoeken via een bereik van waarden (inclusief), één of meer vragen, en op een begindatum (inclusief).
De response-structuur is als volgt:

Hier zijn de queryparameters die beschikbaar zijn voor aggregatie:

Hier is een voorbeeldverzoek:

Voorbeeldresponse:


Caching- en kostenopmerkingen
- Wanneer
forceRecalculateis opgegeven, zijn de kosten altijd10, in plaats van de normale2. - Als de cache verloopt en de gegevens opnieuw worden berekend, blijven de kosten constant
2wanneerforceRecalculateniet is opgegeven. - Dit is bedoeld om het gebruik van de cache te stimuleren.
Gebruikersbadge-structuur 
UserBadge is een object dat een badge voorstelt die aan een gebruiker is toegewezen in het FastComments-systeem.
Badges kunnen automatisch aan gebruikers worden toegekend op basis van hun activiteit (zoals aantal reacties, reactietijd, Veteran-status) of handmatig door sitebeheerders.
De structuur van het UserBadge-object is als volgt:

GET /api/v1/user-badges 
Dit endpoint stelt je in staat gebruikersbadges op te halen op basis van verschillende criteria.
Voorbeeldverzoek:
Run 
Je kunt verschillende queryparameters toevoegen om de resultaten te filteren:
userId- Haal badges op voor een specifieke gebruikerbadgeId- Haal exemplaren van een specifieke badge optype- Filter op badgetype (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, enz. Zie UserBadge-structuur voor volledige lijst)displayedOnComments- Filter op of de badge zichtbaar is bij reacties (true/false)limit- Maximum aantal badges om terug te geven (standaard 30, max 200)skip- Aantal badges om over te slaan (voor paginering)
Voorbeeldrespons:

Mogelijke foutreacties:


GET /api/v1/user-badges/:id 
Dit eindpunt stelt u in staat een specifieke gebruikersbadge op te halen op basis van het unieke ID.
Voorbeeldverzoek:
Run 
Voorbeeldrespons:

Mogelijke foutmeldingen:


POST /api/v1/user-badges 
Deze endpoint stelt u in staat een nieuwe toewijzing van een gebruikersbadge aan te maken.
Voorbeeldverzoek:
Run 
De request-body moet de volgende parameters bevatten:
userId(verplicht) - De ID van de gebruiker aan wie de badge moet worden toegewezenbadgeId(verplicht) - De ID van de te toewijzen badgedisplayedOnComments(optioneel) - Of de badge moet worden weergegeven bij de opmerkingen van de gebruiker (standaard: true)
Belangrijke opmerkingen:
- De badge moet bestaan en ingeschakeld zijn in de badgecatalogus van uw tenant
- U kunt alleen badges toewijzen aan gebruikers die tot uw tenant behoren of op uw site hebben gereageerd
Voorbeeldrespons:

Mogelijke foutmeldingen:





PUT /api/v1/user-badges/:id 
Deze endpoint stelt u in staat om een toewijzing van een gebruikersbadge bij te werken.
Momenteel is de enige eigenschap die kan worden bijgewerkt displayedOnComments, die bepaalt of de badge wordt weergegeven bij de reacties van de gebruiker.
Voorbeeldverzoek:
Run 
Voorbeeldantwoord:

Mogelijke foutreacties:



DELETE /api/v1/user-badges/:id 
Deze endpoint stelt je in staat een toewijzing van een gebruikersbadge te verwijderen.
Voorbeeldverzoek:
Run 
Voorbeeldantwoord:

Mogelijke foutantwoorden:



Gebruikersbadgevoortgang-structuur 
UserBadgeProgress is een object dat de voortgang van een gebruiker bijhoudt naar het verdienen van verschillende badges in het FastComments-systeem.
Deze bijhouding helpt bepalen wanneer gebruikers automatisch badges moeten ontvangen op basis van hun activiteit en deelname in uw community.
De structuur van het UserBadgeProgress-object is als volgt:

GET /api/v1/user-badge-progress 
Met deze endpoint kunt u voortgangsgegevens van gebruikersbadges ophalen op basis van verschillende criteria.
Voorbeeldverzoek:
Run 
U kunt verschillende queryparameters toevoegen om de resultaten te filteren:
userId- Haal voortgang op voor een specifieke gebruikerlimit- Maximum aantal records om te retourneren (standaard 30, max 200)skip- Aantal records om over te slaan (voor paginering)
Voorbeeldantwoord:

Mogelijke foutreacties:


GET /api/v1/user-badge-progress/:id 
Dit eindpunt stelt u in staat om een specifiek voortgangsrecord van een gebruikersbadge op te halen met behulp van het unieke ID.
Voorbeeldaanvraag:
Run 
Voorbeeldrespons:

Mogelijke foutreacties:


GET /api/v1/user-badge-progress/user/:userId 
Dit eindpunt stelt je in staat het badge-voortgangsrecord van een gebruiker op te halen op basis van hun user ID.
Voorbeeldverzoek:
Run 
Voorbeeldrespons:

Mogelijke foutreacties:



Tot slot
We hopen dat je onze API-documentatie grondig en gemakkelijk te begrijpen hebt gevonden. Als je hiaten vindt, laat het ons hieronder weten.