
Језик 🇲🇪 Српски (Црна Гора)
API ресурси
Агрегације
Дневници ревизије
Коментари
Шаблони е-поште
Хештегови
Модератори
Број обавештења
Обавештења
Странице
Непроцесирани вебхук догађаји
SSO корисници
Претплате
Дневна употреба тенанта
Тенанти
Пакети тенанта
Корисници тенанта
Корисници
Гласови
Конфигурације домена
Конфигурације питања
Резултати питања
Агрегација резултата питања
Значке корисника
Напредак значке корисника
FastComments API
FastComments pruža API za interakciju sa mnogim resursima. Izgradite integracije sa našom platformom, ili čak napravite svoje klijente!
U ovoj dokumentaciji naći ćete sve podržane resurse API-ja dokumentovane sa njihovim tipovima zahteva i odgovora.
Za Enterprise korisnike, sav pristup API-ju se beleži u Dnevniku audita.
Generisani SDK-ovi
FastComments sada generiše API specifikaciju iz našeg koda (ovo još nije kompletno, ali uključuje mnoge API-je).
We also now have SDKs for popular languages:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Autentifikacija
API se autentifikuje prosleđivanjem vašeg API ključa kao ili X-API-KEY zaglavlje ili API_KEY parametar upita. Takođe će vam trebati vaš tenantId za pozive API-ju. Možete ga pronaći na istoj stranici kao i vaš API ključ.
Sigurnosna napomena
Ove rute su namenjene da se pozivaju sa servera. NE POZIVAJTE ih iz pregledača. To će otkriti vaš API ključ — to će omogućiti potpun pristup vašem nalogu svima koji mogu videti izvorni kod stranice!
Opcija autentifikacije 1 - Zaglavlja
- Zaglavlje:
X-API-KEY - Zaglavlje:
X-TENANT-ID
Opcija autentifikacije 2 - Parametri upita
- Parametar upita:
API_KEY - Parametar upita:
tenantId
API ресурси 
Korišćenje resursa
Treba napomenuti da se dohvat podataka sa API-ja računa kao upotreba na vašem nalogu.
Svaki resurs navodi koja se upotreba evidentira u svojoj sekciji.
Neki resursi koštaju više za posluživanje nego drugi. Svaki endpoint ima fiksan trošak kredita po API pozivu. Za neke endpoint-e, broj kredita varira u zavisnosti od opcija i veličine odgovora.
Upotreba API-ja se može proveriti na stranici Analitika naplate i ažurira se svakih nekoliko minuta.
Napomena!
Preporučujemo da prvo pročitate dokumentaciju za Pages, kako biste smanjili zabunu pri određivanju koje vrijednosti treba proslijediti za urlId u Comment API.
Агрегирајте своје податке 
Овај API агрегира документе тако што их групише (ако је обезбеђено groupBy) и примјењује више операција. Подржане су различите операције (нпр. sum, countDistinct, avg, итд.).
Трошак је променљив. За сваких 500 објеката скенираних наплаћује се 1 API кредит.
Максимална количина меморије дозвољена по API позиву по подразумеваној вриједности је 64MB, и по подразумеваном можете имати само једну агрегацију која се извршава у једном тренутку. Ако пошаљете више агрегaција истовремено, оне ће бити стављене у ред и извршаваће се по редослиједу пријема. Нерешене агрегaције ће чекати највише 60 секунди, након чега ће захтев истећи. Појединачне агрегaције могу да трају до 5 минута.
Ако имате управљане тенанте, можете агрегирати све ресурсе дјечијих тенаната у једном позиву прослиједивши query параметар parentTenantId.
Примери
Пример: Бројање јединствених вредности


Пример: Бројање различитих вредности

Одговор:

Пример: Збир вредности више поља

Одговор:

Пример: Просек вредности више поља

Одговор:

Пример: Минималне/максималне вредности више поља

Одговор:

Пример: Бројање јединствених вредности више поља

Одговор:

Пример: Креирање упита

Одговор:

Пример: Број коментара на чекању за преглед

Одговор:

Пример: Расподела одобрених, прегледаних и спам коментара

Одговор:

Структуре


Следећи ресурси се могу агрегирати:
- AffiliateEvent
- AnonymousVote
- BannedUser
- BatchJob
- BlockedUser
- Comment
- CommentDeleted
- CommentIdToSyncOutbound
- CommentScheduled
- CommentSyncLog
- CustomConfig
- CustomEmailTemplateRenderError
- EmailToSend
- EventLogEntry
- ImportedCommentScheduled
- ModerationGroup
- Moderator
- Page
- PageReact
- PendingVote
- QuestionResult
- SSOUser
- SentEmail
- SpamEvent
- Tenant
- TenantAuditLog
- TenantBadge
- TenantDailyUsage
- TenantInvoiceHistory
- TenantPackage
- User
- UserBadge
- UserBadgeProgress
- UserNotification
- UserSubscription
- UserUsage
- Vote
Структура дневника ревизије 
AuditLog je objekat koji predstavlja revizirani događaj za tenantima koji imaju pristup ovoj funkciji.
Struktura AuditLog objekta je sljedeća:

Dnevnik revizije je nepromjenjiv. Ne može se ručno upisivati. FastComments.com jedino može odlučiti kada će unijeti zapise u dnevnik revizije. Međutim, možete ga čitati putem ovog API-ja.
Događaji u dnevniku revizije ističu nakon dvije godine.
GET /api/v1/audit-logs 
Овај API користи пагинацију, обезбијеђену параметрима skip, before и after. AuditLogs се враћају у страницама од 1000, поређани по when и id.
Преузимање сваких 1000 логова кошта 10 кредита.
По подразумеваној поставци, добићете листу са најновијим ставкама на почетку. На овај начин можете започети са skip=0 и пагинирати док не пронађете последњи запис који сте обрадили.
Алтернативно, можете сортирати тако да најстарији буду први и пагинирати док не буде више записа.
Сортирање се врши подешавањем order на ASC или DESC. Подразумевано је ASC.
Претраживање по датуму је могуће преко before и after као временских ознака са милисекундама. before и after нису укључени.



Структура коментара 
Објекат Comment представља коментар који је оставио корисник.
Веза између родитељских и подређених коментара дефинише се преко parentId.
Структура за Comment објекат је следећа:

