
Jezik 🇭🇷 Hrvatski
Resursi API-ja
Autentifikacija
Agregacije
AuditLogovi
Batch poslovi
Komentari
Predlošci e-pošte
Feed postovi
Hashtagovi
Meni
Moderatori
Broj obavijesti
Obavijesti
Reakcije na stranicu
Stranice
Ankete
Glasovi za anketu
Čekajući webhook događaji
SSO korisnici
Pretplate
Dnevna upotreba najmodavca
Najmodavci
Paketi najmodavca
Korisnici najmodavca
Korisnici
Glasovi
Konfiguracije domene
Konfiguracije pitanja
Rezultati pitanja
Agregacija rezultata pitanja
Značke korisnika
Napredak značke korisnika
API-ji za live komentiranje
FastComments API
FastComments pruža API za interakciju s mnogim resursima. Izgradite integracije s našom platformom ili čak izradite vlastite klijente!
U ovoj dokumentaciji naći ćete sve podržane resurse API‑ja dokumentirane s njihovim tipovima zahtjeva i odgovora.
Za Enterprise korisnike, sav pristup API‑ju bilježi se u Dnevniku revizija.
Generirani SDK‑ovi
FastComments sada generira API Spec iz našeg koda (ovo još nije potpuno, ali uključuje mnoge API‑e).
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 X-API-KEY zaglavlja ili API_KEY parametra upita. Također će vam trebati vaš tenantId za izvođenje API poziva. On se može preuzeti s iste stranice kao i vaš api ključ.
Napomena o sigurnosti
Ove rute su namijenjene pozivanju s poslužitelja. NE pozivajte ih iz preglednika. To će otkriti vaš API ključ – što će omogućiti potpun pristup vašem računu svima koji mogu vidjeti izvorni kod stranice!
Opcija autentifikacije jedan – Zaglavlja
- Zaglavlje:
X-API-KEY - Zaglavlje:
X-TENANT-ID
Opcija autentifikacije dva – Parametri upita
- Parametar upita:
API_KEY - Parametar upita:
tenantId
Opcija autentifikacije tri – OAuth Bearer token
- Zaglavlje:
Authorization: Bearer fcat_...
Aplikacije trećih strana poput Zapiera i klijenti MCP poslužitelja dobivaju token putem OAuth‑a umjesto API ključa. Taj token funkcionira na svakom krajnjem točki ovdje. Najmodavac je impliciran tokenom, pa je tenantId opcionalan, ali mora odgovarati tokenu ako je naveden. GET zahtjevi trebaju read opseg, a sve ostale metode write opseg. Cijeli tijek, uključujući registraciju klijenta, PKCE, osvježavanje i opoziv, dokumentiran je pod OAuth Authorization. Otkrivanje započinje na https://fastcomments.com/.well-known/oauth-authorization-server.
Čitanje vlastitih zapisa
FastComments pruža Active‑Active dostupnost. Zahtjevi iz vašeg podatkovnog centra usmjeravaju se na najbližu točku prisutnosti u odnosu na vas. Ovo je automatsko i obično možete primijetiti semantiku čitanja‑vašeg‑zapisa. Ako želite biti sigurni da čitate vlastite zapise, možete učvrstiti svoje zahtjeve na određenu regiju koristeći tu regiju kao API host (iako to obično nije potrebno za većinu integracija):
- gdc-oregon.fastcomments.com
- gdc-virginia.fastcomments.com
- gdc-singapore.fastcomments.com
- gdc-falkenstein2.fastcomments.com
- gdc-sao-paulo.fastcomments.com
- eudc-helsinki2.fastcomments.com
- eudc-limburg.fastcomments.com
- eudc-france.fastcomments.com
Napomena: ako to učinite, možda ćete željeti definirati rezervni plan, jer smo u prošlosti ukinuli ulazne čvorove i koristimo nove nazive za prebacivanje.
Resursi API-ja 
Korištenje resursa
Treba napomenuti da se dohvaćanje podataka s API-ja računa kao korištenje na vašem računu.
Svaki resurs će navesti to korištenje u svojoj sekciji.
Neki resursi koštaju više za posluživanje od drugih. Svaki endpoint ima fiksnu cijenu kredita po API pozivu. Za neke endpointove, broj kredita varira ovisno o opcijama i veličinama odgovora.
Korištenje API-ja možete provjeriti na stranici Billing Analytics i ažurira se svakih nekoliko minuta.
Napomena!
Preporučujemo da najprije pročitate dokumentaciju za Pages, kako biste smanjili zabunu pri određivanju koje vrijednosti proslijediti za urlId u Comment API-ju.
Webhookovi
Pretplate na webhookove imaju svoj vodič. POST, GET i DELETE /api/v1/webhooks, te GET /api/v1/webhooks/sample-payloads, dokumentirani su pod Managing Subscriptions via API, a strukture događaja pod Webhook Structures.
OAuth autorizacija 
FastComments je OAuth 2.1 poslužitelj autorizacije. Aplikacija može dobiti token koji je vezan uz jedan FastComments račun i koristiti ga na svakom krajnjem točku u ovom vodiču umjesto API ključa. Tako se Zapier aplikacija, MCP poslužitelj i druge integracije trećih strana povezuju.
Tokeni se izdaju putem toka autorizacijskog koda s PKCE-om. Ne postoji odobrenje klijentskih vjerodajnica niti implicitno odobrenje.
Discovery
Lokacije krajnjih točaka, podržana odobrenja i metode autentifikacije objavljuju se na standardnoj URL adresi metapodataka:

Endpointi koje opisuje:

Računi u EU regiji koriste https://eu.fastcomments.com kao izdavatelja, s istim putanjama.
Registracija klijenta
Klijent treba client_id i registriranu redirect_uri prije nego što može započeti tok. Postoje dva načina za dobivanje:
- Dinamička registracija klijenta.
POST /oauth/registers JSON tijelom prema RFC 7591 (redirect_uris,client_name,client_uri,logo_uri,token_endpoint_auth_method). Odgovor nosiclient_idi, za povjerljive klijente,client_secret. Registracija je neautentificirana i ograničena po brzini po IP-u. - Dokument metapodataka ID klijenta. Klijent koristi
httpsURL koji kontrolira kao svojclient_id. FastComments dohvaća taj URL i čita iste metapodatke iz njega. Nije potreban poziv za registraciju.
Partner aplikacije navedene u FastComments nadzornoj ploči, poput Zapiera, registrira izravno FastComments. Kontaktirajte podršku ako izgradite popis na tržištu i trebate klijenta prve strane.
Opsezi

Zahtjev koji ne traži opseg odobrava oba. Korisnik vidi tražene opsege na stranici pristanka. Zahtjev za opsegom koji nije jedan od ova dva ne uspijeva s invalid_scope.
Korak 1 - Zahtjev za autorizaciju
Pošaljite preglednik korisnika na krajnju točku autorizacije. PKCE s metodom S256 je obavezan za svakog klijenta.


