
Jezik 🇭🇷 Hrvatski
Resursi API-ja
Agregacije
Zapisnici revizije
Komentari
Predlošci e-pošte
Hashtagovi
Moderatori
Broj obavijesti
Obavijesti
Stranice
Događaji webhooka na čekanju
SSO korisnici
Pretplate
Dnevna upotreba najmoprimca
Najmoprimci
Paketi najmoprimaca
Korisnici najmoprimca
Korisnici
Glasovi
Konfiguracije domena
Konfiguracije pitanja
Rezultati pitanja
Agregacija rezultata pitanja
Značke korisnika
Napredak značke korisnika
FastComments API
FastComments pruža API za interakciju s mnogim resursima. Izgradite integracije s našom platformom ili čak napravite vlastite klijente!
U ovoj dokumentaciji pronaći ćete sve podržane resurse koje API dokumentira zajedno s njihovim tipovima zahtjeva i odgovora.
Za Enterprise korisnike, sav pristup API-ju bilježi se u dnevniku revizije.
Generirani SDK-ovi
FastComments sada generira API Spec iz našeg koda (ovo još nije potpuno dovršeno, ali uključuje mnoge API-je).
Također sada imamo SDK-ove za popularne jezike:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Autentifikacija
API se autentificira prosljeđivanjem vašeg API ključa kao ili X-API-KEY zaglavlje ili API_KEY query parametar. Također ćete trebati svoj tenantId za pozivanje API-ja. To se može dohvatiti na istoj stranici kao i vaš api ključ.
Sigurnosna napomena
Ove rute namijenjene su pozivanju s poslužitelja. NEMOJTE ih pozivati iz preglednika. To će otkriti vaš API ključ - to će pružiti potpuni pristup vašem računu svima koji mogu pregledati izvorni kod stranice!
Opcija autentifikacije 1 - Zaglavlja
- Zaglavlje:
X-API-KEY - Zaglavlje:
X-TENANT-ID
Opcija autentifikacije 2 - Parametri upita
- Parametar upita:
API_KEY - Parametar upita:
tenantId
Resursi API-ja 
Korištenje resursa
Treba napomenuti da se dohvaćanje podataka iz API-ja računa kao korištenje na vašem računu.
Svaki resurs navodi to korištenje u svom vlastitom odjeljku.
Neki resursi koštaju više za posluživanje od drugih. Svaka krajnja točka ima fiksni trošak kredita po API pozivu. Za neke krajnje točke, broj kredita varira ovisno o opcijama i veličinama odgovora.
Korištenje API-ja može se provjeriti na stranici Analitika naplate i ažurira se svakih nekoliko minuta.
Napomena!
Preporučujemo da prvo pročitate dokumentaciju Stranica kako biste ograničili zabunu pri određivanju vrijednosti za urlId u API-ju za komentare.
Agregirajte svoje podatke 
Ovaj API agregira dokumente grupiranjem (ako je naveden groupBy) i primjenom više operacija. Podržane su različite operacije (npr. sum, countDistinct, avg, itd.).
Trošak je varijabilan. Svakih 500 pregledanih objekata košta 1 API kredit.
Maksimalna dopuštena upotreba memorije po API pozivu po zadanim postavkama iznosi 64MB, a po zadanim postavkama možete imati samo jednu agregaciju koja se izvršava u jednom trenutku. Ako istodobno pošaljete više agregacija, bit će stavljenje u red i izvršene redoslijedom podnošenja. Neobrađene agregacije čekat će najviše 60 sekundi, nakon čega će zahtjev isteći. Pojedinačne agregacije mogu se izvršavati do 5 minuta.
Ako imate upravljane tenante, možete agregirati sve resurse podređenih tenant-a u jednom pozivu prosljeđivanjem query parametra parentTenantId.
Primjeri
Primjer: Brojanje jedinstvenih


Primjer: Brojanje različitih vrijednosti

Odgovor:

Primjer: Zbroj vrijednosti više polja

Odgovor:

Primjer: Prosjek vrijednosti više polja

Odgovor:

Primjer: Min/Max vrijednosti više polja

Odgovor:

Primjer: Brojanje jedinstvenih vrijednosti više polja

Odgovor:

Primjer: Kreiranje upita

Odgovor:

Primjer: Brojanje komentara na čekanju pregleda

Odgovor:

Primjer: Pregled raspodjele odobrenih, pregledanih i spam komentara

Odgovor:

Strukture


Sljedeći resursi mogu se agregirati:
- 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
Struktura zapisnika revizije 
AuditLog je objekt koji predstavlja revidirani događaj za stanare koji imaju pristup ovoj značajci.
Struktura za AuditLog objekt je sljedeća:

Revizijski zapisnik je nepromjenjiv. Također se ne može ručno pisati u njega. FastComments.com može odlučiti samo kada pisati u revizijski zapisnik. Međutim, možete ga čitati putem ovog API-ja.
Događaji u revizijskom zapisniku istječu nakon dvije godine.
GET /api/v1/audit-logs 
Ovaj API koristi paginaciju, koju omogućuju parametri skip, before i after. AuditLogs se vraćaju na stranicama od 1000, poredani po when i id.
Dohvaćanje svakih 1000 zapisnika ima trošak kredita od 10.
Prema zadanim postavkama, primit ćete popis s najnovijim stavkama na prvom mjestu. Na taj način možete početi s skip=0, paginirajući dok ne pronađete zadnji zapis koji ste konzumirali.
Alternativno, možete sortirati od najstarijeg prema naprijed i paginirati dok nema više zapisa.
Sortiranje se može izvršiti postavljanjem order na ASC ili DESC. Zadano je ASC.
Upit prema datumu moguć je putem before i after kao vremenskih oznaka s milisekundama. before i after NISU uključivi.



Struktura komentara 
Objekt Comment predstavlja komentar koji je ostavio korisnik.
Odnos između roditeljskih i podređenih komentara definira se putem parentId.
Struktura objekta Comment je sljedeća:

Neka od ovih polja su označena kao READONLY - ona se vraćaju iz API-ja, ali se ne mogu postaviti.
Struktura teksta komentara
Komentari su pisani u FastComments varijanti Markdowna, što je običan Markdown uz tradicionalne bbcode stil oznake za slike, poput [img]path[/img].
Tekst se pohranjuje u dva polja. Tekst koji je korisnik unio pohranjuje se neizmijenjen u polje comment. Taj tekst se renderira i pohranjuje u polje commentHTML.
Dozvoljene HTML oznake su b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Preporučuje se renderiranje HTML-a; budući da je riječ o vrlo malom podskupu HTML-a, izrada renderera je relativno jednostavna. Na primjer, postoje više knjižnica za React Native i Flutter koje mogu pomoći s tim
Možete odabrati renderiranje ne-normiranog sadržaja polja comment. Primjer parsera nalazi se ovdje..
Primjer parsera također se može prilagoditi za rad s HTML-om te transformirati HTML oznake u očekivane elemente za renderiranje na vašoj platformi.
Označavanje
Kada su korisnici označeni u komentaru, informacija se pohranjuje u listu nazvanu mentions. Svaki objekt u toj listi ima sljedeću strukturu.
Run 
HashTags
Kada se koriste hashtagovi i uspješno su parsirani, informacija se pohranjuje u listu nazvanu hashTags. Svaki objekt u toj listi ima sljedeću strukturu. Hashtagovi se također mogu ručno dodati u niz hashTags komentara za upite, ako je retain postavljen.
Run 
GET /api/v1/comments 
Ovaj API se koristi za dohvaćanje komentara za prikaz korisniku. Na primjer, automatski filtrira neopravdane ili spam komentare.
Straničenje
Straničenje se može obaviti na jedan od dva načina, ovisno o zahtjevima za performansama i upotrebi:
- Najbrže: Prethodno izračunato straničenje:
- Ovo je način na koji FastComments radi kada koristite naše predloške widgeta i klijente.
- Klik na "next" jednostavno povećava broj stranice.
- Možete to promatrati kao dohvaćanje iz key-value spremišta.
- Na ovaj način jednostavno definirajte parametar
pagepočevši od0i smjer sortiranja kaodirection. - Veličine stranica se mogu prilagoditi putem pravila za prilagodbu.
- Najfleksibilnije: Fleksibilno straničenje:
- Na ovaj način možete definirati prilagođene parametre
limitiskip. Nemojte slatipage. - Podržan je i smjer sortiranja
direction. limitje ukupni broj koji treba vratiti nakon primjeneskip.- Primjer: postavite
skip = 200, limit = 100kada jepage size = 100ipage = 2.
- Primjer: postavite
- Dječji komentari se i dalje računaju u straničenju. Možete zaobići ovo koristeći opciju
asTree.- Dječje komentare možete straničiti putem
limitChildreniskipChildren. - Možete ograničiti dubinu niti koja se vraća putem
maxTreeDepth.
- Dječje komentare možete straničiti putem
- Na ovaj način možete definirati prilagođene parametre
Niti
- Kada koristite
Precalculated Pagination, komentari se grupiraju po stranici i komentari u nitima utječu na ukupnu stranicu.- Na ovaj način, niti se mogu odrediti na klijentu na temelju
parentId. - Na primjer, za stranicu s jednim komentarom najviše razine i 29 odgovora, te postavljenim
page=0u API-ju — dobit ćete samo komentar najviše razine i 29 djece. - Primjer slike koja ilustrira više stranica.
- Na ovaj način, niti se mogu odrediti na klijentu na temelju
- Kada koristite
Flexible Pagination, možete definirati parametarparentId.- Postavite ga na null da biste dobili samo komentare najviše razine.
- Zatim, za pregled niti, pozovite API ponovo i proslijedite
parentId. - Uobičajeno rješenje je napraviti API poziv za komentare najviše razine i potom paralelne API pozive za dohvaćanje komentara za djecu svakog komentara.
- NOVO od veljače 2023.! Dohvatite kao stablo koristeći
&asTree=true.- Možete ovo promatrati kao
Fleksibilno straničenje kao stablo. - Samo komentari najviše razine se računaju u straničenju.
- Postavite
parentId=nullda započnete stablo u korijenu (morate postavitiparentId). - Postavite
skipilimitza straničenje. - Postavite
asTreenatrue. - Trošak kredita se povećava za
2x, jer naš backend mora obaviti puno više posla u ovom scenariju. - Po potrebi postavite
maxTreeDepth,limitChildreniskipChildren.
- Možete ovo promatrati kao
Objašnjenje stabala
Kod korištenja asTree, može biti teško razmišljati o straničenju. Evo korisne grafike:
Dohvaćanje komentara u kontekstu korisnika
API /comments se može koristiti u dva konteksta, za različite slučajeve upotrebe:
- Za vraćanje komentara sortiranih i označenih informacijama za izgradnju vlastitog klijenta.
- U tom slučaju definirajte upitni parametar
contextUserId.
- U tom slučaju definirajte upitni parametar
- Za dohvaćanje komentara iz vašeg backend-a za prilagođene integracije.
- Platforma će prema zadanim postavkama koristiti ovo bez
contextUserId.
- Platforma će prema zadanim postavkama koristiti ovo bez