Нека од ових поља су означена као READONLY - она се враћају преко API-ја али не могу бити подешена.
Структура текста коментара
Коментари су написани у FastComments верзији markdown-а, што је обичан markdown плус традиционални bbcode стил тагова за слике, као што су [img]path[/img].
Текст је складиштен у два поља. Текст који је корисник унео је сачуван неизмењен у пољу comment. Ово се рендерује и чува у пољу commentHTML.
Дозвољени HTML тагови су b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Препоручује се рендеровање HTML-а, с обзиром на то да је то веома мали подсет HTML-а, прављење renderer-а је прилично једноставно. Постоји више библиотека за React Native и Flutter, на пример, које могу помоћи у томе
Можете изабрати да рендерујете ненормализовану вредност поља comment. Пример parser-а је овде..
Пример parser-а се такође може прилагодити да ради са HTML-ом и трансформише HTML тагове у очекиване елементе за рендеровање на вашој платформи.
Ознаке (Tagging)
Када су корисници означени у коментару, информација се чува у листи која се зове mentions. Сваки објекат у тој листи
има следећу структуру.
Run 
Хештегови
Када се хештеговa користе и успешно парсирају, информација се чува у листи која се зове hashTags. Сваки објекат у тој листи
има следећу структуру. Хештегови се такође могу ручно додати у hashTags низ коментара за упите, ако је retain постављено.
Run 
GET /api/v1/comments 
Ovaj API se koristi za dobijanje komentara za prikaz korisniku. Na primjer, automatski filtrira neodobrene ili spam komentare.
Paginacija
Paginacija se može vršiti na jedan od dva načina, u zavisnosti od zahtjeva za performansama i slučaja upotrebe:
- Najbrže: Prekalkulisana paginacija:
- Ovako FastComments radi kada koristite naše prethodno izgrađene widgete i klijente.
- Klik na 'next' jednostavno povećava broj stranice.
- Možete to zamisliti kao da se dobija iz skladišta ključ-vrijednost.
- Na ovaj način, jednostavno definišite parametar
pagekoji počinje od0i smjer sortiranja kaodirection. - Veličine stranica se mogu prilagoditi pravilima za prilagođavanje.
- Najfleksibilnije: Fleksibilna paginacija:
- Na ovaj način možete definirati prilagođene parametre
limitiskip. Nemojte slatipage. - Podržan je i smjer sortiranja
direction. limitje ukupan broj koji će biti vraćen nakon što se primijeniskip.- Primjer: postavite
skip = 200, limit = 100kada jepage size = 100ipage = 2.
- Primjer: postavite
- Podkomentari i dalje se računaju u paginaciji. Možete to izbjeći koristeći opciju
asTree.- Podkomentare možete paginirati preko
limitChildreniskipChildren. - Možete ograničiti dubinu niti koje se vraćaju putem
maxTreeDepth.
- Podkomentare možete paginirati preko
- Na ovaj način možete definirati prilagođene parametre
Niti
- Kada koristite
Precalculated Pagination, komentari su grupisani po stranici i komentari u nitima utiču na ukupnu stranicu.- Na ovaj način, niti se mogu odrediti na klijentu na osnovu
parentId. - Na primjer, na stranici sa jednim komentarom najvišeg nivoa i 29 odgovora, ako postavite
page=0u API-ju — dobićete samo komentar najvišeg nivoa i 29 djece. - Primjer slike koja ilustruje više stranica.
- Na ovaj način, niti se mogu odrediti na klijentu na osnovu
- Kada koristite
Flexible Pagination, možete definirati parametarparentId.- Postavite ovo na null da dobijete samo komentare najvišeg nivoa.
- Zatim, da biste vidjeli niti, pozovite API ponovo i prosledite
parentId. - Uobičajeno rješenje je napraviti API poziv za komentare najvišeg nivoa, a zatim napraviti paralelne API pozive za dobijanje komentara za podkomentare svakog komentara.
- NOVO od Feb 2023! Dohvatite kao stablo koristeći
&asTree=true.- Možete to zamisliti kao
Flexible Pagination as a Tree. - Samo komentari najvišeg nivoa se računaju u paginaciji.
- Postavite
parentId=nullda započnete stablo od korijena (morate postavitiparentId). - Postavite
skipilimitza paginaciju. - Postavite
asTreenatrue. - Trošak kredita se udvostručuje (
2x), jer naš backend mora obaviti mnogo više posla u ovom scenariju. - Postavite
maxTreeDepth,limitChildreniskipChildrenpo želji.
- Možete to zamisliti kao
Objašnjenje stabala
Kada koristite asTree, može biti teško razumjeti paginaciju. Evo korisnog grafikona:
Dohvatanje komentara u kontekstu korisnika
API /comments se može koristiti u dva konteksta, za različite slučajeve upotrebe:
- Za vraćanje komentara sortirano i označeno informacijama za izgradnju vašeg klijenta.
- U ovom slučaju, definišite query parametar
contextUserId.
- U ovom slučaju, definišite query parametar
- Za dobijanje komentara sa vašeg backend-a za prilagođene integracije.
- Platforma će koristiti ovo kao zadato ako nema
contextUserId.
- Platforma će koristiti ovo kao zadato ako nema




Dohvati komentare kao stablo
Moguće je dobiti komentare vraćene kao stablo, pri čemu paginacija broji samo komentare najvišeg nivoa.

Želite da dobijete samo komentare najvišeg nivoa i neposredne odgovore? Evo jednog načina:

Međutim, u vašem UI možda treba da znate da li da prikažete dugme "show replies" na
svakom komentaru. Kada dohvatate komentare putem stabla postoji svojstvo hasChildren koje se dodaje
komentarima kada je primjenjivo.
Dohvati komentare kao stablo, pretraga po haštagu
Moguće je pretraživati po haštagu 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 haštagova. API će vratiti samo komentare koji imaju sve tražene haštagove.

Svi parametri zahteva

Odgovor

Korisni savjeti
URL ID
Vjerovatno ćete htjeti koristiti Comment API sa parametrrom urlId. Možete prvo pozvati Pages API, da vidite kako izgledaju vrijednosti urlId koje su vam na raspolaganju.
Anonimne radnje
Za anonimno komentarisanje vjerovatno želite poslati anonUserId prilikom dohvatanja komentara, kao i prilikom prijavljivanja i blokiranja.
(!) Ovo je zahtjev za mnoge prodavnice aplikacija jer korisnici moraju biti u mogućnosti da prijave sadržaj kreiran od strane korisnika koji mogu vidjeti, čak i ako nisu prijavljeni. Nepoštovanje ovoga može uzrokovati uklanjanje vaše aplikacije iz navedene prodavnice.
Komentari se ne vraćaju
Provjerite da li su vaši komentari odobreni i da nisu spam.
GET /api/v1/comments/:id 
Овај API омогућава преузимање појединачног коментара по идентификатору.



POST /api/v1/comments 
Ова крајња тачка API-ја омогућава креирање коментара.
Уобичајени случајеви употребе су прилагођени интерфејси, интеграције или увоз.
Напомене:
- Овај API може ажурирати видгет коментара "уживо" ако је потребно (ово повећава
creditsCostса1на2). - Овај API ће аутоматски креирати објекте корисника у нашем систему ако је наведена е-пошта.
- Покушај да се сачувају два коментара са различитим е-поштама, али истим корисничким именом, резултираће грешком за други коментар.
- Ако наводите
parentId, и дечји коментар имаnotificationSentForParentкао false, послаћемо обавештења за родитељски коментар. Ово се ради сваки сат (групишемо обавештења заједно да бисмо смањили број послатих имејлова). - Ако желите да пошаљете добродошлине имејлове приликом креирања корисника, или имејлове за верификацију коментара, подесите
sendEmailsнаtrueу параметрима упита. - Коментари креирани преко овог API-ја ће се појавити на страницама Analytics и Moderation админ апликације.
- "bad words" су и даље маскиране у именима коментатора и тексту коментара ако је то подешавање укључено.
- Коментари креирани преко овог API-ја и даље се могу проверавати на спам ако је потребно.
- Конфигурације као што је максимална дужина коментара, ако су подешене преко странице Customization Rule у админ панелу, примењиваће се овде.
Минимални подаци потребни за слање који ће се приказати у видгету коментара су следећи:

Реалнији захтев може изгледати овако:



PATCH /api/v1/comments/:id 
Ова крајња тачка API-ја омогућава ажурирање појединачног коментара.
Напомене:
- Овај API може, по жељи, ажурирати видгет коментара у реалном времену (ово повећава основни
creditsCostса1на2).- Ово може омогућити миграцију коментара између страница у реалном времену (промена
urlId). - Миграције коштају додатна
2кредита јер се странице претходно израчунавају и то је захтјевно за CPU.
- Ово може омогућити миграцију коментара између страница у реалном времену (промена
- За разлику од API-ја за креирање, овај API НЕће аутоматски креирати корисничке објекте у нашем систему ако је наведена е-пошта.
- Коментари ажурирани преко овог API-ја и даље могу бити провјерени на спам, по жељи.
- Конфигурације као што је максимална дужина коментара, ако су постављене преко странице администрације правила прилагођавања, примјењиваће се овдје.
- Да бисте омогућили корисницима да ажурирају текст свог коментара, можете једноставно навести
commentу тијелу захтјева. Ми ћемо генерисати резултујућиcommentHTML.- Ако дефинишете и
commentиcommentHTML, нећемо аутоматски генерисати HTML. - Ако корисник дода помињања или хештегове у новом тексту, они ће се и даље обрађивати као код
POSTAPI-ја.
- Ако дефинишете и
- Када ажурирате
commenterEmailна коментару, најбоље је такође навестиuserId. У супротном, морате осигурати да корисник са том е-поштом припада вашем tenant-у, иначе ће захтјев пропасти.



DELETE /api/v1/comments/:id 
Ова крајња тачка API‑ја омогућава брисање коментара.
Напомене:
- Ова крајња тачка API‑ја може, по жељи, ажурирати виджет коментара "уживо" (ово повећава
creditsCostса1на2). - Овај API ће обрисати све подкоментаре.



POST /api/v1/comments/:id/flag 
Ова API крајња тачка омогућава означавање коментара за одређеног корисника.
Напомене:
- Овај позив увијек мора бити извршен у контексту корисника. Корисник може бити FastComments.com корисник, SSO корисник, или корисник тенанта.
- Ако је постављен праг за скривање на основу броја означавања, коментар ће бити аутоматски скривен уживо након што буде означен наведени број пута.
- Након аутоматског поништавања одобрења (скривања) — коментар може поново одобрити само администратор или модератор. Уклањање означавања неће поново одобрити коментар.

За анонимно означавање морамо навести anonUserId. Ово може бити ИД који представља анонимну сесију, или насумични UUID.
Ово нам омогућава да подржимо означавање и уклањање означавања коментара чак и ако корисник није пријављен. На тај начин, коментар може бити означен као
прозначен када се коментари преузму са истим anonUserId.



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

For anonymous flagging, we must specify an anonUserId. This can be an ID that represents the anonymous session, or a random UUID.



POST /api/v1/comments/:id/block 
Овај API endpoint пружа могућност блокирања корисника који је написао одређени коментар. Подржава блокирање на основу коментара које су написали FastComments.com корисници, SSO корисници и корисници тенанта.
Подржава body параметар commentIdsToCheck ради провере да ли неки други потенцијално видљиви коментари на клијенту треба да буду блокирани/отблокирани након извршене акције.
Напомене:
- Овај позив увек мора бити направљен у контексту корисника. Корисник може бити FastComments.com корисник, SSO корисник, или корисник тенанта.
- У захтеву,
userIdје корисник који обавља блокирање. На пример:User Aжели да блокираUser B. ПроследитеuserId=User Aи id коментара који је написаоUser B. - Потпуно анонимни коментари (без user id-а, без е-поште) не могу бити блокирани и вратиће се грешка.

За анонимно блокирање, морамо навести anonUserId. То може бити ID који представља анонимну сесију, или насумични UUID.
Ово нам омогућава да подржимо блокирање коментара чак и ако корисник није пријављен тако што ћемо преузети коментаре са истим anonUserId.



POST /api/v1/comments/:id/un-block 
Ovaj API endpoint omogućava uklanjanje blokade korisniku koji je napisao određeni komentar. Podržava uklanjanje blokade za komentare koje su napisali FastComments.com korisnici, SSO korisnici, i Tenant korisnici.
Podržava body parametar commentIdsToCheck koji provjerava da li bi ostali potencijalno vidljivi komentari na klijentu trebali biti blokirani/otblokirani nakon izvršene akcije.
Napomene:
- Ovaj poziv mora uvijek biti napravljen u kontekstu korisnika. Korisnik može biti FastComments.com korisnik, SSO korisnik, ili Tenant korisnik.
- Polje
userIdu zahtjevu je korisnik koji je izvodi otblokiranje. Na primjer:User Aželi otblokiratiUser B. ProslijediteuserId=User Ai id komentara koji je napisaoUser B. - Potpuno anonimni komentari (bez user id, bez email) ne mogu biti blokirani i biće vraćena greška.




Структура шаблона е-поште 
Објекат EmailTemplate представља конфигурацију за прилагођени имејл шаблон, за tenant.
Систем ће одабрати имејл шаблон који ће се користити путем:
- Његовог идентификатора типа, називамо га
emailTemplateId. Ово су константе. domain. Прво ћемо покушати пронаћи шаблон за домен уз који је повезан релевантни објекат (попутComment), а ако се поклапање не пронађе онда ћемо покушати пронаћи шаблон где је domain null или*.
Структура за објекат EmailTemplate је следећа:

Напомене
- You can get the valid
emailTemplateIdvalues from the/definitionsendpoint. - The
/definitionsendpoint also includes the default translations and test data. - Шаблони неће бити сачувани ако структура или тестни подаци нису валидни.
GET /api/v1/email-templates/:id 
Pojedinačni EmailTemplate-ovi se mogu dohvatiti pomoću odgovarajućeg id (NE emailTemplateId).



GET /api/v1/email-templates 
Ovaj API koristi paginaciju, koju obezbjeđuje query parametar page. EmailTemplates se vraćaju u stranicama od 100, poredani po createdAt i zatim po id.



PATCH /api/v1/email-templates/:id 
Овај API крајни точак омогућава ажурирање шаблона е-поште навођењем само id и атрибута које треба ажурирати.
Имајте у виду да се исте валидације које важе при креирању шаблона такође примењују, на пример:
- Шаблон мора да се рендерује. Ово се проверава при сваком ажурирању.
- Не можете имати дупликатне шаблоне за исти домен (иначе би један био тихо игнорисан).



POST /api/v1/email-templates 
Овај API ендпоинт омогућава креирање шаблона е-поште.
Напомене:
- Не можете имати више шаблона са истим
emailTemplateIdза исти домен. - Међутим, можете имати џокер-шаблон (
domain=*) и шаблон специфичан за домен за истиemailTemplateId. - Навођење
domainје релевантно само ако имате различите домене, или желите користити специфичне шаблоне за тестирање (domainпостављен наlocalhostитд). - Ако наведете
domain, он мора одговаратиDomainConfig. У случају грешке биће обезбеђен списак важећих домена. - Синтакса шаблона је EJS и рендерује се уз тајмаут од 500ms. P99 за рендеровање је <5ms, тако да ако достигнете 500ms нешто није у реду.
- Ваш шаблон мора да се рендерује са датим
testDataда би се сачувао. Грешке приликом рендеровања се агрегирају и пријављују у контролној табли (ускоро доступно и преко API-а).
Минимални подаци потребни за додавање шаблона су следећи:

You may want to have templates per-site, in which case you define domain:



POST /api/v1/email-templates/render 
Овај API крајњи ендпоинт омогућава преглед шаблона е-порука.



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



Структура хештега 
Објекат HashTag представља ознаку коју може оставити корисник. HashTags се могу користити за повезивање са спољним садржајем или за повезивање повезаних коментара.
Структура за HashTag објекат је следећа:

Напомене:
- У неким API endpoints видећете да се хаштег користи у URL-у. Запамтите да вредности буду URI-Encoded. На пример,
#треба да буде представљен као%23. - Нека од ових поља су означена као
READONLY- враћа их API, али се не могу поставити.
GET /api/v1/hash-tags 
Ovaj API koristi paginaciju, koju obezbjeđuje parametar upita page. Heštegovi se vraćaju u stranicama po 100, poredani po tag.



PATCH /api/v1/hash-tags/:tag 
Ова рута омогућава ажурирање појединачног HashTag-а.



POST /api/v1/hash-tags 
Ова рута омогућава додавање једног HashTag-а.



POST /api/v1/hash-tags/bulk 
Ова рута омогућава додавање до 100 HashTag објеката одједном.



DELETE /api/v1/hash-tags/:tag 
Ова рута омогућава уклањање HashTag-а по наведеном тагу.
Имајте у виду да, осим ако није онемогућено аутоматско креирање HashTag-ова, хештегови могу бити поново створени ако корисник унесе хештег приликом коментарисања.



Структура модератора 
A Moderator објекат представља конфигурацију за модератора.
Постоје три типа модератора:
- Администраторски корисници који имају
isCommentModeratorAdminознаку. - SSO корисници са
isCommentModeratorAdminознаком. - Редовни коментатори, или FastComments.com корисници, који су позвани као модератори.
Структура Moderator се користи за представљање стања модерације у случају употребе 3.
Ако желите да позовете корисника да постане модератор преко API-ја, користите Moderator API креирањем Moderator и њиховим inviting.
Ако корисник нема FastComments.com налог, e-mail позив ће им помоћи да се подесе. Ако већ има налог, добиће приступ модерацији за ваш tenant и Moderator објект ће имати ажуриран userId да показује на њихов корисник. Нећете имати API приступ њиховом кориснику, јер у том случају он припада њима и управља њим FastComments.com.
Ако вам треба потпуна управљања корисничким налогом, препоручујемо или коришћење SSO, или додавање њих као Корисник тенанта и затим додавање Moderator објекта да бисте пратили њихове статистике.
Структура Moderator може да се користи као механизам за праћење статистике за случајеве употребе 1 и 2. Након креирања корисника, додајте Moderator објекат са дефинисаним userId и њихове статистике ће се пратити на Страница модератора коментара.
Структура за Moderator објекат је следећа:

GET /api/v1/moderators/:id 
Ovaj endpoint vraća jednog moderatora po njihovom id.



GET /api/v1/moderators 
Ovaj API koristi paginaciju, koju obezbjeđuje parametar upita skip. Moderatori se vraćaju u stranicama po 100, poredani po createdAt i id.
Trošak se zasniva na broju vraćenih moderatora i iznosi 1 kredit na svakih 10 vraćenih moderatora.



PATCH /api/v1/moderators/:id 
Ova API krajnja tačka omogućava ažuriranje Moderator po id.
Ažuriranje Moderator-a ima sljedeća ograničenja:
- Sljedeće vrijednosti ne smiju biti proslijeđene pri ažuriranju
Moderator-a:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je specificiran
userId, taj korisnik mora postojati. - Kada je specificiran
userId, on mora pripadati istomtenantIdnavedenom u query parametrima. - Dva moderatora u istom tenantu ne mogu imati isti
email. - Ne smijete mijenjati
tenantIdpovezan sModerator-om.



POST /api/v1/moderators 
Ova ruta omogućava dodavanje jednog Moderator.
Kreiranje Moderator ima sljedeća ograničenja:
nameiemailuvijek moraju biti navedeni.userIdje opciono.- Sljedeće vrijednosti se ne smiju navoditi prilikom kreiranja
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je
userIdnaveden, taj korisnik mora postojati. - Kada je
userIdnaveden, mora pripadati istomtenantIdnavedenom u parametrima upita. - Dva moderatora u istom tenantu ne mogu imati isti
email.
Možemo kreirati Moderator za korisnika za kojeg znamo samo email:

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



POST /api/v1/moderators/:id/send-invite 
Ова рута пружа могућност слања позива за једног Moderator.
Постоје сљедећа ограничења за слање позива путем е-поште Moderator-у:
Moderatorмора већ постојати.fromNameне може бити дужи од100 characters.
Напомене:
- Ако корисник са датом е-поштом већ постоји, биће позван да модерира коментаре вашег тенанта.
- Ако корисник са датом е-поштом не постоји, линк за позив ће их провести кроз креирање налога.
- Позив истиче након
30 days.
Можемо креирати Moderator за корисника чију адресу е-поште једино знамо:

Ово ће послати е-поруку попут Bob at TenantName is inviting you to be a moderator...


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



Структура броја обавештења 
A NotificationCount object predstavlja број непрочитаних обавјештења и метаподатке за корисника.
Ако нема непрочитаних обавјештења, за корисника неће постојати NotificationCount.
NotificationCount објекти се креирају аутоматски и не могу се креирати преко API-ја. Такођер истичу након једне године.
Можете очистити број непрочитаних обавјештења корисника брисањем његовог NotificationCount.
Структура за објекат NotificationCount је следећа:

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



DELETE /api/v1/notification-count/:user_id 
Ова рута брише један NotificationCount по ID-ју корисника. При коришћењу SSO-а, ID корисника је у формату <tenant id>:<user id>.
Ово ће обрисати број непрочитаних обавештења корисника (црвено звонце у видгету за коментаре ће избледети и број ће нестати).



Структура обавештења 
Објекат Notification представља обавјештење за корисника.
Notification објекти се креирају аутоматски и не могу се креирати преко API-ja. Они такође истичу након једне године.
Обавјештења не могу бити обрисана. Међутим, могу се ажурирати тако да се viewed постави на false, и можете да правите упит по viewed.
Корисник такође може да се одкаже од обавјештења за одређени коментар постављањем optedOut у обавјештењу на true. Можете се поново пријавити постављањем на false.
Постоје различити типови обавјештења - погледајте relatedObjectType и type.
Начини на које се обавјештења креирају су прилично флексибилни и могу бити покренути у многим сценаријама (погледајте NotificationType).
У данашње вријеме, постојање Notification објекта не имплицира да је е-порука послата или да би требало да буде послата. Умјесто тога, обавјештења се користе за фид обавјештења и повезане интеграције.
Структура за објекат Notification је следећа:

GET /api/v1/notifications 
Ovaj endpoint vraća do 30 Notification objekata sortiranih po createdAt, najnoviji prvi.
Možete filtrirati po userId. Kod SSO-a, ID korisnika je u formatu <tenant id>:<user id>.



GET /api/v1/notifications/count 
Ова рута враћа објекат који садржи број обавештења у параметру count.
Спорији је од /notification-count/ и кошта двоструко више кредита, али омогућава филтрирање по већем броју димензија.
Можете филтрирати истим параметрима као и ендпоинт /notifications, као што је userId. Са SSO, кориснички id је у формату <tenant id>:<user id>.




PATCH /api/v1/notifications/:id 
Ова API крајња тачка омогућава ажурирање Notification по id.
Ажурирање Notification има следећа ограничења:
- Можете ажурирати само следећа поља:
viewedoptedOut



Структура странице 
Објекат Page представља страницу којој може припадати много коментара. Овај однос је дефинисан помоћу
urlId.
Page чува информације као што су наслов странице, број коментара и urlId.
Структура објекта Page је следећа:

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



Koristan savjet
The Comment API requires a urlId. You can call the Pages API first, to see what the urlId values available to you
look like.
GET /api/v1/pages/by-url-id 
Појединачне странице могу се дохватити помоћу одговарајућег urlId. Ово може бити корисно за проналажење наслова страница или броја коментара.



Корисан савет
Запамтите да URI-енкодујете вредности као што је urlId.
PATCH /api/v1/pages/:id 
Ова рута омогућава ажурирање једне Page. Одговарајући коментари ће бити ажурирани.



Напомена
Неке параметре у објекту Page се аутоматски ажурирају. То су атрибути бројача и атрибут title. Атрибути бројача се не могу ажурирати
путем API-ја, јер су то израчунате вредности. Поље странице title може бити подешено путем API-ја, али ће бити преписано ако се видгет за коментаре користи на
страници са истим urlId и другачијим насловом странице.
POST /api/v1/pages 
Ова крајња тачка API-ја омогућава креирање страница.
Чест случај употребе је контрола приступа.
Напомене:
- Ако сте коментарисали у нити коментара, или позвали API да креирате
Comment, већ сте креирали објекатPage! Можете покушати да га преузмете прекоPageруте/by-url-id, просљеђујући истиurlIdкоји је прослијеђен коментарском видгету. - Структура
Pageсадржи неке израчунате вриједности. Тренутно су тоcommentCountиrootCommentCount. Попуњавају се аутоматски и не могу се поставити преко API-ја. Покушај постављања ће узроковати да API врати грешку.



DELETE /api/v1/pages/:id 
Ovaj endpoint omogućava uklanjanje jedne stranice po id-u.
Imajte na umu da će interakcija sa widgetom komentara za stranicu sa istim urlId jednostavno ponovo kreirati Page bez problema.



Структура непроцесираног вебхук догађаја 
Објекат PendingWebhookEvent представља ставку вебхук догађаја у реду која је на чекању.
Објекти PendingWebhookEvent се аутоматски креирају и не могу бити ручно креирани преко API-ја. Такође истичу након једне године.
Могу бити обрисани, што уклања задатак из реда.
Постоје различити типови догађаја — провјерите eventType (OutboundSyncEventType) и type (OutboundSyncType).
Чест случај коришћења овог API-ја је имплементација прилагођеног надзора. Можда ћете желети да периодично позивате /count крајњу тачку
да бисте провјерили број нерешених ставки за задате филтере.
Структура објекта PendingWebhookEvent је следећа:

GET /api/v1/pending-webhook-events 
Ова рута враћа списак webhook догађаја на чекању у параметру pendingWebhookEvents.
Овај API користи пагинацију, обезбеђену параметром skip. PendingWebhookEvents се враћају у страницама по 100, сортирано по createdAt од најновијих према најстаријим.



GET /api/v1/pending-webhook-events/count 
Ова рута враћа објекат који садржи број чекајућих webhook догађаја у параметру count.
Можете филтрирати помоћу истих параметара као и на /pending-webhook-events ендпоинту



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



Структура SSO корисника 
FastComments pruža lako za korišćenje SSO rešenje. Ažuriranje informacija o korisniku pomoću HMAC-bazirane integracije je jednostavno kao učitavanje stranice od strane korisnika sa ažuriranim payload-om.
Međutim, može biti poželjno upravljati korisnikom izvan tog toka, kako bi se poboljšala konzistentnost vaše aplikacije.
SSO User API pruža način za CRUD objekata koje nazivamo SSOUsers. Ovi objekti se razlikuju od regularnih Users i držani su odvojeno radi tip-sigurnosti.
Struktura SSOUser objekta je sledeća:

Naplata za SSO korisnike
SSO korisnici se naplaćuju drugačije na osnovu njihovih dozvola:
- Regular SSO Users: Korisnici bez administrativnih ili moderatorskih dozvola se naplaćuju kao regularni SSO korisnici
- SSO Admins: Korisnici sa
isAccountOwneriliisAdminAdminoznakama se naplaćuju odvojeno kao SSO administratori (ista tarifa kao regularni administratori tenanta) - SSO Moderators: Korisnici sa
isCommentModeratorAdminoznakom se naplaćuju odvojeno kao SSO moderatori (ista tarifa kao regularni moderatori)
Važno: Da bi se izbegla dupla naplata, sistem automatski deduplikuje SSO korisnike naspram regularnih korisnika tenanta i moderatora po email adresi. Ako SSO korisnik ima isti email kao regularni korisnik tenanta ili moderator, neće biti naplaćen dvaput.
Kontrola pristupa
Korisnici mogu biti razvrstani u grupe. Za to služi polje groupIds, i opcionalno je.
@Mentions
Po defaultu @mentions će koristiti username za pretragu drugih sso korisnika kada se unese karakter @. Ako se koristi displayName, tada će rezultati koji odgovaraju
username biti ignorisani kada postoji podudaranje za displayName, i rezultati pretrage za @mention će koristiti displayName.
Pretplate
Sa FastComments, korisnici se mogu pretplatiti na stranicu klikom na ikonu zvona u widgetu za komentare i klikom na Subscribe.
Kod regularnog korisnika, šaljemo im email obaveštenja na osnovu njihovih podešavanja obaveštenja.
Kod SSO korisnika, razdvajamo ovo radi kompatibilnosti unazad. Korisnici će dobijati ova dodatna email obaveštenja o pretplati
samo ako postavite optedInSubscriptionNotifications na true.
Bedževi
Možete dodeljivati bedževe SSO korisnicima koristeći svojstvo badgeConfig. Bedževi su vizuelni indikatori koji se pojavljuju pored imena korisnika u komentarima.
badgeIds- Niz ID-jeva bedževa koji se dodeljuju korisniku. Oni moraju biti validni ID-jevi bedževa kreirani na vašem FastComments nalogu. Ograničeno na 30 bedževa.override- Ako je true, svi postojeći bedževi prikazani na komentarima biće zamenjeni sa navedenim. Ako je false ili izostavljeno, navedeni bedževi će biti dodati postojećim bedževima.update- Ako je true, osobine prikaza bedževa će biti ažurirane iz konfiguracije tenanta kad god se korisnik prijavi.
GET /api/v1/sso-users 
Ова рута враћа SSO Users по страницама од 100. Пагинација се обезбеђује параметром skip. Корисници су сортирани по њиховом signUpDate и id.



GET /api/v1/sso-users/by-id/:id 
Ова рута враћа једног SSO корисника по њиховом id-у.



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



PATCH /api/v1/sso-users/:id 
Ова рута омогућава ажурирање једног SSO корисника.



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

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


Napomena za integraciju
Podaci poslati putem API-ja mogu biti prebrisani jednostavnim slanjem drugačijeg SSO User HMAC payload. Na primjer, ako postavite username putem API-ja, ali zatim pošaljete drugačiji putem SSO toka pri učitavanju stranice, mi ćemo automatski ažurirati njihov username.
Nećemo ažurirati parametre korisnika u ovom toku osim ako ih izričito ne navedete ili ih ne postavite na null (ne undefined).
PUT /api/v1/sso-users/:id 
Ova ruta omogućava ažuriranje jednog SSO korisnika.

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


DELETE /api/v1/sso-users/:id 
Ова рута омогућава уклањање појединачног SSO корисника по његовом id-у.
Имајте на уму да поновно учитавање видгета за коментаре са payload-ом за овог корисника једноставно ће поново креирати корисника непримјетно.
Брисање корисникових коментара је могуће преко query параметра deleteComments. Имајте на уму да ако је то true:
- Сви корисникови коментари биће обрисани одмах.
- Сви child (сада осиротјели) коментари биће обрисани или анонимизовани у складу са конфигурацијом странице повезане са сваким коментаром. На примјер, ако је режим брисања теме "anonymize", онда ће одговори остати, а корисникови коментари ће бити анонимизовани. Ово се односи само када је
commentDeleteModeRemove(подразумевана вриједност). - Вриједност
creditsCostпостаје2.
Анонимизовани коментари
Можете сачувати корисникове коментаре али једноставно их анонимизовати постављањем commentDeleteMode=1.
Ако су корисникови коментари анонимизовани, тада се сљедеће вриједности постављају на null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted и isDeletedUser се постављају на true.
При приказивању, видгет за коментаре ће користити DELETED_USER_PLACEHOLDER (подразумевано: "[deleted]") за име корисника и DELETED_CONTENT_PLACEHOLDER за садржај коментара. Ово се може прилагодити преко корисничког интерфејса за прилагођавање видгета.
Примјери



Структура претплате 
Објекат Subscription представља претплату за корисника.
Subscription објекти се креирају када корисник кликне на звоно обавештења у видгету за коментаре и изабере "Претплати се на ову страницу".
Претплате се такође могу креирати путем API-ја.
Поседовање објекта Subscription узрокује да се генеришу Notification објекти и да се шаљу мејлови када се оставе нови коментари на корену повезане странице за коју та Subscription важи. Слање мејлова зависи од типа корисника. За обичне кориснике то зависи од optedInNotifications. За SSO кориснике то зависи од optedInSubscriptionNotifications. Имајте у виду да неке апликације можда немају концепт веб-приступачне странице, у ком случају једноставно поставите urlId на id ставке на коју се претплаћујете (иста вредност за urlId коју бисте проследили видгету за коментаре).
Структура објекта Subscription је следећа:

GET /api/v1/subscriptions/:id 
Ова рута враћа до 30 Subscription објеката сортираних по createdAt, најновији први.
Можете филтрирати по userId. Код SSO, userId је у формату <tenant id>:<user id>.



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



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



Структура дневне употребе тенанта 
Објекат TenantDailyUsage представља употребу за тeнанта за одређени дан. Ако није било активности за одређеног тeнанта на одређеном дану, тај дан неће имати TenantDailyUsage објекат.
Објекат TenantDailyUsage није у реалном времену и може заостајати неколико минута у односу на стварну употребу.
Структура објекта TenantDailyUsage је следећа:

GET /api/v1/tenant-daily-usage 
Ovaj endpoint omogućava pretragu upotrebe tenanta po godini, mjesecu i danu. Može biti vraćeno do 365 objekata, a cijena je 1 API kredit na svakih 10 objekata.
Objekti odgovora su sortirani po datumu kada su kreirani (najstariji prvi).



Структура тенанта 
The Tenant дефинише FastComments.com клијента. Они се могу креирати преко API-ја од стране tenants који имају приступ за white labeling.
White labeled tenants
cannot create other white labeled tenants (only one level of nesting is allowed).
The structure for the Tenant object is as follows:

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



GET /api/v1/tenants 
Овај API враћа tenants којима управља ваш tenant.
Пагинација се обезбеђује помоћу query параметра skip. Tenants се враћају страницама по 100, сортирано по signUpDate и id.
Трошак се заснива на броју враћених tenants и износи 1 credit per 10 враћених tenants.

Можете дефинисати meta параметре на Tenant објектима и тражити одговарајуће tenants. На пример, за кључ someKey и meta вредност some-value, можемо конструисати JSON објекат са тим паром кључ/вредност и потом га URI енкодовати као query параметар за филтрирање:



POST /api/v1/tenants 
Ова рута омогућава додавање појединачног Tenant.
Креирање Tenant-а има следећа ограничења:
- Потребно је поље
name. - Потребно је поље
domainConfiguration. - Следеће вредности не смеју бити прослеђене приликом креирања
Tenant-а:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDateне сме бити у будућности.nameне сме бити дужи од200 characters.emailне сме бити дужи од300 characters.emailмора бити јединствен међу свим најмодавцима на FastComments.com.- Не можете креирати најмодавце ако родитељски најмодавац нема дефинисан важећи
TenantPackage.- Ако је ваш најмодавац креиран преко FastComments.com, ово не би требало бити проблем.
- Не можете креирати више најмодавaца него што је дефинисано у
maxWhiteLabeledTenantsу вашем пакету. - Морате назначити query параметар
tenantId, који је id вашег родитељског најмодавца са омогућеним white labeling-ом.
Можемо креирати Tenant само са неколико параметара:



PATCH /api/v1/tenants/:id 
Ovaj API endpoint omogućava ažuriranje Tenant po id.
Ažuriranje Tenant-a ima sljedeća ograničenja:
- Sljedeće vrijednosti se ne mogu ažurirati:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
signUpDatene može biti u budućnosti.namene može biti duže od200 characters.emailne može biti duže od300 characters.emailmora biti jedinstven među svim tenantima na FastComments.com.- Kada postavite
billingInfoValidnatrue,billingInfomora biti dostavljen u istom zahtjevu. - Ne možete ažurirati
packageIdpovezan sa svojim tenantom. - Ne možete ažurirati
paymentFrequencypovezan sa svojim tenantom.



DELETE /api/v1/tenants/:id 
Ова рута омогућава уклањање Tenant и свих повезаних података (корисници, коментари, итд.) по id.
Постоје следећа ограничења у вези са брисањем tenant-а:
- Tenant мора бити ваш, или брандирани tenant који ви управљате.
- Параметар упита
sureмора бити постављен наtrue.



Структура пакета тенанта 
The TenantPackage дефинише информације о пакету доступном за Tenant. Тенант може имати више пакета доступних, али се у датом тренутку користи само један.
A Tenant не може да се користи за било који производ док његов packageId не упућује на важећи TenantPackage.
Постоје две врсте објеката TenantPackage:
- Пакети са фиксним ценама - где је
hasFlexPricingfalse. - Пакети са флексибилним ценама - где је
hasFlexPricingtrue.
У оба случаја, лимити су дефинисани за налог који користи пакет, међутим код флекс пакета тенанту се наплаћује основна цена плус коришћено, дефинисано flex* параметрима.
Тенант може имати више пакета и има могућност да сам промијени пакет преко Странице са информацијама о наплати.
Ако ћете сами обрађивати наплату за тенанте, и даље морате дефинисати пакет за сваког тенанта како бисте дефинисали њихове лимите. Једноставно подесите billingHandledExternally на true на Tenant и они неће моћи сами да мењају своје податке за наплату, или активни пакет.
Не смете креирати пакете са већим лимитима од матичног тенанта.
Структура објекта TenantPackage је следећа:

GET /api/v1/tenant-packages/:id 
Ова рута враћа један Tenant Package према id-у.



GET /api/v1/tenant-packages 
Овај API користи пагинацију, обезбијеђену помоћу параметра упита skip. TenantPackages се враћају у страницама од 100, сортирани по createdAt и id.
Трошак се заснива на броју враћених tenant пакета, и износи 1 credit per 10 враћених tenant пакета.



POST /api/v1/tenant-packages 
Ова рута омогућава додавање једног TenantPackage.
Креирање TenantPackage има следећа ограничења:
- Следећи параметри су обавезни:
nametenantIdmonthlyCostUSD- Може бити null.yearlyCostUSD- Може бити null.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- Ако је true, онда су свиflex*параметри обавезни.
nameне може бити дужи од50 characters.- Сваки
forWhoTextелемент не може бити дужи од200 characters. - Сваки
featureTaglinesелемент не може бити дужи од100 characters. TenantPackageмора бити „мањи“ од родитељског тенанта. На пример, свиmax*параметри морају имати ниже вредности од родитељског тенанта.- Тенант са white labeling-ом може имати највише пет пакета.
- Само тенанти са приступом white labeling могу креирати
TenantPackage. - Не можете додавати пакете на сопствени tenant. :)
Можемо креирати TenantPackage на следећи начин:



PATCH /api/v1/tenant-packages/:id 
Ова крајња тачка API-ја омогућава ажурирање TenantPackage по id.
Ажурирање TenantPackage има следећа ограничења:
- Ако постављате
hasFlexPricingна true, онда су свиflex*параметри обавезни у истом захтеву. nameне сме бити дужи од50 characters.- Сваки
forWhoTextставка не сме бити дужа од200 characters. - Сваки
featureTaglinesставка не сме бити дужи од100 characters. TenantPackageмора бити "smaller" од родитељског тенанта. На пример, свиmax*параметри морају имати ниже вредности од родитељског тенанта.- Не можете променити
tenantIdповезан саTenantPackage.



DELETE /api/v1/tenant-packages/:id 
Ова рута омогућава уклањање TenantPackage по id-у.
Не можете уклонити TenantPackage који се користи (параметар packageId у Tenant указује на пакет). Прво ажурирајте Tenant.



Структура корисника тенанта 
TenantUser дефинише User којим управља одређени tenant. Њихов налог је у потпуној контроли тенанта са којим су повезани, и њихов налог може бити ажуриран или избрисан преко UI или API-ја.
Tenant корисници могу бити администратори са свим дозволама и приступом Tenant-у, или могу бити ограничени на специфичне дозволе за модерирање коментара, приступ API кључевима итд.
Структура објекта TenantUser је следећа:

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



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



