
Jezik 🇷🇸 Srpski (Latinica)
API resursi
Agregacije
Audit logovi
Komentari
Šabloni e-pošte
Haštagovi
Moderatori
Broj obaveštenja
Obaveštenja
Stranice
Očekivani webhook događaji
SSO korisnici
Pretplate
Dnevna upotreba zakupca
Zakupci
Paketi zakupaca
Korisnici zakupaca
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 sa mnogim resursima. Izgradite integracije sa našom platformom, ili čak napravite sopstvene klijente!
U ovoj dokumentaciji pronaći ćete sve resurse koje podržava API, dokumentovane sa njihovim tipovima zahteva i odgovora.
Za Enterprise korisnike, sav pristup API-ju se beleži u Audit logu.
Generisani SDK-i
FastComments sada generiše API specifikacija iz našeg koda (ovo još nije kompletno, ali uključuje mnoge API-je).
Takođe 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 autentifikuje prosleđivanjem vašeg API ključa kao ili X-API-KEY headera ili API_KEY query parametra. Takođe će vam biti potreban vaš tenantId za pozivanje API-ja. To možete preuzeti sa iste stranice kao i vaš API ključ.
Napomena o bezbednosti
Ove rute su namenjene da budu pozivane sa servera. NE POZIVAJTE ih iz pregledača. Ako to uradite, izložićete vaš API ključ — to će omogućiti potpuni pristup vašem nalogu svima koji mogu da vide izvorni kod stranice!
Opcija autentifikacije 1 - Headeri
- Zaglavlje:
X-API-KEY - Zaglavlje:
X-TENANT-ID
Opcija autentifikacije 2 - Parametri upita
- Parametar upita:
API_KEY - Parametar upita:
tenantId
API resursi 
Korišćenje resursa
Treba napomenuti da se preuzimanje podataka putem API-ja računa kao korišćenje na vašem nalogu.
Svaki resurs će u svojoj sekciji navesti šta spada u to korišćenje.
Neki resursi koštaju više da se posluže od drugih. Svaki endpoints ima fiksnu cenu u kreditima po API pozivu. Za neke endpoints, broj kredita varira u zavisnosti od opcija i veličine odgovora.
API korišćenje možete proveriti na stranici Analitika naplate i ažurira se na svakih nekoliko minuta.
Napomena!
Predlažemo da prvo pročitate Pages dokumentaciju, kako biste smanjili zabunu pri određivanju koje vrednosti proslediti za urlId u Comment API-ju.
Agregirajte podatke 
Ovaj API agregira dokumente grupisanjem (ako je groupBy prosleđen) i primenom 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 količina memorije dozvoljena po API pozivu po defoltu je 64MB, i po podrazumevanju možete imati samo jednu agregaciju koja radi u isto vreme. Ako pošaljete više agregacija istovremeno, biće stavljene u red i izvršene redom kako su poslate. Agregacije u čekanju će čekati najviše 60 sekundi, nakon čega će zahtev isteći. Pojedinačne agregacije mogu se izvršavati do 5 minuta.
Ako imate upravljane tenant-e, možete agregirati sve resurse podređenih tenant-a u jednom pozivu prosleđivanjem query parametra parentTenantId.
Primeri
Primer: Brojanje jedinstvenih


Primer: Brojanje različitih vrednosti

Odgovor:

Primer: Sabiranje vrednosti više polja

Odgovor:

Primer: Prosečne vrednosti više polja

Odgovor:

Primer: Min/Max vrednosti više polja

Odgovor:

Primer: Brojanje jedinstvenih vrednosti više polja

Odgovor:

Primer: Kreiranje upita

Odgovor:

Primer: Brojanje komentara koji čekaju pregled

Odgovor:

Primer: Raspodela odobrenih, pregledanih i spam komentara

Odgovor:

Strukture


Sledeći resursi se mogu 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 audit loga 
AuditLog je objekat koji predstavlja evidentirani događaj za tenant-e koji imaju pristup ovoj funkciji.
Struktura za AuditLog objekat je sledeća:

Audit log je nepromenljiv. Takođe se u njega ne može ručno pisati. FastComments.com jedino odlučuje kada će se upisati u audit log. Međutim, možete ga čitati putem ovog API-ja.
Događaji u audit logu ističu nakon dve godine.
GET /api/v1/audit-logs 
Ovaj API koristi paginaciju, koju obezbeđuju parametri skip, before i after. AuditLogs se vraćaju u stranicama od po 1000, sortirani po when i id.
Preuzimanje svakih 1000 zapisa košta 10 kredita.
Po podrazumevanoj vrednosti dobićete listu sa najnovijim stavkama na vrhu. Na ovaj način možete započeti polling sa skip=0, paginirati dok ne nađete poslednji zapis koji ste obradili.
Alternativno, možete sortirati od najstarijih i paginirati dok ne bude više zapisa.
Sortiranje se radi podešavanjem order na ASC ili DESC. Podrazumevano je ASC.
Pretraga po datumu je moguća pomoću before i after kao timestamp-a u milisekundama. before i after nisu uključivi.



Struktura komentara 
Objekat Comment predstavlja komentar koji je ostavio korisnik.
Odnos između roditeljskih i podređenih komentara definiše se preko parentId.
Struktura objekta Comment je sledeća:

Neka od ovih polja su označena kao READONLY - ta polja se vraćaju iz API-ja, ali se ne mogu postaviti.
Struktura teksta komentara
Komentari su napisani u FastComments varijanti markdown-a, koja je samo markdown plus tradicionalne bbcode stil oznake za slike, kao što je [img]path[/img].
Tekst se čuva u dva polja. Tekst koji je korisnik uneo se čuva neizmenjen u polju comment. Ovo se renderuje i čuva u polju commentHTML.
Dozvoljeni HTML tagovi su b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Preporučuje se renderovanje HTML-a, s obzirom da je to vrlo mali podskup HTML-a, pa je izgradnja renderera prilično jednostavna. Na primer, postoji više biblioteka za React Native i Flutter koje mogu pomoći u tome
Možete izabrati da renderujete ne-normalizovanu vrednost polja comment. Primer parsera je ovde..
Primer parsera se takođe može prilagoditi da radi sa HTML-om i da transformiše HTML tagove u očekivane elemente za renderovanje na vašoj platformi.
Obeležavanje
Kada su korisnici označeni u komentaru, informacije se čuvaju u listi nazvanoj mentions. Svaki objekat u toj listi
ima sledeću strukturu.
Run 
Hashtagovi
Kada se hashtagovi koriste i uspešno parsiraju, informacije se čuvaju u listi nazvanoj hashTags. Svaki objekat u toj listi
ima sledeću strukturu. Hashtagove takođe možete ručno dodati u niz hashTags komentara za pretragu, ako je retain postavljeno.
Run 
GET /api/v1/comments 
Ovaj API se koristi za dobijanje komentara za prikaz korisniku. Na primer, automatski filtrira neodobrene ili spam komentare.
Paginacija
Paginacija se može obaviti na jedan od dva načina, u zavisnosti od zahteva za performansama i slučaja upotrebe:
- Najbrže: Prekalkulisana paginacija:
- Ovako FastComments radi kada koristite naše ugrađene vidžete i klijente.
- Klik na "next" jednostavno povećava broj stranice.
- Ovo možete posmatrati kao dobijeno iz key-value skladišta.
- Na ovaj način jednostavno definišite parametar
pagekoji počinje od0i smer sortiranja kaodirection. - Veličine stranica mogu se prilagoditi putem pravila za prilagođavanje.
- Najfleksibilnije: Fleksibilna paginacija:
- Na ovaj način možete definisati prilagođene parametre
limitiskip. Ne prosleđujtepage. - Podržan je i smer sortiranja
direction. limitje ukupan broj koji se vraća nakon što se primeniskip.- Primer: postavite
skip = 200, limit = 100kada jepage size = 100ipage = 2.
- Primer: postavite
- Podkomentari i dalje se računaju u paginaciji. Možete to zaobići koristeći opciju
asTree.- Možete paginirati decu putem
limitChildreniskipChildren. - Možete ograničiti dubinu vraćenih niti putem
maxTreeDepth.
- Možete paginirati decu putem
- Na ovaj način možete definisati prilagođene parametre
Threads
- Kada koristite
Precalculated Pagination, komentari su grupisani po stranici i komentari u nitima utiču na ukupnu stranicu.- Na ovaj način, niti se mogu odrediti na klijentu na osnovu
parentId. - Na primer, za stranicu sa jednim komentarem na vrhu i 29 odgovora, i postavljanjem
page=0u API-ju — dobićete samo top-level komentar i 29 potomaka. - Primer slike koja ilustruje više stranica.
- Na ovaj način, niti se mogu odrediti na klijentu na osnovu
- Kada koristite
Flexible Pagination, možete definisati parametarparentId.- Postavite ga na null da biste dobili samo komentare prvog nivoa.
- Zatim, da biste videli niti, pozovite API ponovo i prosledite
parentId. - Uobičajeno rešenje je da napravite API poziv za komentare prvog nivoa, a zatim paralelne API pozive da dobijete komentare za decu svakog komentara.
- NOVO od februara 2023! Dohvatajte kao stablo koristeći
&asTree=true.- Ovo možete posmatrati kao
Fleksibilna paginacija kao stablo. - Samo top-level komentari se računaju u paginaciji.
- Postavite
parentId=nullda biste započeli stablo od korena (morate postavitiparentId). - Postavite
skipilimitza paginaciju. - Postavite
asTreenatrue. - Trošak kredita se povećava za
2x, jer naš backend mora da obavi mnogo više posla u ovom scenariju. - Postavite
maxTreeDepth,limitChildreniskipChildrenpo želji.
- Ovo možete posmatrati kao
Objašnjenje stabala
Kada koristite asTree, može biti teško razmišljati o paginaciji. Evo korisne grafike:
Preuzimanje komentara u kontekstu korisnika
API /comments se može koristiti u dva konteksta, za različite slučajeve upotrebe:
- Za vraćanje komentara sortirano i označeno informacijama za izgradnju sopstvenog klijenta.
- U tom slučaju definišite parametar upita
contextUserId.
- U tom slučaju definišite parametar upita
- Za preuzimanje komentara sa vašeg backend-a za prilagođena integracije.
- Platforma će podrazumevano koristiti ovo bez
contextUserId.
- Platforma će podrazumevano koristiti ovo bez




