
Sprog 🇩🇰 Dansk
API-ressourcer
Godkendelse
Aggregationer
AuditLogs
Kommentarer
E-mail-skabeloner
Feed-indlæg
Hashtags
Mig
Moderatorer
Notifikationsantal
Notifikationer
Side Reaktioner
Sider
Afstemninger
Afstemningsstemmer
Afventende webhook-hændelser
SSO-brugere
Abonnementer
Lejers daglige brug
Lejere
Lejers pakker
Lejers brugere
Brugere
Stemmer
Domænekonfigurationer
Spørgsmålskonfigurationer
Spørgsmålsresultater
Spørgsmålsresultataggregation
Brugerbadges
Brugerbadge fremskridt
Live Kommentar-API'er
FastComments API'en
FastComments leverer et API til at interagere med mange ressourcer. Byg integrationer med vores platform, eller endda byg dine egne klienter!
I denne dokumentation finder du alle understøttede ressourcer i API'et dokumenteret med deres anmodnings- og svar-typer.
For Enterprise-kunder registreres al API-adgang i revisionsloggen.
Genererede SDK'er
FastComments genererer nu et API Spec fra vores kode (dette er endnu ikke komplet, men inkluderer mange API'er).
Vi har også nu SDK'er for populære sprog:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Godkendelse
API'et autentificeres ved at sende din api-nøgle som enten en X-API-KEY header eller API_KEY query-parameter. Du har også brug for din tenantId for at foretage API-kald. Denne kan hentes fra den samme side som din api-nøgle.
Sikkerhedsnote
Disse ruter er beregnet til at blive kaldt fra en server. KALL IKKE dem fra en browser. At gøre det vil afsløre din API-nøgle - dette vil give fuld adgang til din konto til enhver, der kan se kildekoden på en side!
Godkendelsesmulighed En - Headers
- Header:
X-API-KEY - Header:
X-TENANT-ID
Godkendelsesmulighed To - Query Parametre
- Query Param:
API_KEY - Query Param:
tenantId
Godkendelsesmulighed Tre - OAuth Bearer Token
- Header:
Authorization: Bearer fcat_...
Tredjepartsapplikationer såsom Zapier og klienter af MCP server får en token via OAuth i stedet for en API-nøgle. Den token fungerer på alle endpoints her. Lejeren er underforstået af tokenen, så tenantId er valgfri, men den skal matche tokenen, hvis den angives. GET-anmodninger kræver read-scopet og alle andre metoder kræver write-scopet. Den fulde flow, inklusive klientregistrering, PKCE, opdatering og tilbagekaldelse, er dokumenteret under OAuth Authorization. Opdagelse starter på https://fastcomments.com/.well-known/oauth-authorization-server.
Læsning af Dine Egne Skrivninger
FastComments leverer Active-Active tilgængelighed. Anmodninger fra dit datacenter dirigeres til det nærmeste tilstedeværelsespunkt i forhold til dit. Dette er automatisk, og normalt kan du observere læs-dine-skriv-semantik. Hvis du vil være sikker på at læse dine egne skrivninger, kan du fastgøre dine anmodninger til en bestemt region ved at bruge den region som API-vært (men dette er normalt ikke nødvendigt for de fleste integrationer):
- 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
Bemærk, at hvis du gør dette, vil du måske definere en fallback, da vi har afviklet indgangspunkt-noder tidligere og bruger nye navne til overgangen.
API-ressourcer 
Ressourceforbrug
Det skal bemærkes, at hentning af data fra API'et tælles som forbrug på din konto.
Hver ressource vil angive, hvad dette forbrug er, i sin egen sektion.
Nogle ressourcer koster mere at betjene end andre. Hvert endpoint har en fast pris i kreditter pr. API‑opkald. For nogle endpoints varierer antallet af kreditter afhængigt af indstillingerne og svarstørrelserne.
API‑forbruget kan kontrolleres på siden Billing Analytics og opdateres hver få minutter.
Bemærk!
Vi foreslår, at du læser Pages-dokumentationen først for at begrænse forvirring, når du skal bestemme, hvilke værdier du skal sende for urlId i Comment‑API'et.
Webhooks
Webhook-abonnementer har deres egen vejledning. POST, GET og DELETE /api/v1/webhooks samt GET /api/v1/webhooks/sample-payloads er dokumenteret under Managing Subscriptions via API, og hændelses‑payloads under Webhook Structures.
OAuth-autorisation 
FastComments er en OAuth 2.1 autorisationsserver. En applikation kan hente et token, der er bundet til en FastComments‑konto, og bruge det på alle endpoint i denne vejledning i stedet for en API‑nøgle. Sådan forbinder Zapier‑appen, MCP‑serveren og andre tredjepartsintegrationer.
Tokens udstedes via autorisationskodeflowet med PKCE. Der findes ingen klientlegitimations‑ eller implicit tilladelse.
Opdagelse
Endpoint‑placeringer, understøttede tilladelser og autentificeringsmetoder offentliggøres på den standard metadata‑URL:

De endpoint, den beskriver:

Kontoer i EU‑regionen bruger https://eu.fastcomments.com som udsteder, med de samme stier.
Registrering af en klient
En klient har brug for et client_id og en registreret redirect_uri, før den kan starte flowet. Der er to måder at få en på:
- Dynamisk klientregistrering.
POST /oauth/registermed en JSON‑krop i henhold til RFC 7591 (redirect_uris,client_name,client_uri,logo_uri,token_endpoint_auth_method). Svaret indeholderclient_idog, for fortrolige klienter,client_secret. Registreringen er uautentificeret og hastighedsbegrænset pr. IP. - Klient‑ID‑metadata‑dokument. Klienten bruger en
https‑URL, den kontrollerer, som sitclient_id. FastComments henter den URL og læser de samme metadatafelter fra den. Der er ikke behov for et registreringskald.
Partner‑applikationer, der er listet i FastComments‑dashboardet, såsom Zapier, registreres direkte af FastComments. Kontakt support, hvis du bygger en markedsplads‑liste og har brug for en første‑part‑klient.
Omfang

En anmodning, der ikke anmoder om noget omfang, får begge tildelt. Brugeren ser de anmodede omfang på samtykkesiden. En anmodning om et omfang, der ikke er et af de to, fejler med invalid_scope.
Trin 1 – Autoriseringsanmodning
Send brugerens browser til autoriserings‑endpointet. PKCE med S256‑metoden er påkrævet for hver klient.


Brugeren logger ind på FastComments om nødvendigt og ser en samtykkeside, der navngiver din applikation, den konto den vil blive forbundet til, og de anmodede omfang. Brugeren skal have API‑Admin‑tilladelsen på den konto; alle andre ser en tilladelsesfejl i stedet for samtykkesiden. Godkendelse omdirigerer browseren til din redirect_uri med code og state. Afvisning omdirigerer med error=access_denied.
Autorisationstokenet er gyldigt i 10 minutter og kan udveksles én gang. En anden udveksling af den samme kode tilbagekalder alle tokens, som den første udveksling producerede.
Trin 2 – Token‑anmodning
Udveksl koden for tokens. Kroppen er formular‑kodet. Fortrolige klienter autentificerer med client_secret_basic (HTTP Basic) eller client_secret_post (hemmelighed i kroppen). Offentlige klienter sender kun client_id.



Fejl følger RFC 6749: en JSON‑krop med error og error_description, HTTP 400 for invalid_request, invalid_grant, invalid_scope, invalid_target og unsupported_grant_type, HTTP 401 for invalid_client, HTTP 429 ved hastighedsbegrænsning.
Trin 3 – Kald af API'en
Send adgangstokenet som en bearer‑token. Lejeren er implikeret af tokenet, så tenantId er valgfri. Når den er angivet, skal den matche tokenet, ellers fejler anmodningen.

GET /api/v1/me returnerer lejeren, den autoriserende bruger og de tildelte omfang, hvilket gør den til det rette kald for en forbindelsestest. En anmodning med et udløbet eller tilbagekaldt token får HTTP 401. En anmodning, hvis metode kræver et omfang, som tokenet ikke har, får HTTP 403.
Trin 4 – Opfriskning


Svaret har samme struktur som kode‑udvekslingen. Opfriskningstokens roteres: hver opfriskning returnerer et nyt refresh_token og tilbagekalder det gamle efter et 30‑sekunders grace‑vindue for samtidige anmodninger. Præsentation af et opfriskningstoken, der blev roteret for mere end 30 sekunder siden, betragtes som replay og tilbagekalder hele tilladelsen. Partner‑applikationer, der er registreret af FastComments, er undtaget fra rotation og får det samme opfriskningstoken med udløbet forlænget med yderligere 30 dage.
En opfriskning tjekker også, at den autoriserende bruger stadig har API‑Admin på kontoen. Hvis ikke, tilbagekaldes tilladelsen, og svaret er invalid_grant.
Tilbagekaldelse

Tilbagekaldelse af et opfriskningstoken tilbagekalder alle adgangstokens udstedt fra den samme tilladelse. Tilbagekaldelse af et adgangstoken tilbagekalder kun det pågældende token. Endpointet returnerer HTTP 200 med et tomt JSON‑objekt, uanset om tokenet blev fundet, i henhold til RFC 7009.
Brugere kan også tilbagekalde en forbindelse fra Connected Apps i FastComments‑dashboardet. Alle tokens for den pågældende applikation stopper med at fungere med det samme.
Aggregér dine data 
Dette API aggregerer dokumenter ved at gruppere dem (hvis groupBy er provided) og anvende flere operationer. Forskellige operationer (f.eks. sum, countDistinct, avg osv.) understøttes.
Omkostningen er variabel. Hver 500 scannede objekter koster 1 API-kredit.
Den maksimale hukommelsesbrug tilladt pr. API-kald er som standard 64MB, og som standard må du kun have én aggregation kørende ad gangen. Hvis du sender flere aggregationer samtidig, vil de blive sat i kø og kørt i den rækkefølge, de blev sendt. Ventende aggregationer vil vente maksimalt 60 sekunder; derefter vil anmodningen timeoute. Individuelle aggregationer kan køre i op til 5 minutter.
Hvis du har managed tenants, kan du aggregere alle child tenant resources i ét kald ved at angive query-parameteren parentTenantId.
Eksempler
Eksempel: Tæl unikke


Eksempel: Antal distinkte

Svar:

Eksempel: Sum af værdier for flere felter

Svar:

Eksempel: Gennemsnit af værdier for flere felter

Svar:

Eksempel: Min/Max for flere felter

Svar:

Eksempel: Tæl unikke værdier for flere felter

Svar:

Eksempel: Oprettelse af forespørgsel

Svar:

Eksempel: Tæl kommentarer, der venter på gennemgang

Svar:

Eksempel: Opdeling af godkendte, gennemgåede og spam-kommentarer

Svar:

Strukturer


Følgende ressourcer kan aggregeres:
- 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-struktur 
Et AuditLog er et objekt, der repræsenterer en revideret hændelse for lejere, der har adgang til denne funktion.
Strukturen for AuditLog-objektet er som følger:

targetId og targetLabel beskriver, hvad hændelsen blev udført på; userId og username beskriver, hvem der udførte den. For opdateringer indeholder objectDetails.changes et {field: {from, to}} kort over, hvad der faktisk ændrede sig.
Auditloggen er uforanderlig. Den kan heller ikke skrives til manuelt. FastComments.com kan kun beslutte, hvornår der skrives til auditloggen. Du kan dog læse fra den via dette API.
Hændelser i auditloggen udløber efter to år.
GET /api/v1/audit-logs 
Dette API bruger paginering, leveret af parametrene skip, limit, before og after. AuditLogs returneres i sider på 1000 som standard, op til et maksimalt limit på 10000, sorteret efter when og id. Siderne er store, fordi dette endpoint normalt bruges til at dump historik i stedet for at bladre gennem den interaktivt.
Hvert 100 log, der returneres, har en kreditomkostning på 1.
Som standard vil du modtage en liste med de nyeste elementer først. På denne måde kan du forespørge startende med skip=0, paginere indtil du finder den sidste post, du har forbrugt.
Alternativt kan du sortere ældste først og paginere indtil der ikke er flere poster.
Sortering kan udføres ved at sætte order til enten ASC eller DESC. Standard er DESC.
Forespørgsel efter dato er mulig via before og after som tidsstempler med millisekunder. before og after er IKKE inklusiv, og hver kan bruges alene.
Find ud af hvad der skete med en person
Hver hændelse registrerer, hvem der udførte den (username, userId, ip) og, separat, hvad den blev udført på. targetLabel er en menneskelig læsbar etiket for det objekt, for eksempel jsmith (jsmith@example.com), og targetId er dens id. Brug target for en case‑insensitiv delstrengssøgning på etiketten, når du kender en persons navn eller e‑mail, men ikke deres id.
Deletes fanger etiketten på tidspunktet for hændelsen, så en fjernet bruger eller moderator stadig kan identificeres efter den underliggende post er væk.
Administrerede lejere
Hvis din lejer administrerer andre lejere, skal du sætte includeManagedTenants=true for at returnere hændelser fra din lejer og alle lejere, den administrerer, i et enkelt svar. Hver returneret logs tenantId fortæller dig, hvilken lejer den kom fra.



Kommentarstruktur 
Et Comment objekt repræsenterer en kommentar efterladt af en bruger.
Forholdet mellem forældre- og underkommentarer defineres via parentId.
Strukturen for Comment-objektet er som følger:

Nogle af disse felter er markeret READONLY - disse returneres af API'et, men kan ikke sættes.
Kommentarens tekststruktur
Kommentarer skrives i en FastComments-variant af markdown, som er markdown plus traditionelle bbcode-lignende tags til billeder, fx [img]path[/img].
Tekst gemmes i to felter. Teksten brugeren skrev gemmes uændret i feltet comment. Denne renderes og gemmes i feltet commentHTML.
De tilladte HTML-tags er b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Det anbefales at rendre HTML'en, da det er et meget lille udsnit af HTML, og det er forholdsvis ligetil at bygge en renderer. Der findes flere biblioteker til blandt andet React Native og Flutter, som kan hjælpe med dette.
Du kan vælge at rendre den ikke-normaliserede værdi af feltet comment. Et eksempel på en parser findes her..
Eksempelparseren kan også justeres til at arbejde med HTML og transformere HTML-tags til de forventede elementer der skal rendres på din platform.
Mærkning
Når brugere bliver tagget i en kommentar, gemmes informationen i en liste kaldet mentions. Hvert objekt i den liste har følgende struktur.
Run 
Hashtags
Når hashtags bruges og succesfuldt parses, gemmes informationen i en liste kaldet hashTags. Hvert objekt i den liste har følgende struktur. Hashtags kan også manuelt tilføjes til kommentarens hashTags-array for forespørgsler, hvis retain er sat.
Run 
GET /api/v1/comments 
Dette API bruges til at hente kommentarer til visning for en bruger. For eksempel filtrerer det automatisk uautoriserede eller spam‑kommentarer.
Pagination
Pagination kan udføres på en af to måder, afhængigt af ydelseskrav og brugssag:
- Hurtigst: Precalculated Pagination:
- Dette er hvordan FastComments fungerer, når du bruger vores forudbyggede widgets og klienter.
- Klik på "next" øger blot sidetællingen.
- Du kan tænke på dette som at blive hentet fra en nøgle‑værdilager.
- På denne måde definerer du blot en
page‑parameter, der starter på0, og en sorteringsretning somdirection. - Sidestørrelser kan tilpasses via tilpasningsregler.
- Mest fleksibel: Flexible Pagination:
- På denne måde kan du definere brugerdefinerede
limit‑ ogskip‑parametre. Send ikkepage. - Sorterings
directionunderstøttes også. limiter det samlede antal, der skal returneres efter atskiper anvendt.- Eksempel: sæt
skip = 200, limit = 100nårpage size = 100ogpage = 2.
- Eksempel: sæt
- Børnekommentarer tæller stadig med i pagineringen. Du kan omgå dette ved at bruge
asTree‑optionen.- Du kan paginere børn via
limitChildrenogskipChildren. - Du kan begrænse dybden af de returnerede tråde via
maxTreeDepth.
- Du kan paginere børn via
- På denne måde kan du definere brugerdefinerede
Threads
- Når du bruger
Precalculated Pagination, grupperes kommentarer efter side, og kommentarer i tråde påvirker den samlede side.- På denne måde kan tråde bestemmes på klienten baseret på
parentId. - For eksempel, med en side med én top‑niveau kommentar og 29 svar, og ved at sætte
page=0i API‑et – får du kun top‑niveau kommentaren og de 29 underkommentarer.
- På denne måde kan tråde bestemmes på klienten baseret på
- Når du bruger
Flexible Pagination, kan du definere enparentId‑parameter.- Sæt denne til null for kun at hente top‑niveau kommentarer.
- Herefter, for at se tråde, kald API‑et igen og send
parentId. - En almindelig løsning er at foretage et API‑kald for top‑niveau kommentarer og derefter foretage parallelle API‑kald for at hente kommentarer til hvert barns kommentarer.
- NYT Fra februar 2023! Hent som et træ ved at bruge
&asTree=true.- Du kan tænke på dette som
Flexible Pagination som et træ. - Kun top‑niveau kommentarer tæller i pagineringen.
- Sæt
parentId=nullfor at starte træet ved roden (du skal sætteparentId). - Sæt
skipoglimitfor paginering. - Sæt
asTreetiltrue. - Kreditomkostningen stiger med
2x, da vores backend skal udføre meget mere arbejde i dette scenarie. - Sæt
maxTreeDepth,limitChildrenogskipChildrenefter ønske.
- Du kan tænke på dette som
Trees Explained
Når du bruger asTree, kan det være svært at forstå pagineringen. Her er en praktisk grafik:
Fetching Comments in The Context of a User
/comments API'et kan bruges i to kontekster, til forskellige brugssager:
- For at returnere kommentarer sorteret og mærket med information til at bygge din egen klient.
- I dette tilfælde definer en
contextUserId‑forespørgselsparameter.
- I dette tilfælde definer en
- For at hente kommentarer fra din backend til tilpassede integrationer.
- Platformen vil som standard bruge dette uden
contextUserId.
- Platformen vil som standard bruge dette uden




Get Comments as a Tree
Det er muligt at få kommentarerne returneret som et træ, hvor pagineringen kun tæller top‑niveau kommentarer.

Vil du kun hente top‑niveau kommentarer og de umiddelbare børn? Her er en måde:

Dog kan det i din UI være nødvendigt at vide, om der skal vises en "vis svar"-knap på hver kommentar. Når du henter kommentarer via et træ, er der en hasChildren‑egenskab mærket på kommentarer, når det er relevant.
Get Comments as a Tree, Searching by Hash Tag
Det er muligt at søge efter hashtag ved hjælp af API'et, på tværs af hele din lejer (ikke begrænset til én side eller urlId).
I dette eksempel udelader vi urlId, og vi søger efter flere hashtags. API'et vil kun returnere kommentarer, der har alle de anmodede hashtags.

All Request Params

The Response

Helpful Tips
URL ID
Du vil sandsynligvis bruge Comment‑API'et med urlId‑parameteren. Du kan først kalde Pages‑API'et for at se, hvordan de tilgængelige urlId‑værdier ser ud.
Anonymous Actions
For anonym kommentarering vil du sandsynligvis sende anonUserId, når du henter kommentarer, og når du udfører flagning og blokering.
(!) Dette er påkrævet for mange app‑butikker, da brugere skal kunne flagge bruger‑oprettet indhold, de kan se, selvom de ikke er logget ind. Undladelse kan medføre, at din app fjernes fra den pågældende butik.
Comments Not Being Returned
Tjek at dine kommentarer er godkendt, og ikke er spam.
GET /api/v1/comments/:id 
Denne API giver mulighed for at hente en enkelt kommentar efter id.



POST /api/v1/comments 
Dette API-endpoint giver mulighed for at oprette kommentarer.
Almindelige anvendelsestilfælde er brugerdefinerede UI'er, integrationer eller imports.
Bemærkninger:
- Dette API kan opdatere kommentarwidgeten "live", hvis ønsket (dette øger
creditsCostfra1til2). - Dette API vil automatisk oprette brugerobjekter i vores system, hvis der angives en e-mail.
- Forsøg på at gemme to kommentarer med forskellige e-mails, men samme brugernavn, vil resultere i en fejl for den anden kommentar.
- Hvis du angiver
parentId, og en børnekommentar harnotificationSentForParentsat til false, vil vi sende notifikationer for forældrekommentaren. Dette gøres hver time (vi samler notifikationerne for at reducere antallet af sendte e-mails). - Hvis du vil sende velkomst-e-mails ved oprettelse af brugere, eller e-mails til verifikation af kommentarer, sæt
sendEmailstiltruei forespørgselsparametrene. - Kommentarer oprettet via dette API vil blive vist på Analytics- og Moderation-siderne i admin-appen.
- "bad words" bliver stadig maskerede i kommentatornavne og kommentartekst, hvis indstillingen er slået til.
- Kommentarer oprettet via dette API kan stadig blive tjekket for spam, hvis ønsket.
- Konfiguration såsom maksimal kommentar-længde, hvis konfigureret via Customization Rule-adminsiden, vil gælde her.
De minimale data, der kræves for at indsende og som vil blive vist i kommentar-widgeten, er følgende:

En mere realistisk forespørgsel kan se sådan ud:



PATCH /api/v1/comments/:id 
Dette API-endpoint giver mulighed for at opdatere en enkelt kommentar.
Bemærk:
- Dette API kan opdatere kommentar-widgetten "live", hvis ønsket (dette øger grundlæggende
creditsCostfra1til2).- Dette kan gøre migrering af kommentarer mellem sider "live" (ændring af
urlId). - Migrationer koster yderligere
2credits, da siderne forudberegnes og dette er CPU-intensivt.
- Dette kan gøre migrering af kommentarer mellem sider "live" (ændring af
- I modsætning til create-API'et vil dette API IKKE automatisk oprette brugerobjekter i vores system, hvis e-mail er angivet.
- Kommentarer opdateret via dette API kan stadig kontrolleres for spam, hvis ønsket.
- Konfiguration som maks. kommentar-længde, hvis konfigureret via Customization Rule-adminsiden, gælder her.
- For at give brugere mulighed for at opdatere deres kommentartekst kan du blot angive
commenti request body. Vi genererer den resulterendecommentHTML.- Hvis du angiver både
commentogcommentHTML, vil vi ikke automatisk generere HTML'en. - Hvis brugeren tilføjer mentions eller hashtags i deres nye tekst, vil det stadig blive behandlet som i
POST-API'et.
- Hvis du angiver både
- Når du opdaterer
commenterEmailpå en kommentar, er det bedst også at angiveuserId. Ellers skal du sikre, at brugeren med denne e-mail tilhører din tenant, ellers vil anmodningen fejle. - Hvis den pågældende kommentar er låst (
isLocked: true), afvises anmodningen medcode: 'locked'. Lås kommentaren op først, opdater den, og lås den derefter igen, hvis ønsket.



DELETE /api/v1/comments/:id 
Dette API-endpoint giver mulighed for at slette en kommentar.
Bemærkninger:
- Dette API kan opdatere kommentar-widgeten "live", hvis ønsket (det øger
creditsCostfra1til2). - Dette API vil slette alle underordnede kommentarer.
- Hvis den målrettede kommentar er låst (
isLocked: true), afvises anmodningen medcode: 'locked'. Lås kommentaren op først, og slet derefter.



POST /api/v1/comments/:id/flag 
Denne API-endpoint giver mulighed for at rapportere en kommentar for en specifik bruger.
Bemærkninger:
- Dette kald skal altid foretages i konteksten af en bruger. Brugeren kan være en FastComments.com-bruger, SSO-bruger eller Tenant-bruger.
- Hvis en flag-til-skjul-tærskel er sat, vil kommentaren automatisk blive skjult live, efter den er blevet rapporteret det definerede antal gange.
- Efter den automatisk er blevet fjernet fra godkendelse (skjult) - kan kommentaren kun gen-godkendes af en administrator eller moderator. Fjernelse af rapportering vil ikke gen-godkende kommentaren.

For anonym rapportering skal vi angive en anonUserId. Dette kan være et ID, der repræsenterer den anonyme session, eller et tilfældigt UUID.
Dette giver os mulighed for at understøtte rapportering og fjernelse af rapportering af kommentarer, selvom en bruger ikke er logget ind. På denne måde kan kommentaren markeres som
rapporteret, når kommentarer hentes med det samme anonUserId.



POST /api/v1/comments/:id/un-flag 
Denne API-endpoint giver mulighed for at fjerne rapportering af en kommentar for en specifik bruger.
Bemærkninger:
- Dette kald skal altid foretages i konteksten af en bruger. Brugeren kan være en FastComments.com-bruger, SSO-bruger eller Tenant-bruger.
- Efter en kommentar automatisk er blevet fjernet fra godkendelse (skjult) - kan kommentaren kun gen-godkendes af en administrator eller moderator. Fjernelse af rapportering vil ikke gen-godkende kommentaren.

For anonym rapportering skal vi angive en anonUserId. Dette kan være et ID, der repræsenterer den anonyme session, eller et tilfældigt UUID.



POST /api/v1/comments/:id/block 
Denne API-endpoint giver mulighed for at blokere en bruger, der har skrevet en given kommentar. Det understøtter blokering fra kommentarer skrevet af FastComments.com-brugere, SSO-brugere og Tenant-brugere.
Det understøtter en commentIdsToCheck body-parameter til at kontrollere, om andre potentielt synlige kommentarer på klienten skal blokeres/afblokeres efter denne handling udføres.
Bemærkninger:
- Dette kald skal altid foretages i konteksten af en bruger. Brugeren kan være en FastComments.com-bruger, SSO-bruger eller Tenant-bruger.
userIdi anmodningen er brugeren, der udfører blokeringen. For eksempel:Bruger Avil blokereBruger B. AngivuserId=Bruger Aog kommentar-id'et somBruger Bskrev.- Fuldstændig anonyme kommentarer (ingen bruger-id, ingen e-mail) kan ikke blokeres, og en fejl vil blive returneret.

For anonym blokering skal vi angive en anonUserId. Dette kan være et ID, der repræsenterer den anonyme session, eller et tilfældigt UUID.
Dette giver os mulighed for at understøtte blokering af kommentarer, selvom en bruger ikke er logget ind, ved at hente kommentarerne med det samme anonUserId.



POST /api/v1/comments/:id/un-block 
Denne API-endpoint giver mulighed for at afblokere en bruger, der har skrevet en given kommentar. Det understøtter afblokering fra kommentarer skrevet af FastComments.com-brugere, SSO-brugere og Tenant-brugere.
Det understøtter en commentIdsToCheck body-parameter til at kontrollere, om andre potentielt synlige kommentarer på klienten skal blokeres/afblokeres efter denne handling udføres.
Bemærkninger:
- Dette kald skal altid foretages i konteksten af en bruger. Brugeren kan være en FastComments.com-bruger, SSO-bruger eller Tenant-bruger.
userIdi anmodningen er brugeren, der udfører afblokeringen. For eksempel:Bruger Avil afblokereBruger B. AngivuserId=Bruger Aog kommentar-id'et somBruger Bskrev.- Fuldstændig anonyme kommentarer (ingen bruger-id, ingen e-mail) kan ikke blokeres, og en fejl vil blive returneret.




E-mail-skabelonstruktur 
Et EmailTemplate-objekt repræsenterer konfiguration for en tilpasset e-mail-skabelon, for en tenant.
Systemet vil vælge e-mail-skabelonen, der skal bruges via:
- Dens typeidentifikator, vi kalder denne
emailTemplateId. Disse er konstanter. domain. Vi vil først forsøge at finde en skabelon for domænet, som det relaterede objekt (såsom enComment) er knyttet til, og hvis et match ikke findes, vil vi forsøge at finde en skabelon, hvor domain er null eller*.
Strukturen for EmailTemplate-objektet er som følger:

Bemærkninger
- Du kan få de gyldige
emailTemplateId-værdier fra/definitions-endpointet. /definitions-endpointet inkluderer også standardoversættelserne og testdata.- Skabeloner vil fejle ved gemning med ugyldig struktur eller testdata.
GET /api/v1/email-templates/:id 
Individuelle EmailTemplates kan hentes via deres tilsvarende id (IKKE emailTemplateId).



GET /api/v1/email-templates 
Denne API bruger paginering, leveret af page query-parameteren. EmailTemplates returneres i sider af 100, sorteret efter createdAt og derefter id.



PATCH /api/v1/email-templates/:id 
Denne API-endpoint giver mulighed for at opdatere en e-mail-skabelon ved kun at angive id'et og attributterne, der skal opdateres.
Bemærk at alle de samme valideringer for oprettelse af en skabelon også gælder, for eksempel:
- Skabelonen skal kunne renderes. Dette kontrolleres ved hver opdatering.
- Du kan ikke have duplikerede skabeloner for det samme domæne (ellers ville en blive ignoreret lydløst).



POST /api/v1/email-templates 
Denne API-endpoint giver mulighed for at oprette e-mail-skabeloner.
Bemærkninger:
- Du kan ikke have flere skabeloner med det samme
emailTemplateIdmed det samme domæne. - Men du kan have en wildcard-skabelon (
domain=*og en domænespecifik skabelon for det sammeemailTemplateId). - Angivelse af
domainer kun relevant, hvis du har forskellige domæner, eller ønsker at bruge specifikke skabeloner til test (domainsat tillocalhostosv.). - Hvis du angiver
domain, skal det matche enDomainConfig. Ved fejl gives en liste over gyldige domæner. - Skabelonsyntaksen er EJS og renderes med en timeout på 500ms. P99 for rendering er <5ms, så hvis du rammer 500ms, er der noget galt.
- Din skabelon skal kunne renderes med dine givne
testDatafor at gemme. Renderingsfejl aggregeres og rapporteres i dashboardet (snart tilgængeligt via API).
De minimale data, der kræves for at tilføje en skabelon, er som følger:

Du vil måske have skabeloner per-site, i hvilket tilfælde du definerer domain:



POST /api/v1/email-templates/render 
Denne API-endpoint giver mulighed for at forhåndsvise e-mail-skabeloner.



DELETE /api/v1/email-templates/:id 
Denne rute giver mulighed for at fjerne en enkelt EmailTemplate efter id.



FeedPost-struktur 
Et FeedPost-objekt repræsenterer et indlæg i et FastComments-feed. Et feed er en strøm af indlæg med deres egne kommentartråde, gengivet af Feed‑widgeten. Hvert indlæg har en forfatter, valgfrit rigt indhold, medier og links, og kan blive mærket så et feed kan filtreres.
Strukturen for FeedPost-objektet er som følger:

Noter:
- Nogle af disse felter er markeret
READONLY– de returneres af API'et, men kan ikke sættes. - Kommentarerne på et indlæg er almindelige kommentarer, hvis
urlIderpost:efterfulgt af indlæggets_id. Brug den værdi med Kommentar‑API'et for at læse eller oprette kommentarer på et indlæg.
GET /api/v1/feed-posts 
Henter indlæg i et feed, nyeste først. Paginering er cursor-baseret: send _id for det sidste indlæg, du modtog, som afterId for at få den næste side.
Koster én kredit per ti indlæg, der returneres, med et minimum på én kredit.



POST /api/v1/feed-posts 
Denne rute opretter et enkelt FeedPost. Hvert indlæg har en forfatter, så fromUserId er påkrævet og skal være id'et på en eksisterende FastComments- eller SSO-bruger på kontoen.



PATCH /api/v1/feed-posts/:id 
Denne rute opdaterer et enkelt FeedPost. Send kun de felter, du vil ændre.



Hashtag-struktur 
Et HashTag-objekt repræsenterer et tag, der kan efterlades af en bruger. HashTags kan bruges til at linke til eksternt indhold eller til at
knytte relaterede kommentarer sammen.
Strukturen for HashTag-objektet er som følger:

Bemærkninger:
- I nogle API-endpoints vil du se, at hashtagget bruges i URL'en. Husk at URI-kode værdier. For eksempel skal
#i stedet repræsenteres som%23. - Nogle af disse felter er markeret
READONLY- disse returneres af API'et, men kan ikke sættes.
GET /api/v1/hash-tags 
Denne API bruger paginering, leveret af page query-parameteren. HashTags returneres i sider af 100, sorteret efter tag.



PATCH /api/v1/hash-tags/:tag 
Denne rute giver mulighed for at opdatere en enkelt HashTag.



POST /api/v1/hash-tags 
Denne rute giver mulighed for at tilføje en enkelt HashTag.



POST /api/v1/hash-tags/bulk 
Denne rute giver mulighed for at tilføje op til 100 HashTag-objekter på én gang.



DELETE /api/v1/hash-tags/:tag 
Denne rute giver mulighed for at fjerne en HashTag via den angivne tag.
Bemærk at medmindre automatisk HashTag-oprettelse er deaktiveret, kan hashtags genskabes af en bruger, der angiver hashtagget, når de kommenterer.



GET /api/v1/me 
Beskriver legitimationsoplysningerne, der laver anmodningen: den lejer, den tilhører, og for OAuth-adgangstokens, brugeren der autoriserede applikationen. Integrationer bruger den til at teste en forbindelse og mærke den.
Med en API-nøgle identificerer svaret kun lejeren. Med et OAuth-bærer-token medfører det også den autoriserende bruger og de tildelte scopes.


Moderatorstruktur 
Et Moderator-objekt repræsenterer konfiguration for en moderator.
Der er tre typer moderatorer:
- Administratorbrugere, der har
isCommentModeratorAdmin-flaget. - SSO-brugere med
isCommentModeratorAdmin-flaget. - Almindelige kommentatorer eller FastComments.com-brugere, der er inviteret som Moderatorer.
Moderator-strukturen bruges til at repræsentere Moderationstilstanden for anvendelsestilfælde 3.
Hvis du vil invitere en bruger til at være moderator via API'et, brug Moderator API'et ved at oprette en Moderator og invitere dem.
Hvis brugeren ikke har en FastComments.com-konto, vil invitations-e-mailen hjælpe dem med at blive sat op. Hvis de allerede har en konto, vil de
få moderationsadgang til din tenant, og Moderator-objektets userId vil blive opdateret til at pege på deres bruger. Du vil ikke have API-
adgang til deres bruger, da den i dette tilfælde tilhører dem selv og administreres af FastComments.com.
Hvis du kræver fuld styring af brugerens konto, anbefaler vi enten at bruge SSO eller tilføje dem som en Tenant Bruger og
derefter tilføje et Moderator-objekt for at spore deres statistikker.
Moderator-strukturen kan bruges som en statistik-sporingsmekanisme for anvendelsestilfælde 1 og 2. Efter oprettelse af brugeren, tilføj et Moderator-
objekt med deres userId defineret, og deres statistikker vil blive sporet på Kommentarmoderatorer-siden.
Strukturen for Moderator-objektet er som følger:

GET /api/v1/moderators/:id 
Denne rute returnerer en enkelt moderator efter deres id.



GET /api/v1/moderators 
Denne API bruger paginering, leveret af skip query-parameteren. Moderatorer returneres i sider af 100, sorteret efter createdAt og id.
Prisen er baseret på antallet af returnerede moderatorer, koste 1 kredit pr. 10 returnerede moderatorer.



PATCH /api/v1/moderators/:id 
Denne API-endpoint giver mulighed for at opdatere en Moderator efter id.
Opdatering af en Moderator har følgende begrænsninger:
- Følgende værdier må ikke angives ved opdatering af en
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Når et
userIder angivet, skal den bruger eksistere. - Når et
userIder angivet, skal de tilhøre det sammetenantId, der er angivet i query-parametre. - To moderatorer i den samme tenant kan ikke tilføjes med den samme
email. - Du må ikke ændre det
tenantId, der er tilknyttet enModerator.



POST /api/v1/moderators 
Denne rute giver mulighed for at tilføje en enkelt Moderator.
Oprettelse af en Moderator har følgende begrænsninger:
- Et
nameogemailskal altid angives. EtuserIder valgfrit. - Følgende værdier må ikke angives ved oprettelse af en
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Når et
userIder angivet, skal den bruger eksistere. - Når et
userIder angivet, skal de tilhøre det sammetenantId, der er angivet i query-parametre. - To moderatorer i den samme tenant kan ikke tilføjes med den samme
email.
Vi kan oprette en Moderator for en bruger, hvor vi kun kender e-mailen:

Eller vi kan oprette en Moderator for en bruger, der tilhører vores tenant, for at spore deres moderationsstatistikker:



POST /api/v1/moderators/:id/send-invite 
Denne rute giver mulighed for at invitere en enkelt Moderator.
Følgende begrænsninger gælder for at sende en invitations-e-mail til en Moderator:
Moderatoren skal allerede eksistere.fromNamemå ikke være længere end100 tegn.
Bemærkninger:
- Hvis en bruger med den angivne e-mail allerede eksisterer, vil de blive inviteret til at moderere din tenants kommentarer.
- Hvis en bruger med den angivne e-mail ikke eksisterer, vil invitationslinket guide dem gennem oprettelse af deres konto.
- Invitationen udløber efter
30 dage.
Vi kan oprette en Moderator for en bruger, hvor vi kun kender e-mailen:

Dette vil sende en e-mail som Bob hos TenantName inviterer dig til at være moderator...


DELETE /api/v1/moderators/:id 
Denne rute giver mulighed for at fjerne en Moderator efter id.



Notifikationsantalstruktur 
Et NotificationCount-objekt repræsenterer antallet af ulæste notifikationer og metadata for en bruger.
Hvis der ikke er nogen ulæste notifikationer, vil der ikke være en NotificationCount for brugeren.
NotificationCount-objekter oprettes automatisk og kan ikke oprettes via API'et. De udløber også efter et år.
Du kan rydde en brugers antal ulæste notifikationer ved at slette deres NotificationCount.
Strukturen for NotificationCount-objektet er som følger:

GET /api/v1/notification-count/:user_id 
Denne rute returnerer en enkelt NotificationCount efter bruger-id. Med SSO er bruger-id'et i formatet <tenant id>:<user id>.
Hvis der ikke er nogen ulæste notifikationer, vil der ikke være en NotificationCount - så du vil få en 404.
Dette er forskelligt fra notifications/count ved at det er meget hurtigere, men tillader ikke filtrering.



DELETE /api/v1/notification-count/:user_id 
Denne rute sletter en enkelt NotificationCount efter bruger-id. Med SSO er bruger-id'et i formatet <tenant id>:<user id>.
Dette vil rydde brugerens antal ulæste notifikationer (den røde klokke i kommentar-widget'en vil falme ud, og tælleren forsvinder).



Notifikationsstruktur 
Et Notification-objekt repræsenterer en notifikation for en bruger.
Notification-objekter oprettes automatisk og kan ikke oprettes via API'et. De udløber også efter et år.
Notifikationer kan ikke slettes. De kan dog opdateres for at sætte viewed til false, og du kan forespørge efter viewed.
En bruger kan også fravælge notifikationer for en specifik kommentar ved at sætte optedOut i notifikationen til true. Du kan tilvælge igen ved at sætte den til false.
Der er forskellige notifikationstyper - tjek relatedObjectType og type.
Måderne notifikationer oprettes på er ret fleksible og kan udløses af mange scenarier (se NotificationType).
Per dags dato indebærer eksistensen af en Notification faktisk ikke, at en e-mail sendes eller bør sendes. I stedet bruges notifikationerne
til notifikationsfeedet og relaterede integrationer.
Strukturen for Notification-objektet er som følger:

GET /api/v1/notifications 
Denne rute returnerer op til 30 Notification-objekter sorteret efter createdAt, nyeste først.
Du kan filtrere efter userId. Med SSO er bruger-id'et i formatet <tenant id>:<user id>.



GET /api/v1/notifications/count 
Denne rute returnerer et objekt, der indeholder antallet af notifikationer under en count-parameter.
Den er langsommere end /notification-count/ og dobbelt så mange kreditter, men tillader filtrering på flere dimensioner.
Du kan filtrere efter de samme parametre som /notifications-endpointet som userId. Med SSO er bruger-id'et i formatet <tenant id>:<user id>.




PATCH /api/v1/notifications/:id 
Denne API-endpoint giver mulighed for at opdatere en Notification efter id.
Opdatering af en Notification har følgende begrænsninger:
- Du kan kun opdatere følgende felter:
viewedoptedOut



Side Reaktioner Offentlig API 
Page Reacts lader dine brugere synes godt om en side, eller reagere på den med dit eget sæt af reaktionsbilleder. Den Page Reacts widget og Floating Likes‑widgeten er bygget på disse endpoints, og du kan kalde dem selv for at bygge din egen like‑knap.
I modsætning til resten af denne guide er Page Reacts‑endpoints offentlige. De kaldes fra dine brugeres browsere, kræver ingen API‑nøgle og koster ingen API‑kreditter. Hver reaktion tilhører den bruger, der foretager anmodningen, så en bruger kun kan tilføje eller fjerne sine egne.
Der er to sæt af endpoints:
/page-reacts/v1/likes/:tenantId– en enkelt "like" pr. bruger pr. side. Brug disse til en like‑knap./page-reacts/v2/:tenantId– flere reaktioner pr. side, hver identificeret ved et kortid, du vælger (for eksempelheartellerlaugh).
Begge er også tilgængelige i vores SDK'er som en del af PublicApi, for eksempel getV1PageLikes, createV1PageReact og deleteV1PageReact i den JavaScript SDK.
Identificering af brugeren
Reaktioner er knyttet til den bruger, der foretager anmodningen:
- SSO‑brugere: send
sso‑query‑parameteren, sat til den URI‑kodede JSON af det samme SSO‑objekt, du giver til kommentarfunktionen. Se SSO. - Anonyme brugere: når der ikke er nogen
sso‑parameter og ingen FastComments‑login, tildeler serveren browseren et anonymt id gemt i FastComments‑sessions‑cookien. Send anmodninger medcredentials: 'include'så cookien bevares mellem anmodninger. Browsere, der blokerer tredjeparts‑cookies, vil ikke bevare det anonyme id, så brug SSO når hver bruger skal genkendes pålideligt.
urlId‑et
urlId identificerer siden, på samme måde som for kommentarer. Brug den samme urlId, du giver til kommentarfunktionen, så likes og kommentarer tælles på den samme side. Husk at URI‑kode den.

GET /page-reacts/v1/likes/:tenantId 
Returnerer antallet af likes på en side, og om den aktuelle bruger har liket den. Sider, der endnu ikke findes, returnerer en likeCount på 0.



POST /page-reacts/v1/likes/:tenantId 
Synes om en side som den aktuelle bruger. Hver bruger kan synes om en side én gang: at synes om igen lykkes med koden already-liked og ændrer ikke tælleren.
Siden oprettes, hvis den endnu ikke findes. Send title for at sætte eller opdatere sidens titel.



DELETE /page-reacts/v1/likes/:tenantId 
Fjerner den aktuelle brugers like fra en side. Hvis brugeren ikke har liket siden, lykkes anmodningen med koden not-liked og ændrer ikke tælleren.



GET /page-reacts/v2/:tenantId 
Returnerer antallet for hver reaktion på en side, og hvilke reaktioner den aktuelle bruger har tilføjet.



GET /page-reacts/v2/:tenantId/list 
Returnerer navnene på de brugere, der har tilføjet en reaktion til en side, sorteret alfabetisk. Op til 100 reaktioner slås op, og anonyme brugere er ikke inkluderet.



POST /page-reacts/v2/:tenantId 
Tilføjer en reaktion til en side som den aktuelle bruger. En bruger kan tilføje hver reaktions-id én gang: at tilføje den igen lykkes med koden already-reacted og ændrer ikke tælleren. En bruger kan tilføje flere forskellige reaktioner til den samme side.
Reaktions-id'er vælges af dig og kan være op til 36 tegn. Siden oprettes, hvis den endnu ikke findes. Send title for at angive eller opdatere sidens titel.



DELETE /page-reacts/v2/:tenantId 
Fjerner en af den aktuelle brugers reaktioner fra en side. Hvis brugeren ikke har tilføjet den reaktion, lykkes anmodningen med koden no-react og ændrer ikke tælleren.



Side-struktur 
Et Page-objekt repræsenterer den side, som mange kommentarer kan tilhøre. Dette forhold defineres af
urlId.
En Page gemmer information såsom sidetitlen, kommentarantal og urlId.
Strukturen for Page-objektet er som følger:

GET /api/v1/pages 
Du kan i øjeblikket kun hente alle sider (eller en enkelt side via /by-url-id) tilknyttet din konto. Hvis du ønsker mere finmasket søgning, kontakt os.



Nyttigt Tip
Comment API'et kræver et urlId. Du kan kalde Pages API'et først for at se, hvordan de tilgængelige urlId-værdier
ser ud.
GET /api/v1/pages/by-url-id 
Individuelle sider kan hentes via deres tilsvarende urlId. Dette kan være nyttigt til at slå sidetitler eller kommentarantal op.



Nyttigt Tip
Husk at URI-kode værdier som urlId.
PATCH /api/v1/pages/:id 
Denne rute giver mulighed for at opdatere en enkelt Page. De tilsvarende kommentarer vil blive opdateret.



Bemærkning
Nogle parametre i Page-objektet opdateres automatisk. Disse er tælle- og titelattributter. Tællere kan ikke opdateres
via API'et, da de er beregnede værdier. Sidens title kan sættes via API'et, men vil blive overskrevet, hvis kommentar-widget'en bruges på
en side med det samme urlId og en anden sidetitel.
POST /api/v1/pages 
Denne API-endpoint giver mulighed for at oprette sider.
Et almindeligt anvendelsestilfælde er adgangskontrol.
Bemærkninger:
- Hvis du har kommenteret på en kommentartråd eller kaldt API'et for at oprette en
Comment, har du allerede oprettet etPage-objekt! Du kan prøve at hente det via/by-url-idPage-ruten ved at angive det sammeurlId, som blev sendt til kommentar-widget'en. Page-strukturen indeholder nogle beregnede værdier. I øjeblikket er dissecommentCountogrootCommentCount. De udfyldes automatisk og kan ikke sættes af API'et. Forsøg på at gøre det vil få API'et til at returnere en fejl.



DELETE /api/v1/pages/:id 
Denne rute giver mulighed for at fjerne en enkelt side efter id.
Bemærk at interaktion med kommentar-widget'en for en side med det samme urlId simpelthen vil genskabe Page problemfrit.



Afstemningsstruktur 
A Poll er knyttet til en kommentar i stedet for at være et selvstændigt objekt. Den oprettes sammen med kommentaren
(se POST /api/v1/comments), eller tilføjes til en eksisterende kommentar senere med PUT /api/v1/polls/:commentId.
Stemmetællerne gemmes på selve afstemningen, så læsning af en afstemning giver dig resultaterne uden at skulle lægge noget sammen. De individuelle stemmer bag disse tællere er PollVote‑objekter.
Hver mulighed har en id, som genereres, når afstemningen oprettes. Det er den id, du bruger til at afgive en stemme, til at omdøbe en mulighed, og til at beholde en mulighed (og dens stemmer), når du PUT‑er afstemningen med tilføjede eller fjernede muligheder. Det er den eneste sikre måde at referere til en mulighed på – aldrig dens position i listen.

Begrænsninger
- Et spørgsmål er påkrævet, og må højst være 200 tegn.
- En afstemning har mellem 2 og 10 muligheder.
- En valgmærkat er påkrævet, må højst være 100 tegn, og skal være unik inden for afstemningen (ignorerer store/små bogstaver).
closesAtskal være i fremtiden, når afstemningen oprettes. For at lukke en afstemning med det samme,PATCHden med en dato i fortiden.
Webstedsindstillinger
Afstemninger følger din webstedskonfiguration, som du kan ændre under Tilpas Widget:
- Afstemninger skal være aktiveret, før en afstemning kan oprettes, ellers svarer API'en med
polls-disabled. - Afstemning kan begrænses til loggede brugere, i så fald afvises en stemme sendt kun med en
anonUserIdmedpoll-login-required.
GET /api/v1/polls/:commentId 
Læser afstemningen knyttet til en kommentar, med dens aktuelle stemmetal.
Afstemninger returneres også på selve kommentaren via kommentar-API'erne, så brug dette når du kun vil have resultaterne og ikke hele kommentaren.



En kommentar uden afstemning, en kommentar der er blevet slettet, og et kommentar-id der ikke findes, svarer alle
på samme måde, med poll-not-found.
PUT /api/v1/polls/:commentId 
Vedhæfter en afstemning til en eksisterende kommentar, eller indstiller den fulde tilstand af den afstemning, den allerede har.
Kroppen er den komplette afstemning, og de muligheder du sender bliver afstemningens muligheder i den rækkefølge. Hver mulighed matches med dens id:
- En mulighed sendt med
idfor en eksisterende mulighed bevarer den mulighed og dens stemmer. Dens etiket og position opdateres til det, du sendte. - En mulighed sendt uden et
idtilføjes, uden stemmer. - En eksisterende mulighed du udelader fjernes, sammen med de stemmer der er afgivet på den.
totalVotesfalder med samme beløb.
Så for at tilføje en mulighed, send de aktuelle muligheder med deres id'er plus den nye uden et id. For at fjerne en, send listen uden den. Muligheds-id'erne findes på afstemningen returneret af GET /api/v1/polls/:commentId.
At sende ingen id'er overhovedet erstatter hver mulighed og sletter hver stemme, der allerede er afgivet på afstemningen. Hvis afstemningen har stemmer, kræver dette replaceVotes=true, og uden det svarer API'en med replace-votes-required.
De andre felter erstattes også: at udelade closesAt, privacy eller requireVoteToSeeResults nulstiller dem til standardværdien. For at ændre et enkelt felt og lade resten være uændret, brug PATCH /api/v1/polls/:commentId.



Other Notes
- Et
id, der ikke findes på afstemningen, eller det sammeidgivet to gange, fejler medpoll-invalid. En kommentar uden afstemning har endnu ingen muligheds-id'er, så hver mulighed, der sendes til den, skal udeladeid. - Afstemningsprivatliv kan indsnævres men ikke udvides, når den har stemmer.
- Dette API overholder dine sideindstillinger. Hvis afstemninger ikke er aktiveret for siden eller siden, fejler det med
polls-disabled. - En låst kommentar kan ikke få sin afstemning ændret, og fejler med
locked. - Forbundne widgets opdateres live, så seere ser den nye afstemning uden at genindlæse.
PATCH /api/v1/polls/:commentId 
Redigerer en afstemning uden at forstyrre dens stemmer. Brug dette til at rette en stavefejl i spørgsmålet eller en mulighed, til at lukke eller genåbne afstemningen, eller til at ændre, hvem der kan se, hvem der har stemt.
Muligheder adresseres via deres id, og en PATCH omdøber dem, du navngiver. For at tilføje, fjerne eller omarrangere
muligheder, send den fulde liste af muligheder til PUT /api/v1/polls/:commentId: muligheder du sender med deres id'er bevarer
deres stemmer også.
Alle felter er valgfrie, men mindst ét skal angives.




Andre Bemærkninger
- At navngive et option-id, der ikke findes i afstemningen, fejler med
poll-invalidi stedet for stille at gøre ingenting. - Etiketter skal forblive unikke inden for afstemningen, også med de muligheder du ikke ændrer.
- I modsætning til at oprette en afstemning, kan
closesAther være i fortiden – det er sådan du lukker en afstemning med det samme. - Afstemningsprivatliv kan indsnævres men ikke udvides, når den har stemmer.
- En låst kommentar kan ikke få sin afstemning ændret, og fejler med
locked.
DELETE /api/v1/polls/:commentId 
Fjerner en afstemning fra dens kommentar, sammen med hver stemme afgivet på den. Kommentaren selv forbliver uændret.
Sletning af kommentaren fjerner også dens afstemning og stemmer, så dette er kun nødvendigt, når du vil beholde kommentaren.



Afstemningsstemmestruktur 
A PollVote er én persons svar på en afstemning. Tællingerne, der vises på afstemningen selv, holdes i takt med disse, så du kun har brug for dem, når du vil vide hvem der stemte på hvad, snarere end totalerne.
En vælger har højst én stemme pr. afstemning. At stemme igen flytter deres eksisterende stemme til den nye mulighed i stedet for at tilføje en anden, og updatedAt registrerer, hvornår det skete.
voterId er userId når vælgeren var logget ind, og ellers anonUserId.

Privacy
Afstemningens privacy-indstilling gælder for dette API på samme måde som den gælder i kommentarfunktionen:
- Anonymous (standardindstillingen): ingen kan se, hvordan nogen stemte, så stemmerne kan ikke læses.
GET /api/v1/poll-votesogGET /api/v1/poll-votes/:idsvarer medpoll-anonymous. Afstemningens tællinger er stadig tilgængelige fraGET /api/v1/polls/:commentId. - Admins and moderators: din API-nøgle tilhører din sides administrator, så den kan læse stemmerne.
- Everyone: stemmerne kan læses.
Afstemningens privatliv kan indsnævres, men ikke udvides, når den har stemmer.
GET /api/v1/poll-votes 
Lister de individuelle stemmer bag en afstemnings optælling, ældste først. Én kredit per 100 stemmer returneret.
En afstemning tilhører en kommentar, så stemmer læses én afstemning ad gangen, og commentId er påkrævet. Indsnævr yderligere med voterId for at kontrollere, hvordan én person stemte, eller med optionId for at liste alle, der valgte en given mulighed.
Højst 1000 stemmer returneres pr. kald. Brug skip for at paginere videre.
Afstemningens privacy-indstilling respekteres: stemmerne på en anonym afstemning kan ikke læses, og anmodningen fejler med poll-anonymous. Se PollVote-strukturen for detaljer.



Counting Votes Per Option
Du behøver ikke at lægge dem sammen for at få resultaterne – afstemningen indeholder sine egne optællinger. Læs afstemningen med GET /api/v1/polls/:commentId i stedet, og brug dette API når du har brug for at vide, hvem der har stemt.
Every Poll On A Page
Der findes ingen sideomfattende stemmeliste. For at rapportere om en hel side, hent dens kommentarer med GET /api/v1/comments, som returnerer hver kommentars afstemning og dens optællinger, og læs derefter stemmerne for de afstemninger, du er interesseret i.
GET /api/v1/poll-votes/:id 
Læser en enkelt afstemningsstemme efter dens id.
En stemme på en anonym afstemning kan ikke læses, og anmodningen fejler med poll-anonymous. Se PollVote
strukturen for hvordan afstemningens privacy indstilling anvendes.



POST /api/v1/poll-votes 
Registrerer en stemme i en afstemning.
En vælger kan højst have én stemme pr. afstemning. Hvis du kalder dette igen for den samme vælger, flyttes deres stemme til den nye mulighed i stedet for at tilføje en anden, og at stemme på den mulighed, de allerede har valgt, gør intet.
Svaret inkluderer afstemningen, så du får de opdaterede optællinger uden en ekstra forespørgsel.




Anonyme Stemmer
Sæt anonUserId i stedet for userId for at registrere en stemme for en, der ikke er logget ind. Det id behøver ikke svare til en bruger nogen steder – det identificerer blot sessionen, så den samme person ikke tælles to gange.
Anonym afstemning skal være aktiveret for dit site. Hvis afstemning er begrænset til loggede brugere, fejler en stemme med kun et anonUserId med poll-login-required.
Anonyme stemmer er også hastighedsbegrænsede pr. IP pr. afstemning for at forhindre, at én person fylder en afstemning ved at rydde deres session. Send slutbrugerens ip, så begrænsningen gælder dem i stedet for din server.
Andre Bemærkninger
- En
userIdskal være en bruger, der findes på dit site. Stemmer for en bruger, der tilhører et andet site, afvises. - Afstemning i en lukket afstemning fejler med
poll-closed. - Dette API opdaterer optællingerne på afstemningen og sender dem live til tilsluttede widgets.
DELETE /api/v1/poll-votes/:id 
Trækker en stemme tilbage. Den mulighed, den blev afgivet på, får sin optælling tilbage, og vælgeren er fri til at stemme igen.



Andre bemærkninger
- Sletning af den samme stemme to gange svarer med
not-foundden anden gang, og optællingerne forbliver uændrede. - Hvis afstemningen er blevet erstattet siden stemmen blev afgivet, fjernes stemmen, men ingen optælling ændres, da erstatningen startede fra nul.
Afventende webhook-hændelsesstruktur 
Et PendingWebhookEvent-objekt repræsenterer en webhook-begivenhed i kø, der afventer.
PendingWebhookEvent-objekter oprettes automatisk og kan ikke oprettes manuelt via API'et. De udløber også efter et år.
De kan slettes, hvilket fjerner opgaven fra køen.
Der er forskellige begivenhedstyper - tjek eventType (OutboundSyncEventType) og type (OutboundSyncType).
Et almindeligt anvendelsestilfælde for dette API er at implementere brugerdefineret overvågning. Du vil måske kalde /count-endpointet periodisk
for at polle det udestående antal for givne filtre.
Strukturen for PendingWebhookEvent-objektet er som følger:

GET /api/v1/pending-webhook-events 
Denne rute returnerer en liste over afventende webhook-begivenheder under en pendingWebhookEvents-parameter.
Denne API bruger paginering, leveret af skip-parameteren. PendingWebhookEvents returneres i sider af 100, sorteret efter createdAt nyeste først.



GET /api/v1/pending-webhook-events/count 
Denne rute returnerer et objekt, der indeholder antallet af afventende webhook-begivenheder under en count-parameter.
Du kan filtrere efter de samme parametre som /pending-webhook-events-endpointet



DELETE /api/v1/pending-webhook-events/:id 
Denne rute tillader sletning af en enkelt PendingWebhookEvent.
Hvis du har brug for massesletning, kald GET API'et med paginering og kald derefter dette API sekventielt.



SSO-brugerstruktur 
FastComments provides an easy to use SSO solution. Updating a user's information with the HMAC-based integration is as simple as having the user load the page with an updated payload.
However, it may be desirable to manage a user outside that flow, to improve consistency of your application.
The SSO User API provides a way to CRUD objects that we call SSOUsers. These objects are different from regular Users and kept separate for type safety.
The structure for the SSOUser object is as follows:

Fakturering for SSO users
SSO users are billed differently based on their permission flags:
- Regular SSO Users: Users uden admin- eller moderatorrettigheder faktureres som regular SSO users
- SSO Admins: Users med
isAccountOwnerellerisAdminAdminflags faktureres separat som SSO Admins (samme takst som regular tenant admins) - SSO Moderators: Users med
isCommentModeratorAdminflag faktureres separat som SSO Moderators (samme takst som regular moderators)
Important: For at forhindre dobbeltfakturering deduplikerer systemet automatisk SSO users i forhold til regular tenant users og moderators ud fra e-mailadressen. Hvis en SSO user har samme email som en regular tenant user eller moderator, vil de ikke blive faktureret to gange.
Adgangskontrol
Users kan opdeles i grupper. Det er det, groupIds-feltet er til, og det er valgfrit.
@Mentions
Som standard bruger @mentions username til at søge efter andre sso users, når tegnet @ tastes. Hvis displayName bruges, vil resultater, der matcher
username, blive ignoreret, når der er et match for displayName, og @mention-søgeresultaterne vil bruge displayName.
Abonnementer
Med FastComments kan users abonnere på en side ved at klikke på klokkeikonet i kommentar-widgeten og klikke på Subscribe.
Med en regular user sender vi dem notifikations-e-mails baseret på deres notifikationsindstillinger.
Med SSO users deler vi dette op for bagudkompatibilitet. Users vil kun modtage disse ekstra abonnementsnotifikations-e-mails, hvis du sætter optedInSubscriptionNotifications til true.
Badges
Du kan tildele badges til SSO users ved hjælp af badgeConfig-egenskaben. Badges er visuelle indikatorer, der vises ved siden af en users navn i kommentarer.
badgeIds- Et array af badge IDs der tildeles useren. Disse er globale badges synlige på alle sider. Must be valid badge IDs created in your FastComments account. Limited to 30 badges.pageBadgeIds- Et valgfrit array af badge IDs scoped til den aktuelle side (urlId). Disse badges vises kun på den side, hvor de blev tildelt. Forskellige sider kan have forskellige page-scoped badges for samme user.override- Hvis true, vil alle eksisterende viste badges blive erstattet med de angivne. Globale og page-scoped badges overskrives uafhængigt — overskrivning af globale badges påvirker ikke page-scoped badges, og omvendt. Hvis false eller udeladt, tilføjes de angivne badges til eventuelle eksisterende badges.update- Hvis true, opdateres badge-visningsindstillinger fra tenant-konfigurationen, hver gang user logger ind.
GET /api/v1/sso-users 
Denne rute returnerer SSO-brugere i sider af 100. Paginering leveres via skip-parameteren. Brugere sorteres efter deres signUpDate og id.



GET /api/v1/sso-users/by-id/:id 
Denne rute returnerer en enkelt SSO-bruger efter deres id.



GET /api/v1/sso-users/by-email/:email 
Denne rute returnerer en enkelt SSO-bruger efter deres e-mail.



PATCH /api/v1/sso-users/:id 
Denne rute giver mulighed for at opdatere en enkelt SSO-bruger.



POST /api/v1/sso-users 
Denne rute giver mulighed for at oprette en enkelt SSO-bruger.
Forsøg på at oprette to brugere med det samme ID vil resultere i en fejl.

I dette eksempel angiver vi groupIds til adgangskontrol, men dette er valgfrit.


Integrationsbemærkning
Data sendt af API'et kan tilsidesættes simpelthen ved at sende en anden SSO User HMAC payload. For eksempel, hvis du sætter et brugernavn via API'et, men derefter sender et andet via SSO-flowet ved sideindlæsning, vil vi automatisk opdatere deres brugernavn.
Vi vil ikke opdatere brugerparametre i dette flow, medmindre du eksplicit angiver dem eller sætter dem til null (ikke undefined).
PUT /api/v1/sso-users/:id 
Denne rute giver mulighed for at opdatere en enkelt SSO-bruger.

I dette eksempel angiver vi groupIds til adgangskontrol, men dette er valgfrit.


DELETE /api/v1/sso-users/:id 
Denne rute giver mulighed for at fjerne en enkelt SSO-bruger efter deres id.
Bemærk at indlæsning af kommentar-widget'en igen med en payload for denne bruger simpelthen vil genskabe brugeren problemfrit.
Sletning af brugerens kommentarer er mulig via deleteComments query-parameteren. Bemærk at hvis dette er sandt:
- Alle brugerens kommentarer vil blive slettet live.
- Alle underordnede (nu forældreløse) kommentarer vil blive slettet eller anonymiseret baseret på hver kommentars tilknyttede sidekonfiguration. For eksempel, hvis trådsletningstilstand er "anonymize", så forbliver svar, og brugerens kommentarer vil blive anonymiseret. Dette gælder kun, når
commentDeleteModeerRemove(standardværdien). creditsCostbliver2.
Anonymiserede Kommentarer
Du kan beholde brugerens kommentarer, men blot anonymisere dem ved at sætte commentDeleteMode=1.
Hvis brugerens kommentarer er anonymiseret, så sættes følgende værdier til null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted og isDeletedUser sættes til true.
Ved rendering vil kommentar-widget'en bruge DELETED_USER_PLACEHOLDER (standard: "[deleted]") for brugerens navn og DELETED_CONTENT_PLACEHOLDER for kommentaren. Disse kan tilpasses via Widget Customization UI.
Eksempler



Abonnementsstruktur 
Et Subscription-objekt repræsenterer et abonnement for en bruger.
Subscription-objekter oprettes, når en bruger klikker på notifikationsklokken i kommentar-widget'en og klikker "Abonner på denne side".
Abonnementer kan også oprettes via API'et.
At have et Subscription-objekt medfører, at Notification-objekter genereres, og e-mails sendes, når nye kommentarer efterlades på roden af den tilknyttede side,
som Subscription er for. Afsendelse af e-mails afhænger af brugertypen. For almindelige brugere afhænger dette af optedInNotifications. For SSO-brugere afhænger dette af optedInSubscriptionNotifications. Bemærk at nogle applikationer måske ikke har konceptet om en web-tilgængelig side, i hvilket tilfælde du blot skal sætte urlId til
id'et for det element, du abonnerer på (samme værdi for urlId som du ville sende til kommentar-widget'en).
Strukturen for Subscription-objektet er som følger:

GET /api/v1/subscriptions/:id 
Denne rute returnerer op til 30 Subscription-objekter sorteret efter createdAt, nyeste først.
Du kan filtrere efter userId. Med SSO er bruger-id'et i formatet <tenant id>:<user id>.



POST /api/v1/subscriptions 
Dette API-endpoint giver mulighed for at oprette et Subscription. Bemærk at en bruger kun kan have ét abonnement pr. side, da flere er overflødige, og forsøg på
at oprette mere end ét abonnement for den samme bruger til den samme side vil resultere i en fejl.
Oprettelse af et abonnement vil resultere i, at Notification-objekter oprettes, når en ny kommentar efterlades på roden af det abonnerede urlId (når kommentar parentId er null).



DELETE /api/v1/subscriptions/:id 
Denne rute sletter et enkelt Subscription-objekt efter id.



Lejers daglige brugstruktur 
Et TenantDailyUsage-objekt repræsenterer forbruget for en tenant på en given dag. Hvis der ikke var nogen aktivitet for en given tenant på en given
dag, vil den dag ikke have et TenantDailyUsage-objekt.
TenantDailyUsage-objektet er ikke realtid og kan være minutter efter det faktiske forbrug.
Strukturen for TenantDailyUsage-objektet er som følger:

GET /api/v1/tenant-daily-usage 
Denne rute giver mulighed for at søge efter forbruget for en tenant efter år, måned og dag. Op til 365 objekter kan returneres, og omkostningen er 1 api-kredit pr. 10 objekter.
Svarobjekter sorteres efter datoen de er oprettet (de ældste først).



Lejerstruktur 
Tenant definerer en FastComments.com-kunde. De kan oprettes via API'et af tenants med white labeling adgang. White labeled tenants
kan ikke oprette andre white labeled tenants (kun ét niveau af indlejring er tilladt).
Strukturen for Tenant-objektet er som følger:

GET /api/v1/tenants/:id 
Denne rute returnerer en enkelt Tenant efter id.



GET /api/v1/tenants 
Dette API returnerer tenants, der administreres af din tenant.
Paginering leveres af skip-forespørgselsparameteren. Tenants returneres i sider af 100, sorteret efter signUpDate og id.
Omkostningen er baseret på antallet af returnerede tenants og koster 1 kredit pr. 10 returnerede tenants.

Du kan definere meta-parametre på Tenant-objekterne og forespørge efter matchende tenants. For eksempel, for nøglen someKey og meta-værdien some-value, kan vi
konstruere et JSON-objekt med dette nøgle/værdi-par og derefter URI-kode det som en forespørgselsparameter for at filtrere:



POST /api/v1/tenants 
Denne rute giver mulighed for at tilføje en enkelt Tenant.
Oprettelse af en Tenant har følgende begrænsninger:
- Et
nameer påkrævet. domainConfigurationer påkrævet.- Følgende værdier må ikke angives ved oprettelse af en
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDatemå ikke være i fremtiden.namemå ikke være længere end200 tegn.emailmå ikke være længere end300 tegn.emailskal være unik på tværs af alle FastComments.com tenants.- Du kan ikke oprette tenants, hvis den overordnede tenant ikke har en gyldig
TenantPackagedefineret.- Hvis din tenant blev oprettet via FastComments.com, bør dette ikke være et problem.
- Du kan ikke oprette flere tenants end defineret under
maxWhiteLabeledTenantsi din pakke. - Du skal angive
tenantId-forespørgselsparameteren, som er id'et for dinoverordnede tenantmed white labeling aktiveret.
Vi kan oprette en Tenant med kun få parametre:



PATCH /api/v1/tenants/:id 
Dette API-endpoint giver mulighed for at opdatere en Tenant efter id.
Opdatering af en Tenant har følgende begrænsninger:
- Følgende værdier kan ikke opdateres:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
signUpDatemå ikke være i fremtiden.namemå ikke være længere end200 tegn.emailmå ikke være længere end300 tegn.emailskal være unik på tværs af alle FastComments.com tenants.- Når du sætter
billingInfoValidtiltrue, skalbillingInfoangives i den samme anmodning. - Du kan ikke opdatere
packageIdtilknyttet din egen tenant. - Du kan ikke opdatere
paymentFrequencytilknyttet din egen tenant.



DELETE /api/v1/tenants/:id 
Denne rute giver mulighed for fjernelse af en Tenant og alle tilknyttede data (brugere, kommentarer osv.) efter id.
Følgende begrænsninger eksisterer omkring fjernelse af tenants:
- Tenant skal være din egen eller en white label tenant, som du administrerer.
sure-forespørgselsparameteren skal være sat tiltrue.



Lejers pakke-struktur 
TenantPackage definerer pakkeinformation tilgængelig for en Tenant. En tenant kan have mange pakker tilgængelige, men kun
én i brug på et givent tidspunkt.
En Tenant kan ikke bruges til nogen produkter, før dens packageId peger på en gyldig TenantPackage.
Der er to typer TenantPackage-objekter:
- Fastpris-pakker - hvor
hasFlexPricinger false. - Fleksibel prissætning - hvor
hasFlexPricinger true.
I begge tilfælde defineres grænser på kontoen ved hjælp af pakken, dog med Flex opkræves tenant en basispris plus
hvad de brugte, defineret af flex*-parametrene.
En tenant kan have flere tenant-pakker og have mulighed for selv at ændre pakken fra Faktureringsinformationssiden.
Hvis du selv vil håndtere fakturering for tenants, skal du stadig definere en pakke for hver tenant for at definere deres grænser. Sæt blot billingHandledExternally til true på Tenant, og de
vil ikke kunne ændre deres faktureringsinformation eller aktive pakke selv.
Du kan ikke oprette pakker med højere grænser end den overordnede tenant.
Strukturen for TenantPackage-objektet er som følger:

GET /api/v1/tenant-packages/:id 
Denne rute returnerer en enkelt Tenant Package efter id.



GET /api/v1/tenant-packages 
Dette API bruger paginering, leveret af skip-forespørgselsparameteren. TenantPackages returneres i sider af 100, sorteret efter createdAt og id.
Omkostningen er baseret på antallet af returnerede tenant-pakker og koster 1 kredit pr. 10 returnerede tenant-pakker.



POST /api/v1/tenant-packages 
Denne rute giver mulighed for at tilføje en enkelt TenantPackage.
Oprettelse af en TenantPackage har følgende begrænsninger:
- Følgende parametre er påkrævet:
nametenantIdmonthlyCostUSD- Kan være null.yearlyCostUSD- Kan være null.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- Hvis true, så er alleflex*-parametre påkrævet.
namemå ikke være længere end50 tegn.- Hvert
forWhoText-element må ikke være længere end200 tegn. - Hvert
featureTaglines-element må ikke være længere end100 tegn. TenantPackageskal være "mindre" end den overordnede tenant. For eksempel skal allemax*-parametre have lavere værdier end den overordnede tenant.- En white labeled tenant kan have maksimalt fem pakker.
- Kun tenants med white labeling adgang kan oprette en
TenantPackage. - Du kan ikke tilføje pakker til din egen tenant. :)
Vi kan oprette en TenantPackage som følger:



PATCH /api/v1/tenant-packages/:id 
Dette API-endpoint giver mulighed for at opdatere en TenantPackage efter id.
Opdatering af en TenantPackage har følgende begrænsninger:
- Hvis du sætter
hasFlexPricingtil true, så er alleflex*-parametre påkrævet i den samme anmodning. namemå ikke være længere end50 tegn.- Hvert
forWhoText-element må ikke være længere end200 tegn. - Hvert
featureTaglines-element må ikke være længere end100 tegn. TenantPackageskal være "mindre" end den overordnede tenant. For eksempel skal allemax*-parametre have lavere værdier end den overordnede tenant.- Du kan ikke ændre
tenantIdtilknyttet enTenantPackage.



DELETE /api/v1/tenant-packages/:id 
Denne rute giver mulighed for fjernelse af en TenantPackage efter id.
Du kan ikke fjerne en TenantPackage, der er i brug (en tenants packageId peger på pakken). Opdater Tenant først.



Lejers brugerstruktur 
TenantUser definerer en User, som administreres af en specifik tenant. Deres konto er under fuld kontrol af den tenant,
de er associeret med, og deres konto kan opdateres eller slettes via UI'et eller API'et.
Tenant-brugere kan være administratorer med alle tilladelser og adgang til Tenant, eller de kan være begrænset til specifikke tilladelser til
at moderere kommentarer, tilgå API-nøgler osv.
Strukturen for TenantUser-objektet er som følger:

GET /api/v1/tenant-users/:id 
Denne rute returnerer en enkelt TenantUser efter id.



GET /api/v1/tenant-users 
Dette API bruger paginering, leveret af skip-forespørgselsparameteren. TenantUsers returneres i sider af 100, sorteret efter signUpDate, username og id.
Omkostningen er baseret på antallet af returnerede tenant-brugere og koster 1 kredit pr. 10 returnerede tenant-brugere.



POST /api/v1/tenant-users 
Denne rute giver mulighed for at tilføje en enkelt TenantUser.
Oprettelse af en TenantUser har følgende begrænsninger:
- Et
usernameer påkrævet. - En
emailer påkrævet. signUpDatemå ikke være i fremtiden.localeskal være på listen over Understøttede Locales.usernameskal være unikt på tværs af hele FastComments.com. Hvis dette er et problem, foreslår vi at bruge SSO i stedet.emailskal være unikt på tværs af hele FastComments.com. Hvis dette er et problem, foreslår vi at bruge SSO i stedet.- Du kan ikke oprette flere tenant-brugere end defineret under
maxTenantUsersi din pakke.
Vi kan oprette en TenantUser som følger



POST /api/v1/tenant-users/:id/send-login-link 
Denne rute giver mulighed for at sende et login-link til en enkelt TenantUser.
Nyttigt ved batch-oprettelse af brugere uden at skulle instruere dem i, hvordan man logger ind på FastComments.com. Dette sender dem bare et "magic link" til login, der
udløber efter 30 dage.
Følgende begrænsninger eksisterer for at sende et login-link til en TenantUser:
TenantUserskal allerede eksistere.- Du skal have adgang til at administrere den
Tenant, somTenantUsertilhører.
Vi kan sende et login-link til en TenantUser som følger:

Dette sender en e-mail som Bob hos TenantName inviterer dig til at være moderator...


PATCH /api/v1/tenant-users/:id 
Denne rute giver mulighed for at opdatere en enkelt TenantUser.
Opdatering af en TenantUser har følgende begrænsninger:
signUpDatemå ikke være i fremtiden.localeskal være på listen over Understøttede Locales.usernameskal være unikt på tværs af hele FastComments.com. Hvis dette er et problem, foreslår vi at bruge SSO i stedet.emailskal være unikt på tværs af hele FastComments.com. Hvis dette er et problem, foreslår vi at bruge SSO i stedet.- Du kan ikke opdatere
tenantIdfor en bruger.
Vi kan oprette en TenantUser som følger



DELETE /api/v1/tenant-users/:id 
Denne rute giver mulighed for fjernelse af en TenantUser efter id.
Sletning af brugerens kommentarer er mulig via deleteComments-forespørgselsparameteren. Bemærk at hvis dette er true:
- Alle brugerens kommentarer vil blive slettet live.
- Alle underordnede (nu forældreløse) kommentarer vil blive slettet eller anonymiseret baseret på hver kommentars tilknyttede sidekonfiguration. For eksempel, hvis trådsletningsmode er "anonymiser", vil svar forblive, og brugerens kommentarer vil blive anonymiseret. Dette gælder kun når
commentDeleteModeerRemove(standardværdien). creditsCostbliver2.
Anonymiserede Kommentarer
Du kan bevare brugerens kommentarer, men blot anonymisere dem ved at sætte commentDeleteMode=1.
Hvis brugerens kommentarer anonymiseres, sættes følgende værdier til null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted og isDeletedUser sættes til true.
Ved rendering vil kommentar-widget'en bruge DELETED_USER_PLACEHOLDER (standard: "[deleted]") for brugerens navn og DELETED_CONTENT_PLACEHOLDER for kommentaren. Disse kan tilpasses via Widget-tilpasnings-UI'et.
Eksempler



Brugerstruktur 
User er et objekt, der repræsenterer en mest-almindelig-fællesnævner for alle brugere.
Husk at hos FastComments har vi en masse forskellige anvendelsestilfælde for brugere:
- Sikker SSO
- Simpel SSO
- Tenant-brugere (For eksempel: Administratorer)
- Kommentatorer
Dette API er til Kommentatorer og brugere oprettet via Simpel SSO. Grundlæggende kan enhver bruger oprettet
gennem din side tilgås via dette API. Tenant-brugere kan også hentes på denne måde, men du får mere information ved at interagere med /tenant-users/ API'et.
For Sikker SSO brug venligst /sso-users/ API'et.
Du kan ikke opdatere disse typer brugere. De oprettede deres konto gennem din side, så vi giver nogle grundlæggende skrivebeskyttet adgang, men
du kan ikke foretage ændringer. Hvis du vil have denne type flow - skal du opsætte Sikker SSO.
Strukturen for User-objektet er som følger:

GET /api/v1/users/:id 
Denne rute returnerer en enkelt User efter id.



Stemmestruktur 
Et Vote-objekt repræsenterer en stemme afgivet af en bruger.
Forholdet mellem kommentarer og stemme defineres via commentId.
Strukturen for Vote-objektet er som følger:

GET /api/v1/votes 
Stemmer skal hentes via urlId.
Typer af Stemmer
Der er tre typer stemmer:
- Autentificerede Stemmer, som anvendes på den tilsvarende kommentar. Du kan oprette disse via dette API.
- Autentificerede Stemmer, som afventer verifikation, og derfor endnu ikke er anvendt på kommentaren. Disse oprettes, når en bruger bruger FastComments.com's log ind for at stemme-mekanisme.
- Anonyme Stemmer, som anvendes på den tilsvarende kommentar. Disse oprettes sammen med anonym kommentering.
Disse returneres i separate lister i API'et for at reducere forvirring.



Bemærkninger om Anonyme Stemmer
Bemærk at anonyme stemmer oprettet via dette API vil fremgå i appliedAuthorizedVotes-listen. De betragtes som autoriserede, da de blev oprettet via API'et med en API-nøgle.
appliedAnonymousVotes-strukturen er til stemmer oprettet uden en e-mail, API-nøgle osv.
GET /api/v1/votes/for-user 
Giver mulighed for at hente stemmer afgivet af en bruger på et givent urlId. Tager et userId, som kan være enhver FastComments.com eller SSO User.
Dette er nyttigt, hvis du vil vise, om en bruger har stemt på en kommentar. Når du henter kommentarer, skal du blot kalde dette API på samme tid for brugeren med det
samme urlId.
Hvis du bruger anonym stemmeafgivelse, skal du i stedet sende anonUserId.


Bemærk at anonyme stemmer vil fremgå i appliedAuthorizedVotes-listen. De betragtes som autoriserede, da de blev oprettet via API'et med en API-nøgle.


POST /api/v1/votes 
Denne rute giver mulighed for at tilføje en enkelt autoriseret Vote. Stemmer kan være up (+1) eller down (-1).




Oprettelse af Anonyme Stemmer
Anonyme stemmer kan oprettes ved at sætte anonUserId i forespørgselsparametrene i stedet for userId.
Dette id behøver ikke at svare til et brugerobjekt nogen steder (deraf anonymt). Det er simpelthen en identifikator for sessionen, så du kan hente stemmer igen i samme session for at tjekke, om der er stemt på en kommentar.
Hvis du ikke har noget som "anonyme sessioner" som FastComments har - kan du blot sætte dette til et tilfældigt ID, som en UUID (selvom vi sætter pris på mindre identifikatorer for at spare plads).
Andre Bemærkninger
- Dette API overholder tenant-niveau indstillinger. For eksempel, hvis du deaktiverer afstemning for en given side, og du forsøger at oprette en stemme via API'et, vil det fejle med fejlkode
voting-disabled. - Dette API er live som standard.
- Dette API vil opdatere
votesfor den tilsvarendeComment.
DELETE /api/v1/votes/:id 
Denne rute giver mulighed for at slette en enkelt Vote.



Bemærkninger:
- Dette API overholder tenant-niveau indstillinger. For eksempel, hvis du deaktiverer afstemning for en given side, og du forsøger at oprette en stemme via API'et, vil det fejle med fejlkode
voting-disabled. - Dette API er live som standard.
- Dette API vil opdatere
votesfor den tilsvarendeComment.
Domænekonfigurationsstruktur 
Et DomainConfig-objekt repræsenterer konfiguration for et domæne for en lejer.
Strukturen for DomainConfig-objektet er som følger:


Til autentificering
Domænekonfiguration bruges til at bestemme, hvilke sider der kan hoste FastComments-widgetten for din konto. Dette er en grundlæggende form for autentificering, hvilket betyder, at tilføjelse eller fjernelse af domænekonfigurationer kan påvirke tilgængeligheden af din FastComments-installation i produktion.
Fjern eller opdater ikke domain-egenskaben for en Domain Config for et domæne, der i øjeblikket er i brug, medmindre formålet er at deaktivere det domæne.
Dette har samme adfærd som at fjerne et domæne fra /auth/my-account/configure-domains.
Bemærk også, at fjernelse af et domæne fra My Domains-brugerfladen vil fjerne enhver tilsvarende konfiguration for det domæne, som måtte være blevet tilføjet via denne brugerflade.
Til tilpasning af e-mails
Afmeldingslinket i e-mail-footeren og one-click-unsubscribe-funktionen, som tilbydes af mange e-mail-klienter, kan konfigureres via dette API ved hhv. at definere footerUnsubscribeURL og emailHeaders.
Til DKIM
Efter du har defineret dine DKIM DNS-poster, opdater blot DomainConfig med din DKIM-konfiguration ved hjælp af den definerede struktur.
GET /api/v1/domain-configs 
Denne API giver mulighed for at hente alle DomainConfig-objekter for en tenant.



GET /api/v1/domain-configs/:domain 
Individuelle DomainConfigs kan hentes via deres tilsvarende domain.



POST /api/v1/domain-configs 
Denne API-endpoint giver mulighed for at oprette domænekonfigurationer.
Tilføjelse af konfiguration for et domæne autoriserer det domæne til FastComments-kontoen.
Almindelige anvendelser af denne API er indledende opsætning, hvis mange domæner ønskes tilføjet, eller tilpasset konfiguration til afsendelse af e-mails.



PATCH /api/v1/domain-configs/:domain 
Denne API-endpoint giver mulighed for at opdatere en domænekonfiguration ved kun at angive domænet og attributten, der skal opdateres.



PUT /api/v1/domain-configs/:domain 
Denne API-endpoint giver mulighed for at erstatte en domænekonfiguration.



DELETE /api/v1/domain-configs/:domain 
Denne rute giver mulighed for at fjerne en enkelt DomainConfig efter id.
- Bemærk: Fjernelse af en
DomainConfigvil afautorisere det domæne fra at bruge FastComments. - Bemærk: Gentilføjelse af et domæne via brugergrænsefladen vil genskabe objektet (med kun
domainudfyldt).



Spørgsmålskonfigurationsstruktur 
FastComments giver en måde at konstruere spørgsmål og aggregere deres resultater. Et eksempel på et spørgsmål (herefter kaldet QuestionConfig)
kunne være en stjernebedømmelse, en skyder eller et NPS-spørgsmål (bestemt via type).
Spørgsmålsdata kan aggregeres individuelt, sammen, over tid, samlet, efter side og så videre.
Frameworket har alle de nødvendige funktioner til at bygge klientside-widgets (med din server foran dette API), admin-dashboards og rapporteringsværktøjer.
Først skal vi definere en QuestionConfig. Strukturen er som følger:

GET /api/v1/question-configs 
Denne rute returnerer op til 100 QuestionConfig-objekter ad gangen, pagineret. Prisen er 1 pr. hver 100 objekter. De er
sorteret efter spørgsmålstekst stigende (question-felt).



GET /api/v1/question-configs/:id 
Denne rute returnerer en enkelt QuestionConfig efter dens id.



POST /api/v1/question-configs 
Denne API-endpoint giver mulighed for at oprette en QuestionConfig.



PATCH /api/v1/question-configs/:id 
Denne rute giver mulighed for at opdatere en enkelt QuestionConfig.
Følgende struktur repræsenterer alle værdier, der kan ændres:




DELETE /api/v1/question-configs/:id 
Denne rute giver mulighed for at fjerne en QuestionConfig efter id.
Dette vil slette alle tilsvarende spørgsmålsresultater (men ikke kommentarerne). Dette er en del af den høje kreditomkostning.



Spørgsmålsresultatstruktur 
For at gemme resultater for spørgsmål opretter du et QuestionResult. Du kan derefter aggregere spørgsmålsresultater og også
knytte dem til kommentarer til rapporteringsformål.

GET /api/v1/question-results 
Denne rute returnerer op til 1000 QuestionResults-objekter ad gangen, pagineret. Prisen er 1 pr. hver 100 objekter. De er
sorteret efter createdAt, stigende. Du kan filtrere efter forskellige parametre.



GET /api/v1/question-results/:id 
Denne rute returnerer et enkelt QuestionResult efter dets id.



POST /api/v1/question-results 
Denne API-endpoint giver mulighed for at oprette et QuestionResult.



PATCH /api/v1/question-results/:id 
Denne rute giver mulighed for at opdatere et enkelt QuestionResult.
Følgende struktur repræsenterer alle værdier, der kan ændres:




DELETE /api/v1/question-results/:id 
Denne rute giver mulighed for at fjerne et QuestionResult efter id.



GET /api/v1/question-results-aggregate 
Her sker aggregering af resultater.
Aggregerings-svarstrukturen er som følger:

Her er query-parametrene tilgængelige for aggregering:

Her er et eksempel på en anmodning:

Eksempel på svar:


Ydelsesbemærkninger
- For en cache-miss tager aggregeringer generelt fem sekunder pr. million resultater.
- Ellers er anmodninger konstant-tid.
Caching og Omkostningsbemærkninger
- Når
forceRecalculateer angivet, er omkostningen altid10i stedet for de normale2. - Hvis cachen udløber og data genberegnes, er omkostningen stadig en konstant
2, hvisforceRecalculateikke er angivet. Cachen udløber baseret på datasættets størrelse, der aggregeres (kan variere mellem 30 sekunder og 5 minutter). - Dette er for at tilskynde brug af cachen.
GET /api/v1/question-results-aggregate/combine/comments 
Her sker kombination af resultater med kommentarer. Nyttigt til at oprette et "nylige positive og negative kommentarer" diagram for et produkt, for eksempel.
Du kan søge via et interval af værdier (inklusiv), et eller flere spørgsmål og efter en startdato (inklusiv).
Svarstrukturen er som følger:

Her er query-parametrene tilgængelige for aggregering:

Her er et eksempel på en anmodning:

Eksempel på svar:


Caching og Omkostningsbemærkninger
- Når
forceRecalculateer angivet, er omkostningen altid10i stedet for de normale2. - Hvis cachen udløber og data genberegnes, er omkostningen stadig en konstant
2, hvisforceRecalculateikke er angivet. - Dette er for at tilskynde brug af cachen.
Brugerbadge-struktur 
UserBadge er et objekt, der repræsenterer et badge tildelt en bruger i FastComments-systemet.
Badges kan tildeles brugere automatisk baseret på deres aktivitet (såsom antal kommentarer, svartid, veteranstatur) eller manuelt af webstedsadministratorer.
Strukturen for UserBadge-objektet er som følger:

GET /api/v1/user-badges 
Dette endepunkt giver dig mulighed for at hente bruger-badges baseret på forskellige kriterier.
Example Request:
Run 
Du kan tilføje forskellige forespørgselsparametre for at filtrere resultaterne:
userId- Få badges for en specifik brugerbadgeId- Få forekomster af et specifikt badgetype- Filtrer efter badge-type (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, osv. Se UserBadge-strukturen for den fulde liste)displayedOnComments- Filtrer efter om badge vises på kommentarer (true/false)limit- Maksimalt antal badges der returneres (standard 30, maks 200)skip- Antal badges der springes over (til paginering)
Example Response:

Mulige fejlresponser:


GET /api/v1/user-badges/:id 
Dette endpoint giver dig mulighed for at hente et specifikt bruger-badge efter dets unikke ID.
Eksempel på Anmodning:
Run 
Eksempel på Svar:

Mulige Fejlsvar:


POST /api/v1/user-badges 
Dette endpoint giver dig mulighed for at oprette en ny bruger-badge tildeling.
Eksempel på Anmodning:
Run 
Anmodningskroppen skal indeholde følgende parametre:
userId(påkrævet) - ID'et for brugeren, der skal tildeles badge'etbadgeId(påkrævet) - ID'et for badge'et, der skal tildelesdisplayedOnComments(valgfrit) - Om badge'et skal vises på brugerens kommentarer (standard er true)
Vigtige Bemærkninger:
- Badge'et skal eksistere og være aktiveret i din tenants badge-katalog
- Du kan kun tildele badges til brugere, der tilhører din tenant eller har kommenteret på din side
Eksempel på Svar:

Mulige Fejlsvar:





PUT /api/v1/user-badges/:id 
Dette endpoint giver dig mulighed for at opdatere en bruger-badge tildeling.
I øjeblikket er den eneste egenskab, der kan opdateres, displayedOnComments, som styrer, om badge'et vises på brugerens kommentarer.
Eksempel på Anmodning:
Run 
Eksempel på Svar:

Mulige Fejlsvar:



DELETE /api/v1/user-badges/:id 
Dette endpoint giver dig mulighed for at slette en bruger-badge tildeling.
Eksempel på Anmodning:
Run 
Eksempel på Svar:

Mulige Fejlsvar:



Brugerbadge-fremskridtsstruktur 
UserBadgeProgress er et objekt, der repræsenterer en brugers fremskridt mod at optjene forskellige badges i FastComments-systemet.
Denne sporing hjælper med at bestemme, hvornår brugere skal modtage automatiske badges baseret på deres aktivitet og deltagelse i dit fællesskab.
Strukturen for UserBadgeProgress-objektet er som følger:

GET /api/v1/user-badge-progress 
Dette endpoint giver dig mulighed for at hente bruger-badge fremskridtsposter baseret på forskellige kriterier.
Eksempel på Anmodning:
Run 
Du kan tilføje forskellige forespørgselsparametre for at filtrere resultaterne:
userId- Hent fremskridt for en specifik brugerlimit- Maksimalt antal poster at returnere (standard 30, maks 200)skip- Antal poster at springe over (til paginering)
Eksempel på Svar:

Mulige Fejlsvar:


GET /api/v1/user-badge-progress/:id 
Dette endpoint giver dig mulighed for at hente en specifik bruger-badge fremskridtspost efter dens unikke ID.
Eksempel på Anmodning:
Run 
Eksempel på Svar:

Mulige Fejlsvar:


GET /api/v1/user-badge-progress/user/:userId 
Dette endpoint giver dig mulighed for at hente en brugers badge-fremskridtspost efter deres bruger-ID.
Eksempel på Anmodning:
Run 
Eksempel på Svar:

Mulige Fejlsvar:



Afslutningsvis
Vi håber, at du har fundet vores API-dokumentation grundig og nem at forstå. Hvis du finder nogen mangler, så lad os det vide nedenfor.