POST /api/v1/tenant-users 
Ова рута омогућава додавање једног TenantUser.
Креирање TenantUser има следећа ограничења:
usernameје обавезан.emailје обавезан.signUpDateне може бити у будућности.localeмора бити у листи Подржани локали.usernameмора бити јединствен на целој FastComments.com. Ако је ово проблем, препоручујемо коришћење SSO-а.emailмора бити јединствен на целој FastComments.com. Ако је ово проблем, препоручујемо коришћење SSO-а.- Не смете креирати више tenant корисника него што је дефинисано под
maxTenantUsersу вашем пакету.
Можемо креирати TenantUser на следећи начин



POST /api/v1/tenant-users/:id/send-login-link 
Ova ruta omogućava slanje linka za prijavu pojedinačnom TenantUser.
Koristan kada se korisnici kreiraju u batch režimu i ne želite da im objašnjavate kako da se prijave na FastComments.com. Ovo će im jednostavno poslati "magic link" za prijavu koji ističe nakon 30 days.
Postoje sljedeća ograničenja za slanje linka za prijavu TenantUser-u:
TenantUsermora već postojati.- Morate imati pristup upravljanju
Tenant-om kojemTenantUserpripada.
Možemo poslati link za prijavu TenantUser-u na sljedeći način:

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