Dobijanje komentara kao stabla
Moguće je dobiti komentare vraćene kao stablo, pri čemu paginacija broji samo komentare prvog nivoa.

Želite da dobijete samo komentare prvog nivoa i neposrednu decu? Evo jednog načina:

Međutim, u vašem UI možda će vam trebati informacija da li prikazati dugme "prikaži odgovore" na
svakom komentaru. Kada preuzimate komentare kao stablo, postoji hasChildren svojstvo koje se dodaje
komentarima kada je primenljivo.
Dobijanje komentara kao stablo, pretraga po haštagu
Moguće je pretraživati po haštagu koristeći API, preko čitavog vašeg tenant-a (nije ograničeno na jednu stranicu ili urlId).
U ovom primeru izostavljamo urlId, i pretražujemo po više haštagova. API će vratiti samo komentare koji imaju sve tražene haštagove.

Svi parametri zahteva

Odgovor

Korisni saveti
URL ID
Verovatno želite da koristite Comment API sa parametrima urlId. Najpre možete pozvati Pages API da vidite kako izgledaju vrednosti urlId dostupne vama.
Anonimne radnje
Za anonimno komentarisanje verovatno ćete želeti da prosledite anonUserId prilikom preuzimanja komentara, i prilikom prijavljivanja i blokiranja.
(!) Ovo je obavezno za mnoge prodavnice aplikacija jer korisnici moraju biti u mogućnosti da prijave sadržaj koji su korisnici kreirali koji mogu da vide, čak i ako nisu prijavljeni. Nepoštovanje ovoga može dovesti do uklanjanja vaše aplikacije iz pomenute prodavnice.
Komentari se ne vraćaju
Proverite da li su vaši komentari odobreni i da nisu spam.
GET /api/v1/comments/:id 
Ovaj API omogućava preuzimanje pojedinačnog komentara po id-u.



POST /api/v1/comments 
Ovaj API endpoint omogućava kreiranje komentara.
Uobičajeni slučajevi upotrebe su prilagođeni UI-ji, integracije, ili uvozi.
Napomene:
- Ovaj API može ažurirati widget za komentare „u realnom vremenu“ ako se želi (ovo povećava
creditsCostsa1na2). - Ovaj API će automatski kreirati objekte korisnika u našem sistemu ako je naveden email.
- Pokušaj da se sačuvaju dva komentara sa različitim emailovima, ali istim korisničkim imenom, rezultiraće greškom za drugi komentar.
- Ako specificirate
parentId, i ukoliko dečiji komentar imanotificationSentForParentpostavljeno na false, poslaćemo notifikacije za roditeljski komentar. Ovo se radi na svakih sat vremena (grupisemo notifikacije kako bismo smanjili broj poslatih emailova). - Ako želite slati welcome email-ove prilikom kreiranja korisnika, ili email-ove za verifikaciju komentara, postavite
sendEmailsnatrueu query parametrima. - Komentari kreirani preko ovog API-ja će se pojaviti na stranicama Analitike i Moderacije u admin aplikaciji.
- "neprimerene reči" su i dalje maskirane u imenima komentatora i tekstu komentara ako je podešavanje uključeno.
- Komentari kreirani putem ovog API-ja i dalje mogu biti provereni za spam ako je potrebno.
- Konfiguracije kao što je maksimalna dužina komentara, ukoliko su podešene preko admin stranice Customization Rule, važiće ovde.
Minimalni podaci potrebni za slanje koji će se prikazati u widgetu za komentare su sledeći:

Realniji zahtev može izgledati ovako:



PATCH /api/v1/comments/:id 
Ovaj API endpoint omogućava ažuriranje pojedinačnog komentara.
Napomene:
- Ovaj API može ažurirati comment widget "live" ako je željeno (ovo povećava base
creditsCostfrom1to2).- Ovo može omogućiti migraciju komentara između stranica "live" (promena
urlId). - Migracije koštaju dodatna
2kredita jer se stranice prethodno izračunavaju i ovo je CPU intenzivno.
- Ovo može omogućiti migraciju komentara između stranica "live" (promena
- Za razliku od create API-ja, ovaj API NEĆE automatski kreirati objekte korisnika u našem sistemu ako je email naveden.
- Komentari ažurirani putem ovog API-ja i dalje se mogu proveravati na spam ako je potrebno.
- Konfiguracije kao što su maksimalna dužina komentara, ako su postavljene preko Customization Rule admin stranice, biće primenjene ovde.
- Da biste omogućili korisnicima da ažuriraju tekst svog komentara, možete samo navesti
commentu telu zahteva. Mi ćemo generisati rezultujućicommentHTML.- Ako definišete i
commenticommentHTML, mi nećemo automatski generisati HTML. - Ako korisnik doda mentions ili hashtags u svom novom tekstu, to će i dalje biti obrađeno kao kod
POSTAPI-ja.
- Ako definišete i
- Kada ažurirate
commenterEmailna komentaru, najbolje je da takođe navedeteuserId. Inače, morate osigurati da korisnik sa tim emailom pripada vašem tenant-u, inače će zahtev propasti.



DELETE /api/v1/comments/:id 
Ovaj API omogućava brisanje komentara.
Napomene:
- Ovaj API može ažurirati widget za komentare "uživo" ako je potrebno (ovo povećava
creditsCostsa1na2). - Ovaj API će obrisati sve podkomentare.



POST /api/v1/comments/:id/flag 
Ovaj API endpoint omogućava označavanje (flag) komentara za određenog korisnika.
Napomene:
- Ovaj poziv mora uvek biti izvršen u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik, ili Tenant korisnik.
- Ako je postavljen prag za sakrivanje prilikom dostizanja broja oznaka, komentar će biti automatski sakriven uživo nakon što je označen definisani broj puta.
- Nakon što je automatski neodobren (sakriven) — komentar može ponovo odobriti samo administrator ili moderator. Uklanjanje oznake neće ponovo 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ćava podršku za označavanje i uklanjanje oznake komentara čak i ako korisnik nije prijavljen. Na taj način, komentar može biti prikazan kao označen kada se komentari dohvate sa istim anonUserId.



POST /api/v1/comments/:id/un-flag 
Ovaj API endpoint omogućava uklanjanje oznake (un-flag) sa komentara za određenog korisnika.
Napomene:
- Ovaj poziv mora uvek biti izvršen u kontekstu korisnika. Korisnik može biti FastComments.com User, SSO User, ili Tenant User.
- Nakon što je komentar automatski neodobren (sakriven) - komentar može ponovo biti odobren samo od strane administratora ili moderatora. Uklanjanje oznake (un-flag) neće ponovo odobriti komentar.

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



POST /api/v1/comments/:id/block 
Ovaj API endpoint omogućava blokiranje korisnika koji je napisao određeni komentar. Podržava blokiranje komentara koje su napisali FastComments.com Users, SSO Users i Tenant Users.
Podržava commentIdsToCheck body parametar za proveru da li bi bilo koji drugi potencijalno vidljivi komentari na klijentu trebali biti blokirani/odblokirani nakon izvođenja ove akcije.
Beleške:
- Ovaj poziv mora uvek biti izvršen u kontekstu korisnika. Korisnik može biti FastComments.com User, SSO User ili Tenant User.
userIdu zahtevu je korisnik koji izvršava blokiranje. Na primer:User Aželi da blokiraUser B. ProslediuserId=User Ai id komentara koji jeUser Bnapisao.- Potpuno anonimni komentari (bez user id, bez email-a) ne mogu biti blokirani i vratiće se greška.

Za anonimno blokiranje, moramo navesti anonUserId. To može biti ID koji predstavlja anonimnu sesiju, ili nasumični UUID.
Ovo nam omogućava podršku za blokiranje komentara čak i ako korisnik nije prijavljen, tako što ćemo dovući komentare sa istim anonUserId.



POST /api/v1/comments/:id/un-block 
Ovaj API endpoint omogućava poništavanje blokiranja korisnika koji je napisao dati komentar. Podržava poništavanje blokiranja komentara koje su napisali FastComments.com korisnici, SSO korisnici i Tenant korisnici.
Podržan je body parametar commentIdsToCheck koji proverava da li bi ostali potencijalno vidljivi komentari na klijentu trebalo da budu blokirani/poništeni nakon što se ova akcija izvrši.
Napomene:
- Ovaj poziv mora uvek biti izvršen u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik ili Tenant korisnik.
userIdu zahtevu je korisnik koji poništava blokiranje. Na primer:User Aželi da poništi blokiranjeUser B. ProslediuserId=User Ai ID komentara koji jeUser Bnapisao.- Potpuno anonimni komentari (bez user id, bez email) ne mogu biti blokirani i biće vraćena greška.




Struktura šablona e-pošte 
Objekat EmailTemplate predstavlja konfiguraciju za prilagođeni email šablon, za tenant.
Sistem će izabrati email šablon za upotrebu na osnovu:
- Njegovog identifikatora tipa, koji nazivamo
emailTemplateId. To su konstante. domain. Prvo ćemo pokušati da pronađemo šablon za domen sa kojim je povezan relevantan objekat (npr.Comment), a ako se poklapanje ne pronađe pokušaćemo da pronađemo šablon gde je domain null ili*.
Struktura objekta EmailTemplate je sledeća:

Napomene
- Možete dobiti validne
emailTemplateIdvrednosti sa/definitionsendpoint-a. /definitionsendpoint takođe uključuje podrazumevane prevode i test podatke.- Šabloni neće moći da se sačuvaju ako struktura ili test podaci nisu validni.
GET /api/v1/email-templates/:id 
Pojedinačni EmailTemplates mogu se dohvatiti pomoću odgovarajućeg id (NE emailTemplateId).



GET /api/v1/email-templates 
Ovaj API koristi paginaciju, obezbeđenu parametrom upita page. EmailTemplates se vraćaju u stranicama po 100, sortirane po createdAt i zatim po id.



PATCH /api/v1/email-templates/:id 
Ovaj API endpoint omogućava ažuriranje email šablona navodeći samo id i atribute koje treba ažurirati.
Imajte na umu da se sve iste validacije kao pri kreiranju šablona takođe primenjuju, na primer:
- Šablon mora da se renderuje. Ovo se proverava pri svakom ažuriranju.
- Ne možete imati duplikate šablona za isti domen (inače bi jedan bio tiho zanemaren).



POST /api/v1/email-templates 
Ovaj API endpoint pruža mogućnost kreiranja email šablona.
Napomene:
- Ne možete imati više šablona sa istim
emailTemplateIdza istu domenu. - Međutim, možete imati wildcard šablon (
domain=*and a domain specific template for the sameemailTemplateId). - Navođenje
domainje relevantno samo ako imate različite domene, ili želite koristiti specifične šablone za testiranje (domainset tolocalhostetc). - Ako navedete
domainit must match aDomainConfig. On error a list of valid domains is provided. - Sintaksa šablona je EJS i renderuje se sa timeout-om od 500ms. P99 za renderovanje je <5ms, tako da ako dosegnete 500ms nešto nije u redu.
- Vaš šablon mora biti renderovan sa zadatim
testDatada bi se sačuvao. Greške pri renderovanju se agregiraju i prijavljuju na dashboard (uskoro dostupno preko API-ja).
Minimalni podaci potrebni za dodavanje šablona su sledeći:

Možda ćete želeti da imate šablone po sajtu, u kom slučaju definišete domain:



POST /api/v1/email-templates/render 
Ovaj API endpoint omogućava pregled email šablona.



DELETE /api/v1/email-templates/:id 
Ovaj endpoint omogućava uklanjanje jednog EmailTemplate po id-u.



Struktura haštagova 
Objekat HashTag predstavlja oznaku koju korisnik može ostaviti. HashTags se mogu koristiti za povezivanje sa spoljnim sadržajem ili za
povezivanje povezanih komentara.
Struktura HashTag objekta je sledeća:

Napomene:
- U nekim API endpoint-ima videćete da se hashtag koristi u URL-u. Zapamtite da treba URI-enkodirati vrednosti. Na primer,
#bi trebalo da bude predstavljeno kao%23. - Neki od ovih polja su označeni kao
READONLY- ona se vraćaju iz API-ja, ali se ne mogu postaviti.
GET /api/v1/hash-tags 
Ovaj API koristi paginaciju, obezbeđenu parametrom upita page. Haštagovi se vraćaju u stranicama po 100, poređani po tag.



PATCH /api/v1/hash-tags/:tag 
Ovaj endpoint omogućava ažuriranje jednog HashTag-a.



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



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



DELETE /api/v1/hash-tags/:tag 
Ovaj endpoint omogućava uklanjanje HashTag korisnika po prosleđenom tagu.
Imajte na umu da, osim ako automatsko kreiranje HashTag nije onemogućeno, heštegovi mogu biti ponovo kreirani od strane korisnika koji navede hešteg prilikom komentarisanja.



Struktura moderatora 
Objekat Moderator predstavlja konfiguraciju za moderatora.
Postoje tri vrste moderatora:
- Administrator korisnici koji imaju oznaku
isCommentModeratorAdmin. - SSO korisnici sa oznakom
isCommentModeratorAdmin. - Obični komentatori, odnosno FastComments.com korisnici, koji su pozvani kao Moderatori.
Struktura Moderator se koristi za predstavljanje stanja moderacije za slučaj upotrebe 3.
Ako želite da pozovete korisnika da postane moderator, putem API-ja koristite Moderator API kreiranjem Moderator i inviting njih.
Ako korisnik nema FastComments.com nalog, mejl sa pozivnicom će im pomoći da se podese. Ako već imaju nalog, biće im dodeljen pristup za moderaciju vašeg tenanta i Moderator object's userId biće ažuriran da pokazuje na njihovog korisnika. Nećete imati API pristup njihovom korisniku, jer u tom slučaju nalog pripada njima i njime upravlja FastComments.com.
Ako vam je potrebno potpuno upravljanje nalogom korisnika, preporučujemo ili korišćenje SSO, ili dodavanje njih kao a Korisnik tenanta i potom dodavanje Moderator objekta da biste pratili njihove statistike.
Struktura Moderator može se koristiti kao mehanizam za praćenje statistike za slučajeve upotrebe 1 i 2. Nakon kreiranja korisnika, dodajte Moderator objekat sa definisanim userId i njihove statistike će biti praćene na Stranici moderatora komentara.
Struktura za Moderator objekat je sledeća:

GET /api/v1/moderators/:id 
Ova ruta vraća jednog moderatora po njegovom id-u.



GET /api/v1/moderators 
Ovaj API koristi paginaciju, koju obezbeđuje parametar upita skip. Moderatori se vraćaju u stranicama po 100, poređani po createdAt i id.
Trošak se zasniva na broju vraćenih moderatora: 1 credit per 10 moderatora.



PATCH /api/v1/moderators/:id 
Ovaj API endpoint pruža mogućnost ažuriranja Moderator po id.
Ažuriranje Moderator ima sledeća ograničenja:
- Sledeće vrednosti ne smeju biti prosleđene prilikom ažuriranja
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je naveden
userId, taj korisnik mora postojati. - Kada je naveden
userId, on mora pripadati istomtenantIdkoji je naveden u query parametrima. - Dva moderatora u istom tenantu ne mogu biti dodata sa istim
email. - Ne smete menjati
tenantIdpovezan saModerator.



POST /api/v1/moderators 
Ova ruta pruža mogućnost dodavanja jednog Moderator.
Kreiranje Moderator ima sledeća ograničenja:
- Uvek je potrebno navesti
nameiemail.userIdje opciono. - Sledeće vrednosti ne smeju biti prosleđene pri kreiranju
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je naveden
userId, taj korisnik mora postojati. - Kada je naveden
userId, on mora pripadati istomtenantIdkoji je naveden u parametrima upita. - Dva moderatora u istom tenantu ne mogu biti dodata sa istim
email.
Možemo kreirati Moderator za korisnika o kojem znamo samo email:

Ili možemo kreirati Moderator za korisnika koji pripada našem tenantu, da bismo pratili njihove statistike moderacije:



POST /api/v1/moderators/:id/send-invite 
Ovaj endpoint omogućava da pozovete jednog Moderator.
Sledeća ograničenja važe za slanje email pozivnice Moderator-u:
Moderatormora već postojati.fromNamene sme biti duže od100 characters.
Napomene:
- Ako korisnik sa datom email adresom već postoji, biće pozvan da moderira komentare vašeg tenanta.
- Ako korisnik sa datom email adresom ne postoji, link u pozivnici će ih uputiti kroz proces kreiranja naloga.
- Pozivnica ističe nakon
30 days.
Možemo kreirati Moderator za korisnika za kog znamo samo email:

Ovo će poslati email koji izgleda otprilike ovako: Bob at TenantName is inviting you to be a moderator...


DELETE /api/v1/moderators/:id 
Ova ruta omogućava uklanjanje Moderator po id-u.



Struktura broja obaveštenja 
Objekat NotificationCount predstavlja broj nepročitanih obaveštenja i metapodatke za korisnika.
Ako nema nepročitanih obaveštenja, za korisnika neće postojati NotificationCount.
NotificationCount objekti se automatski kreiraju i ne mogu se kreirati preko API-ja. Takođe ističu nakon jedne godine.
Možete obrisati broj nepročitanih obaveštenja korisnika tako što ćete izbrisati njihov NotificationCount.
Struktura objekta NotificationCount je sledeća:

GET /api/v1/notification-count/:user_id 
Ova ruta vraća jedan NotificationCount po ID-u korisnika. Sa SSO, ID korisnika je u formatu <tenant id>:<user id>.
Ako nema nepročitanih notifikacija, neće postojati NotificationCount — dobićete 404.
Ovo se razlikuje od notifications/count po tome što je mnogo brže, ali ne dozvoljava filtriranje.



DELETE /api/v1/notification-count/:user_id 
Ova ruta briše pojedinačni NotificationCount po korisničkom ID-u. Sa SSO, korisnički ID je u formatu <tenant id>:<user id>.
Ovo će očistiti broj nepročitanih obaveštenja korisnika (crveno zvonce u komentarskom widgetu će izbledeti i broj će nestati).



Struktura obaveštenja 
A Notification objekat predstavlja notifikaciju za korisnika.
Notification objekti se kreiraju automatski i ne mogu se kreirati preko API-ja. Takođe ističu nakon jedne godine.
Notifikacije se ne mogu obrisati. Međutim, mogu se ažurirati da se viewed postavi na false, i možete ih pretraživati po viewed.
Korisnik se takođe može odjaviti od notifikacija za određeni komentar postavljanjem optedOut u notifikaciji na true. Možete se ponovo prijaviti postavljanjem na false.
Postoje različiti tipovi notifikacija - proverite relatedObjectType i type.
Načini na koje se notifikacije kreiraju su prilično fleksibilni i mogu biti pokrenuti u mnogim scenarijima (videti NotificationType).
U ovom trenutku, postojanje Notification zapravo ne znači da je email poslat ili da bi trebao biti poslat. Umesto toga, notifikacije
se koriste za feed notifikacija i povezane integracije.
The structure for the Notification object is as follows:

GET /api/v1/notifications 
Ova ruta vraća do 30 Notification objekata sortiranih po createdAt, najnoviji prvi.
Možete filtrirati po userId. Sa SSO, user id je u formatu <tenant id>:<user id>.



GET /api/v1/notifications/count 
Ovaj endpoint vraća objekat koji sadrži broj notifikacija u parametru count.
Sporiji je od /notification-count/ i dvostruko je skuplji po cenama kredita, ali omogućava filtriranje po više dimenzija.
Možete filtrirati istim parametrima kao i endpoint /notifications, kao što je userId. Kod SSO-a, userId je u formatu <tenant id>:<user id>.




PATCH /api/v1/notifications/:id 
Ovaj API endpoint pruža mogućnost ažuriranja Notification po id.
Ažuriranje Notification ima sledeća ograničenja:
- Možete ažurirati samo sledeća polja:
viewedoptedOut



Struktura stranice 
Objekat Page predstavlja stranicu kojoj može pripadati mnogo komentara. Ovaj odnos je definisan preko urlId.
Page čuva informacije kao što su naslov stranice, broj komentara i urlId.
Struktura za Page objekat je sledeća:

GET /api/v1/pages 
Trenutno možete dohvatiti samo sve stranice (ili pojedinačnu stranicu putem /by-url-id) povezane sa vašim nalogom. Ako želite preciznije pretraživanje, kontaktirajte nas.



Koristan savet
Comment API zahteva urlId. Možete prvo pozvati Pages API, da vidite kako vrednosti urlId koje su vam dostupne
izgledaju.
GET /api/v1/pages/by-url-id 
Individual pages can be fetched by their corresponding urlId. This can be useful for looking up page titles or comment counts.



Koristan savet
Ne zaboravite da URI enkodujete vrednosti poput urlId.
PATCH /api/v1/pages/:id 
Ovaj endpoint omogućava ažuriranje jedne Page. Odgovarajući komentari će biti ažurirani.



Napomena
Neki parametri u Page objektu se automatski ažuriraju. To su atributi counts i title. Counts se ne mogu ažurirati
putem API-ja jer su to izračunate vrednosti. The page title can be set via the API, but would get overwritten if the comment widget is used on
a page with the same urlId and a different page title.
POST /api/v1/pages 
Ovaj API endpoint omogućava kreiranje stranica.
Uobičajen slučaj upotrebe je kontrola pristupa.
Napomene:
- Ako ste komentarisali u niti komentara, ili pozvali API da kreirate
Comment, već ste kreiraliPageobjekat! Možete ga pokušati dohvatiti putem/by-url-idPagerute, prosleđujući istiurlIdkoji je prosleđen comment widgetu. - Struktura
Pagesadrži neke izračunate vrednosti. Trenutno su tocommentCountirootCommentCount. Popunjavaju se automatski i ne mogu se postaviti preko API-ja. Pokušaj da se postave prouzrokovaće da API vrati grešku.



DELETE /api/v1/pages/:id 
Ova ruta omogućava uklanjanje jedne stranice po id-u.
Imajte na umu da će interakcija sa komentarskim vidžetom za stranicu sa istim urlId jednostavno ponovo kreirati Page neprimetno.



Struktura očekivanog webhook događaja 
Objekat PendingWebhookEvent predstavlja webhook događaj koji stoji u redu i čeka obradu.
PendingWebhookEvent objekti se kreiraju automatski i ne mogu se ručno kreirati putem API-ja. Takođe ističu nakon jedne godine.
Mogu se obrisati što uklanja zadatak iz reda.
Postoje različiti tipovi događaja - proverite eventType (OutboundSyncEventType) i type (OutboundSyncType).
Uobičajen slučaj upotrebe ovog API-ja je implementacija prilagođenog nadzora. Možda ćete želeti da pozivate /count endpoint periodično
da biste ispitivali broj stavki na čekanju za date filtere.
Struktura PendingWebhookEvent objekta je sledeća:

GET /api/v1/pending-webhook-events 
Ovaj endpoint vraća listu čekajućih webhook događaja u parametru pendingWebhookEvents.
Ovaj API koristi paginaciju, obezbeđenu parametrom skip. PendingWebhookEvents se vraćaju u stranicama po 100, poređani po createdAt, od najnovijih ka najstarijima.



GET /api/v1/pending-webhook-events/count 
Ova ruta vraća objekat koji sadrži broj webhook događaja na čekanju u parametru count.
Možete filtrirati po istim parametrima kao i endpoint /pending-webhook-events



DELETE /api/v1/pending-webhook-events/:id 
Ovaj endpoint omogućava brisanje jednog PendingWebhookEvent.
Ako trebate masovno brisanje, pozovite GET API sa paginacijom, a zatim pozovite ovaj API sekvencijalno.



Struktura SSO korisnika 
FastComments pruža jednostavno SSO rešenje. Ažuriranje informacija o korisniku pomoću HMAC-integracije je jednostavno kao učitavanje stranice od strane korisnika sa ažuriranim payload-om.
Međutim, može biti poželjno upravljati korisnikom van tog toka, radi poboljšanja konzistentnosti vaše aplikacije.
SSO User API pruža način za CRUD objekata koje nazivamo SSOUsers. Ovi objekti se razlikuju od regularnih Users i držani su odvojeno radi bezbednosti tipova.
Struktura SSOUser objekta je sledeća:

Naplata za SSO korisnike
SSO korisnici se naplaćuju različito u zavisnosti od njihovih dozvola:
- Regular SSO Users: Korisnici bez administratorskih ili moderatorskih dozvola se naplaćuju kao regularni SSO korisnici
- SSO Admins: Korisnici sa
isAccountOwneriliisAdminAdminzastavicama se naplaćuju odvojeno kao SSO Admins (isti tarifni razred kao regularni tenant admini) - SSO Moderators: Korisnici sa
isCommentModeratorAdminzastavicom se naplaćuju odvojeno kao SSO Moderators (isti tarifni razred kao regularni moderatori)
Važno: Da bi se sprečilo dvostruko naplaćivanje, sistem automatski deduplicira SSO korisnike naspram regularnih tenant korisnika i moderatora po email adresi. Ako SSO korisnik ima isti email kao regularni tenant korisnik ili moderator, neće biti naplaćen dva puta.
Kontrola pristupa
Korisnici mogu biti podeljeni u grupe. Za to služi polje groupIds, i nije obavezno.
@Mentions
Po podrazumevanoj vrednosti, @mentions će koristiti username za pretragu drugih sso korisnika kada se unese karakter @. Ako se koristi displayName, tada će rezultati koji odgovaraju username biti zanemareni kada postoji poklapanje za displayName, i rezultati pretrage za @mention će koristiti displayName.
Pretplate
Sa FastComments, korisnici se mogu pretplatiti na stranicu klikom na ikonicu zvona u widgetu za komentare i izborom Subscribe.
Kod regularnog korisnika, šaljemo im email notifikacije na osnovu njihovih podešavanja za notifikacije.
Kod SSO korisnika, razdvajamo ovo radi kompatibilnosti unazad. Korisnici će dobijati ove dodatne emailove o pretplati samo ako postavite optedInSubscriptionNotifications na true.
Značke
Možete dodeljivati značke SSO korisnicima pomoću svojstva badgeConfig. Značke su vizuelni indikatori koji se pojavljuju pored imena korisnika u komentarima.
badgeIds- Niz ID-jeva znački koje će biti dodeljene korisniku. Moraju biti važeći ID-jevi znački kreirani na vašem FastComments nalogu. Ograničeno na 30 znački.override- Ako je true, sve postojeće značke prikazane na komentarima biće zamenjene navedenim. Ako je false ili izostavljeno, navedene značke biće dodate postojećim značkama.update- Ako je true, svojstva prikaza znački će se ažurirati iz konfiguracije tenant-a kad god se korisnik prijavi.
GET /api/v1/sso-users 
Ova ruta vraća SSO korisnike u stranicama po 100. Paginacija se obezbeđuje parametrom skip. Korisnici su sortirani po njihovom signUpDate i id.



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



GET /api/v1/sso-users/by-email/:email 
Ovaj endpoint vraća jednog SSO korisnika po njihovoj email adresi.



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



POST /api/v1/sso-users 
Ovaj endpoint omogućava kreiranje jednog SSO korisnika.
Pokušaj kreiranja dva korisnika sa istim ID-jem će rezultovati greškom.

U ovom primeru navodimo groupIds za kontrolu pristupa, ali ovo je opciono.


Napomena o integraciji
Podaci poslati preko API-ja mogu se jednostavno prebrisati prosleđivanjem drugačijeg SSO User HMAC payload-a. Na primer, ako postavite username putem API-ja, ali zatim prosledite drugačiji putem SSO toka pri učitavanju stranice, automatski ćemo ažurirati njihov username.
Nećemo ažurirati parametre korisnika u ovom toku osim ako ih eksplicitno ne navedete ili postavite na null (ne undefined).
PUT /api/v1/sso-users/:id 
Ovaj endpoint omogućava ažuriranje jednog SSO korisnika.

U ovom primeru navodimo groupIds za kontrolu pristupa, ali to je opciono.


DELETE /api/v1/sso-users/:id 
Ovaj endpoint omogućava uklanjanje pojedinačnog SSO korisnika po njegovom id-u.
Imajte na umu da ponovno učitavanje komentarskog widgeta sa payload-om za ovog korisnika jednostavno ponovo kreira korisnika bez prekida.
Brisanje korisnikovih komentara je moguće putem query parametra deleteComments. Imajte na umu da ako je ovo tačno:
- Svi korisnikovi komentari biće obrisani uživo.
- Svi child (sada siroti) komentari biće obrisani ili anonimizovani u zavisnosti od konfiguracije stranice kojoj svaki komentar pripada. Na primer, ako je režim brisanja niti "anonymize", onda će odgovori ostati, a korisnikovi komentari će biti anonimizovani. Ovo se primenjuje samo kada je
commentDeleteModepostavljen naRemove(podrazumevana vrednost). creditsCostpostaje2.
Anonimizovani komentari
Možete zadržati korisnikove komentare, ali ih jednostavno anonimizovati postavljanjem commentDeleteMode=1.
Ako su korisnikovi komentari anonimizovani, sledeće vrednosti se postavljaju na null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted i isDeletedUser se postavljaju na true.
Prilikom renderovanja, komentarski widget će za korisničko ime koristiti DELETED_USER_PLACEHOLDER (podrazumevano: "[deleted]") a za sadržaj komentara DELETED_CONTENT_PLACEHOLDER. Ovo se može prilagoditi preko korisničkog interfejsa za prilagođavanje widgeta.
Primeri



Struktura pretplate 
Subscription objekat predstavlja pretplatu za korisnika.
Subscription objekti se kreiraju kada korisnik klikne na ikonu zvona za obaveštenja u komentarskom widgetu i klikne na "Pretplati se na ovu stranicu".
Pretplate se takođe mogu kreirati putem API-ja.
Pojava Subscription objekta izaziva generisanje Notification objekata i slanje mejlova kada se ostave novi komentari na root-u povezane stranice
za koju je Subscription. Slanje mejlova zavisi od tipa korisnika. Za obične korisnike ovo zavisi od optedInNotifications. Za SSO korisnike ovo zavisi od optedInSubscriptionNotifications. Imajte na umu da neke aplikacije možda nemaju koncept veb-pristupačne stranice, u kom slučaju jednostavno postavite urlId na
id stavke na koju se pretplaćujete (ista vrednost za urlId koju biste prosledili komentarskom widgetu).
Struktura za Subscription objekat je sledeća:

GET /api/v1/subscriptions/:id 
Ova ruta vraća do 30 Subscription objekata sortiranih po createdAt, najnoviji prvi.
Možete filtrirati po userId. Sa SSO, korisnički id je u formatu <tenant id>:<user id>.



POST /api/v1/subscriptions 
Ovaj API endpoint omogućava kreiranje Subscription. Imajte na umu da korisnik može imati samo jednu pretplatu po stranici, jer su više njih suvišne, i pokušaj kreiranja više od jedne pretplate za istog korisnika za istu stranicu rezultiraće greškom.
Kreiranje pretplate će dovesti do kreiranja objekata Notification kada se ostavi novi komentar na korenu pretplaćenog urlId (kada je parentId komentara null).



DELETE /api/v1/subscriptions/:id 
Ovaj endpoint briše jedan objekat Subscription po id-u.



Struktura dnevne upotrebe zakupca 
Objekat TenantDailyUsage predstavlja upotrebu za tenant-a za određeni dan. Ako nije bilo aktivnosti za datog tenant-a na određen
dan, taj dan neće imati objekat TenantDailyUsage.
Objekat TenantDailyUsage je NIJE u realnom vremenu i može kasniti za nekoliko minuta u odnosu na stvarnu upotrebu.
Struktura objekta TenantDailyUsage je sledeća:

GET /api/v1/tenant-daily-usage 
Ovaj endpoint omogućava pretragu upotrebe tenanta po godini, mesecu i danu. Može se vratiti najviše 365 objekata, a cena je 1 api credit na 10 objekata.
Objekti odgovora su sortirani po datumu kada su kreirani (najstariji prvi).



Struktura zakupca 
Tenant definiše FastComments.com kupca. Mogu se kreirati preko API-ja od strane tenanta koji imaju pristup za white labeling. White labeled tenanti ne mogu kreirati druge white labeled tenante (dozvoljen je samo jedan nivo ugnježđivanja).
Struktura Tenant objekta je sledeća:

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



GET /api/v1/tenants 
Ovaj API vraća tenante kojima upravlja vaš tenant.
Paginacija se obezbeđuje pomoću query parametra skip. Tenanti se vraćaju u stranicama po 100, sortirani po signUpDate i id.
Trošak se zasniva na broju vraćenih tenanata, iznosi 1 credit per 10 vraćenih tenanata.

Možete definisati meta parametre na Tenant objektima i upitavati za odgovarajuće tenante. Na primer, za ključ someKey i meta vrednost some-value, možemo konstruisati JSON objekat sa ovim parom ključ/vrednost i zatim ga URI enkodovati kao query parametar za filtriranje:



POST /api/v1/tenants 
Ovaj endpoint omogućava dodavanje jednog Tenant.
Kreiranje Tenant ima sledeća ograničenja:
nameje obavezno.domainConfigurationje obavezno.- Sledeće vrednosti se ne smeju navoditi prilikom kreiranja
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDatene sme biti u budućnosti.namene sme biti duže od200 characters.emailne sme biti duže od300 characters.emailmora biti jedinstven među svim tenantima na FastComments.com.- Ne možete kreirati tenant-e ako roditeljski tenant nema definisan validan
TenantPackage.- Ako je vaš tenant kreiran preko FastComments.com, ovo ne bi trebalo da predstavlja problem.
- Ne možete kreirati više tenant-a nego što je definisano u
maxWhiteLabeledTenantsu vašem paketu. - Morate navesti query param
tenantIdkoji je id vašegparent tenantsa omogućenim white labeling-om.
Možemo kreirati Tenant koristeći samo nekoliko parametara:



PATCH /api/v1/tenants/:id 
Ova API krajnja tačka omogućava ažuriranje Tenant po id.
Ažuriranje Tenant ima sledeća ograničenja:
- Sledeće vrednosti se ne mogu ažurirati:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
- Vrednost
signUpDatene sme biti u budućnosti. - Vrednost
namene sme biti duža od200 characters. - Vrednost
emailne sme biti duža od300 characters. - Vrednost
emailmora biti jedinstvena među svim tenant-ima FastComments.com. - Kada se
billingInfoValidpostavi natrue,billingInfomora biti dostavljen u istom zahtevu. - Ne možete da ažurirate
packageIdkoji je povezan sa vašim tenant-om. - Ne možete da ažurirate
paymentFrequencykoji je povezan sa vašim tenant-om.



DELETE /api/v1/tenants/:id 
Ova ruta omogućava uklanjanje Tenant i svih povezanih podataka (korisnika, komentara, itd.) po id-u.
Sledeća ograničenja važe prilikom uklanjanja tenanta:
- Tenant mora biti vaš, ili white-label tenant kojim upravljate.
- Query parametar
suremora biti postavljen natrue.



Struktura paketa zakupca 
TenantPackage definiše informacije o paketu dostupnom Tenant. Tenant može imati više dostupnih paketa, ali je u upotrebi samo jedan u datom trenutku.
Tenant se ne može koristiti za bilo koje proizvode dok njegov packageId ne ukazuje na važeći TenantPackage.
Postoje dve vrste TenantPackage objekata:
- Paketi sa fiksnim cenama - gde je
hasFlexPricingfalse. - Fleksibilno određivanje cena - gde je
hasFlexPricingtrue.
U oba slučaja ograničenja se definišu na nalogu koji koristi paket, međutim kod Flex-a tenant se naplaćuje osnovna cena plus ono što su koristili, definisano flex* parametrima.
Tenant može imati više tenant paketa i mogućnost da sam promeni paket sa Stranice sa informacijama o naplati.
Ako ćete vi sami obrađivati naplatu za tenante, i dalje ćete morati da definišete paket za svakog tenanta da biste odredili njihova ograničenja. Jednostavno postavite billingHandledExternally na true na Tenant i oni neće moći sami da menjaju svoje podatke o naplati ili aktivni paket.
Ne smete kreirati pakete sa većim ograničenjima od roditeljskog tenanta.
Struktura TenantPackage objekta je sledeća:

GET /api/v1/tenant-packages/:id 
Ovaj endpoint vraća jedan Tenant Package po id-u.



GET /api/v1/tenant-packages 
Ovaj API koristi paginaciju, koju obezbeđuje query parametar skip. TenantPackages se vraćaju u stranicama po 100, sortirane po createdAt i id.
Cena se zasniva na broju vraćenih TenantPackages, i iznosi 1 credit per 10 vraćenih TenantPackages.



POST /api/v1/tenant-packages 
Ovaj endpoint omogućava dodavanje jednog TenantPackage.
Kreiranje TenantPackage ima sledeća ograničenja:
- Sledeći parametri su obavezni:
nametenantIdmonthlyCostUSD- Može biti null.yearlyCostUSD- Može biti null.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- Ako je true, tada su sviflex*parametri obavezni.
- Vrednost
namene sme biti duža od50 characters. - Svaki element
forWhoTextne sme biti duži od200 characters. - Svaki element
featureTaglinesne sme biti duži od100 characters. TenantPackagemora biti "manji" od roditeljskog tenant-a. Na primer, svimax*parametri moraju imati niže vrednosti nego kod roditeljskog tenant-a.- Tenant sa white-labeling pristupom može imati najviše pet paketa.
- Samo tenant-i sa pristupom za white labeling mogu kreirati
TenantPackage. - Ne možete dodavati pakete svom sopstvenom tenant-u. :)
Možemo kreirati a TenantPackage na sledeći način:



PATCH /api/v1/tenant-packages/:id 
Ovaj API endpoint omogućava ažuriranje TenantPackage po id.
Ažuriranje TenantPackage ima sledeća ograničenja:
- Ako postavljate
hasFlexPricingnatrue, onda su sviflex*parametri obavezni u tom istom zahtevu. namene sme biti duže od50 characters.- Svaki element
forWhoTextne sme biti duži od200 characters. - Svaki element
featureTaglinesne sme biti duži od100 characters. TenantPackagemora biti "manji" od roditeljskog tenanta. Na primer, svimax*parametri moraju imati niže vrednosti od roditeljskog tenanta.- Ne smete menjati
tenantIdpovezan saTenantPackage.



DELETE /api/v1/tenant-packages/:id 
Ova ruta omogućava uklanjanje TenantPackage po id-u.
Ne možete ukloniti TenantPackage koji je u upotrebi (tenant-ov packageId pokazuje na paket). Prvo ažurirajte Tenant.



Struktura korisnika zakupca 
The TenantUser definiše User koji je pod upravljanjem konkretnog tenanta. Njihov nalog se u potpunosti nalazi pod kontrolom tenanta sa kojim su povezani, i njihov nalog može biti ažuriran ili obrisan putem UI ili API-ja.
Tenant korisnici mogu biti administratori sa svim dozvolama i pristupom Tenant-u, ili mogu biti ograničeni na određene dozvole za moderiranje komentara, pristup API ključevima, itd.
Struktura za TenantUser objekat je sledeća:

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