Dohvati komentare kao stablo
Moguće je dobiti komentare vraćene kao stablo, pri čemu se straničenje računa samo za komentare najviše razine.

Želite li dobiti samo komentare najviše razine i neposrednu djecu? Evo jednog načina:

Međutim, u vašem UI-ju možda ćete trebati znati treba li pokazati gumb "prikaži odgovore" na svakom komentaru. Kada dohvaćate komentare putem stabla, postoji svojstvo hasChildren dodano komentarima kada je primjenjivo.
Dohvaćanje komentara kao stabla, pretraživanje po hashtag-u
Moguće je pretraživati po hashtag-u koristeći API, preko cijelog vašeg tenanta (nije ograničeno na jednu stranicu ili urlId).
U ovom primjeru izostavljamo urlId, i pretražujemo po više hashtagova. API će vratiti samo komentare koji imaju sve tražene hashtagove.

Svi parametri zahtjeva

Odgovor

Korisni savjeti
URL ID
Vjerojatno želite koristiti Comment API s parametrima urlId. Možete prvo pozvati Pages API da vidite kako izgledaju dostupne vrijednosti urlId.
Anonimne radnje
Za anonimno komentiranje vjerojatno želite proslijediti anonUserId pri dohvaćanju komentara, kao i pri prijavljivanju i blokiranju.
(!) Ovo je zahtjev za mnoge trgovine aplikacija jer korisnici moraju moći prijaviti sadržaj koji su korisnici stvorili i koji mogu vidjeti, čak i ako nisu prijavljeni. Nepoštivanje toga može uzrokovati uklanjanje vaše aplikacije iz navedene trgovine.
Komentari se ne vraćaju
Provjerite jesu li vaši komentari odobreni i da nisu spam.
GET /api/v1/comments/:id 
Ovaj API omogućuje dohvat jednog komentara prema ID-u.



POST /api/v1/comments 
This API endpoint provides the ability to create comments.
Common use cases are custom UIs, integrations, or imports.
Notes:
- This API can update the comment widget "live" if desired (this increases
creditsCostfrom1to2). - This API will automatically create user objects in our system if email is provided.
- Trying to save two comments with different emails, but the same username, will result in an error for the second comment.
- If you are specifying
parentId, and a child comment hasnotificationSentForParentas false, we will send notifications for the parent comment. This is done every hour (we batch the notifications together to decrease the number of emails sent). - If you want to send welcome emails when creating users, or comment verification emails, set
sendEmailstotruein query parameters. - Comments created via this API will show up in the Analytics and Moderation pages of the admin app.
- "bad words" are still masked in the commenter names and comment text if the setting is turned on.
- Comments created via this API can still be checked for spam if desired.
- Configuration such as max comment length, if configured via the Customization Rule admin page, will apply here.
The minimum data required to submit that will show in the comment widget, is as follows:

A more realistic request may look like:



PATCH /api/v1/comments/:id 
Ovaj API endpoint omogućuje ažuriranje jednog komentara.
Napomene:
- Ovaj API može ažurirati widget komentara "uživo" ako želite (to povećava osnovni
creditsCosts1na2).- To može učiniti migraciju komentara između stranica "uživo" (promjenom
urlId). - Migracije koštaju dodatna
2kredita jer se stranice prethodno izračunavaju i to je CPU-intenzivno.
- To može učiniti migraciju komentara između stranica "uživo" (promjenom
- Za razliku od create API-ja, ovaj API NEĆE automatski kreirati korisničke objekte u našem sustavu ako je naveden email.
- Komentari ažurirani putem ovog API-ja i dalje se mogu provjeriti na spam ako želite.
- Konfiguracije poput maksimalne duljine komentara, ako su postavljene putem stranice administracije Customization Rule, primjenjuju se ovdje.
- Da biste omogućili korisnicima ažuriranje teksta komentara, možete jednostavno navesti
commentu tijelu zahtjeva. Mi ćemo generirati rezultirajućicommentHTML.- Ako definirate oba
commenticommentHTML, nećemo automatski generirati HTML. - Ako korisnik u svom novom tekstu doda spominjanja ili hashtagove, oni će se i dalje obraditi kao kod
POSTAPI-ja.
- Ako definirate oba
- Pri ažuriranju
commenterEmailna komentaru, najbolje je također navestiuserId. Inače morate osigurati da korisnik s tim emailom pripada vašem tenantu, inače će zahtjev biti odbijen.



DELETE /api/v1/comments/:id 
Ova API krajnja točka pruža mogućnost brisanja komentara.
Napomene:
- Ovaj API može ažurirati widget za komentare "uživo" ako je potrebno (ovo povećava
creditsCosts1na2). - Ovaj API će izbrisati sve podređene komentare.



POST /api/v1/comments/:id/flag 
Ova API krajnja točka pruža mogućnost označavanja komentara za određenog korisnika.
Napomene:
- Ovaj poziv se uvijek mora izvršiti u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik ili korisnik stanara.
- Ako je postavljen prag za skrivanje označavanjem, komentar će automatski biti skriven uživo nakon što je označen definirani broj puta.
- Nakon što je automatski skriven (neodobren) - komentar može ponovno odobriti samo administrator ili moderator. Uklanjanje oznake neće ponovno odobriti komentar.

Za anonimno označavanje, moramo navesti anonUserId. Ovo može biti ID koji predstavlja anonimnu sesiju ili nasumični UUID.
Ovo nam omogućuje podršku za označavanje i uklanjanje oznake s komentara čak i ako korisnik nije prijavljen. Na taj način, komentar može biti označen kao
označen kada se komentari dohvaćaju s istim anonUserId.



POST /api/v1/comments/:id/un-flag 
Ovaj API endpoint pruža mogućnost uklanjanja označavanja (un-flag) komentara za određenog korisnika.
Napomene:
- Ovaj poziv uvijek se mora izvršiti u kontekstu korisnika. Korisnik može biti FastComments.com User, SSO User, ili Tenant User.
- Nakon što je komentar automatski odbijen (sakriven) - komentar može ponovno odobriti samo administrator ili moderator. Uklanjanje oznake (un-flagging) neće ponovno odobriti komentar.

Za anonimno označavanje, moramo navesti anonUserId. To može biti ID koji predstavlja anonimnu sesiju, ili nasumični UUID.



POST /api/v1/comments/:id/block 
Ova API krajnja točka pruža mogućnost blokiranja korisnika koji je napisao dani komentar. Podržava blokiranje iz komentara koje su napisali FastComments.com korisnici, SSO korisnici i korisnici stanara.
Podržava parametar tijela commentIdsToCheck za provjeru treba li bilo koji drugi potencijalno vidljivi komentari na klijentu biti blokirani/odblokirani nakon izvršenja ove radnje.
Napomene:
- Ovaj poziv se uvijek mora izvršiti u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik ili korisnik stanara.
userIdu zahtjevu je korisnik koji vrši blokiranje. Na primjer:Korisnik Aželi blokiratiKorisnika B. ProslijediteuserId=Korisnik Ai ID komentara koji je napisaoKorisnik B.- Potpuno anonimni komentari (bez ID-a korisnika, bez e-pošte) ne mogu se blokirati i bit će vraćena pogreška.

Za anonimno blokiranje, moramo navesti anonUserId. Ovo može biti ID koji predstavlja anonimnu sesiju ili nasumični UUID.
Ovo nam omogućuje podršku za blokiranje komentara čak i ako korisnik nije prijavljen dohvaćanjem komentara s istim anonUserId.



POST /api/v1/comments/:id/un-block 
Ovaj API endpoint omogućuje deblokiranje korisnika koji je napisao određeni komentar. Podržava deblokiranje komentara koje su napisali FastComments.com korisnici, SSO korisnici i Tenant korisnici.
Podržava body parametar commentIdsToCheck za provjeru trebaju li nakon ove radnje biti blokirani/deblokirani neki drugi potencijalno vidljivi komentari na klijentu.
Napomene:
- Ovaj poziv uvijek se mora izvršiti u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik ili Tenant korisnik.
- The
userIdin the request is the user that is doing the un-blocking. For example:User Awants to Un-BlockUser B. PassuserId=User Aand the comment id thatUser Bwrote. - Potpuno anonimni komentari (bez ID-a korisnika, bez e-maila) ne mogu biti blokirani i bit će vraćena pogreška.




Struktura predloška e-pošte 
Objekt EmailTemplate predstavlja konfiguraciju za prilagođeni predložak e-pošte za zakupnika.
Sustav će odabrati predložak e-pošte za upotrebu putem:
- Njegovog identifikatora tipa, koji nazivamo
emailTemplateId. To su konstante. - Polja
domain. Najprije ćemo pokušati pronaći predložak za domenu s kojom je povezani objekt (poputComment) povezan, a ako se podudaranje ne pronađe tada ćemo pokušati pronaći predložak gdje je domain null ili*.
Struktura objekta EmailTemplate je sljedeća:

Bilješke
- Valjane vrijednosti
emailTemplateIdmožete dobiti s endpointa/definitions. - Endpoint
/definitionstakođer uključuje zadane prijevode i testne podatke. - Predlošci će propasti pri spremanju ako struktura ili testni podaci nisu valjani.
GET /api/v1/email-templates/:id 
Pojedinačne EmailTemplates mogu se dohvatiti prema njihovom odgovarajućem id-u (NE emailTemplateId).



GET /api/v1/email-templates 
Ovaj API koristi paginaciju, zadanu parametrom upita page. EmailTemplates se vraćaju u stranicama po 100, poredane prema createdAt, a zatim prema id.



PATCH /api/v1/email-templates/:id 
Ovaj API endpoint omogućuje ažuriranje predloška e-pošte tako da se navede samo id i atributi koje treba ažurirati.
Imajte na umu da vrijede ista pravila validacije kao i pri stvaranju predloška, na primjer:
- Predložak se mora renderirati. To se provjerava pri svakom ažuriranju.
- Ne možete imati duplicirane predloške za istu domenu (inače bi jedan bio tiho ignoriran).



POST /api/v1/email-templates 
Ovaj API endpoint omogućuje kreiranje predložaka e-pošte.
Bilješke:
- Ne možete imati više predložaka s istim
emailTemplateIdza istu domenu. - Međutim, možete imati univerzalni predložak (
domain=*) i predložak specifičan za domenu za istiemailTemplateId. - Navođenje
domainima smisla samo ako imate različite domene ili želite koristiti specifične predloške za testiranje (domainpostavljen nalocalhostitd.). - Ako navedete
domain, mora odgovaratiDomainConfig. U slučaju greške daje se popis valjanih domena. - Sintaksa predloška je EJS i renderira se s timeoutom od 500 ms. P99 za renderiranje je <5 ms, tako da ako dosegnete 500 ms nešto nije u redu.
- Vaš predložak mora renderirati s danim
testDatada bi se spremio. Greške pri renderiranju se agregiraju i prikazuju u nadzornoj ploči (uskoro dostupno putem API-ja).
Minimalni podaci potrebni za dodavanje predloška su sljedeći:

Možda ćete htjeti imati predloške po web-mjestu, u kojem slučaju definirate domain:



POST /api/v1/email-templates/render 
Ovaj API endpoint omogućuje pregled predložaka e-pošte.



DELETE /api/v1/email-templates/:id 
Ova ruta omogućuje uklanjanje jednog EmailTemplate po id-u.



Struktura hashtagova 
Objekt HashTag predstavlja oznaku koju može ostaviti korisnik. HashTagovi se mogu koristiti za povezivanje na vanjski sadržaj ili za povezivanje srodnih komentara.
Struktura za objekt HashTag je sljedeća:

Notes:
- In some API endpoints you will see that the hashtag is used in the URL. Remember to URI-Encoded values. For example,
#should instead be represented as%23. - Some of these fields are marked
READONLY- these are returned by the API but cannot be set.
GET /api/v1/hash-tags 
Ovaj API koristi paginaciju, koju osigurava query parametar page. HashTagovi se vraćaju po 100 po stranici, poredani po tag.



PATCH /api/v1/hash-tags/:tag 
Ova ruta omogućuje ažuriranje pojedinačnog HashTag-a.



POST /api/v1/hash-tags 
Ova ruta omogućuje dodavanje jednog HashTag.



POST /api/v1/hash-tags/bulk 
Ova ruta omogućuje dodavanje do 100 HashTag objekata odjednom.



DELETE /api/v1/hash-tags/:tag 
Ova ruta omogućuje uklanjanje HashTag korisnika pomoću zadanog taga.
Imajte na umu da, osim ako automatsko stvaranje HashTag nije onemogućeno, hashtagovi se mogu ponovno stvoriti ako korisnik unese hashtag pri komentiranju.



Struktura moderatora 
Objekt Moderator predstavlja konfiguraciju za moderatora.
Postoje tri vrste moderatora:
- Korisnici administratorske uloge koji imaju oznaku
isCommentModeratorAdmin. - SSO korisnici s oznakom
isCommentModeratorAdmin. - Obični komentatori, odnosno korisnici FastComments.com-a, koji su pozvani kao Moderatori.
Struktura Moderator koristi se za prikaz stanja moderiranja za slučaj upotrebe 3.
Ako želite pozvati korisnika da postane moderator putem API-ja, upotrijebite Moderator API stvaranjem Moderator i inviting njih.
Ako korisnik nema račun na FastComments.com, e‑poruka s pozivnicom pomoći će im pri postavljanju računa. Ako već imaju račun, dobit će pristup moderiranju vašem tenantu i svojstvo userId na objektu Moderator bit će ažurirano tako da pokazuje na njihovog korisnika. Nećete imati API pristup njihovom korisničkom računu, jer u tom slučaju on pripada njima i upravlja ga FastComments.com.
Ako vam je potrebna potpuna kontrola nad korisničkim računom, preporučujemo ili korištenje SSO-a, ili dodavanje korisnika kao Korisnik tenanta i potom dodavanje Moderator objekta za praćenje njihovih statistika.
Struktura Moderator može se koristiti kao mehanizam za praćenje statistike za slučajeve upotrebe 1 i 2. Nakon stvaranja korisnika, dodajte Moderator objekt s definiranim userId i njihove će statistike biti praćene na Stranica moderatora komentara.
Struktura objekta Moderator je sljedeća:

GET /api/v1/moderators/:id 
Ova ruta vraća jednog moderatora prema njihovom ID-u.



GET /api/v1/moderators 
Ovaj API koristi paginaciju, koju pruža query parametar skip. Moderatori se vraćaju u stranicama po 100, poredani po createdAt i id.
Trošak se temelji na broju vraćenih moderatora, iznosi 1 credit per 10 vraćenih moderatora.



PATCH /api/v1/moderators/:id 
This API endpoint provides the ability to update a Moderator by id.
Updating a Moderator has the following restrictions:
- The following values may not be provided when updating a
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- When a
userIdis specified, that user must exist. - When a
userIdis specified, they must belong to the sametenantIdspecified in query params. - Two moderators in the same tenant cannot be added with the same
email. - You may not change the
tenantIdassociated with aModerator.



POST /api/v1/moderators 
Ova ruta omogućuje dodavanje jednog Moderator.
Kreiranje Moderator ima sljedeća ograničenja:
- Obavezno je navesti
nameiemail.userIdje neobavezno. - Sljedeće vrijednosti se ne smiju navoditi pri stvaranju
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Ako je naveden
userId, taj korisnik mora postojati. - Ako je naveden
userId, mora pripadati istomtenantIdnavedenom u parametrima upita. - Dva moderatora unutar istog tenanta ne mogu biti dodana s istim
email.
Možemo stvoriti Moderator za korisnika za kojeg znamo samo email:

Ili možemo stvoriti Moderator za korisnika koji pripada našem tenantu, kako bismo pratili njihove statistike moderiranja:



POST /api/v1/moderators/:id/send-invite 
Ovaj endpoint omogućuje slanje pozivnice jednom Moderatoru.
Sljedeća ograničenja vrijede za slanje pozivnice e-poštom Moderatoru:
Moderatormora već postojati.fromNamene smije biti duže od100 characters.
Napomene:
- Ako korisnik s navedenom e-poštom već postoji, bit će pozvan da moderira komentare vašeg tenanta.
- Ako korisnik s navedenom e-poštom ne postoji poveznica za pozivnicu će ih voditi kroz stvaranje njihovog računa.
- Pozivnica će isteći nakon
30 days.
Možemo stvoriti Moderator za korisnika za kojeg znamo samo e-poštu:

This will send an email like Bob at TenantName is inviting you to be a moderator...


DELETE /api/v1/moderators/:id 
Ovaj endpoint omogućuje uklanjanje Moderatora prema njegovom id-u.



Struktura broja obavijesti 
Objekt NotificationCount predstavlja broj nepročitanih obavijesti i metapodatke za korisnika.
Ako nema nepročitanih obavijesti, za korisnika neće postojati NotificationCount.
NotificationCount objekti se stvaraju automatski i ne mogu se stvoriti putem API-ja. Također istječu nakon jedne godine.
Možete obrisati broj nepročitanih obavijesti korisnika brisanjem njihovog NotificationCount.
Struktura NotificationCount objekta je sljedeća:

GET /api/v1/notification-count/:user_id 
Ova ruta vraća jedan NotificationCount po korisničkom ID-u. Kod SSO, korisnički ID je u formatu <tenant id>:<user id>.
Ako nema nepročitanih obavijesti, neće postojati NotificationCount - pa ćete dobiti 404.
Ovo se razlikuje od notifications/count po tome što je mnogo brže, ali ne dopušta filtriranje.



DELETE /api/v1/notification-count/:user_id 
Ova ruta briše jedan NotificationCount prema user id. With SSO, user id je u formatu <tenant id>:<user id>.
Ovo će očistiti broj nepročitanih obavijesti korisnika (crveni zvončić u widgetu za komentare će izblijediti i broj će nestati).



Struktura obavijesti 
Objekt Notification predstavlja obavijest za korisnika.
Notification objekti se stvaraju automatski i ne mogu se stvarati putem API-ja. Također istječu nakon jedne godine.
Obavijesti se ne mogu izbrisati. Međutim, mogu se ažurirati postavljanjem viewed na false, i možete ih pretraživati po viewed.
Korisnik se također može odjaviti od obavijesti za određeni komentar postavljanjem optedOut u obavijesti na true. Možete se ponovno prijaviti postavljanjem na false.
Postoje različite vrste obavijesti - provjerite relatedObjectType i type.
Načini na koje se obavijesti stvaraju su prilično fleksibilni i mogu biti pokrenuti u mnogim scenarijima (pogledajte NotificationType).
Trenutno, postojanje Notification ne znači nužno da je e-pošta poslana ili bi trebala biti poslana. Umjesto toga, obavijesti
se koriste za feed obavijesti i povezane integracije.
Struktura za Notification objekt izgleda ovako:

GET /api/v1/notifications 
Ova ruta vraća najviše 30 Notification objekata sortiranih po createdAt, najnoviji prvi.
Možete filtrirati po userId. Kod SSO, ID korisnika ima format <tenant id>:<user id>.



GET /api/v1/notifications/count 
Ova ruta vraća objekt koji sadrži broj obavijesti u parametru count.
Sporija je od /notification-count/ i košta dvostruko više kredita, ali omogućava filtriranje po više dimenzija.
Možete filtrirati istim parametrima kao i endpoint /notifications, kao što je userId. S SSO-om, identifikator korisnika ima format <tenant id>:<user id>.




PATCH /api/v1/notifications/:id 
Ovaj API endpoint omogućuje ažuriranje Notification po id.
Ažuriranje Notification ima sljedeća ograničenja:
- Možete ažurirati samo sljedeća polja:
viewedoptedOut



Struktura stranice 
Objekt Page predstavlja stranicu kojoj može pripadati više komentara. Ovaj odnos definira se pomoću urlId.
Page sprema informacije kao što su naslov stranice, broj komentara i urlId.
Struktura za objekt Page je sljedeća:

GET /api/v1/pages 
Trenutno možete dohvatiti samo sve stranice (ili pojedinačnu stranicu putem /by-url-id) povezane s vašim računom. Ako želite detaljnije pretraživanje, obratite nam se.



Koristan savjet
API Comment zahtijeva urlId. Možete prvo pozvati API Pages, da vidite kako izgledaju vrijednosti urlId koje su vam dostupne.
GET /api/v1/pages/by-url-id 
Pojedinačne stranice mogu se dohvatiti pomoću odgovarajućeg urlId. Ovo može biti korisno za pronalaženje naslova stranica ili broja komentara.



Koristan savjet
Zapamtite URI-enkodirati vrijednosti poput urlId.
PATCH /api/v1/pages/:id 
Ova ruta omogućuje ažuriranje jedne Page. Odgovarajući komentari bit će ažurirani.



Note
Neki parametri u objektu Page se automatski ažuriraju. To su brojači i atributi naslova. Brojače nije moguće ažurirati putem API-ja jer su to izračunate vrijednosti. title stranice može se postaviti putem API-ja, ali bit će prepisan ako se widget za komentare koristi na stranici s istim urlId i različitim naslovom stranice.
POST /api/v1/pages 
Ovaj API endpoint omogućuje stvaranje stranica.
Uobičajen slučaj upotrebe je kontrola pristupa.
Napomene:
- Ako ste komentirali u niti komentara, ili ste pozvali API za kreiranje
Comment, već ste stvorili objektPage! Možete ga pokušati dohvatiti putem/by-url-idPagerute, prosljeđujući istiurlIdkoji je proslijeđen widgetu za komentare. - Struktura
Pagesadrži neke izračunate vrijednosti. Trenutno su tocommentCountirootCommentCount. One se automatski popunjavaju i ne mogu se postaviti putem API-ja. Pokušaj postavljanja uzrokovat će da API vrati grešku.



DELETE /api/v1/pages/:id 
Ova ruta omogućuje uklanjanje jedne stranice po id-u.
Imajte na umu da će interakcija s widgetom komentara za stranicu s istim urlId jednostavno neprimjetno ponovno stvoriti Page.



Struktura događaja webhooka na čekanju 
A PendingWebhookEvent object predstavlja webhook događaj u redu koji je na čekanju.
PendingWebhookEvent objects se stvaraju automatski i ne mogu se ručno stvarati putem API-ja. Također istječu nakon jedne godine.
Mogu se izbrisati, što uklanja zadatak iz reda.
Postoje različite vrste događaja - provjerite eventType (OutboundSyncEventType) i type (OutboundSyncType).
Uobičajen slučaj upotrebe ovog API-ja je implementacija prilagođenog nadzora. Možda ćete htjeti periodički pozivati endpoint /count
kako biste provjeravali broj preostalih zadataka za zadane filtere.
Struktura objekta PendingWebhookEvent je sljedeća:

GET /api/v1/pending-webhook-events 
Ovaj endpoint vraća popis neobrađenih webhook događaja u parametru pendingWebhookEvents.
Ovaj API koristi paginaciju, koju upravlja parametar skip. PendingWebhookEvents se vraćaju u stranicama po 100, poredane po createdAt od najnovijih prema najstarijima.



GET /api/v1/pending-webhook-events/count 
Ova ruta vraća objekt koji sadrži broj čekajućih webhook događaja u parametru count.
Možete filtrirati istim parametrima kao i krajnja točka /pending-webhook-events



DELETE /api/v1/pending-webhook-events/:id 
Ova ruta omogućuje brisanje jednog PendingWebhookEvent.
Ako trebate masovno brisanje, pozovite GET API s paginacijom, a zatim pozovite ovaj API sekvencijalno.



Struktura SSO korisnika 
FastComments pruža jednostavno SSO rješenje. Ažuriranje korisničkih podataka s HMAC-integracijom je jednostavno kao da korisnik učita stranicu s ažuriranim payloadom.
Međutim, može biti poželjno upravljati korisnikom izvan tog tijeka, kako biste poboljšali konzistentnost vaše aplikacije.
SSO User API pruža način za CRUD objekata koje nazivamo SSOUsers. Ti su objekti različiti od običnih korisnika i držani su odvojeno radi sigurnosti tipova.
Struktura SSOUser objekta je sljedeća:

Naplata za SSO korisnike
SSO korisnici se naplaćuju različito ovisno o njihovim oznakama dozvola:
- Regular SSO Users: Korisnici bez administratorskih ili moderatorskih dozvola naplaćuju se kao regularni SSO korisnici
- SSO Admins: Korisnici s oznakama
isAccountOwneriliisAdminAdminnaplaćuju se odvojeno kao SSO administratori (ista stopa kao obični administratori tenanta) - SSO Moderators: Korisnici s oznakom
isCommentModeratorAdminnaplaćuju se odvojeno kao SSO moderatori (ista stopa kao obični moderatori)
Važno: Kako bi se spriječilo dvostruko naplaćivanje, sustav automatski deduplikira SSO korisnike naspram običnih tenant korisnika i moderatora po e-mail adresi. Ako SSO korisnik ima istu e-mail adresu kao običan tenant korisnik ili moderator, neće biti naplaćeni dvaput.
Kontrola pristupa
Korisnici se mogu podijeliti u grupe. To je svrha polja groupIds, i ono je opcionalno.
@Mentions
Po defaultu @mentions će koristiti username za pretraživanje drugih SSO korisnika kada se upiše znak @. Ako se koristi displayName, rezultati koji odgovaraju
username će biti zanemareni kada postoji podudaranje za displayName, te će rezultati pretraživanja @mention koristiti displayName.
Pretplate
S FastComments, korisnici se mogu pretplatiti na stranicu klikom na ikonu zvona u widgetu komentara i pritiskom na Pretplati se.
Kod običnog korisnika, šaljemo im obavijesti putem e-pošte na temelju njihovih postavki obavijesti.
Kod SSO korisnika, to razdvajamo radi kompatibilnosti s prethodnim verzijama. Korisnici će dobivati ove dodatne e-poruke o pretplati
samo ako postavite optedInSubscriptionNotifications na true.
Značke
Možete dodijeliti značke SSO korisnicima koristeći svojstvo badgeConfig. Značke su vizualni indikatori koji se pojavljuju pored imena korisnika u komentarima.
badgeIds- Niz ID-eva znački koje treba dodijeliti korisniku. Moraju biti valjani ID-evi znački kreirani na vašem FastComments računu. Ograničeno na 30 znački.override- Ako je true, sve postojeće značke prikazane u komentarima bit će zamijenjene navedenima. Ako je false ili izostavljeno, navedene značke će se dodati postojećim značkama.update- Ako je true, svojstva prikaza znački bit će ažurirana iz konfiguracije tenanta svaki put kada se korisnik prijavi.
GET /api/v1/sso-users 
Ova ruta vraća SSO korisnike u stranicama po 100. Paginacija se vrši pomoću parametra skip. Korisnici su sortirani po njihovom signUpDate i id.



GET /api/v1/sso-users/by-id/:id 
Ovaj endpoint vraća jednog SSO korisnika prema njegovom id-u.



GET /api/v1/sso-users/by-email/:email 
Ova ruta vraća jednog SSO korisnika prema njihovoj e-pošti.



PATCH /api/v1/sso-users/:id 
Ova ruta omogućava ažuriranje jednog SSO korisnika.



POST /api/v1/sso-users 
Ova ruta omogućuje kreiranje jednog SSO korisnika.
Pokušaj kreiranja dvaju korisnika s istim ID-om rezultirat će pogreškom.

U ovom primjeru navodimo groupIds za kontrolu pristupa, ali to je opcionalno.


Napomena za integraciju
Podaci poslani putem API-ja mogu se prebrisati jednostavnim slanjem drugačijeg SSO User HMAC payloada. Na primjer, ako postavite korisničko ime putem API-ja, ali zatim proslijedite drugačije korisničko ime kroz SSO tok prilikom učitavanja stranice, automatski ćemo ažurirati njihovo korisničko ime.
Nećemo ažurirati parametre korisnika u ovom toku osim ako ih eksplicitno ne navedete ili ne postavite na null (ne undefined).
PUT /api/v1/sso-users/:id 
Ova ruta omogućuje ažuriranje jednog SSO korisnika.

U ovom primjeru navodimo groupIds za kontrolu pristupa, ali to je neobavezno.


DELETE /api/v1/sso-users/:id 
Ova ruta omogućuje uklanjanje pojedinog SSO korisnika prema njegovom id-u.
Imajte na umu da ponovno učitavanje widgeta komentara s podacima za ovog korisnika jednostavno će ponovno stvoriti korisnika bez poteškoća.
Brisanje korisnikovih komentara moguće je putem upitnog parametra deleteComments. Imajte na umu da ako je ovo istinito:
- Svi korisnikovi komentari bit će izbrisani uživo.
- Svi podređeni (sada bez roditelja) komentari bit će izbrisani ili anonimizirani ovisno o konfiguraciji stranice povezanoj sa svakim komentarom. Na primjer, ako je način brisanja niti "anonymize", tada će odgovori ostati, a korisnikovi komentari će biti anonimizirani. Ovo se primjenjuje samo kada je
commentDeleteModeRemove(zadana vrijednost). creditsCostpostaje2.
Anonimizirani komentari
Možete zadržati korisnikove komentare, ali ih jednostavno anonimizirati postavljanjem commentDeleteMode=1.
Ako su korisnikovi komentari anonimizirani, sljedeće vrijednosti postaju null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted i isDeletedUser postavljeni su na true.
Prilikom prikaza, widget komentara koristit će DELETED_USER_PLACEHOLDER (zadano: "[izbrisano]") za korisnikovo ime i DELETED_CONTENT_PLACEHOLDER za komentar. Ovo možete prilagoditi putem sučelja za prilagodbu widgeta.
Primjeri



Struktura pretplate 
Objekt Subscription predstavlja pretplatu za korisnika.
Subscription objekti se stvaraju kada korisnik klikne ikonu za obavijest u widgetu komentara i klikne "Pretplati se na ovu stranicu".
Pretplate se također mogu stvoriti putem API-ja.
Posjedovanje objekta Subscription uzrokuje generiranje objekata Notification i slanje e-poruka kada se ostave novi komentari na korijenu pridružene stranice na koju se odnosi Subscription.
Slanje e-poruka ovisi o tipu korisnika. Za obične korisnike to ovisi o optedInNotifications. Za SSO korisnike to ovisi o optedInSubscriptionNotifications. Imajte na umu da neke aplikacije možda nemaju koncept web-pristupačne stranice, u kojem slučaju jednostavno postavite urlId na id stavke na koju se pretplaćujete (ista vrijednost za urlId koju biste proslijedili widgetu komentara).
The structure for the Subscription object is as follows:

GET /api/v1/subscriptions/:id 
Ovaj endpoint vraća do 30 Subscription objekata sortirano po createdAt, najnoviji prvi.
Možete filtrirati po userId. Kod SSO-a, korisnički id ima format <tenant id>:<user id>.



POST /api/v1/subscriptions 
Ovaj API endpoint omogućuje stvaranje Subscription. Imajte na umu da korisnik može imati samo jednu pretplatu po stranici, jer su više nepotrebne, i pokušaj stvaranja više od jedne pretplate za istog korisnika na istoj stranici rezultirat će pogreškom.
Stvaranje pretplate rezultirat će stvaranjem objekata Notification kada se ostavi novi komentar na vrhu pretplaćenog urlId (kada je comment parentId null).



DELETE /api/v1/subscriptions/:id 
Ova ruta briše jedan Subscription objekt po id-u.



Struktura dnevne upotrebe najmoprimca 
Objekt TenantDailyUsage predstavlja korištenje za tenant na određenom danu. Ako za određenog tenant-a na određen
dan nije bilo aktivnosti, taj dan neće imati objekt TenantDailyUsage.
Objekt TenantDailyUsage nije u stvarnom vremenu i može zaostajati nekoliko minuta za stvarnom upotrebom.
Struktura za objekt TenantDailyUsage je sljedeća:

GET /api/v1/tenant-daily-usage 
Ova ruta omogućuje pretraživanje upotrebe tenant-a po godini, mjesecu i danu. Može se vratiti do 365 objekata, a trošak je 1 API kredit na svakih 10 objekata.
Objekti odgovora sortirani su po datumu kada su kreirani (najstariji prvi).



Struktura najmoprimca 
The Tenant definira korisnika FastComments.com. Mogu ih stvarati putem API-ja tenanti s pristupom za white labeling. Tenanti s bijelim označavanjem
ne mogu stvarati druge tenante s bijelim označavanjem (dopuštena je samo jedna razina ugnježđivanja).
The structure for the Tenant object is as follows:

GET /api/v1/tenants/:id 
Ovaj route vraća jednog Tenanta po id-u.



GET /api/v1/tenants 
Ovaj API vraća tenants kojima upravlja vaš tenant.
Paginacija se obavlja pomoću query parametra skip. Tenants se vraćaju u stranicama po 100, sortirano po signUpDate i id.
Trošak se temelji na broju vraćenih tenants-a, iznosi 1 credit per 10 vraćenih tenants-a.

Možete definirati meta parametre na Tenant objektima i upitom tražiti odgovarajuće tenants-e. Na primjer, za ključ someKey i meta vrijednost some-value, možemo konstruirati JSON objekt s tim parom ključ/vrijednost i onda ga URI enkodirati kao query parametar za filtriranje:



POST /api/v1/tenants 
Ova ruta omogućuje dodavanje jednog Tenant.
Kreiranje Tenant-a ima sljedeća ograničenja:
nameje obavezno.domainConfigurationje obavezno.- Sljedeće vrijednosti se ne smiju navesti prilikom kreiranja
Tenant-a:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDatene smije biti u budućnosti.namene smije biti duži od200 characters.emailne smije biti duži od300 characters.emailmora biti jedinstven među svim tenantima FastComments.com.- Ne smijete kreirati tenante ako roditeljski tenant nema definirani valjani
TenantPackage.- Ako je vaš tenant kreiran putem FastComments.com, to ne bi trebao biti problem.
- Ne smijete kreirati više tenant-a nego što je definirano u
maxWhiteLabeledTenantsu vašem paketu. - Morate navesti query parametar
tenantIdkoji je id vašegparent tenant-a s omogućenim white labelingom.
Možemo kreirati Tenant koristeći samo nekoliko parametara:



PATCH /api/v1/tenants/:id 
Ova krajnja točka API-ja omogućuje ažuriranje Tenant prema id.
Ažuriranje Tenant ima sljedeća ograničenja:
- Sljedeće vrijednosti se ne smiju ažurirati:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
signUpDatene smije biti u budućnosti.namene smije biti duže od200 characters.emailne smije biti duže od300 characters.emailmora biti jedinstven među svim tenantima FastComments.com.- Kada se
billingInfoValidpostavi natrue,billingInfomora biti dostavljen u istom zahtjevu. - Ne smijete ažurirati
packageIdpovezan s vašim vlastitim tenantom. - Ne smijete ažurirati
paymentFrequencypovezan s vašim vlastitim tenantom.



DELETE /api/v1/tenants/:id 
Ova ruta omogućava uklanjanje Tenant i svih pridruženih podataka (korisnici, komentari, itd.) po id-u.
Sljedeća ograničenja vrijede za uklanjanje tenants:
- Tenant mora biti vaš vlastiti, ili white labeled tenant kojeg upravljate.
- Parametar upita
suremora biti postavljen natrue.



Struktura paketa najmoprimca 
The TenantPackage definira informacije o paketu dostupnom za Tenant. Tenant može imati mnogo dostupnih paketa, ali je u upotrebi samo jedan u određenom trenutku.
A Tenant se ne može koristiti za bilo koje proizvode dok njegov packageId ne pokazuje na valjani TenantPackage.
Postoje dvije vrste objekata TenantPackage:
- Fixed-pricing packages - where
hasFlexPricingis false. - Flexible pricing - where
hasFlexPricingis true.
U oba slučaja ograničenja su definirana na računu koji koristi paket, međutim kod Flex-a tenant se naplaćuje osnovna cijena plus ono što je koristio, definirano parametrima flex*.
Tenant može imati više tenant paketa i mogućnost promjene paketa sami sa Stranica s informacijama o naplati.
Ako ćete sami voditi naplatu za tenante, i dalje ćete morati definirati paket za svaki tenant kako biste definirali njihova ograničenja. Jednostavno postavite billingHandledExternally na true na Tenant i oni neće moći sami mijenjati svoje podatke za naplatu ili aktivni paket.
Ne smijete kreirati pakete s većim ograničenjima nego što ima roditeljski tenant.
The structure for the TenantPackage object is as follows:

GET /api/v1/tenant-packages/:id 
Ova ruta vraća jedan Tenant Package prema ID-u.



GET /api/v1/tenant-packages 
Ovaj API koristi paginaciju, omogućenu pomoću upitnog parametra skip. TenantPackages se vraćaju u stranicama od 100, posložene po createdAt i id.
Trošak se temelji na broju vraćenih tenant paketa, a iznosi 1 credit per 10 vraćenih tenant paketa.



POST /api/v1/tenant-packages 
Ova ruta omogućuje dodavanje jednog TenantPackage.
Kreiranje TenantPackage ima sljedeća ograničenja:
- Sljedeći parametri su obavezni:
nametenantIdmonthlyCostUSD- Može biti null.yearlyCostUSD- Može biti null.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- Ako je true, tada su sviflex*parametri obavezni.
namene smije biti dulji od50 characters.- Svaki unos
forWhoTextne smije biti dulji od200 characters. - Svaki unos
featureTaglinesne smije biti dulji od100 characters. TenantPackagemora biti "manji" od roditeljskog tenanta. Na primjer, svimax*parametri moraju imati niže vrijednosti od roditeljskog tenanta.- Tenanti s pristupom white labelingu mogu imati najviše pet paketa.
- Samo tenanti s pristupom white labelingu mogu kreirati
TenantPackage. - Ne smijete dodavati pakete svom vlastitom tenantu. :)
Možemo kreirati TenantPackage na sljedeći način:



PATCH /api/v1/tenant-packages/:id 
Ovaj API endpoint omogućuje ažuriranje TenantPackage po id.
Ažuriranje TenantPackage ima sljedeća ograničenja:
- Ako postavljate
hasFlexPricingna true, tada su sviflex*parametri obavezni u tom istom zahtjevu. namene smije biti dulji od50 characters.- Svaki unos
forWhoTextne smije biti dulji od200 characters. - Svaki unos
featureTaglinesne smije biti dulji od100 characters. TenantPackagemora biti "manji" od roditeljskog tenanta. Na primjer, svimax*parametri moraju imati niže vrijednosti od roditeljskog tenanta.- Ne smijete mijenjati
tenantIdpovezan sTenantPackage.



DELETE /api/v1/tenant-packages/:id 
Ovaj endpoint omogućuje uklanjanje TenantPackage po id-u.
Ne možete ukloniti TenantPackage koji je u upotrebi (tenantov packageId pokazuje na paket). Najprije ažurirajte Tenant.



Struktura korisnika najmoprimca 
The TenantUser definira User kojeg upravlja određeni tenant. Račun tog korisnika je u potpunoj kontroli tena kojem je pridružen te se račun može ažurirati ili izbrisati putem UI ili API-ja.
Korisnici koje upravlja tenant mogu biti administratori s punim dopuštenjima i pristupom Tenantu, ili mogu imati ograničena dopuštenja za moderiranje komentara, pristup API ključevima itd.
The structure for the TenantUser object is as follows:

GET /api/v1/tenant-users/:id 
Ova ruta vraća jednog TenantUser po id.



GET /api/v1/tenant-users 
Ovaj API koristi paginaciju, omogućenu query parametrom skip. TenantUsers se vraćaju u stranicama po 100, poredani po signUpDate, username i id.
Trošak se temelji na broju vraćenih tenant users; iznosi 1 credit per 10 vraćenih tenant users.



POST /api/v1/tenant-users 
Ova ruta omogućuje dodavanje jednog TenantUser.
Stvaranje TenantUser ima sljedeća ograničenja:
usernameje obavezan.emailje obavezan.signUpDatene smije biti u budućnosti.localemora biti na popisu Podržane lokalizacije.usernamemora biti jedinstven na cijelom FastComments.com. Ako je to problem, preporučujemo korištenje SSO.emailmora biti jedinstven na cijelom FastComments.com. Ako je to problem, preporučujemo korištenje SSO.- Ne smijete stvoriti više tenant korisnika nego što je definirano pod
maxTenantUsersu vašem paketu.
Možemo stvoriti TenantUser na sljedeći način



POST /api/v1/tenant-users/:id/send-login-link 
Ovaj endpoint omogućuje slanje login poveznice (login link) pojedinom TenantUser-u.
Koristan kada masovno kreirate korisnike i ne želite objašnjavati kako da se prijave na FastComments.com. Ovo će im poslati "magic link" za prijavu koji
istječe nakon 30 days.
Sljedeća ograničenja vrijede za slanje login poveznice TenantUser-u:
TenantUsermora već postojati.- Morate imati pristup za upravljanje
Tenant-om kojemTenantUserpripada.
Login poveznicu TenantUser-u možemo poslati na sljedeći način:

Ovo će poslati e-poštu poput Bob at TenantName is inviting you to be a moderator...


PATCH /api/v1/tenant-users/:id 
Ova ruta omogućuje ažuriranje jednog TenantUser.
Ažuriranje TenantUser ima sljedeća ograničenja:
signUpDatene smije biti u budućnosti.localemora biti na popisu Podržane lokalizacije.usernamemora biti jedinstven na FastComments.com. Ako je to problem, predlažemo korištenje SSO umjesto toga.emailmora biti jedinstven na FastComments.com. Ako je to problem, predlažemo korištenje SSO umjesto toga.- Ne možete ažurirati
tenantIdkorisnika.
Možemo stvoriti TenantUser na sljedeći način



DELETE /api/v1/tenant-users/:id 
Ova ruta omogućuje uklanjanje TenantUser po id-u.
Brisanje korisnikovih komentara moguće je putem query parametra deleteComments. Imajte na umu da ako je ovo true:
- Svi korisnikovi komentari bit će izbrisani odmah.
- Svi child (sada siročad) komentari bit će izbrisani ili anonimizirani na temelju konfiguracije stranice povezane s pojedinim komentarom. Na primjer, ako je način brisanja threadova "anonymize", tada će odgovori ostati, a komentari korisnika će biti anonimizirani. Ovo se primjenjuje samo kada je
commentDeleteModeRemove(zadana vrijednost). creditsCostpostaje2.
Anonimizirani komentari
Možete zadržati komentare korisnika, ali ih jednostavno anonimizirati postavljanjem commentDeleteMode=1.
Ako su komentari korisnika anonimizirani, sljedeće vrijednosti se postavljaju na null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted i isDeletedUser postavljeni su na true.
Prilikom prikaza, widget komentara koristit će DELETED_USER_PLACEHOLDER (zadano: "[deleted]") za ime korisnika i DELETED_CONTENT_PLACEHOLDER za sadržaj komentara. To se može prilagoditi putem sučelja za prilagodbu widgeta.
Primjeri