PATCH /api/v1/tenant-users/:id 
Ова рута омогућава ажурирање једног TenantUser.
Ажурирање TenantUser има следећа ограничења:
signUpDateне смије бити у будућности.localeмора бити на листи Подржаних локала.usernameмора бити јединствен на целом FastComments.com. Ако је то проблем, предлажемо коришћење SSO-а.emailмора бити јединствен на целом FastComments.com. Ако је то проблем, предлажемо коришћење SSO-а.- Не можете ажурирати
tenantIdкорисника.
Можемо креирати TenantUser на следећи начин



DELETE /api/v1/tenant-users/:id 
Ова рута омогућава уклањање TenantUser по id-у.
Брисање корисникових коментара је могуће посредством query параметра deleteComments. Имајте у виду да ако је ово тачно:
- Сви корисникови коментари ће бити обрисани одмах.
- Сви child (сада сирачки) коментари ће бити обрисани или анонимизовани на основу конфигурације странице повезане са сваким коментаром. На пример ако је режим брисања нити "anonymize", онда ће одговори остати, а корисникови коментари ће бити анонимизовани. Ово важи само када је
commentDeleteModeRemove(подразумевана вредност). - Вредност
creditsCostпостаје2.
Анонимизовани коментари
Можете задржати корисникове коментаре али их једноставно анонимизовати подешавањем commentDeleteMode=1.
Ако су корисникови коментари анонимизовани, следеће вредности ће бити постављене на null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted и isDeletedUser се постављају на true.
При приказу, видгет за коментаре ће користити DELETED_USER_PLACEHOLDER (подразумевано: "[deleted]") за име корисника и DELETED_CONTENT_PLACEHOLDER за коментар. Ово се може прилагодити преко корисничког интерфејса за прилагођавање видгета.
Примјери