GET /api/v1/tenant-users 
Ovaj API koristi paginaciju, obezbeđenu query parametrom skip. TenantUsers se vraćaju u stranicama po 100, sortirani po signUpDate, username i id.
Cena se zasniva na broju vraćenih tenant korisnika, iznosi 1 credit per 10 vraćenih tenant korisnika.



POST /api/v1/tenant-users 
Ova ruta omogućava dodavanje jednog TenantUser.
Kreiranje TenantUser ima sledeća ograničenja:
usernameje obavezan.emailje obavezan.signUpDatene sme biti u budućnosti.localemora biti na listi Podržane lokalizacije.usernamemora biti jedinstven na celoj FastComments.com. Ako je ovo problem, predlažemo korišćenje SSO umesto toga.emailmora biti jedinstven na celoj FastComments.com. Ako je ovo problem, predlažemo korišćenje SSO umesto toga.- Ne smete kreirati više tenant korisnika nego što je definisano pod
maxTenantUsersu vašem paketu.
Možemo kreirati TenantUser na sledeći način



POST /api/v1/tenant-users/:id/send-login-link 
Ova ruta omogućava slanje linka za prijavu jednom TenantUser-u.
Koristan kada se korisnici masovno kreiraju i ne želite da ih uputite kako da se prijave na FastComments.com. Ovo će im jednostavno poslati "magični link" za prijavu koji ističe nakon 30 days.
Postoje sledeća ograničenja za slanje linka za prijavu TenantUser-u:
TenantUsermora već postojati.- Morate imati pristup za upravljanje
Tenant-om kojemTenantUserpripada.
Link za prijavu TenantUser-u možemo poslati na sledeći način:

Ovo će poslati email poput Bob at TenantName is inviting you to be a moderator...


PATCH /api/v1/tenant-users/:id 
Ovaj endpoint omogućava ažuriranje pojedinačnog TenantUser.
Ažuriranje TenantUser ima sledeća ograničenja:
signUpDatene sme biti u budućnosti.localemora biti na listi Podržane lokalizacije.usernamemora biti jedinstven na čitavom FastComments.com. Ako je to problem, predlažemo da umesto toga koristite SSO.emailmora biti jedinstven na čitavom FastComments.com. Ako je to problem, predlažemo da umesto toga koristite SSO.- Ne možete ažurirati
tenantIdkorisnika.
Možemo ažurirati TenantUser na sledeći način



DELETE /api/v1/tenant-users/:id 
Ovaj endpoint omogućava uklanjanje TenantUser po id-u.
Brisanje korisnikovih komentara je moguće putem query parametra deleteComments. Imajte na umu da ako je ovo tačno:
- Svi korisnikovi komentari biće obrisani uživo.
- Svi child (sada siroti) komentari biće obrisani ili anonimnišu na osnovu konfiguracije svake stranice kojoj komentar pripada. Na primer, ako je režim brisanja niti "anonymize", odgovori će ostati, a korisnikovi komentari će biti anonimizovani. Ovo se primenjuje samo kada je
commentDeleteModepostavljen naRemove(podrazumevana vrednost). creditsCostpostaje2.
Anonymized Comments
Možete zadržati korisnikove komentare, ali ih jednostavno anonimizovati tako što ćete postaviti commentDeleteMode=1.
Ako su korisnikovi komentari anonimni, sledeće vrednosti se postavljaju na null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted i isDeletedUser se postavljaju na true.
Pri prikazu, widget za komentare će koristiti DELETED_USER_PLACEHOLDER (podrazumevano: "[deleted]") za korisnikovo ime i DELETED_CONTENT_PLACEHOLDER za komentar. Ovo se može prilagoditi putem korisničkog interfejsa za prilagođavanje widgeta.
Examples