Struktura korisnika 
User je objekt koji predstavlja najčešći zajednički nazivnik svih korisnika.
Imajte na umu da u FastComments imamo nekoliko različitih slučajeva upotrebe za korisnike:
- Secure SSO
- Simple SSO
- Tenant Users (Na primjer: Administratori)
- Commenters
Ovaj API je za Komentatore i korisnike stvorene putem Simple SSO. U osnovi, svaki korisnik stvoren putem vaše stranice može se dohvatiti putem ovog API-ja. Tenant Users se također mogu dohvatiti na ovaj način, ali ćete dobiti više informacija interakcijom s /tenant-users/ API-jem.
Za Secure SSO molimo koristite /sso-users/ API.
Ne možete ažurirati ove vrste korisnika. Oni su kreirali svoj račun putem vaše stranice, stoga pružamo osnovni pristup samo za čitanje, ali ne možete napraviti promjene. Ako želite imati takav tijek - morate postaviti Secure SSO.
Struktura za objekt User je sljedeća:

GET /api/v1/users/:id 
Ova ruta vraća jednog User po id-u.



Struktura glasova 
Objekt Vote predstavlja glas koji je ostavio korisnik.
Odnos između komentara i glasa definiran je putem commentId.
Struktura objekta Vote je sljedeća:

GET /api/v1/votes 
Glasove treba dohvatiti pomoću urlId.
Vrste glasova
Postoje tri vrste glasova:
- Autentificirani glasovi, koji se primjenjuju na odgovarajući komentar. Možete ih stvoriti putem ovog API-ja.
- Autentificirani glasovi, koji su na čekanju verifikacije, i stoga još nisu primijenjeni na komentar. Oni se stvaraju kada korisnik koristi FastComments.com prijava za glasanje mehanizam.
- Anonimni glasovi, koji se primjenjuju na odgovarajući komentar. Oni se stvaraju zajedno s anonimnim komentiranjem.
Oni se vraćaju u odvojenim popisima u API-ju kako bi se smanjila zabuna.



Napomene o anonimnim glasovima
Napomena: anonimni glasovi stvoreni putem ovog API-ja pojavit će se u popisu appliedAuthorizedVotes. Smatraju se autoriziranim jer su stvoreni putem API-ja s API ključem.
Struktura appliedAnonymousVotes namijenjena je za glasove stvorene bez e-pošte, API ključa itd.
GET /api/v1/votes/for-user 
Omogućava dohvaćanje glasova koje je korisnik ostavio za određeni urlId. Prima userId koji može biti bilo koji FastComments.com ili SSO User.
Ovo je korisno ako želite prikazati je li korisnik glasovao za komentar. Prilikom dohvaćanja komentara, jednostavno pozovite ovaj API istovremeno za korisnika sa istim urlId.
Ako koristite anonimno glasovanje, tada trebate umjesto toga proslijediti anonUserId.


Imajte na umu da će se anonimni glasovi pojaviti u listi appliedAuthorizedVotes. Smatraju se autoriziranima budući da su stvoreni putem API-ja s API ključem.


POST /api/v1/votes 
Ova ruta omogućuje dodavanje jednog autoriziranog Vote. Glasovi mogu biti up (+1) ili down (-1).




Kreiranje anonimnih glasova
Anonimne glasove možete kreirati postavljanjem anonUserId u parametrima upita umjesto userId.
Ovaj id ne mora odgovarati nijednom objektu korisnika (otuda anonimno). To je jednostavno identifikator sesije, tako da možete ponovno dohvatiti glasove u istoj sesiji kako biste provjerili je li komentar već glasovan.
Ako nemate nešto poput "anonimnih sesija" kao što FastComments ima - jednostavno možete postaviti ovo na nasumični ID, poput UUID-a (iako cijenimo manje identifikatore radi uštede prostora).
Ostale napomene
- Ovaj API poštuje postavke na razini tenanta. Na primjer, ako onemogućite glasanje za određenu stranicu, a pokušate stvoriti glas putem API-ja, to će rezultirati pogreškom s kodom
voting-disabled. - Ovaj API je po zadanom aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
DELETE /api/v1/votes/:id 
Ova ruta omogućuje brisanje jednog Vote.



Notes:
- Ovaj API poštuje postavke na razini tenant-a. Na primjer, ako onemogućite glasovanje za određenu stranicu i pokušate stvoriti glas putem API-ja, to će rezultirati pogreškom s kodom
voting-disabled. - Ovaj API je prema zadanim postavkama aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
Struktura konfiguracije domene 
Objekt DomainConfig predstavlja konfiguraciju za domenu za tenant.
Struktura objekta DomainConfig je sljedeća:


Za autentifikaciju
Konfiguracija domene koristi se za određivanje koje web-lokacije mogu biti domaćini FastComments widgeta za vaš račun. To je osnovni oblik autentifikacije, što znači da dodavanje ili uklanjanje bilo koje konfiguracije domene može utjecati na dostupnost vaše FastComments instalacije u produkciji.
Nemojte uklanjati ili ažurirati svojstvo domain u Domain Config za domenu koja je trenutno u upotrebi, osim ako nije namjera onemogućiti tu domenu.
Ovo ima isto ponašanje kao uklanjanje domene iz /auth/my-account/configure-domains.
Također imajte na umu da će uklanjanje domene iz korisničkog sučelja My Domains ukloniti svaku odgovarajuću konfiguraciju za tu domenu koja je možda bila dodana putem tog sučelja.
Za prilagodbu e-pošte
Poveznica za odjavu u podnožju e-pošte i funkcija jednoklik odjave koju nude mnogi e-mail klijenti mogu se konfigurirati putem ovog API-ja definirajući footerUnsubscribeURL i emailHeaders, redom.
Za DKIM
Nakon što definirate svoje DKIM DNS zapise, jednostavno ažurirajte DomainConfig s vašom DKIM konfiguracijom koristeći zadanu strukturu.
GET /api/v1/domain-configs 
Ovaj API omogućuje dohvaćanje svih objekata DomainConfig za tenanta.



GET /api/v1/domain-configs/:domain 
Pojedinačne DomainConfigs moguće je dohvatiti pomoću odgovarajućeg domain.



POST /api/v1/domain-configs 
Ovaj API endpoint pruža mogućnost kreiranja konfiguracija domena.
Dodavanje konfiguracije za domenu ovlašćuje tu domenu za FastComments račun.
Uobičajeni slučajevi upotrebe ovog API-ja su početno postavljanje, kada je potrebno dodati više domena, ili prilagođena konfiguracija za slanje e-pošte.



PATCH /api/v1/domain-configs/:domain 
Ovaj API endpoint omogućuje ažuriranje konfiguracije domene specificiranjem samo domene i atributa koji se ažurira.



PUT /api/v1/domain-configs/:domain 
Ovaj API endpoint omogućuje zamjenu konfiguracije domene.