Структура корисника 
User је објекат који представља најчешћи заједнички именитељ свих корисника.
Имајте на уму да у FastComments имамо неколико различитих сценарија коришћења за кориснике:
- Secure SSO
- Simple SSO
- Tenant Users (For example: Administrators)
- Commenters
Овај API је за Commenters и кориснике креиране преко Simple SSO. У основи, сваки корисник креиран преко вашег сајта може се приступити преко овог API-ја. Tenant Users се такође могу дохватити на овај начин, али ћете добити више информација интеракцијом са /tenant-users/ API-јем.
За Secure SSO користите /sso-users/ API.
Немате могућност да ажурирате ову врсту корисника. Они су креирали налог преко вашег сајта, па пружамо само основни приступ само за читање, али не можете правити измене. Ако желите да имате овакав ток - морате да подесите Secure SSO.
Структура за User објекат је следећа:

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



Структура гласа 
Objekat Vote predstavlja glas koji je ostavio korisnik.
Odnos između komentara i glasa je definisan putem commentId.
Struktura objekta Vote je sljedeća:

GET /api/v1/votes 
Гласови се морају дохватити по urlId.
Типови гласова
Постоје три врсте гласова:
- Аутентификовани гласови, који се примјењују на одговарајући коментар. Можете их креирати преко овог API-ја.
- Аутентификовани гласови, који чекају верификацију (pending), и стога још нису примјењени на коментар. Ови се креирају када корисник користи FastComments.com механизм пријава за гласање.
- Анонимни гласови, који се примјењују на одговарајући коментар. Они се креирају уз анонимно коментарисање.
Они се враћају у посебним списковима у API-ју да би се смањила конфузија.



Напомене о анонимним гласовима
Имајте у виду да ће анонимни гласови креирани преко овог API-ја појавити у листи appliedAuthorizedVotes. Они се сматрају овлашћеним јер су креирани преко API-ја уз API key.
Структура appliedAnonymousVotes је за гласове креиране без е-поште, API key-а итд.
GET /api/v1/votes/for-user 
Ово омогућава преузимање гласова које је корисник оставио за дати urlId. Захтева userId који може бити било који FastComments.com или SSO User.
Ово је корисно ако желите да прикажете да ли је корисник гласао за коментар. При преузимању коментара, једноставно позовите овај API у исто време за тог корисника са истим urlId.
Ако користите анонимно гласање, уместо тога пошаљите anonUserId.


Имајте у виду да ће анонимни гласови бити приказани у листи appliedAuthorizedVotes. Сматрају се овлашћеним јер су креирани преко API-ја уз помоћ API кључа.


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




Kreiranje anonimnih glasova
Anonimni glasovi se mogu kreirati postavljanjem anonUserId u parametrima upita umjesto userId.
Ovaj id ne mora odgovarati nijednom objektu korisnika bilo gdje (otuda anonimno). To je jednostavno identifikator za sesiju, tako da možete ponovo dohvatiti glasove u istoj sesiji, da provjerite da li je komentar već glasovan.
Ako nemate nešto poput "anonimnih sesija" kao što ih FastComments ima - možete jednostavno postaviti ovo na slučajan ID, poput UUID-a (iako preferiramo manje identifikatore kako bismo uštedjeli prostor).
Ostale napomene
- Ovaj API poštuje postavke na nivou tenanta. Na primjer, ako onemogućite glasanje za određenu stranicu, i pokušate kreirati glas putem API-ja, to će propasti sa kodom greške
voting-disabled. - Ovaj API je podrazumevano aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
DELETE /api/v1/votes/:id 
Ова рута омогућава брисање појединачног Vote.



Notes:
- This API obeys tenant-level settings. For example, if you disable voting for a given page, and you attempt to create a vote via the API, it will fail with error code
voting-disabled. - This API is live by default.
- This API will update the
votesof the correspondingComment.
Структура конфигурације домена 
Objekat DomainConfig predstavlja konfiguraciju za domen za zakupca.
Struktura objekta DomainConfig je sljedeća:


Za autentifikaciju
Konfiguracija domena se koristi za određivanje koji sajtovi mogu hostovati FastComments widget za vaš nalog. Ovo je osnovni oblik autentifikacije, što znači da dodavanje ili uklanjanje bilo kojih konfiguracija domena može uticati na dostupnost vaše FastComments instalacije u produkciji.
Ne uklanjajte niti ažurirajte svojstvo domain objekta Domain Config za domen koji se trenutno koristi, osim ako ne namjeravate onemogućiti taj domen.
Ovo ima isto ponašanje kao uklanjanje domena sa /auth/my-account/configure-domains.
Takođe imajte na umu da uklanjanje domena iz My Domains UI ukloniće svaku odgovarajuću konfiguraciju za taj domen koja je možda dodata putem tog sučelja.
Za prilagođavanje e-mailova
Link za odjavu u podnožju e-maila i funkcija jednim klikom za odjavu koju nude mnogi e-mail klijenti mogu se konfigurirati putem ovog API-ja definisanjem footerUnsubscribeURL i emailHeaders, redom.
Za DKIM
Nakon što definišete svoje DKIM DNS zapise, jednostavno ažurirajte DomainConfig sa vašom DKIM konfiguracijom koristeći definisanu strukturu.
GET /api/v1/domain-configs 
Овај API омогућава преузимање свих објеката DomainConfig за тенанта.



GET /api/v1/domain-configs/:domain 
Појединачне DomainConfigs се могу преузети по одговарајућем domain.



POST /api/v1/domain-configs 
Овај API крајња тачка омогућава креирање конфигурација домена.
Додавање конфигурације за домен овлашћава тај домен за FastComments налог.
Уобичајени случајеви употребе овог API-ја су почетна подешавања, када је потребно додати више домена, или прилагођена конфигурација за слање имејлова.