Korisnik se prijavljuje u FastComments ako je potrebno i vidi stranicu pristanka koja navodi vašu aplikaciju, račun na koji će biti povezana i tražene opsege. Korisnik mora imati API Admin dozvolu na tom računu; bilo tko drugi vidi pogrešku dozvole umjesto obrasca pristanka. Odobrenje preusmjerava preglednik na vaš redirect_uri s code i state. Odbijanje preusmjerava s error=access_denied.
Autorizacijski kod je valjan 10 minuta i može se razmijeniti jednom. Druga razmjena istog koda opoziva svaki token koji je prva razmjena proizvela.
Korak 2 - Zahtjev za token
Razmijenite kod za tokene. Tijelo je kodirano kao obrazac. Povjerljivi klijenti autentificiraju se s client_secret_basic (HTTP Basic) ili client_secret_post (tajna u tijelu). Javni klijenti šalju samo client_id.



Pogreške slijede RFC 6749: JSON tijelo s error i error_description, HTTP 400 za invalid_request, invalid_grant, invalid_scope, invalid_target i unsupported_grant_type, HTTP 401 za invalid_client, HTTP 429 kada je ograničena brzina.
Korak 3 - Pozivanje API-ja
Pošaljite pristupni token kao token nositelja. Najamnik je impliciran tokenom, pa je tenantId opcionalan. Kada je naveden, mora se podudarati s tokenom ili zahtjev ne uspijeva.

GET /api/v1/me vraća najamnika, ovlaštenog korisnika i odobrene opsege, što ga čini pravim pozivom za testiranje veze. Zahtjev s isteklim ili opozvanim tokenom dobiva HTTP 401. Zahtjev čija metoda zahtijeva opseg koji token ne posjeduje dobiva HTTP 403.
Korak 4 - Osvježavanje


Odgovor ima isti oblik kao razmjena koda. Osvježavajući tokeni rotiraju: svako osvježenje vraća novi refresh_token i opoziva stari nakon 30 sekundi grace perioda za istovremene zahtjeve. Predstavljanje osvježavajućeg tokena koji je rotiran prije više od 30 sekundi smatra se ponovnim korištenjem i opoziva cijelo odobrenje. Partner aplikacije registrirane od strane FastComments su izuzete od rotacije i vraćaju isti osvježavajući token s produženim rokom valjanosti za još 30 dana.
Osvježenje također provjerava da li ovlašteni korisnik i dalje ima API Admin na računu. Ako ne, odobrenje se opoziva i odgovor je invalid_grant.
Opoziv

Opoziv osvježavajućeg tokena opoziva svaki pristupni token izdan iz istog odobrenja. Opoziv pristupnog tokena opoziva samo taj token. Krajnja točka vraća HTTP 200 s praznim JSON objektom, bez obzira je li token pronađen, prema RFC 7009.
Korisnici također mogu opozvati vezu iz Povezanih aplikacija u FastComments nadzornoj ploči. Svaki token za tu aplikaciju prestaje odmah raditi.
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 AuditLog-a 
An AuditLog je objekt koji predstavlja revizijski događaj za najamnike koji imaju pristup ovoj značajci.
Struktura objekta AuditLog je sljedeća:

targetId i targetLabel opisuju na čemu je događaj izvršen; userId i username opisuju tko ga je izvršio. Za ažuriranja, objectDetails.changes sadrži mapu {field: {from, to}} koja prikazuje što se zapravo promijenilo.
Revizijski zapis je nepromjenjiv. Također se ne može ručno zapisivati. FastComments.com može odlučiti kada zapisati u revizijski zapis. Međutim, možete ga čitati putem ovog API-ja.
Događaji u revizijskom zapisu istječu nakon dvije godine.
GET /api/v1/audit-logs 
Ovaj API koristi paginaciju, koju pružaju parametri skip, limit, before i after. AuditLog zapisi se vraćaju u stranicama od 1000 po zadanim postavkama, do maksimalnog limit od 10000, poredani po when i id. Stranice su velike jer se ovaj krajnji punkt obično koristi za izvoz povijesti, a ne za interaktivno listanje.
Svaki 100 vraćenih zapisa košta 1 kredit.
Prema zadanim postavkama, dobit ćete popis s najnovijim stavkama prvo. Na ovaj način možete povlačiti podatke počevši od skip=0, paginirajući sve dok ne pronađete posljednji zapis koji ste obradili.
Alternativno, možete sortirati najstarije prvo i paginirati sve dok ne ostane više zapisa.
Sortiranje se može izvršiti postavljanjem order na ASC ili DESC. Zadano je DESC.
Upiti po datumu mogu se izvršiti putem before i after kao vremenskih oznaka u milisekundama. before i after NISU inkluzivni i svaki se može koristiti samostalno.
Pronalaženje što se dogodilo osobi
Svaki događaj bilježi tko ga je izvršio (username, userId, ip) i, odvojeno, na čemu je izvršen. targetLabel je čitljiva oznaka za taj objekt, na primjer jsmith (jsmith@example.com), a targetId je njegov ID. Koristite target za podudaranje podstringa neosjetljivo na veličinu slova na oznaci kada znate ime ili e‑mail osobe, ali ne i njen ID.
Brisanja bilježe oznaku u trenutku događaja, tako da se uklonjeni korisnik ili moderator i dalje može identificirati nakon što je osnovni zapis izbrisan.
Upravljani najmodavci
Ako vaš najmodavac upravlja drugim najmodavcima, postavite includeManagedTenants=true kako biste vratili događaje iz vašeg najmodavca i svih najmodavaca koje on upravlja u jednom odgovoru. Svaki vraćeni zapis ima tenantId koji vam govori iz kojeg najmodavca potječe.



Struktura BatchJob-a 
A BatchJob je zadatak dugog trajanja, poput uvoza, izvoza ili page migration. Poslovi se stavljaju u red, a zatim se preuzimaju i izvršavaju u pozadini.
processedCount i totalCount prikazuju napredak. Njihova jedinica ovisi o type:
migrate-pages: migracije završene, od traženih migracija.undo-page-migration: zapisi obnovljeni. NematotalCount.import,exporti ostali poslovi: obrađeni redci.
Struktura objekta BatchJob je sljedeća:

Ponovni pokušaji
Ako se poslužitelj koji izvršava zadatak migracije stranice ponovno pokrene, zadatak se vraća u red i nastavlja nakon posljednje završene migracije. Zadaci se pokušavaju najviše 3 puta, nakon čega je njihov status failed.
GET /api/v1/batch-jobs 
Ova ruta vraća batch poslove najmodera svih tipova, najnovije prvo, 100 po stranici. Upotrijebite type i status za sužavanje popisa, i skip za paginaciju.



GET /api/v1/batch-jobs/:id 
Ova ruta vraća status, napredak i, nakon što je završila, rezultat jednog batch posla. Koristite je za praćenje posla pokrenutog putem POST /api/v1/pages/migrations ili POST /api/v1/pages/migrations/:undoId/undo.
Posao je završen kada je njegov status success ili failed. Svaki poziv košta 1 kredit, pa zato vršite upit svakih nekoliko sekundi umjesto kontinuirano.




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