DELETE /api/v1/domain-configs/:domain 
Ova ruta omogućuje uklanjanje pojedinačnog DomainConfig prema id-u.
- Napomena: Uklanjanje
DomainConfigće onemogućiti toj domeni korištenje FastComments. - Napomena: Ponovno dodavanje domene putem UI-ja će ponovno stvoriti objekt (samo s
domainpopunjenim).



Struktura konfiguracije pitanja 
FastComments pruža način za konstruiranje pitanja i agregiranje njihovih rezultata. Primjer pitanja (u daljnjem tekstu nazvan QuestionConfig) može biti ocjena zvjezdicama, klizač, ili NPS pitanje (određeno putem type).
Podaci o pitanjima mogu se agregirati pojedinačno, zajedno, tijekom vremena, ukupno, po stranici i slično.
Okvir ima sve mogućnosti potrebne za izgradnju klijentskih widgeta (s vašim serverom ispred ovog API-ja), administratorskih nadzornih ploča i alata za izvještavanje.
Prvo moramo definirati a QuestionConfig. Struktura je sljedeća:

GET /api/v1/question-configs 
Ovaj endpoint vraća do 100 QuestionConfig objekata odjednom, paginirano. Trošak je 1 za svaka 100 objekata. Razvrstani su po tekstu pitanja uzlazno (question field).



GET /api/v1/question-configs/:id 
Ova ruta vraća jedan QuestionConfig prema njegovom id-u.



POST /api/v1/question-configs 
Ova API krajnja točka omogućuje stvaranje QuestionConfig.



PATCH /api/v1/question-configs/:id 
Ovaj endpoint omogućuje ažuriranje pojedinačnog QuestionConfig.
Sljedeća struktura predstavlja sve vrijednosti koje se mogu mijenjati:




DELETE /api/v1/question-configs/:id 
Ova ruta omogućuje uklanjanje QuestionConfig prema id-u.
Ovo će izbrisati sve odgovarajuće rezultate pitanja (ali ne komentare). Ovo je dio visokih troškova kredita.



Struktura rezultata pitanja 
Da biste spremili rezultate za pitanja, stvorite QuestionResult. Zatim možete agregirati rezultate pitanja, i također
povezati ih s komentarima u svrhu izvještavanja.

GET /api/v1/question-results 
Ova ruta vraća do 1000 QuestionResults objekata odjednom, paginirano. Trošak je 1 za svaka 100 objekata. Oni su sortirani po createdAt, uzlazno. Možete filtrirati prema različitim parametrima.



GET /api/v1/question-results/:id 
Ova ruta vraća jedan QuestionResult prema njegovom id-u.



POST /api/v1/question-results 
Ovaj API endpoint omogućuje stvaranje QuestionResult.



PATCH /api/v1/question-results/:id 
Ova ruta omogućuje ažuriranje pojedinačnog QuestionResult.
Sljedeća struktura predstavlja sve vrijednosti koje se mogu promijeniti:




DELETE /api/v1/question-results/:id 
Ova ruta omogućuje uklanjanje QuestionResult po id-u.



GET /api/v1/question-results-aggregate 
Ovdje se vrši agregacija rezultata.
Struktura odgovora agregacije je sljedeća:

Ovdje su dostupni parametri upita za agregaciju:

Evo primjera zahtjeva:

Primjer odgovora:


Napomene o performansama
- Ako nema u cacheu (cache miss), agregacije obično traju pet sekundi po milijunu rezultata.
- U suprotnom, zahtjevi se izvršavaju u konstantnom vremenu.
Napomene o keširanju i troškovima
- Kada je
forceRecalculatenaveden, trošak je uvijek10, umjesto uobičajenih2. - Ako cache istekne i podaci se ponovno izračunaju, trošak je i dalje konstantan
2akoforceRecalculatenije naveden. Cache istječe ovisno o veličini prikupljenog skupa podataka (može varirati između 30 sekundi i 5 minuta). - Ovo služi kao poticaj za korištenje cachea.
GET /api/v1/question-results-aggregate/combine/comments 
Ovdje se kombiniraju rezultati s komentarima. Korisno za izradu grafikona "nedavni pozitivni i negativni komentari" za proizvod, na primjer.
Možete pretraživati prema rasponu vrijednosti (uključivo), jednom ili više pitanja i prema datumu početka (uključivo).
Struktura odgovora je sljedeća:

Ovo su parametri upita dostupni za agregaciju:

Evo primjera zahtjeva:

Primjer odgovora:


Napomene o predmemoriranju i troškovima
- Kada je naveden
forceRecalculate, trošak je uvijek10, umjesto uobičajenih2. - Ako predmemorija istekne i podaci se ponovno izračunaju, trošak je i dalje konstantan
2akoforceRecalculatenije naveden. - Ovo potiče korištenje predmemorije.
Struktura značke korisnika 
UserBadge je objekt koji predstavlja značku dodijeljenu korisniku u sustavu FastComments.
Značke se mogu dodijeliti korisnicima automatski na temelju njihove aktivnosti (kao što su broj komentara, vrijeme odgovora, status veterana) ili ručno od strane administratora stranice.
Struktura objekta UserBadge je sljedeća:

GET /api/v1/user-badges 
Ovaj endpoint omogućuje dohvat korisničkih znački na temelju raznih kriterija.
Primjer zahtjeva:
Run 
Možete dodati različite parametre upita za filtriranje rezultata:
userId- Dohvati značke za određenog korisnikabadgeId- Dohvati instance određene značketype- Filtriraj po tipu značke (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, etc. See UserBadge structure for full list)displayedOnComments- Filtriraj prema tome je li značka prikazana u komentarima (true/false)limit- Maksimalan broj znački za vraćanje (zadano 30, max 200)skip- Broj znački koje treba preskočiti (za paginaciju)
Primjer odgovora:

Mogući odgovori s pogreškom:


GET /api/v1/user-badges/:id 
Ovaj endpoint vam omogućuje dohvaćanje određene korisničke značke prema njenom jedinstvenom ID-u.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori s pogreškama:


POST /api/v1/user-badges 
Ovaj endpoint omogućuje vam stvaranje novog dodjeljivanja značke korisniku.
Primjer zahtjeva:
Run 
Tijelo zahtjeva mora sadržavati sljedeće parametre:
userId(obavezno) - ID korisnika kojemu se dodjeljuje značkabadgeId(obavezno) - ID značke koja se dodjeljujedisplayedOnComments(neobavezno) - Treba li se značka prikazivati u korisnikovim komentarima (zadano: true)
Važne napomene:
- Značka mora postojati i biti omogućena u katalogu znački vašeg tenanta
- Značke možete dodijeliti samo korisnicima koji pripadaju vašem tenantu ili su komentirali na vašoj stranici
Primjer odgovora:

Mogući odgovori s pogreškom:





PUT /api/v1/user-badges/:id 
Ovaj endpoint omogućuje ažuriranje dodjele korisničke značke.
Trenutno se može ažurirati samo svojstvo displayedOnComments, koje kontrolira hoće li se značka prikazivati na komentarima korisnika.
Example Request:
Run 
Example Response:

Possible Error Responses:



DELETE /api/v1/user-badges/:id 
Ovaj endpoint omogućuje brisanje dodjele korisničke značke.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori s pogreškama:



Struktura napretka značke korisnika 
UserBadgeProgress je objekt koji predstavlja napredak korisnika prema stjecanju različitih bedževa u FastComments sustavu.
Ovo praćenje pomaže odrediti kada korisnici trebaju dobiti automatske bedževe na temelju njihove aktivnosti i sudjelovanja u vašoj zajednici.
Struktura za UserBadgeProgress objekt je sljedeća:

GET /api/v1/user-badge-progress 
Ovaj endpoint omogućuje dohvat zapisa napretka korisničkih znački na temelju različitih kriterija.
Primjer zahtjeva:
Run 
Možete dodati različite parametre upita za filtriranje rezultata:
userId- Dohvati napredak za određenog korisnikalimit- Maksimalni broj zapisa za vraćanje (zadano 30, max 200)skip- Broj zapisa koje treba preskočiti (za paginaciju)
Primjer odgovora:

Mogući odgovori s greškom:


GET /api/v1/user-badge-progress/:id 
Ovaj endpoint omogućuje dohvat određenog zapisa o napretku značke korisnika prema njegovom jedinstvenom ID-u.
Example Request:
Run 
Example Response:

Possible Error Responses:


GET /api/v1/user-badge-progress/user/:userId 
Ovaj endpoint omogućuje dohvat zapisa o napretku značke pomoću ID‑a korisnika.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori s pogreškom:



Zaključno
Nadamo se da ste našu API dokumentaciju smatrali sveobuhvatnom i lako razumljivom. Ako uočite bilo kakve nedostatke, javite nam u nastavku.