PATCH /api/v1/domain-configs/:domain 
Ova API krajnja tačka omogućava ažuriranje konfiguracije domena navodeći samo domen i atribut koji se ažurira.



PUT /api/v1/domain-configs/:domain 
Ова API крајња тачка омогућава замјену конфигурације домена.



DELETE /api/v1/domain-configs/:domain 
Ова рута омогућава уклањање појединачног DomainConfig по id-у.
- Напомена: Уклањање
DomainConfigће поништити овлашћење тог домена за коришћење FastComments. - Напомена: Поновним додавањем домена преко корисничког интерфејса објекат ће бити поново креиран (са попуњеним само пољем
domain).



Структура конфигурације питања 
FastComments pruža način za konstruisanje pitanja i agregiranje njihovih rezultata. Primjer pitanja (u daljem tekstu nazvan QuestionConfig) može biti ocjena sa zvjezdicama, klizač, ili NPS pitanje (određeno putem type).
Podaci o pitanjima mogu se agregirati pojedinačno, zajedno, tokom vremena, ukupno, po stranici, i tako dalje.
Okvir ima sve mogućnosti potrebne za izgradnju klijentskih vidžeta (sa vašim serverom ispred ovog API-ja), administratorskih kontrolnih tabli i alata za izvještavanje.
Prvo, moramo definisati QuestionConfig. Struktura je sljedeća:

GET /api/v1/question-configs 
Ова рута враћа до 100 објеката QuestionConfig одједном, пагинирано. Цена је 1 за сваких 100 објеката. Сортирани су по тексту питања узлазно (question поље).



GET /api/v1/question-configs/:id 
Ова рута враћа један QuestionConfig по његовом id-у.



POST /api/v1/question-configs 
Ova krajnja tačka API-ja omogućava kreiranje QuestionConfig.



PATCH /api/v1/question-configs/:id 
Ова рута омогућава ажурирање једног QuestionConfig.
Следећа структура представља све вриједности које се могу промијенити:




DELETE /api/v1/question-configs/:id 
Ова рута омогућава уклањање QuestionConfig по id-у.
Ово ће избрисати све одговарајуће резултате питања (али не и коментаре). Ово је део високог трошка кредита.



Структура резултата питања 
Да бисте сачували резултате за питања, креирате QuestionResult. Затим можете агрегирати резултате питања, и такође их повезати са коментарима у сврху извештавања.

GET /api/v1/question-results 
Ова рута враћа до 1000 QuestionResults објеката одједном, у пагинираном облику. Цена је 1 на сваких 100 објеката. Они су сортирани по createdAt, у растућем редослиједу. Можете филтрирати по различитим параметрима.



GET /api/v1/question-results/:id 
Ова рута враћа један QuestionResult на основу id.



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



PATCH /api/v1/question-results/:id 
Ova ruta omogućava ažuriranje jednog QuestionResult.
Sljedeća struktura prikazuje sve vrijednosti koje se mogu promijeniti:




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



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

Ovo su parametri upita dostupni za agregaciju:

Evo primjera zahtjeva:

Primjer odgovora:


Napomene o performansama
- Ako nema podataka u kešu, agregacije obično traju pet sekundi po milionu 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 keš istekne i podaci se ponovo izračunaju, trošak je i dalje konstantan
2akoforceRecalculatenije naveden. Keš ističe na osnovu veličine agregiranog skupa podataka (može varirati između 30 sekundi i 5 minuta). - Ovo je da bi se podstaklo korišćenje keša.
GET /api/v1/question-results-aggregate/combine/comments 
Ovo je mjesto gdje se kombinuju rezultati sa komentarima. Korisno za kreiranje, na primjer, grafikona "nedavni pozitivni i negativni komentari" za proizvod.
Možete pretraživati po rasponu vrijednosti (uključivo), jednoj ili više pitanja, i po početnom datumu (uključivo).
The response structure is as follows:

Here are the query parameters available for aggregation:

Here's an example request:

Example response:


Caching and Cost Notes
- When
forceRecalculateis specified the cost is always10, instead of the normal2. - If the cache expires and data is recalculated, the cost is still a constant
2ifforceRecalculateis not specified. - This is to incentivize using the cache.
Структура значке корисника 
UserBadge је објекат који представља значку додељену кориснику у FastComments систему.
Значке могу бити додељене корисницима аутоматски на основу њихове активности (као што су број коментара, време одговора, статус ветерана) или ручно од стране администратора сајта.
Структура за UserBadge објекат је следећа:

GET /api/v1/user-badges 
Ова крајња тачка вам омогућава да преузмете значке корисника на основу различитих критеријума.
Example Request:
Run 
You can add various query parameters to filter the results:
userId- Добијте значке за специфичног корисникаbadgeId- Добијте инстанце одређене значкеtype- Филтрирајте по типу значке (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, etc. See UserBadge structure for full list)displayedOnComments- Филтрирајте по томе да ли је значка приказана на коментарима (true/false)limit- Максималан број значки које се враћају (подразумевано 30, максимум 200)skip- Број значки које треба прескочити (за пагинацију)
Example Response:

Possible Error Responses:


GET /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava да dohватите одређени кориснички bedž по његовом јединственом ID-у.
Example Request:
Run 
Example Response:

Possible Error Responses:


POST /api/v1/user-badges 
Овај endpoint вам омогућава да креирате нову додјелу значке кориснику.
Примјер захтјева:
Run 
Тјело захтјева мора садржати следеће параметре:
userId(required) - ИД корисника коме се додјељује значкаbadgeId(required) - ИД значке која се додјељујеdisplayedOnComments(optional) - Да ли би значка требала бити видљива на коментарима корисника (подразумевано: true)
Важне напомене:
- Значка мора постојати и бити омогућена у каталогу значки вашег тенанта
- Значке можете додјељивати само корисницима који припадају вашем тенанту или су коментарисали на вашем сајту
Примјер одговора:

Могући одговори са грешком:





PUT /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava ažuriranje dodeljivanja korisničkog bedža.
Trenutno, jedino svojstvo koje se može ažurirati je displayedOnComments, koje kontroliše da li se bedž prikazuje na komentarima korisnika.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori s greškama:



DELETE /api/v1/user-badges/:id 
Ова крајња тачка вам омогућава да обришете додељивање корисничке ознаке.
Пример захтева:
Run 
Пример одговора:

Могући одговори са грешкама:



Структура напретка значке корисника 
UserBadgeProgress je objekat koji predstavlja napredak korisnika ka sticanju različitih znački u FastComments sistemu.
Ovo praćenje pomaže da se utvrdi kada korisnici treba da dobiju automatske značke na osnovu njihove aktivnosti i učešća u vašoj zajednici.
Struktura UserBadgeProgress objekta je sljedeća:

GET /api/v1/user-badge-progress 
Ова крајња тачка вам омогућава да преузмете записе о напретку ознака корисника на основу различитих критеријума.
Пример захтева:
Run 
Можете додати различите параметре упита да филтрирате резултате:
userId- Добијте напредак за одређеног корисникаlimit- Максималан број записа за враћање (подразумевано 30, максимум 200)skip- Број записа које треба прескочити (за пагинацију)
Пример одговора:

Могући одговори са грешком:


GET /api/v1/user-badge-progress/:id 
Ovaj endpoint vam omogućava да dohvatite конкретан запис о напретку корисничке значке по његовом јединственом ID-у.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori o greškama:


GET /api/v1/user-badge-progress/user/:userId 
Ова крајња тачка вам омогућава да преузмете запис о напретку значки корисника по његовом ID-у.
Пример захтева:
Run 
Пример одговора:

Могући одговори са грешкама:



У закључку
Надамо се да сте нашу API документацију сматрали исцрпном и лаком за разумевање. Ако уочите било какве пропусте, јавите нам испод.