Neka od ovih polja su označena kao READONLY - ona se vraćaju od strane API-ja ali ih nije moguće postaviti.
Struktura teksta komentara
Komentari se pišu u FastComments varijanti Markdowna, što je jednostavno Markdown plus tradicionalne bbcode oznake za slike, poput [img]path[/img].
Tekst je pohranjen u dva polja. Tekst koji je korisnik unio pohranjuje se nepromijenjen u polje comment. On se renderira i pohranjuje u polje commentHTML.
Dozvoljeni HTML tagovi su b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Preporučuje se renderirati HTML, budući da je u pitanju vrlo mali podskup HTML-a, izrada renderer-a je prilično jednostavna. Postoji više biblioteka za React Native i Flutter, na primjer, koje mogu pomoći u tome
Možete odabrati renderiranje nenormalizirane vrijednosti polja comment. Primjer parsera je ovdje..
Primjer parsera se također može prilagoditi za rad s HTML-om i transformirati HTML tagove u očekivane elemente za renderiranje na vašoj platformi.
Označavanje
Kada su korisnici označeni u komentaru, informacije se pohranjuju u listu nazvanu mentions. Svaki objekt u toj listi ima sljedeću strukturu.
Run 
Hashtagovi
Kada se koriste hashtagovi i uspješno se parsiraju, informacije se pohranjuju u listu nazvanu hashTags. Svaki objekt u toj listi ima sljedeću strukturu. Hashtagove je moguće također ručno dodati u niz hashTags komentara za upite, ako je retain postavljeno.
Run 
GET /api/v1/comments 
Ovaj API se koristi za dohvaćanje komentara za prikaz korisniku. Na primjer, automatski filtrira neodobrene ili spam komentare.
Pagiranje
Pagiranje se može izvesti na jedan od dva načina, ovisno o zahtjevima za performansama i slučaju upotrebe:
- Najbrže: Precalculated Pagination:
- Ovo je način na koji FastComments radi kada koristite naše unaprijed izgrađene widgete i klijente.
- Klikom na „next“ jednostavno se povećava broj stranice.
- Možete to zamisliti kao dohvaćanje iz key-value pohrane.
- Na ovaj način, jednostavno definirajte parametar
pagekoji počinje od0i smjer sortiranja kaodirection. - Veličine stranica mogu se prilagoditi putem pravila prilagodbe.
- Najfleksibilnije: Flexible Pagination:
- Na ovaj način možete definirati prilagođene parametre
limitiskip. Nemojte proslijeditipage. - Sortiranje
directiontakođer je podržano. limitje ukupni broj koji se vraća nakon primjeneskip.- Primjer: postavite
skip = 200, limit = 100kada jepage size = 100ipage = 2.
- Primjer: postavite
- Podređeni komentari i dalje se računaju u paginaciji. Možete to zaobići korištenjem opcije
asTree.- Možete paginirati podređene putem
limitChildreniskipChildren. - Možete ograničiti dubinu vraćenih niti putem
maxTreeDepth.
- Možete paginirati podređene putem
- Na ovaj način možete definirati prilagođene parametre
Niti
- Pri korištenju
Precalculated Pagination, komentari su grupirani po page i komentari u nitima utječu na cijelu stranicu.- Na ovaj način, niti se mogu odrediti na klijentu na temelju
parentId. - Na primjer, s stranicom koja ima jedan komentar na najvišoj razini i 29 odgovora, i postavljanjem
page=0u API - dobit ćete samo komentar na najvišoj razini i 29 podređenih.
- Na ovaj način, niti se mogu odrediti na klijentu na temelju
- Pri korištenju
Flexible Pagination, možete definirati parametarparentId.- Postavite ga na null da biste dobili samo komentare na najvišoj razini.
- Zatim, za pregled niti, ponovno pozovite API i proslijedite
parentId. - Uobičajeno rješenje je napraviti API poziv za komentare na najvišoj razini, a zatim paralelne API pozive za dobivanje komentara za podređene svakog komentara.
- NOVO Od veljače 2023! Dohvatite kao stablo koristeći
&asTree=true.- Možete to zamisliti kao
Flexible Pagination as a Tree. - Samo komentari na najvišoj razini se računaju u paginaciji.
- Postavite
parentId=nullda započnete stablo na korijenu (morate postavitiparentId). - Postavite
skipilimitza paginaciju. - Postavite
asTreenatrue. - Cijena u kreditima povećava se za
2x, jer naš backend mora obaviti puno više posla u ovom scenariju. - Postavite
maxTreeDepth,limitChildreniskipChildrenprema želji.
- Možete to zamisliti kao
Objašnjenje stabala
Kada se koristi asTree, može biti teško razmišljati o paginaciji. Evo praktičnog grafikona:
Dohvaćanje komentara u kontekstu korisnika
API /comments može se 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




Dohvaćanje komentara kao stablo
Moguće je dobiti komentare vraćene kao stablo, s paginacijom koja broji samo komentare najviše razine.

Želite li dobiti samo komentare najviše razine i neposredne podređene? Evo jednog načina:

Međutim, u vašem UI-ju možda ćete trebati znati treba li prikazati gumb „prikaži odgovore“ na svakom komentaru. Kada dohvaćate komentare putem stabla, postoji svojstvo hasChildren koje je označeno na komentarima kada je primjenjivo.
Dohvaćanje komentara kao stablo, pretraživanje po hashtag-u
Moguće je pretraživati po hashtag-u koristeći API, kroz cijeli vaš tenant (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 API Comment s parametrom urlId. Možete najprije pozvati API Pages da vidite kako izgledaju dostupne vrijednosti urlId.
Anonimne radnje
Za anonimno komentiranje vjerojatno želite proslijediti anonUserId prilikom dohvaćanja komentara i prilikom označavanja i blokiranja.
(!) Ovo je potrebno za mnoge trgovine aplikacija jer korisnici moraju moći označiti sadržaj koji su kreirali drugi korisnici, čak i ako nisu prijavljeni. Nepoštivanje može uzrokovati uklanjanje vaše aplikacije iz te trgovine.
Komentari se ne vraćaju
Provjerite da su 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 
Ovaj API endpoint omogućava stvaranje komentara.
Uobičajeni slučajevi upotrebe su prilagođena korisnička sučelja, integracije ili uvozi.
Napomene:
- Ovaj API može po želji ažurirati widget za komentare "uživo" (to povećava
creditsCosts1na2). - Ovaj API će automatski stvoriti korisničke objekte u našem sustavu ako je naveden email.
- Pokušaj spremanja dva komentara s različitim emailovima, ali istim korisničkim imenom, rezultirat će greškom za drugi komentar.
- Ako navodite
parentId, a podređeni komentar imanotificationSentForParentpostavljeno na false, poslat ćemo obavijesti za nadređeni komentar. To se radi svaki sat (obavijesti grupiramo kako bismo smanjili broj poslanih emailova). - Ako želite slati dobrodošlice prilikom stvaranja korisnika, ili emailove za potvrdu komentara, postavite
sendEmailsnatrueu query parametrima. - Komentari stvoreni putem ovog API-ja prikazat će se na stranicama Analytics i Moderation u admin aplikaciji.
- "loše riječi" i dalje se maskiraju u imenima komentatora i tekstu komentara ako je ta postavka uključena.
- Komentari stvoreni putem ovog API-ja mogu se po želji i dalje provjeravati na spam.
- Konfiguracija poput maksimalne duljine komentara, ako je postavljena putem admin stranice Customization Rule, primjenjuje se i ovdje.
Minimalni podaci potrebni za slanje koji će se prikazati u widgetu za komentare su sljedeći:

Realističniji zahtjev može izgledati ovako:



PATCH /api/v1/comments/:id 
Ovaj API endpoint omogućuje ažuriranje pojedinačnog komentara.
Napomene:
- Ovaj API može ažurirati widget komentara "uživo" ako se želi (ovo povećava osnovni
creditsCosts1na2).- Ovo može učiniti migracije komentara između stranica "uživo" (promjena
urlId). - Migracije koštaju dodatna
2kredita jer se stranice prethodno izračunavaju i to je CPU-intenzivno.
- Ovo može učiniti migracije komentara između stranica "uživo" (promjena
- Za razliku od API-ja za kreiranje, ovaj API NEće automatski stvoriti korisničke objekte u našem sustavu ako je e-mail naveden.
- Komentari ažurirani putem ovog API-ja i dalje se mogu provjeriti na spam ako je potrebno.
- Konfiguracije poput maksimalne duljine komentara, ako su podešene putem administratorske stranice pravila prilagodbe, primjenjivat će se ovdje.
- Da biste korisnicima omogućili ažuriranje teksta komentara, možete jednostavno navesti
commentu tijelu zahtjeva. Mi ćemo generirati odgovarajućicommentHTML.- Ako definirate i
commenticommentHTML, nećemo automatski generirati HTML. - Ako korisnik doda spominjanja ili hashtagove u svom novom tekstu, oni će i dalje biti obrađeni poput
POSTAPI-ja.
- Ako definirate i
- Prilikom ažuriranja
commenterEmailna komentaru, najbolje je također navestiuserId. Inače morate osigurati da korisnik s tom e-mail adresom pripada vašem tenantu, inače će zahtjev propasti. - Ako je ciljani komentar zaključan (
isLocked: true), zahtjev se odbija scode: 'locked'. Prvo otključajte komentar, ažurirajte ga, a zatim ga ponovno zaključajte ako želite.



DELETE /api/v1/comments/:id 
Ovaj API endpoint omogućuje brisanje komentara.
Napomene:
- Ovaj API može ažurirati widget komentara "uživo" ako se želi (ovo povećava
creditsCosts1na2). - Ovaj API će obrisati sve podkomentare.
- Ako je ciljani komentar zaključan (
isLocked: true), zahtjev se odbija scode: 'locked'. Prvo otključajte komentar, zatim ga obrišite.



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ćava 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 commentIdsToCheck body parametar za provjeru trebaju li se drugi potencijalno vidljivi komentari na klijentu blokirati/deblokirati nakon izvođenja ove radnje.
Napomene:
- Ovaj poziv uvijek se mora izvršiti u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik ili Tenant korisnik.
userIdu zahtjevu je korisnik koji vrši deblokiranje. Na primjer:User Aželi deblokiratiUser B. ProslijediteuserId=User Ai ID komentara koji jeUser Bnapisao.- Potpuno anonimni komentari (bez korisničkog ID-a, bez e-pošte) ne mogu se blokirati i vratit će se pogreška.




Struktura predložaka 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 Feed posta 
A FeedPost objekt predstavlja objavu u FastComments feedu. Feed je tok objava sa svojim vlastitim nitima komentara, prikazan od strane Feed widgeta. Svaka objava ima autora, opcionalni bogati sadržaj, medije i linkove, i može biti označena tagovima kako bi se feed mogao filtrirati.
Struktura za FeedPost objekt je sljedeća:

Napomene:
- Neka od ovih polja su označena
READONLY- ona se vraćaju putem API-ja, ali se ne mogu postaviti. - Komentari na objavi su regularni komentari čiji je
urlIdpost:praćen ID-om objave_id. Upotrijebite tu vrijednost s Comment API-jem za čitanje ili stvaranje komentara na objavi.
GET /api/v1/feed-posts 
Dohvaća objave u feedu, najnovije prve. Paginiranje je temeljeno na kursoru: proslijedite _id posljednje objave koju ste primili kao
afterId da biste dobili sljedeću stranicu.
Košta jedan kredit po deset vraćenih objava, s minimalno jednim kreditom.



POST /api/v1/feed-posts 
Ova ruta stvara jedan FeedPost. Svaki post ima autora, pa je fromUserId obavezan i mora biti ID postojećeg FastComments ili SSO korisnika na računu.



PATCH /api/v1/feed-posts/:id 
Ova ruta ažurira jedan FeedPost. Pošaljite samo polja koja želite promijeniti.



Struktura hashtagova 
Objekt HashTag predstavlja oznaku (tag) koju korisnik može ostaviti. HashTagovi se mogu koristiti za povezivanje s vanjskim sadržajem ili za
povezivanje srodnih komentara.
Struktura objekta HashTag je sljedeća:

Napomene:
- U nekim API endpointima vidjet ćete da se hashtag koristi u URL-u. Ne zaboravite URI-kodirane vrijednosti. Na primjer,
#treba umjesto toga predstaviti kao%23. - Neka od ovih polja označena su kao
READONLY- API ih vraća, ali se ne mogu postaviti.
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.



GET /api/v1/me 
Opisuje vjerodajnicu koja šalje zahtjev: najmoda kojem pripada i, za OAuth pristupne tokene, korisnika koji je autorizirao aplikaciju. Integracije ga koriste za testiranje veze i označavanje.
Kod API ključa odgovor identificira samo najmodu. Kod OAuth tokena nosi i korisnika koji je autorizirao i opsege koji su odobreni.


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 
Ovaj API endpoint omogućuje ažuriranje Moderator objekta putem id.
Ažuriranje Moderator objekta ima sljedeća ograničenja:
- Sljedeće vrijednosti se ne smiju navesti prilikom ažuriranja
Moderatorobjekta:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je naveden
userId, taj korisnik mora postojati. - Kada je naveden
userId, korisnik mora pripadati istomtenantIdnavedenom u query parametrima. - Dva moderatora u istom tenantu ne mogu imati isti
email. - Ne možete promijeniti
tenantIdpovezan sModeratorobjektom.



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 
Ova ruta omogućuje pozivanje jednog Moderatora.
Za slanje pozivnice e-pošte Moderatoru postoje sljedeća ograničenja:
Moderatorveć mora postojati.fromNamene smije biti dulji od100 znakova.
Napomene:
- Ako korisnik s navedenom adresom e-pošte već postoji, bit će pozvan da moderira komentare vašeg tenanta.
- Ako korisnik s navedenom adresom e-pošte ne postoji, poveznica za pozivnicu vodit će ga kroz postupak stvaranja računa.
- Pozivnica istječe nakon
30 dana.
Možemo stvoriti Moderatora za korisnika za kojeg znamo samo adresu e-pošte:

Ovo će poslati e-poštu poput 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



Javni API za reakcije na stranicu 
Page Reacts omogućuju vašim korisnicima da lajkaju stranicu ili na nju reagiraju vlastitim skupom slika reakcija. Page Reacts widget i Floating Likes widget izgrađeni su na ovim endpointima, a možete ih i sami pozivati kako biste izgradili vlastitu lajk tipku.
Za razliku od ostatka ovog vodiča, Page Reacts endpointi su javni. Pozivaju se iz preglednika vaših korisnika, ne zahtijevaju API ključ i ne koštaju API kredita. Svaka reakcija pripada korisniku koji upućuje zahtjev, pa korisnik može dodati ili ukloniti samo svoju.
Postoje dva skupa endpointa:
/page-reacts/v1/likes/:tenantId- jedan "lajk" po korisniku po stranici. Koristite ovo za lajk tipku./page-reacts/v2/:tenantId- više reakcija po stranici, svaka identificirana kratkimid-om koji sami odaberete (na primjerheartililaugh).
Oboje su dostupni i u našim SDK-ovima kao dio PublicApi, na primjer getV1PageLikes, createV1PageReact i deleteV1PageReact u JavaScript SDK-u.
Prikaz tko je reagirao
Proslijedite includeUserInfo=public na GET endpointe kako biste dobili i korisnike koji su lajkali ili reagirali, s njihovim korisničkim imenima i avatarima, najnoviji prvi. Korisnici koji su svoju aktivnost profila učinili privatnom su isključeni, kao i anonimni korisnici. Vraća se do 100 reakcija.
SSO korisnici se stvaraju s privatnom aktivnošću profila osim ako vaš SSO payload ne postavi isProfileActivityPrivate na false, pa to postavite za korisnike koje želite vidjeti u ovim listama.
Na stranicama koje zahtijevaju SSO, samo SSO korisnici koji mogu vidjeti stranicu mogu prikazati tko je reagirao. Ostali dobivaju 403 s kodom sso-required ili page-forbidden.
Sa svog poslužitelja, GET /api/v1/pages/likes i GET /api/v1/pages/reacts vraćaju iste liste s API ključem, a također prihvaćaju includeUserInfo=include-private kako bi uključili korisnike s privatnim profilima.
Identifikacija korisnika
Reakcije su vezane uz korisnika koji upućuje zahtjev:
- SSO korisnici: proslijedite
ssoquery parametar, postavljen na URI kodirani JSON istog SSO objekta koji dajete comment widgetu. Pogledajte SSO. - Anonimni korisnici: kada nema
ssoparametra ni FastComments prijave, poslužitelj pregledniku dodjeljuje anonimni id pohranjen u FastComments session cookieju. Šaljite zahtjeve scredentials: 'include'kako bi cookie ostao između zahtjeva. Preglednici koji blokiraju third-party cookieje neće zadržati anonimni id, pa koristite SSO kada svaki korisnik mora pouzdano biti prepoznat.
urlId
urlId identificira stranicu, isto kao i za komentare. Koristite isti urlId koji dajete comment widgetu kako bi se lajkovi i komentari brojali na istoj stranici. Ne zaboravite ga URI kodirati.

GET /page-reacts/v1/likes/:tenantId 
Vraća broj lajkova na stranici i je li trenutni korisnik lajkao stranicu. Stranice koje još ne postoje vraćaju likeCount od 0.
Proslijedite includeUserInfo=public kako biste također dobili korisnike koji su lajkovali stranicu, najnoviji prvi. Korisnici s privatnom aktivnošću profila i anonimni korisnici su izostavljeni, a pretražuje se do 100 lajkova. Ovdje je prihvaćen samo public; include-private vraća 422 i dostupan je putem GET /api/v1/pages/likes s API ključem. Na stranicama koje zahtijevaju SSO, includeUserInfo vraća 403 za korisnike koji ne mogu vidjeti stranicu.



POST /page-reacts/v1/likes/:tenantId 
Lajka stranicu kao trenutni korisnik. Svaki korisnik može lajkati stranicu jednom: ponovni lajk uspijeva s kodom already-liked i ne mijenja broj.
Stranica se kreira ako još ne postoji. Proslijedite title za postavljanje ili ažuriranje naslova stranice.



DELETE /page-reacts/v1/likes/:tenantId 
Uklanja lajk trenutnog korisnika s stranice. Ako korisnik nije lajkao stranicu, zahtjev uspijeva s kodom not-liked i ne mijenja broj.



GET /page-reacts/v2/:tenantId 
Vraća broj za svaku reakciju na stranici i koje je reakcije trenutni korisnik dodao.
Proslijedite includeUserInfo=public kako biste također dobili korisnike koji su reagirali, kao jedan unos po reakciji s njegovim ID-om reakcije, najnoviji prvi. Korisnici s privatnom aktivnošću profila i anonimni korisnici su izostavljeni, a pregledava se najviše 100 reakcija. Ovdje je prihvaćen samo public; include-private vraća 422 i dostupan je iz GET /api/v1/pages/reacts s API ključem. Na stranicama koje zahtijevaju SSO, includeUserInfo vraća 403 za korisnike koji ne mogu pregledati stranicu.



GET /page-reacts/v2/:tenantId/list 
Vraća imena korisnika koji su dodali reakciju na stranicu, sortirana abecedno. Pretražuje se najviše 100 reakcija, a anonimni korisnici i korisnici s privatnom aktivnošću profila nisu uključeni. Na stranicama koje zahtijevaju SSO, korisnici koji ne mogu pregledati stranicu dobivaju 403 s kodom sso-required ili page-forbidden.
Za dobivanje avatara i ID‑ova korisnika, koristite GET /page-reacts/v2/:tenantId s includeUserInfo=public.



POST /page-reacts/v2/:tenantId 
Dodaje reakciju na stranicu kao trenutni korisnik. Korisnik može dodati svaki ID reakcije jednom: ponovnim dodavanjem uspijeva s kodom already-reacted i ne mijenja broj. Korisnik može dodati nekoliko različitih reakcija na istu stranicu.
ID-ove reakcija birate vi i mogu imati do 36 znakova. Stranica se kreira ako još ne postoji. Proslijedite title za postavljanje ili ažuriranje naslova stranice.



DELETE /page-reacts/v2/:tenantId 
Uklanja jednu od reakcija trenutnog korisnika s stranice. Ako korisnik nije dodao tu reakciju, zahtjev uspijeva s kodom no-react i ne mijenja broj.



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.
GET /api/v1/pages/likes 
Vraća broj lajkova na stranici, i po želji korisnike koji su je lajkali, najnoviji prvi. Ovo je poslužiteljska verzija GET /page-reacts/v1/likes/:tenantId.
includeUserInfo kontrolira koji se korisnici vraćaju:
publicizostavlja korisnike koji su učinili svoju aktivnost profila privatnom.include-privateuključuje ih. Koristite ovo samo kada popis nije prikazan javnosti.
Anonimni korisnici se nikada ne uključuju, a pretražuje se najviše 100 lajkova. Stranice koje ne postoje vraćaju likeCount od 0 i prazan popis users.



Korisni savjet
Zapamtite da URI‑enkodirate vrijednosti poput urlId.
GET /api/v1/pages/reacts 
Vraća broj za svaku reakciju na stranici, i po želji korisnike koji su reagirali, kao jedan unos po reakciji s njegovim ID‑om reakcije, najnoviji prvi. Ovo je poslužiteljska verzija GET /page-reacts/v2/:tenantId.
includeUserInfo kontrolira koji se korisnici vraćaju:
publicizostavlja korisnike koji su učinili svoju aktivnost profila privatnom.include-privateuključuje ih. Koristite ovo samo kada popis nije prikazan javnosti.
Anonimni korisnici se nikada ne uključuju, a pretražuje se najviše 100 reakcija. Stranice koje ne postoje ne vraćaju counts i vraćaju prazan popis users.



Korisni savjet
Zapamtite da URI‑enkodirate 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.



POST /api/v1/pages/migrations 
Ova ruta premješta komentare i stranice s jednog urlId ili domene na drugi, isto kao i alat za migraciju domena u nadzornoj ploči. Može se poslati najviše 100 migracija po zahtjevu. Izvršavaju se redoslijedom navedenim, pa a na b praćeno b na c funkcionira.
Svaka migracija ima type:
urlIdpremješta stranicu čiji jeurlIdtočnofrom.post-1ne podudara se spost-10.domainpronalazi/ zamjenjujefromunutar svakogurlIdiurl, i ažuriradomainsvakog komentara. Obje vrijednosti moraju biti domena, poputold.example.com.
Komentari, stranica, reakcije na stranicu, glasovi, obavijesti i pretplate također se premještaju. Ako stranica već postoji na to, dvije stranice se spajaju.
Migracija se izvršava kao batch posao. Odgovor sadrži batchJobId. Pitanjem GET /api/v1/batch-jobs/:id pratite njegov napredak. Kada posao završi, ima rezultat po migraciji i undoId koji možete proslijediti na POST /api/v1/pages/migrations/:undoId/undo u roku od 90 dana.
Zahtjev se provjerava prije nego što se nešto stavi u red. Ako je neka migracija neispravna, cijeli zahtjev ne uspijeva s kodom 422 i ništa se ne izvršava.
Stavljanje migracije u red ne košta ništa. Kada posao završi, košta 1 kredit po 1000 premještenih komentara, s minimalno 1.



Notes
- Poslovi za jednog najmodavca (tenant) izvršavaju se jedan po jedan, najstariji prvi. Druga migracija čeka da prva završi.
PATCH /api/v1/pages/:ids novimurlIdmijenja samo stranicu, a ne njene komentare. Koristite ovu rutu za premještanje komentara stranice.
POST /api/v1/pages/migrations/:undoId/undo 
Ova ruta poništava svaku migraciju iz jednog posla POST /api/v1/pages/migrations. Preuzmite undoId iz dovršenog posla migracije pomoću GET /api/v1/batch-jobs/:id. undoId se može koristiti 90 dana i samo jednom.
Undo se izvršava kao batch posao, isto kao i migracija, a odgovor sadrži njegov batchJobId. Kada je posao dovršen, njegov pageMigrationUndoResult izvještava:
restored: zapisi vraćeni na svoje vrijednosti prije migracije.skipped: zapisi ostavljeni nepromijenjeni jer su se promijenili nakon migracije ili više ne postoje. Kasnija izmjena se nikada ne prepisuje.notRestorable: zapisi koje je migracija izbrisala prilikom spajanja dviju stranica ili uklanjanja duplikata reakcija stranice. Ti se zapisi ne mogu vratiti.
Migracije se poništavaju najnovije prvo, tako da se lanac poput a do b praćen b do c odmotava natrag do a. Posao migracije koji je neuspješno prekinut može se i dalje poništiti, što vraća promjene koje je napravio prije neuspjeha.
Stavljanje poništavanja u red ne košta ništa. Kada posao završi, košta 1 kredit po 1000 vraćenih zapisa, s minimalno 1.



Struktura ankete 
Poll je vezan uz komentar, a ne da je samostalan objekt. Stvara se zajedno s komentarom
(vidi POST /api/v1/comments), ili se kasnije dodaje postojećem komentaru putem PUT /api/v1/polls/:commentId.
Brojevi glasova čuvaju se na samom anketu, pa čitanje ankete daje rezultate bez potrebe za zbrajanjem
bilo čega. Pojedinačni glasovi iza tih brojeva su PollVote objekti.
Svaka opcija ima id koji se generira prilikom stvaranja ankete. Taj id koristite za davanje glasa,
za preimenovanje opcije i za zadržavanje opcije (i njenih glasova) kada PUT-ate anketu s dodanim ili
uklonjenim opcijama. To je jedini siguran način referenciranja opcije - nikada njen položaj u listi.

Ograničenja
- Pitanje je obavezno i ima najviše 200 znakova.
- Anketa ima između 2 i 10 opcija.
- Oznaka opcije je obavezna, ima najviše 100 znakova i mora biti jedinstvena unutar ankete (zanemarujući velika/mala slova).
closesAtmora biti u budućnosti prilikom stvaranja ankete. Za trenutno zatvaranje ankete,PATCH-ajte je s datumom u prošlosti.
Postavke stranice
Ankete poštuju konfiguraciju vaše stranice, koju možete promijeniti pod Customize Widget:
- Ankete moraju biti omogućene prije stvaranja ankete, inače API odgovara s
polls-disabled. - Glasovanje može biti ograničeno na prijavljene korisnike, u kojem slučaju glas poslan samo s
anonUserIdse odbija spoll-login-required.
GET /api/v1/polls/:commentId 
Čita anketu priloženu komentaru, s trenutnim brojem glasova.
Ankete se također vraćaju uz sam komentar putem API-ja za komentare, pa koristite ovo kada želite samo rezultate, a ne cijeli komentar.



Komentar koji nema anketu, komentar koji je izbrisan i ID komentara koji ne postoji svi odgovaraju na isti način,
s poll-not-found.
PUT /api/v1/polls/:commentId 
Prilaže anketu postojećem komentaru ili postavlja potpuno stanje ankete koju već ima.
Tijelo je potpuna anketa, a opcije koje pošaljete postaju opcije ankete, tim redoslijedom. Svaka opcija
se usklađuje prema svom id:
- Opcija poslana s
idpostojeće opcije zadržava tu opciju i njezine glasove. Njezina oznaka i pozicija ažuriraju se na ono što ste poslali. - Opcija poslana bez
iddodaje se, bez glasova. - Postojeća opcija koju izostavite uklanja se, zajedno s glasovima danima na nju.
totalVotespada za isti iznos.
Dakle, za dodavanje opcije pošaljite trenutne opcije s njihovim id-jevima plus novu bez id-ja. Za uklanjanje
opcije pošaljite popis bez nje. Id-jevi opcija nalaze se na anketi vraćenoj putem GET /api/v1/polls/:commentId.
Ako uopće ne pošaljete id-jeve, svaka se opcija zamjenjuje i briše se svaki glas već dan na anketi. Ako anketa
ima glasove, to zahtijeva replaceVotes=true, a bez toga API odgovara s replace-votes-required.
Ostala polja također se zamjenjuju: izostavljanjem closesAt, privacy ili requireVoteToSeeResults resetira
se na zadanu vrijednost. Za promjenu jednog polja uz ostavljanje ostalih netaknutima, koristite PATCH /api/v1/polls/:commentId.



Ostale napomene
idkoji nije na anketi, ili istiiddan dvaput, ne uspijeva spoll-invalid. Komentar bez ankete još nema id-jeve opcija, pa svaka opcija poslana njemu mora izostavitiid.- Privatnost ankete može se suziti, ali ne i proširiti nakon što ima glasove.
- Ovaj API poštuje postavke vaše stranice. Ako ankete nisu omogućene za stranicu ili stranicu, ne uspijeva s
polls-disabled. - Zaključanom komentaru ne može se promijeniti anketa i ne uspijeva s
locked. - Povezani widgeti ažuriraju se uživo, tako da gledatelji vide novu anketu bez ponovnog učitavanja.
PATCH /api/v1/polls/:commentId 
Uređuje anketu bez ometanja njenih glasova. Koristite ovo za ispravku greške u pitanju ili opciji, za zatvaranje ili ponovno otvaranje ankete, ili za promenu toga ko može videti ko je glasao.
Opcije se adresiraju preko njihovog id, a PATCH preimenuje one koje navedete. Da biste dodali, uklonili ili
prerasporedili opcije, pošaljite kompletnu listu opcija na PUT /api/v1/polls/:commentId: opcije koje pošaljete sa
njihovim id-jevima zadržavaju svoje glasove i tamo.
Svako polje je opciono, ali barem jedno mora biti dato.




Ostale napomene
- Navođenje id-ja opcije koja nije na anketi ne uspijeva s
poll-invalidumjesto da tiho ne učini ništa. - Oznake moraju ostati jedinstvene unutar ankete, računajući i opcije koje ne mijenjate.
- Za razliku od stvaranja ankete,
closesAtovdje može biti u prošlosti - tako se anketa zatvara odmah. - Privatnost ankete može se suziti, ali ne i proširiti nakon što ima glasova.
- Zaključani komentar ne može imati promijenjenu anketu i ne uspijeva s
locked.
DELETE /api/v1/polls/:commentId 
Uklanja anketu iz njenog komentara, zajedno sa svakim glasom koji je na nju dan. Sam komentar ostaje nepromijenjen.
Brisanje komentara također uklanja njegovu anketu i glasove, pa je ovo potrebno samo kada želite zadržati komentar.



Struktura glasova za anketu 
A PollVote je odgovor jedne osobe na anketu. Brojke prikazane na samoj anketi ažurirane su u skladu s njima, pa ih trebate samo kada želite znati tko je glasao za što, a ne ukupne zbrojeve.
Glasatelj može imati najviše jedan glas po anketi. Ponovno glasanje premješta njihov postojeći glas na novu opciju umjesto da doda drugi, a updatedAt bilježi kada se to dogodilo.
voterId je userId kada je glasatelj bio prijavljen, a anonUserId u suprotnom.

Privatnost
Postavka privacy ankete primjenjuje se na ovaj API na isti način kao što se primjenjuje u widgetu za komentare:
-
Anonymous (zadano): nitko ne može vidjeti kako je netko glasao, pa se glasovi ne mogu pročitati.
GET /api/v1/poll-votesiGET /api/v1/poll-votes/:idodgovaraju spoll-anonymous. Brojke ankete i dalje su dostupne putemGET /api/v1/polls/:commentId. -
Admins and moderators: vaš API ključ pripada administratoru vaše stranice, pa može čitati glasove.
-
Everyone: glasovi se mogu čitati.
Privatnost ankete može se suziti, ali ne i proširiti nakon što ima glasova.
GET /api/v1/poll-votes 
Izlistava pojedinačne glasove koji stoje iza brojeva jednog ankete, najstariji prvi. Jedan kredit po 100 vraćenih glasova.
Anketa pripada komentaru, pa se glasovi čitaju po jednoj anketi odjednom i commentId je obavezan. Dodatno suzite s voterId da provjerite kako je jedna osoba glasala, ili s optionId da izlistate sve koji su odabrali određenu opciju.
Maksimalno 1000 glasova se vraća po pozivu. Koristite skip za paginaciju.
Poštuje se postavka privacy ankete: glasovi na anonimnoj anketi ne mogu se čitati, a zahtjev ne uspijeva s poll-anonymous. Pogledajte strukturu PollVote za detalje.



Brojanje glasova po opciji
Ne morate ih zbrajati da biste dobili rezultate - anketa već sadrži svoje brojeve. Umjesto toga pročitajte anketu s GET /api/v1/polls/:commentId, i koristite ovaj API kada trebate znati tko je glasao.
Svaka anketa na stranici
Ne postoji popis glasova za cijelu stranicu. Za izvještavanje o cijeloj stranici, dohvatite njene komentare s GET /api/v1/comments, što vraća anketu svakog komentara i njegove brojeve, a zatim pročitajte glasove za ankete koje vas zanimaju.
GET /api/v1/poll-votes/:id 
Čita pojedinačni glas ankete prema njegovom ID-u.
Glas na anonimnoj anketi ne može se pročitati, a zahtjev ne uspijeva s poll-anonymous. Pogledajte strukturu PollVote kako se primjenjuje postavka privacy ankete.



POST /api/v1/poll-votes 
Bilježi glas na anketi.
Glasatelj može imati najviše jedan glas po anketi. Ponovnim pozivanjem za istog glasatelja premješta se njihov glas na novu opciju umjesto dodavanja drugog, a glasanje za opciju koju su već odabrali ne čini ništa.
Odgovor uključuje anketu, tako da dobivate ažurirane brojeve bez drugog zahtjeva.




Anonimni glasovi
Postavite anonUserId umjesto userId kako biste zabilježili glas za nekoga tko nije prijavljen. Taj ID ne mora odgovarati korisniku bilo gdje – samo identificira sesiju, tako da ista osoba nije brojana dvaput.
Anonimno glasanje mora biti omogućeno za vašu stranicu. Ako je glasanje ograničeno na prijavljene korisnike, glas s jednim anonUserId ne uspijeva s poll-login-required.
Anonimni glasovi također su ograničeni po IP-u po anketi, kako bi se spriječilo da jedna osoba napuni anketu brisanjem svoje sesije. Pošaljite IP krajnjeg korisnika ip kako bi se ograničenje primijenilo na njih, a ne na vaš poslužitelj.
Ostale napomene
userIdmora biti korisnik koji postoji na vašoj stranici. Glasovi za korisnika koji pripada drugoj stranici se odbacuju.- Glasanje u zatvorenoj anketi ne uspijeva s
poll-closed. - Ovaj API ažurira brojeve na anketi i u stvarnom vremenu ih šalje povezanih widgeta live.
DELETE /api/v1/poll-votes/:id 
Povlači glas. Opcija na koju je glas bio izabran vraća svoj broj, a glasač je slobodan ponovno glasati.



Ostale napomene
- Brisanje istog glasa dva puta vraća
not-founddrugi put, a brojevi ostaju nepromijenjeni. - Ako je anketa zamijenjena od kada je glas izabran, glas se uklanja, ali se brojevi ne mijenjaju, jer je zamjena započela od nule.
Struktura čekajućih webhook događaja 
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 nudi jednostavno rješenje za SSO koje se lako koristi. Ažuriranje korisničkih podataka putem integracije temeljene na HMAC-u jednostavno je kao učitavanje stranice s ažuriranim payloadom od strane korisnika.
Međutim, može biti poželjno upravljati korisnikom izvan tog toka, radi bolje dosljednosti vaše aplikacije.
SSO User API pruža način za CRUD operacije nad objektima koje nazivamo SSOUsers. Ti su objekti različiti od običnih korisnika (Users) i drže se odvojeno radi sigurnosti tipova.
Struktura objekta SSOUser je sljedeća:

Naplata za SSO korisnike
SSO korisnici se naplaćuju različito ovisno o njihovim oznakama dozvola:
- Obični SSO korisnici: Korisnici bez admin ili moderatorskih dozvola naplaćuju se kao obični SSO korisnici
- SSO Admini: Korisnici s oznakama
isAccountOwneriliisAdminAdminnaplaćuju se odvojeno kao SSO Admini (ista cijena kao za obične admin korisnika najmoprimca/tenanta) - SSO Moderatori: Korisnici s oznakom
isCommentModeratorAdminnaplaćuju se odvojeno kao SSO Moderatori (ista cijena kao za obične moderatore)
Važno: Kako bi se spriječila dvostruka naplata, sustav automatski uklanja duplikate SSO korisnika naspram običnih korisnika i moderatora tenanta prema adresi e-pošte. Ako SSO korisnik ima istu e-poštu kao obični korisnik ili moderator tenanta, neće se naplatiti dvaput.
Kontrola pristupa
Korisnici se mogu podijeliti u grupe. Za to služi polje groupIds, i ono je neobavezno.
@Spominjanja
Prema zadanim postavkama @mentions će koristiti username za pretraživanje drugih SSO korisnika kada se upiše znak @. Ako se koristi displayName, tada će rezultati koji odgovaraju username biti ignorirani kada postoji podudaranje za displayName, a rezultati pretrage @mention koristit će displayName.
Pretplate
Uz FastComments, korisnici se mogu pretplatiti na stranicu klikom na ikonu zvona u widgetu za komentare i klikom na Pretplati se.
Kod običnog korisnika, šaljemo im e-poštu s obavijestima na temelju njihovih postavki obavijesti.
Kod SSO korisnika, ovo razdvajamo radi kompatibilnosti unatrag. Korisnici će primati dodatne e-pošte s obavijestima o pretplati samo ako postavite optedInSubscriptionNotifications na true.
Značke (Badges)
Možete dodijeliti značke SSO korisnicima koristeći svojstvo badgeConfig. Značke su vizualni pokazatelji koji se pojavljuju uz korisničko ime u komentarima.
badgeIds- Polje ID-ova znački koje treba dodijeliti korisniku. To su globalne značke vidljive na svim stranicama. Mora biti riječ o valjanim ID-ovima znački stvorenim u vašem FastComments računu. Ograničeno na 30 znački.pageBadgeIds- Neobavezno polje ID-ova znački ograničenih na trenutnu stranicu (urlId). Te se značke prikazuju samo na stranici na kojoj su dodijeljene. Različite stranice mogu imati različite značke ograničene na stranicu za istog korisnika.override- Ako je true, sve postojeće prikazane značke bit će zamijenjene pruženima. Globalne i značke ograničene na stranicu nadjačavaju se neovisno — nadjačavanje globalnih znački ne utječe na značke ograničene na stranicu, i obrnuto. Ako je false ili izostavljeno, pružene značke bit će dodane 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
- badges
isDeleted 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.
Objekti Subscription stvaraju se kada korisnik klikne na zvonce za obavijesti u widgetu za komentare i klikne "Subscribe to this page".
Pretplate se mogu stvoriti i putem API-ja.
Postojanje objekta Subscription uzrokuje generiranje objekata Notification i slanje e-pošte kada se novi komentari ostave na korijenu povezane stranice
za koju je Subscription vezan. Slanje e-pošte ovisi o vrsti 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-dostupne stranice, u kojem slučaju jednostavno postavite urlId na
id stavke na koju se pretplaćujete (ista vrijednost za urlId koju biste proslijedili widgetu za komentare).
Struktura objekta Subscription je sljedeća:

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 najmodavca 
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 najmodavca 
Tenant definira FastComments.com korisnika. Mogu se stvoriti putem API-ja od strane tenanata s pristupom white labelingu. White labelirani tenanti
ne mogu stvarati druge white labelirane tenante (dopuštena je samo jedna razina ugniježđivanja).
Struktura objekta Tenant je sljedeća:

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 najmodavca 
Objekt TenantPackage definira informacije o paketu dostupne Tenantu. Najamnik (tenant) može imati više dostupnih paketa, ali samo
jedan u upotrebi u datom trenutku.
Tenant se ne može koristiti ni za jedan proizvod dok njegov packageId ne pokazuje na valjani TenantPackage.
Postoje dvije vrste TenantPackage objekata:
- Paketi s fiksnim cijenama - gdje je
hasFlexPricingfalse. - Fleksibilno određivanje cijena - gdje je
hasFlexPricingtrue.
U oba slučaja ograničenja su definirana na računu koji koristi paket, no uz Flex najamnik se naplaćuje osnovna cijena plus
ono što je potrošio, što definiraju flex* parametri.
Najamnik može imati više tenant paketa i može sam promijeniti paket sa stranice s podacima za naplatu.
Ako ćete sami obrađivati naplatu za najamnike, i dalje ćete morati definirati paket za svakog najamnika kako biste definirali njegova ograničenja. Jednostavno postavite billingHandledExternally na true na Tenantu i oni
neće moći sami mijenjati svoje podatke za naplatu niti aktivni paket.
Ne možete stvarati pakete s višim ograničenjima od nadređenog najamnika.
Struktura objekta TenantPackage je sljedeća:

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 najmodavca 
TenantUser definira User kojim upravlja određeni tenant. Njihov račun ima potpunu kontrolu nad tenantom
s kojim su povezani, a njihov račun može se ažurirati ili izbrisati putem UI-ja ili API-ja.
Tenant korisnici mogu biti administratori sa svim dozvolama i pristupom Tenant-u, ili mogu biti ograničeni na specifične dozvole
za moderiranje komentara, pristup API ključevima itd.
Struktura objekta TenantUser je sljedeća:

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
- badges
isDeleted 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 zakupnika.
Struktura objekta DomainConfig izgleda ovako:


Za autentikaciju
Konfiguracija domene koristi se za određivanje koje web stranice mogu ugostiti FastComments widget za vaš račun. Ovo je osnovni oblik autentikacije, što znači da dodavanje ili uklanjanje bilo koje konfiguracije domene može utjecati na dostupnost vaše FastComments instalacije u produkciji.
Ne uklanjajte niti ne ažurirajte 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 uklanjanje domene iz korisničkog sučelja 'Moje domene' uklonit će 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 odjave jednim klikom koju nude mnogi e-mail klijenti mogu se konfigurirati putem ovog API-ja definirajući footerUnsubscribeURL i emailHeaders, redom.
Za DKIM
Nakon definiranja vaših DKIM DNS zapisa, jednostavno ažurirajte DomainConfig s vašom DKIM konfiguracijom koristeći definiranu 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 FastComments sustavu.
Značke se korisnicima mogu dodjeljivati 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ćava dohvaćanje korisničkih znački na temelju različitih 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, itd. Pogledajte strukturu UserBadge za puni popis)displayedOnComments- Filtriraj po tome je li značka prikazana na komentarima (true/false)limit- Maksimalan broj znački za vraćanje (zadano 30, max 200)skip- Broj znački za preskakanje (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.