Struktura korisnika 
User je objekat koji predstavlja najčešći zajednički imenilac svih korisnika.
Imajte na umu da u FastComments imamo više različitih slučajeva upotrebe za korisnike:
- Secure SSO
- Simple SSO
- Tenant korisnici (na primer: Administratori)
- Komentatori
Ovaj API je za Komentatore i korisnike kreirane putem Simple SSO. U suštini, svaki korisnik kreiran preko vašeg sajta može se pristupiti putem ovog API-ja. Tenant korisnici takođe mogu biti dobijeni na ovaj način, ali ćete dobiti više informacija koristeći /tenant-users/ API.
Za Secure SSO koristite /sso-users/ API.
Ne možete izmeniti ove tipove korisnika. Oni su kreirali svoj nalog preko vašeg sajta, tako da pružamo osnovni pristup samo za čitanje, ali ne možete vršiti izmene. Ako želite imati ovaj tip toka - morate podesiti Secure SSO.
Struktura za the User objekat je sledeća:

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



Struktura glasa 
Objekat Vote predstavlja glas koji je ostavio korisnik.
Veza između komentara i glasa definiše se preko commentId.
Struktura objekta Vote je sledeća:

GET /api/v1/votes 
Glasovi se moraju preuzeti pomoću urlId.
Tipovi glasova
Postoje tri tipa glasova:
- Authenticated Votes, koji se primenjuju na odgovarajući komentar. Možete ih kreirati putem ovog API-ja.
- Authenticated Votes, koji su pending verifikacije, i stoga još nisu primenjeni na komentar. Ovi se kreiraju kada korisnik koristi FastComments.com login to vote mehanizam.
- Anonymous Votes, koji se primenjuju na odgovarajući komentar. Oni se kreiraju zajedno sa anonimnim komentisanjem.
Oni se vraćaju u odvojenim listama u API-ju kako bi se smanjila zabuna.



Napomene o anonimnim glasovima
Imajte na umu da će anonimni glasovi kreirani putem ovog API-ja pojavljivati u listi appliedAuthorizedVotes. Smatraju se autorizovanim jer su kreirani putem API-ja uz API key.
Struktura appliedAnonymousVotes je za glasove kreirane bez email-a, API key-a, itd.
GET /api/v1/votes/for-user 
Omogućava dohvat glasova koje je korisnik ostavio na datom urlId. Prima userId koji može biti bilo koji FastComments.com korisnik ili SSO User.
Ovo je korisno ako želite prikazati da li je korisnik glasao za komentar. Pri dohvatanju komentara, jednostavno pozovite ovaj API istovremeno za korisnika sa istim urlId.
Ako koristite anonimno glasanje, umesto toga prosledite anonUserId.


Imajte na umu da će anonimni glasovi biti prikazani u listi appliedAuthorizedVotes. Oni se smatraju autorizovanim jer su kreirani preko API-ja uz API ključ.


POST /api/v1/votes 
Ovaj endpoint omogućava dodavanje jednog autorizovanog Vote. Glasovi mogu biti up (+1) ili down (-1).




Kreiranje anonimnih glasova
Anonimni glasovi se mogu kreirati postavljanjem anonUserId u parametrima upita umesto userId.
Ovaj id ne mora odgovarati nijednom objektu korisnika (otuda anonimno). To je jednostavno identifikator za sesiju, tako da možete ponovo dohvatiti glasove u istoj sesiji, da proverite da li je komentar dobio glas.
Ako nemate takvu stvar kao „anonimne sesije“ kao što FastComments ima - možete jednostavno postaviti ovo na nasumični ID, kao što je UUID (iako cenimo manje identifikatore radi uštede prostora).
Ostale napomene
- Ovaj API poštuje podešavanja na nivou tenanta. Na primer, ako onemogućite glasanje za određenu stranicu, i pokušate da kreirate glas preko API-ja, to će se završiti greškom sa kodom
voting-disabled. - Ovaj API je podrazumevano aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
DELETE /api/v1/votes/:id 
Ova ruta omogućava brisanje pojedinačnog Vote.



Napomene:
- Ovaj API poštuje postavke na nivou tenanta. Na primer, ako onemogućite glasanje za određenu stranicu, i pokušate da kreirate glas preko API-ja, to će završiti greškom sa kodom
voting-disabled. - Ovaj API je podrazumevano aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
Struktura konfiguracije domena 
Objekat DomainConfig predstavlja konfiguraciju za domen za zakupca.
Struktura objekta DomainConfig je sledeća:


Za autentifikaciju
Konfiguracija domena se koristi da odredi koje sajtove mogu da hostuju FastComments widget za vaš nalog. Ovo je osnovni oblik autentifikacije, što znači da dodavanje ili uklanjanje bilo koje konfiguracije domena može uticati na dostupnost vaše FastComments instalacije u produkciji.
Ne uklanjajte ili ne ažurirajte domain svojstvo Domain Config za domen koji je trenutno u upotrebi, osim ako nije namera da se taj domen onemogući.
Ovo ima isto ponašanje kao uklanjanje domena iz /auth/my-account/configure-domains.
Takođe imajte na umu da uklanjanje domena iz My Domains UI ukloniće svaku odgovarajuću konfiguraciju za taj domen koja je možda dodata putem ovog UI-ja.
Za prilagođavanje e-pošte
Link za odjavu u podnožju e-poruke, i funkcija jednim klikom za odjavu koju nude mnogi email klijenti, mogu se konfigurisati putem ovog API-ja definisanjem footerUnsubscribeURL i emailHeaders, redom.
Za DKIM
Nakon što definišete svoje DKIM DNS zapise, jednostavno ažurirajte DomainConfig sa vašom DKIM konfiguracijom koristeći definisanu strukturu.
GET /api/v1/domain-configs 
Ovaj API omogućava dohvat svih DomainConfig objekata za tenanta.



GET /api/v1/domain-configs/:domain 
Pojedinačni DomainConfigs se mogu preuzeti pomoću odgovarajućeg domain.



POST /api/v1/domain-configs 
Ovaj API endpoint omogućava kreiranje konfiguracija domena.
Dodavanje konfiguracije za domen ovlašćuje taj domen za FastComments nalog.
Uobičajene upotrebe ovog API-ja su početno podešavanje, ako je potrebno dodati mnogo domena, ili prilagođena konfiguracija za slanje e-pošte.



PATCH /api/v1/domain-configs/:domain 
Ovaj API endpoint omogućava ažuriranje konfiguracije domena tako što se navede samo domen i atribut koji treba ažurirati.



PUT /api/v1/domain-configs/:domain 
Ovaj API endpoint omogućava zamenu konfiguracije domena.



DELETE /api/v1/domain-configs/:domain 
Ovaj endpoint omogućava uklanjanje pojedinačnog DomainConfig po id-u.
- Napomena: Brisanjem
DomainConfigdomen će biti deautorizovan za korišćenje FastComments. - Napomena: Ponovnim dodavanjem domena preko UI će se objekat ponovo kreirati (sa samo
domainpopunjenim).



Struktura konfiguracije pitanja 
FastComments pruža način za konstrukciju pitanja i agregiranje njihovih rezultata. Primer pitanja (u daljem tekstu nazvan QuestionConfig)
može biti ocena zvezdicama, klizač, ili NPS pitanje (određeno putem type).
Podaci pitanja mogu se agregirati pojedinačno, zajedno, tokom vremena, ukupno, po stranici, i tako dalje.
Framework ima sve mogućnosti potrebne za izgradnju klijentskih widgeta (sa vašim serverom ispred ovog API-ja), administratorskih kontrolnih tabli, i alata za izveštavanje.
Prvo moramo definisati QuestionConfig. Struktura je sledeća:

GET /api/v1/question-configs 
Ova ruta vraća do 100 QuestionConfig objekata odjednom, paginirano. Cena je 1 za svakih 100 objekata. Oni su
poređani po tekstu pitanja uzlazno (question field).



GET /api/v1/question-configs/:id 
Ova ruta vraća jednu QuestionConfig po njenom id-u.



POST /api/v1/question-configs 
Ovaj API endpoint omogućava kreiranje QuestionConfig.



PATCH /api/v1/question-configs/:id 
Ovaj endpoint omogućava ažuriranje jedne QuestionConfig.
Sledeća struktura predstavlja sve vrednosti koje se mogu promeniti:




DELETE /api/v1/question-configs/:id 
Ovaj endpoint omogućava brisanje QuestionConfig po id-u.
Ovo će obrisati sve odgovarajuće rezultate pitanja (ali ne i komentare). Ovo je deo visoke cene u kreditima.



Struktura rezultata pitanja 
Da biste sačuvali rezultate za pitanja, kreirate QuestionResult. Zatim možete agregirati rezultate pitanja i povezati ih sa komentarima za potrebe izveštavanja.

GET /api/v1/question-results 
Ovaj ruta vraća do 1000 QuestionResults objekata odjednom, paginirano. Cena je 1 za svaka 100 objekata. Oni su
sorted by createdAt, ascending. Možete filtrirati po raznim parametrima.



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



POST /api/v1/question-results 
Ovaj API endpoint omogućava kreiranje QuestionResult.



PATCH /api/v1/question-results/:id 
Ova ruta omogućava ažuriranje pojedinačnog QuestionResult.
Sledeća struktura prikazuje sve vrednosti koje se mogu promeniti:




DELETE /api/v1/question-results/:id 
Ovaj endpoint omogućava uklanjanje QuestionResult po id-u.



GET /api/v1/question-results-aggregate 
Ovde se vrši agregacija rezultata.
Struktura odgovora za agregaciju je sledeća:

Here are the query parameters available for aggregation:

Here's an example request:

Example response:


Napomene o performansama
- Ako dođe do promašaja keša, agregacije obično traju pet sekundi po milionu rezultata.
- U suprotnom, zahtevi se izvršavaju u konstantnom vremenu.
Napomene o keširanju i troškovima
- Kada je
forceRecalculatenaveden, trošak je uvek10, umesto uobičajenih2. - Ako keš istekne i podaci se ponovo izračunaju, trošak je i dalje konstantan
2akoforceRecalculatenije naveden. Keš ističe u zavisnosti od veličine agregiranog skupa podataka (može varirati između 30 sekundi i 5 minuta). - Ovo je da bi se podstaklo korišćenje keša.
GET /api/v1/question-results-aggregate/combine/comments 
Ovde se vrši kombinovanje rezultata sa komentarima. Korisno za kreiranje, na primer, grafikona "recent positive and negative comments" za proizvod.
Možete pretraživati po opsegu vrednosti (uključivo), po jednom ili više pitanja, i po datumu početka (uključivo).
The response structure is as follows:

Here are the query parameters available for aggregation:

Here's an example request:

Example response:


Napomene o keširanju i troškovima
- When
forceRecalculateis specified the cost is always10, instead of the normal2. - If the cache expires and data is recalculated, the cost is still a constant
2ifforceRecalculateis not specified. - This is to incentivize using the cache.
Struktura značke korisnika 
UserBadge je objekat koji predstavlja značku dodeljenu korisniku u FastComments sistemu.
Značke mogu biti dodeljene korisnicima automatski na osnovu njihove aktivnosti (kao što su broj komentara, vreme odgovora, status veterana) ili ručno od strane administratora sajta.
Struktura objekta UserBadge je sledeća:

GET /api/v1/user-badges 
Ovaj endpoint vam omogućava da preuzmete korisničke značke na osnovu različitih kriterijuma.
Primer zahteva:
Run 
Možete dodati različite query parametre da biste filtrirali rezultate:
userId- Dobijte značke za određenog korisnikabadgeId- Dobijte instance određene značketype- Filtrirajte po tipu značke (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, etc. See UserBadge structure for full list)displayedOnComments- Filtrirajte po tome da li se značka prikazuje na komentarima (true/false)limit- Maksimalan broj znački koji će biti vraćen (podrazumevano 30, max 200)skip- Broj znački koje će biti preskočene (za paginaciju)
Primer odgovora:

Mogući odgovori sa greškom:


GET /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava da preuzmete određeni korisnički bedž po njegovom jedinstvenom ID-u.
Primer zahteva:
Run 
Primer odgovora:

Mogući odgovori sa greškom:


POST /api/v1/user-badges 
Ovaj endpoint vam omogućava da kreirate novu dodelu korisničkog bedža.
Primer zahteva:
Run 
Telo zahteva mora da sadrži sledeće parametre:
userId(required) - ID korisnika kome se dodeljuje bedžbadgeId(required) - ID bedža koji se dodeljujedisplayedOnComments(optional) - Da li bedž treba da se prikazuje na korisnikovim komentarima (podrazumevano je true)
Važne napomene:
- Bedž mora postojati i biti omogućen u katalogu bedževa vašeg tenant-a
- Bedževe možete dodeljivati samo korisnicima koji pripadaju vašem tenant-u ili su komentarisali na vašem sajtu
Primer odgovora:

Mogući odgovori sa greškom:





PUT /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava da ažurirate dodelu korisničke značke.
Trenutno jedino svojstvo koje može biti ažurirano je displayedOnComments, koje kontroliše da li se značka prikazuje na komentarima korisnika.
Primer zahteva:
Run 
Primer odgovora:

Mogući odgovori sa greškom:



DELETE /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava da obrišete dodelu korisničkog bedža.
Primer zahteva:
Run 
Primer odgovora:

Mogući odgovori sa greškom:



Struktura napretka značke korisnika 
UserBadgeProgress je objekat koji predstavlja napredak korisnika u sticanju različitih znački u FastComments sistemu.
Ovo praćenje pomaže da se odredi kada korisnici treba da dobiju automatske značke na osnovu njihove aktivnosti i učešća u vašoj zajednici.
Struktura UserBadgeProgress objekta je sledeća:

GET /api/v1/user-badge-progress 
Ovaj endpoint vam omogućava da dohvatite zapise o napretku korisničkih znački na osnovu različitih kriterijuma.
Primer zahteva:
Run 
Možete dodati razne parametre upita da filtrirate rezultate:
userId- Dobijte napredak za određenog korisnikalimit- Maksimalan broj zapisa za vraćanje (podrazumevano 30, maksimum 200)skip- Broj zapisa koje treba preskočiti (za paginaciju)
Primer odgovora:

Mogući odgovori sa greškom:


GET /api/v1/user-badge-progress/:id 
Ovaj endpoint vam omogućava da dohvatite određeni zapis napretka korisničke značke po njegovom jedinstvenom ID-u.
Primer zahteva:
Run 
Primer odgovora:

Mogući odgovori sa greškom:


GET /api/v1/user-badge-progress/user/:userId 
Ovaj endpoint vam omogućava da dohvatite zapis o napretku bedža korisnika po njihovom user ID-u.
Example Request:
Run 
Example Response:

Possible Error Responses:



Zaključno
Nadamo se da ste našli našu API dokumentaciju sveobuhvatnom i lakom za razumevanje. Ako primetite bilo kakve nedostatke, javite nam ispod.