
Језик 🇧🇦 Српски (БиХ)
API ресурси
Агрегације
Ревизијски дневници
Коментари
Шаблони е-поште
Хештегови
Модератори
Број обавештења
Обавештења
Странице
Чекајући вебхук догађаји
SSO корисници
Претплате
Дневна употреба тенанта
Тенанти
Пакети тенанта
Корисници тенанта
Корисници
Гласови
Конфигурације домена
Конфигурације питања
Резултати питања
Агрегација резултата питања
Значке корисника
Напредак значке корисника
FastComments API
FastComments pruža API za interakciju sa mnogim resursima. Napravite integracije sa našom platformom, ili čak izradite vlastite klijente!
U ovoj dokumentaciji naći ćete sve podržane resurse koje API dokumentuje zajedno sa tipovima zahtjeva i odgovora.
Za Enterprise korisnike, sav pristup API-ju se bilježi u Dnevniku revizije.
Generisani SDK-ovi
FastComments sada generiše API Spec iz našeg koda (ovo još nije kompletno, ali uključuje mnoge API-je).
Također sada imamo SDK-ove za popularne jezike:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Autentifikacija
API se autentifikuje tako što proslijedite svoj API ključ kao ili X-API-KEY zaglavlje ili API_KEY parametar upita. Također će vam trebati vaš tenantId za pozive API-ja. To se može dobiti na istoj stranici kao i vaš API ključ.
Napomena o sigurnosti
Ove rute su namijenjene da se pozivaju sa servera. NEMOJTE ih pozivati iz preglednika. Time ćete otkriti vaš API ključ - to će omogućiti potpuni pristup vašem nalogu svima koji mogu vidjeti izvorni kod stranice!
Authentication Option One - Headers
- Zaglavlje:
X-API-KEY - Zaglavlje:
X-TENANT-ID
Authentication Option Two - Query Parameters
- Parametar upita:
API_KEY - Parametar upita:
tenantId
API ресурси 
Коришћење ресурса
Треба напоменути да се дохватање података са API-ја рачуна као коришћење на вашем налогу.
Сваки ресурс ће у свом одељку навести шта тачно подразумева то коришћење.
Неки ресурси су скупљи за послуживање од других. Сваки endpoint има фиксни трошак у кредитима по позиву API-ја. За неке endpoint-e, број кредита варира у зависности од опција и величине одговора.
API коришћење можете провјерити на страници Аналитика наплате и ажурира се сваких неколико минута.
Напомена!
Препоручујемо да прво прочитате документацију за Pages, како бисте смањили конфузију при одређивању које вредности проследити за urlId у Comment API.
Агрегирајте своје податке 
Овај API агрегира документе групишући их (ако је groupBy наведен) и примјењујући више операција. Подржане су различите операције (нпр. sum, countDistinct, avg, итд).
Трошак је променљиво. Сваких 500 скенираних објеката кошта 1 API кредит.
Максимална меморија дозвољена по API позиву по подразумеваној поставци је 64MB, и по подразумеваној поставци можете имати само једну агрегaцију која се извршава у једном тренутку. Ако пошаљете више агрегaција истовремено, биће стављене у ред и извршаваће се по редослиједу слања. Очекујуће агрегaције ће чекати највише 60 секунди, након чега ће захтјев истeћи. Појединачне агрегaције могу трајати до 5 минута.
Ако имате managed tenants, можете агрегирати све child tenant ресурсе у једном позиву прослеђивањем parentTenantId query параметра.
Примјери
Примјер: Бројање јединствених


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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

Примјер: Бројање коментара који чекају рецензију

Одговор:

Примјер: Преглед по статусу (approved, reviewed, spam)

Одговор:

Структуре


Следећи ресурси се могу агрегирати:
- 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 је објекат који представља ревидиран догађај за тенанте који имају приступ овој функцији.
Структура за AuditLog објекат је следећа:

Дневник ревизија је непроменљив. У њега се такође не може ручно уписивати. Само FastComments.com може одлучити када ће уписати у дневник ревизија. Међутим, ви можете читати из њега преко овог API-ја.
Записи у дневнику ревизија истичу након двије године.
GET /api/v1/audit-logs 
Ovaj API koristi paginaciju, koja se obezbjeđuje parametrima skip, before, i after. AuditLog zapisi se vraćaju u stranicama po 1000, poredani po when i id.
Dohvatanje svake 1000 zapisa ima trošak kredita od 10.
Po zadanim postavkama dobićete listu s najnovijim stavkama na početku. Na ovaj način možete započeti preuzimanje sa skip=0, paginirati dok ne nađete posljednji zapis koji ste obradili.
Alternativno, možete sortirati od najstarijih prema najnovijim, i paginirati dok ne bude više zapisa.
Sortiranje se može uraditi postavljanjem order na ASC ili DESC. Zadano je ASC.
Upit po datumu je moguć putem before i after kao timestampova sa milisekundama. before i after NISU uključivi.



Структура коментара 
Objekat Comment predstavlja komentar koji je ostavio korisnik.
Veza između roditeljskih i podkomentara definiše se preko parentId.
Struktura objekta Comment je sljedeća:

Neka od ovih polja su označena kao READONLY - ta polja vraća API, ali ih nije moguće postaviti.
Comment Text Structure
Komentari se pišu u FastComments varijanti markdown-a, što je u suštini markdown plus tradicionalne bbcode oznake za slike, poput [img]path[/img].
Tekst se čuva u dva polja. Tekst koji je korisnik unio čuva se neizmijenjen u polju comment. Ovaj tekst se renduje i sprema u polje commentHTML.
Dozvoljene HTML oznake su b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Preporučuje se renderovanje HTML-a, pošto je to vrlo mali podskup HTML-a i izgradnja renderer-a je prilično jednostavna. Postoji više biblioteka za React Native i Flutter, na primjer, koje u tome pomažu
Možete izabrati da renderujete nenormalizovanu vrijednost polja comment. An example parser is here..
Primjer parsera se također može prilagoditi da radi sa HTML-om i transformiše HTML oznake u očekivane elemente za renderovanje na vašoj platformi.
Tagging
Kada su korisnici označeni u komentaru, informacije se čuvaju u listi nazvanoj mentions. Svaki objekat u toj listi
has the following structure.
Run 
HashTags
Kada se koriste hashtagovi i uspješno se parsiraju, informacije se čuvaju u listi nazvanoj hashTags. Svaki objekat u toj listi
has the following structure. Hashtags can also be manually added to the comment hashTags array for querying, if retain is set.
Run 
GET /api/v1/comments 
Ovaj API se koristi za dobavljanje komentara za prikaz korisniku. Na primjer, automatski filtrira neodobrene ili spam komentare.
Pagination
Paginacija se može obaviti na jedan od dva načina, u zavisnosti od zahtjeva za performansama i slučaja upotrebe:
- Fastest: Prekalkulisana paginacija:
- Ovako FastComments radi kada koristite naše unaprijed izgrađene widgete i klijente.
- Klik na "next" jednostavno povećava broj stranice.
- Možete ovo smatrati dohvaćenim iz key-value skladišta.
- Na ovaj način, jednostavno definirajte parametar
pagekoji počinje od0i smjer sortiranja kaodirection. - Veličine stranica se mogu prilagoditi putem pravila za prilagodbu.
- Most Flexible: Fleksibilna paginacija:
- Na ovaj način možete definirati prilagođene parametre
limitiskip. Ne šaljitepage. - Smjer sortiranja
directionje također podržan. limitje ukupan broj koji će biti vraćen nakon što se primijeniskip.- Primjer: postavite
skip = 200, limit = 100kada jepage size = 100ipage = 2.
- Primjer: postavite
- Child komentari se i dalje računaju u paginaciji. Možete zaobići ovo korištenjem opcije
asTree.- Možete paginirati djecu putem
limitChildreniskipChildren. - Možete ograničiti dubinu threadova koji se vraćaju putem
maxTreeDepth.
- Možete paginirati djecu putem
- Na ovaj način možete definirati prilagođene parametre
Threads
- Kada koristite
Precalculated Pagination, komentari se grupišu po page-u i komentari u threadovima utiču na ukupnu stranicu.- Na ovaj način, threadovi se mogu odrediti na klijentu na osnovu
parentId. - Na primjer, sa stranicom koja ima jedan komentar najvišeg nivoa i 29 odgovora, i postavljanjem
page=0u API-ju - dobićete samo komentar najvišeg nivoa i 29 djece. - Example image here illustrating multiple pages.
- Na ovaj način, threadovi se mogu odrediti na klijentu na osnovu
- Kada koristite
Flexible Pagination, možete definirati parametarparentId.- Postavite ovo na null da biste dobili samo komentare najvišeg nivoa.
- Zatim, da biste vidjeli threadove, pozovite API ponovo i pošaljite
parentId. - Uobičajeno rješenje je napraviti API poziv za komentare najvišeg nivoa, a zatim paralelne API pozive za dobavljanje komentara djece za svaki komentar.
- NOVO (od feb 2023.)! Dohvatite kao stablo koristeći
&asTree=true.- Možete ovo zamisliti kao
Fleksibilna paginacija kao stablo. - Samo komentari najvišeg nivoa se računaju u paginaciji.
- Postavite
parentId=nullda počnete stablo od korijena (morate postavitiparentId). - Postavite
skipilimitza paginaciju. - Postavite
asTreenatrue. - Troškovi kredita se povećavaju za
2x, jer naš backend mora uraditi mnogo više posla u ovom scenariju. - Postavite
maxTreeDepth,limitChildren, iskipChildrenpo želji.
- Možete ovo zamisliti kao
Trees Explained
Kada koristite asTree, može biti teško razmišljati o paginaciji. Evo korisne grafike:
Fetching Comments in The Context of a User
API /comments se može koristiti u dva konteksta, za različite slučajeve upotrebe:
- Za vraćanje komentara sortiranih i označenih informacijama za izgradnju vlastitog klijenta.
- U tom slučaju, definirajte query parametar
contextUserId.
- U tom slučaju, definirajte query parametar
- Za dohvat komentara iz vašeg backenda za prilagođene integracije.
- Platforma će podrazumijevati ovo ako nema
contextUserId.
- Platforma će podrazumijevati ovo ako nema




Get Comments as a Tree
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 neposrednu djecu? Evo jednog načina:

Međutim, u vašem UI možda ćete trebati znati da li da prikažete dugme "show replies" (prikaži odgovore) na
svakom komentaru. Kada dohvaćate komentare putem stabla, postoji svojstvo hasChildren koje se dodaje
na komentare kada je primjenjivo.
Get Comments as a Tree, Searching by Hash Tag
Moguće je pretraživati po hashtag-u koristeći API, preko cijelog vašeg tenant-a (nije ograničeno na jednu stranicu ili urlId).
U ovom primjeru, izostavljamo urlId, i pretražujemo po više hashtag-ova. API će vratiti samo komentare koji imaju sve tražene hashtag-ove.

All Request Params

The Response

Helpful Tips
URL ID
Vjerojatno ćete željeti koristiti Comment API sa parametrom urlId. Možete prvo pozvati Pages API, da vidite kako izgledaju vrijednosti urlId dostupne vama.
Anonymous Actions
Za anonimno komentiranje vjerojatno ćete htjeti poslati anonUserId prilikom dohvaćanja komentara, kao i prilikom označavanja i blokiranja.
(!) Ovo je zahtjev za mnoge prodavnice aplikacija jer korisnici moraju moći prijaviti sadržaj koji su korisnici kreirali i koji mogu vidjeti, čak i ako nisu prijavljeni. Nepostupanje po tome može uzrokovati da vaša aplikacija bude uklonjena iz navedene prodavnice.
Comments Not Being Returned
Provjerite da li su vaši komentari odobreni i da nisu spam.
GET /api/v1/comments/:id 
Овај API омогућава преузимање појединачног коментара по id-ју.



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

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



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



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



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

For anonymous flagging, we must specify an anonUserId. This can be an ID that represents the anonymous session, or a random UUID.
This allows us to support flagging and un-flagging comments even if a user is not logged in. This way, the comment can be marked as
flagged when comments are fetched with the same anonUserId.



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

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



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

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



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




Структура шаблона е-поште 
An EmailTemplate object represents configuration for a custom email template, for a tenant.
The system will select the email template to use via:
- Its type identifier, we call this
emailTemplateId. These are constants. - The
domain. We will first try to find a template for the domain that the related object (like aComment) is tied to, and if a match is not found then we will try to find a template where domain is null or*.
The structure for the EmailTemplate object is as follows:

Notes
- You can get the valid
emailTemplateIdvalues from the/definitionsendpoint. - The
/definitionsendpoint also includes the default translations and test data. - Templates will fail to save with invalid structure or test data.
GET /api/v1/email-templates/:id 
Pojedinačni EmailTemplates se mogu dohvatiti po odgovarajućem id-u (NE emailTemplateId).



GET /api/v1/email-templates 
Овај API користи пагинацију, обезбијеђену параметром упита page. EmailTemplates се враћају у страницама по 100, уређене по createdAt, а затим по id.



PATCH /api/v1/email-templates/:id 
Ovaj API endpoint omogućava ažuriranje email predloška tako što se navede samo id i atributi koje treba ažurirati.
Imajte na umu da se sve iste validacije koje važe pri kreiranju predloška također primjenjuju, na primjer:
- Predložak se mora renderirati. Ovo se provjerava pri svakom ažuriranju.
- Ne možete imati duplikate predložaka za istu domenu (inače bi jedan bio tiho ignorisan).



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

Можда ћете желети имати шаблоне по сајту, у том случају дефинишете domain:



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



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



Структура хештега 
Objekat HashTag predstavlja oznaku koju korisnik može ostaviti. HashTags se mogu koristiti za povezivanje sa vanjskim sadržajem ili za povezivanje povezanih komentara.
The structure for the HashTag object is as follows:

Notes:
- In some API endpoints you will see that the hashtag is used in the URL. Remember to URI-Encoded values. For example,
#should instead be represented as%23. - Some of these fields are marked
READONLY- these are returned by the API but cannot be set.
GET /api/v1/hash-tags 
Овај API користи пагинацију, која се обезбјеђује параметром упита page. HashTags се враћају у страницама по 100, уређени по tag.



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



POST /api/v1/hash-tags 
Ovaj endpoint omogućava dodavanje jednog HashTag.



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



DELETE /api/v1/hash-tags/:tag 
Ovaj endpoint omogućava uklanjanje HashTag-a na osnovu proslijeđenog taga.
Imajte na umu da, osim ako automatsko kreiranje HashTag-ova nije onemogućeno, hashtagovi mogu biti ponovo kreirani od strane korisnika koji uključe hashtag prilikom komentarisanja.



Структура модератора 
Objekat Moderator predstavlja konfiguraciju za moderatora.
Postoje tri tipa moderatora:
- Administrator korisnici koji imaju zastavicu
isCommentModeratorAdmin. - SSO korisnici sa zastavicom
isCommentModeratorAdmin. - Redovni komentatori, ili FastComments.com korisnici, koji su pozvani kao moderatori.
Struktura Moderator se koristi za predstavljanje stanja moderacije u slučaju upotrebe 3.
Ako želite pozvati korisnika da bude moderator putem API-ja, koristite Moderator API kreiranjem Moderator i inviting njima.
Ako korisnik nema FastComments.com nalog, pozivni email će im pomoći da se podese. Ako već imaju nalog, biće im dodan moderacijski pristup vašem tenant-u i Moderator objektu će se ažurirati userId da pokazuje na njihovog korisnika. Nećete imati API pristup njihovom korisniku, jer u ovom slučaju nalog pripada njima i upravlja ga FastComments.com.
Ako zahtijevate potpunu kontrolu nad korisničkim nalogom, preporučujemo ili korištenje SSO-a, ili dodavanje korisnika kao Korisnik tenanta i zatim dodavanje Moderator objekta za praćenje njihove statistike.
Struktura Moderator može se koristiti kao mehanizam za praćenje statistike za slučajeve upotrebe 1 i 2. Nakon kreiranja korisnika, dodajte Moderator objekat sa definisanim userId i njihove statistike će biti praćene na Stranici za moderatore komentara.
Struktura za Moderator objekat je sljedeća:

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



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



PATCH /api/v1/moderators/:id 
Ovaj API endpoint omogućava ažuriranje Moderator po id.
Ažuriranje Moderator ima sljedeća ograničenja:
- Sljedeće vrijednosti se ne smiju dostaviti prilikom ažuriranja
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je naveden
userId, taj korisnik mora postojati. - Kada je naveden
userId, on mora pripadati istomtenantIdkoji je naveden u query parametrima. - Dva moderatora u istom tenantu ne mogu se dodati sa istim
email. - Ne smijete mijenjati
tenantIdpovezan saModerator.



POST /api/v1/moderators 
Ова рута омогућава додавање једног Moderator.
Креирање Moderator-а има сљедећа ограничења:
- Морају увијек бити наведени
nameиemail.userIdје опционо. - Сљедеће вриједности не смију бити наведене при креирању
Moderator-а:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Када је
userIdназначен, тај корисник мора постојати. - Када је
userIdназначен, он мора припадати истомtenantId-у наведеном у параметрима упита. - Два модератора у истом тенанту не могу бити додата са истим
email-ом.
Можемо креирати Moderator-а за корисника чији познајемо само email:

Или можемо креирати Moderator-а за корисника који припада нашем тенанту, како бисмо пратили њихове статистике модерирања:



POST /api/v1/moderators/:id/send-invite 
Ova ruta omogućava slanje pozivnice jednom Moderatoru.
Slijedeća ograničenja postoje za slanje email pozivnice Moderatoru:
Moderatormora već postojati.fromNamene smije biti duži od100 characters.
Napomene:
- Ako korisnik sa navedenim emailom već postoji, bit će pozvan da moderira komentare vašeg tenanta.
- Ako korisnik sa navedenim emailom ne postoji link za pozivnicu će ih provesti kroz proces kreiranja naloga.
- Pozivnica će isteći nakon
30 days.
Možemo kreirati Moderatora za korisnika čiji email znamo:

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


DELETE /api/v1/moderators/:id 
Ова рута омогућава уклањање Moderator по id-у.



Структура броја обавештења 
Objekat NotificationCount predstavlja broj nepročitanih obaveštenja i metapodatke za korisnika.
Ako nema nepročitanih obaveštenja, za korisnika neće postojati NotificationCount.
NotificationCount objekti se kreiraju automatski i ne mogu se kreirati putem API-ja. Takođe ističu nakon jedne godine.
Možete obrisati broj nepročitanih obaveštenja korisnika brisanjem njihovog NotificationCount.
Struktura za NotificationCount objekat je sljedeća:

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



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



Структура обавештења 
Objekat Notification predstavlja obavještenje za korisnika.
Notification objekti se stvaraju automatski i ne mogu se kreirati putem API-ja. Također ističu nakon jedne godine.
Obavještenja ne mogu biti izbrisana. Međutim, mogu se ažurirati da bi se viewed postavio na false, i možete ih pretraživati po viewed.
Korisnik se također može odjaviti od obavještenja za određeni komentar tako što će u obavještenju postaviti optedOut na true. Možete se ponovo prijaviti postavljanjem na false.
Postoje različite vrste obavještenja - provjerite relatedObjectType i type.
Načini na koje se obavještenja kreiraju su prilično fleksibilni i mogu biti pokrenuti u mnogim scenarijima (pogledajte NotificationType).
Trenutno, postojanje Notification zapravo ne implicira da je e-pošta poslana ili da bi trebala biti poslana. Umjesto toga, obavještenja
se koriste za feed obavještenja i povezane integracije.
Struktura objekta Notification izgleda ovako:

GET /api/v1/notifications 
This route returns up to 30 Notification objects sorted by createdAt, newest first.
You can filter by userId. With SSO, the user id is in the format <tenant id>:<user id>.



GET /api/v1/notifications/count 
Ovaj endpoint vraća objekat koji sadrži broj obavještenja u parametru count.
Ova ruta je sporija 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, npr. userId. Kod SSO, user id ima format <tenant id>:<user id>.




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



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

GET /api/v1/pages 
Тренутно можете преузети само све странице (или једну страницу преко /by-url-id) повезане са вашим налогом. Ако желите прецизније претраживање, обратите нам се.



Користан савет
API Comment захтева urlId. Прво можете позвати API Pages да бисте видели како изгледају доступне вредности urlId.
GET /api/v1/pages/by-url-id 
Pojedinačne stranice se mogu dohvatiti pomoću odgovarajućeg urlId. Ovo može biti korisno za pronalaženje naslova stranica ili broja komentara.



Koristan savjet
Ne zaboravite URI enkodirati vrijednosti poput urlId.
PATCH /api/v1/pages/:id 
Ova ruta omogućava ažuriranje jedne Page. Odgovarajući komentari će biti ažurirani.



Napomena
Neki parametri u objektu Page se automatski ažuriraju. To su counts i title atributi. Counts cannot be updated
via the API since they are calculated values. The page title can be set via the API, but would get overwritten if the comment widget is used on
a page with the same urlId and a different page title.
POST /api/v1/pages 
Ovaj API endpoint omogućava kreiranje stranica.
Uobičajen slučaj upotrebe je kontrola pristupa.
Notes:
- Ako ste komentarisali na threadu komentara, ili pozvali API da kreirate
Comment, već ste kreiraliPageobjekat! Možete pokušati da ga dohvatite putem/by-url-idPagerute, prosljeđujući istiurlIdkoji je proslijeđen widgetu za komentare. - Struktura
Pagesadrži neke izračunate vrijednosti. Trenutno su tocommentCountirootCommentCount. Popunjavaju se automatski i ne mogu se postaviti preko API-ja. Pokušaj postavljanja će uzrokovati da API vrati grešku.



DELETE /api/v1/pages/:id 
Ova ruta omogućava uklanjanje pojedinačne stranice po id-u.
Imajte na umu da će interakcija sa widgetom za komentare na stranici sa istim urlId jednostavno ponovo kreirati Page.



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

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



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



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



Структура SSO корисника 
FastComments pruža jednostavno za korištenje SSO rješenje. Ažuriranje informacija o korisniku s integracijom zasnovanom na HMAC-u je jednostavno kao da korisnik učita stranicu sa ažuriranim payload-om.
Međutim, može biti poželjno upravljati korisnikom izvan tog toka, radi bolje konzistentnosti vaše aplikacije.
SSO User API pruža način za CRUD objekata koje zovemo SSOUsers. Ovi objekti se razlikuju od regularnih Users i čuvaju se odvojeno radi tip-sigurnosti.
Struktura SSOUser objekta je sljedeća:

Naplata za SSO korisnike
SSO korisnici se naplaćuju različito u zavisnosti od njihovih zastavica ovlašćenja:
- Regular SSO Users: Korisnici bez admin ili moderator ovlašćenja se naplaćuju kao regularni SSO korisnici
- SSO Admins: Korisnici sa
isAccountOwneriliisAdminAdminzastavicom se naplaćuju odvojeno kao SSO administratori (ista cijena kao regularni tenant administratori) - SSO Moderators: Korisnici sa
isCommentModeratorAdminzastavicom se naplaćuju odvojeno kao SSO moderatori (ista cijena kao regularni moderatori)
Važno: Da bi se spriječilo dvostruko naplaćivanje, sistem automatski uklanja duplikate SSO korisnika u odnosu na regularne tenant korisnike i moderatore koristeći email adresu. Ako SSO korisnik ima istu email adresu kao regularni tenant korisnik ili moderator, neće biti naplaćen dvaput.
Kontrola pristupa
Korisnici se mogu podijeliti u grupe. Za to služi polje groupIds i opcionalno je.
@Mentions
Po zadanoj postavci @mentions će koristiti username za pretragu drugih sso korisnika kada se utipka znak @. Ako se koristi displayName, rezultati koji odgovaraju username biće ignorisani kada postoji podudaranje za displayName, i rezultati pretrage @mention će koristiti displayName.
Pretplate
Sa FastComments, korisnici se mogu pretplatiti na stranicu klikom na ikonu zvona u widgetu za komentare i klikom na Pretplati se.
Kod regularnog korisnika, šaljemo im email obavještenja na osnovu njihovih postavki obavijesti.
Kod SSO korisnika, razdvojili smo ovo radi kompatibilnosti unazad. Korisnici će dobiti ova dodatna email obavještenja o pretplatama samo ako postavite optedInSubscriptionNotifications na true.
Oznake
Možete dodijeliti oznake SSO korisnicima koristeći svojstvo badgeConfig. Oznake su vizuelni indikatori koji se pojavljuju pored imena korisnika u komentarima.
badgeIds- Niz ID-jeva oznaka koje treba dodijeliti korisniku. Moraju biti važeći ID-jevi oznaka kreirani na vašem FastComments nalogu. Ograničeno na 30 oznaka.override- Ako je true, sve postojeće oznake prikazane u komentarima će biti zamijenjene navedenim. Ako je false ili izostavljeno, navedene oznake će biti dodane postojećim oznakama.update- Ako je true, prikazne osobine oznaka će biti ažurirane iz konfiguracije tenanta svaki put kada se korisnik prijavi.
GET /api/v1/sso-users 
Ова рута враћа SSO кориснике у страницама по 100. Пагинација се обезбеђује параметром skip. Корисници су сортирани по signUpDate и id.



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



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



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



POST /api/v1/sso-users 
Ова рута омогућава креирање једног SSO корисника.
Покушај креирања два корисника са истим ID-ом резултираће грешком.

У овом примеру наводимо groupIds за контролу приступа, али ово је опционално.


Напомена о интеграцији
Подаци прослијеђени преко API-ја могу се преписати једноставним слањем другачијег SSO User HMAC payload-а. На примјер, ако подесите корисничко име преко API-ја, али потом пошаљете друго корисничко име преко SSO тока при учитавању странице, ми ћемо аутоматски ажурирати њихово корисничко име.
Нећемо ажурирати параметре корисника у овом току осим ако их јасно не назначите или не подесите на null (не undefined).
PUT /api/v1/sso-users/:id 
Ова рута омогућава ажурирање једног SSO корисника.

У овом примјеру наводимо groupIds за контролу приступа, али ово је опционално.


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



Структура претплате 
A Subscription object predstavlja pretplatu za korisnika.
Subscription objekti se kreiraju kada korisnik klikne na zvonce za obavještenja u widgetu za komentare i izabere "Pretplati se na ovu stranicu".
Pretplate se također mogu kreirati putem API-ja.
Posjedovanje Subscription objekta uzrokuje generisanje Notification objekata i slanje emailova kada se ostave novi komentari na korijenu pridružene stranice za koju je Subscription. Slanje emailova zavisi od tipa korisnika. Za obične korisnike to zavisi od optedInNotifications. Za SSO korisnike to zavisi od optedInSubscriptionNotifications. Imajte na umu da neke aplikacije možda nemaju pojam web-pristupačne stranice, u tom slučaju jednostavno postavite urlId na id stavke na koju se pretplaćujete (istu vrijednost za urlId koju biste proslijedili widgetu za komentare).
Struktura Subscription objekta je sljedeća:

GET /api/v1/subscriptions/:id 
Ovaj endpoint vraća do 30 Subscription objekata sortiranih po createdAt, najnovije prvo.
Možete filtrirati po userId. Uz SSO, id korisnika je u formatu <tenant id>:<user id>.



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



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



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

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



Структура тенанта 
The Tenant дефинише FastComments.com купца. Они се могу креирати преко API-ја од стране тенаната који имају white-label приступ. Тенанти са white-label приступом не могу креирати друге тенанте са white-label (дозвољен је само један ниво угнежђивања).
Структура за објекат Tenant је следећа:

GET /api/v1/tenants/:id 
Ова рута враћа појединачног Tenant-а по ID-у.



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

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



POST /api/v1/tenants 
Ovaj endpoint omogućava dodavanje jednog Tenant.
Kreiranje Tenant ima sljedeća ograničenja:
- Polje
nameje obavezno. - Polje
domainConfigurationje obavezno. - Sljedeće vrijednosti se ne smiju navesti pri kreiranju
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
- Vrijednost
signUpDatene smije biti u budućnosti. - Polje
namene smije biti duže od200 characters. - Polje
emailne smije biti duže od300 characters. - Vrijednost
emailmora biti jedinstvena među svim tenantima na FastComments.com. - Ne smijete kreirati tenant-e ako roditeljski tenant nema definisan važeći
TenantPackage.- Ako je vaš tenant kreiran putem FastComments.com, ovo 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 tenantsa uključenim white labeling-om.
Možemo kreirati Tenant sa samo nekoliko parametara:



PATCH /api/v1/tenants/:id 
Ова API крајња тачка омогућава ажурирање Tenant по id.
Ажурирање Tenant има следећа ограничења:
- Следеће вредности се не могу ажурирати:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
signUpDateне смије бити у будућности.nameне може бити дуже од200 characters.emailне може бити дуже од300 characters.emailмора бити јединствен међу свим FastComments.com tenant-има.- Када се
billingInfoValidпостави наtrue,billingInfoмора бити укључен у истом захтјеву. - Не можете ажурирати
packageIdповезан са вашим сопственим tenant-ом. - Не можете ажурирати
paymentFrequencyповезан са вашим сопственим tenant-ом.



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 postoje prilikom uklanjanja Tenanta:
- Tenant mora biti vaš, ili white-labeled tenant koji vi upravljate.
- Parametar upita
suremora biti postavljen natrue.



Структура пакета тенанта 
The TenantPackage definiše informacije o paketu dostupnom Tenant-u. Tenant može imati mnogo dostupnih paketa, ali se samo jedan može koristiti u datom trenutku.
A Tenant se ne može koristiti za nikakve proizvode dok njegov packageId ne pokazuje na važeći TenantPackage.
Postoje dvije vrste TenantPackage objekata:
- Paketi sa fiksnom cijenom - gdje je
hasFlexPricingfalse. - Fleksibilno određivanje cijene - gdje je
hasFlexPricingtrue.
U oba slučaja ograničenja su definirana na nalogu koji koristi paket, međutim kod Flex paketa tenantu se naplaćuje osnovna cijena plus ono što su koristili, definirano flex* parametrima.
Tenant može imati više tenant paketa i može sam promijeniti paket sa Stranice za informacije o naplati.
Ako ćete sami upravljati naplatom za tenante, i dalje ćete morati definirati paket za svakog tenanta kako biste odredili njihova ograničenja. Jednostavno postavite billingHandledExternally na true na Tenant i oni neće moći sami mijenjati svoje informacije o naplati ili aktivni paket.
Ne smijete kreirati pakete sa većim ograničenjima od roditeljskog tenanta.
Struktura TenantPackage objekta je sljedeća:

GET /api/v1/tenant-packages/:id 
Ova ruta vraća pojedinačni Tenant Package po id-u.



GET /api/v1/tenant-packages 
Ovaj API koristi paginaciju, koja se obezbjeđuje putem query parametra skip. TenantPackages se vraćaju u stranicama po 100, poredane po createdAt i id.
Trošak se zasniva na broju vraćenih tenant paketa, i iznosi 1 kredit za svakih 10 vraćenih tenant paketa.



POST /api/v1/tenant-packages 
Ovaj endpoint pruža mogućnost dodavanja 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, onda su sviflex*parametri obavezni.
namene smije biti duže od50 characters.- Svaki
forWhoTextitem ne smije biti duži od200 characters. - Svaki
featureTaglinesitem ne smije biti duži od100 characters. TenantPackagemora biti "manji" od roditeljskog tenanta. Na primjer, svimax*parametri moraju imati niže vrijednosti od roditeljskog tenanta.- Tenanti sa white-label opcijom mogu imati maksimalno pet paketa.
- Samo tenant-i sa pristupom white labeling-u mogu kreirati
TenantPackage. - Ne možete dodavati pakete svom vlastitom tenant-u. :)
Možemo kreirati TenantPackage na sljedeći način:



PATCH /api/v1/tenant-packages/:id 
Ovaj API endpoint pruža mogućnost ažuriranja TenantPackage po id.
Ažuriranje TenantPackage ima sljedeća ograničenja:
- Ako postavite
hasFlexPricingna true, tada su sviflex*parametri obavezni u tom istom zahtjevu. - Polje
namene može biti duže od50 characters. - Svaki element
forWhoTextne može biti duži od200 characters. - Svaki element
featureTaglinesne može biti duži od100 characters. TenantPackagemora biti "manji" od roditeljskog tenanta. Na primjer, svimax*parametri moraju imati niže vrijednosti nego kod roditeljskog tenanta.- Ne smijete promijeniti
tenantIdpovezan sTenantPackage.



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



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

GET /api/v1/tenant-users/:id 
Ова рута враћа једног TenantUser по id.



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



POST /api/v1/tenant-users 
Ovaj endpoint omogućava dodavanje jednog TenantUser.
Kreiranje TenantUser-a ima sljedeća ograničenja:
usernameje obavezno.emailje obavezno.signUpDatene smije biti u budućnosti.localemora biti na listi Supported Locales.usernamemora biti jedinstven na cijelom FastComments.com. Ako je to problem, preporučujemo korištenje SSO umjesto toga.emailmora biti jedinstven na cijelom FastComments.com. Ako je to problem, preporučujemo korištenje SSO umjesto toga.- Ne smijete kreirati više tenant korisnika nego što je definirano u
maxTenantUsersu vašem paketu.
Možemo kreirati TenantUser na sljedeći način



POST /api/v1/tenant-users/:id/send-login-link 
Ова рута омогућава слање линка за пријаву једном TenantUser-у.
Корисно када се корисници масовно креирају и не морате да им објашњавате како да се пријаве на FastComments.com. Ово ће им једноставно послати „магични линк“ за пријаву који истиче након 30 days.
Постоје следећа ограничења за слање линка за пријаву TenantUser-у:
TenantUserмора већ постојати.- Морате имати приступ за управљање
Tenant-ом комеTenantUserприпада.
Линк за пријаву TenantUser-у можемо послати на следећи начин:

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


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



DELETE /api/v1/tenant-users/:id 
Ovaj endpoint omogućava uklanjanje TenantUser po id-u.
Brisanje komentara korisnika je moguće putem query parametra deleteComments. Imajte na umu da ako je ovo true:
- Svi komentari korisnika će biti obrisani uživo.
- Svi podređeni (sada siročadi) komentari će biti obrisani ili anonimizirani na osnovu konfiguracije stranice povezanе sa svakim komentarom. Na primjer, ako je način brisanja niti "anonymize", onda će odgovori ostati, a komentari korisnika će biti anonimizirani. Ovo se primjenjuje samo kada je
commentDeleteModepostavljen naRemove(podrazumijevana vrijednost). - Vrijednost
creditsCostpostaje2.
Anonimizirani komentari
Možete zadržati komentare korisnika, ali ih jednostavno anonimizirati postavljanjem commentDeleteMode=1.
Ako su komentari korisnika anonimizirani, sljedeće vrijednosti se postavljaju na null:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badgesisDeleted i isDeletedUser su postavljeni na true.
Pri prikazu, widget komentara će koristiti DELETED_USER_PLACEHOLDER (zadano: "[deleted]") za ime korisnika i DELETED_CONTENT_PLACEHOLDER za sadržaj komentara. Ovo se može prilagoditi putem UI za prilagođavanje widgeta.
Primjeri



Структура корисника 
User je objekat koji predstavlja najčešći zajednički imenitelj svih korisnika.
Imajte na umu da u FastComments imamo više različitih slučajeva upotrebe za korisnike:
- Secure SSO
- Simple SSO
- Tenant Users (For example: Administrators)
- Commenters
Ovaj API je za Commenters i korisnike kreirane putem Simple SSO. U suštini, bilo koji korisnik kreiran kroz vašu stranicu može se pristupiti putem ovog API-ja. Tenant Users se također mogu dohvatiti na ovaj način, ali ćete dobiti više informacija koristeći /tenant-users/ API.
Za Secure SSO koristite /sso-users/ API.
Ne možete ažurirati ove tipove korisnika. Oni su kreirali svoj nalog kroz vašu stranicu, pa pružamo osnovni pristup samo za čitanje, ali ne možete praviti izmjene. Ako želite imati ovaj tip toka - morate podesiti Secure SSO.
Struktura za the User object je sljedeća:

GET /api/v1/users/:id 
Ова рута враћа једног корисника по ИД-у.



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

GET /api/v1/votes 
Glasovi se moraju dohvatiti pomoću urlId.
Vrste glasova
Postoje tri vrste glasova:
- Autentifikovani glasovi, koji se primjenjuju na odgovarajući komentar. Možete ih kreirati putem ovog API-ja.
- Autentifikovani glasovi, koji su na čekanju verifikacije, i stoga još nisu primijenjeni na komentar. Ovi se kreiraju kada korisnik koristi FastComments.com mehanizam prijave za glasanje.
- Anonimni glasovi, koji se primjenjuju na odgovarajući komentar. Oni se kreiraju zajedno sa anonimnim komentiranjem.
Oni se vraćaju u odvojenim listama u API-ju kako bi se smanjila zabuna.



Napomene o anonimnim glasovima
Imajte na umu da će anonimni glasovi kreirani putem ovog API-ja pojaviti u listi appliedAuthorizedVotes. Smatraju se autorizovanim jer su kreirani putem API-ja sa API key-om.
Struktura appliedAnonymousVotes je za glasove kreirane bez emaila, API key-a, itd.
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 korisničkom objektu bilo gdje (otuda anonimno). To je jednostavno identifikator za sesiju, tako da možete ponovo dohvatiti glasove u istoj sesiji, kako biste provjerili je li komentar dobio glas.
Ako nemate nešto što biste nazvali "anonimne sesije" kao što to ima FastComments - možete jednostavno 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 nivou tenant-a. Na primjer, ako onemogućite glasanje za određenu stranicu, i pokušate kreirati glas putem API-ja, to će završiti neuspjehom sa kodom greške
voting-disabled. - Ovaj API je prema zadanim postavkama aktivan.
- Ovaj API će ažurirati
votesodgovarajućegComment.
DELETE /api/v1/votes/:id 
Ова рута омогућава брисање појединачног Vote.



Напомене:
- Овај API се придржава подешавања на нивоу тенанта. На примјер, ако онемогућите гласање за одређену страницу, и покушате кроз API да креирате глас, он ће неуспјети са кодом грешке
voting-disabled. - Овај API је по подразумјеваном активан.
- Овај API ће ажурирати
votesодговарајућегComment.
Структура конфигурације домена 
Објекат DomainConfig представља конфигурацију домена за тенанта.
Структура објекта DomainConfig је следећа:


За аутентификацију
Конфигурација домена се користи за одређивање који сајтови могу да хостују FastComments видгет за ваш налог. Ово је основни облик аутентификације, што значи да додавање или уклањање било које конфигурације домена може утицати на доступност ваше FastComments инсталације у продукцији.
Не уклањајте и не ажурирајте својство domain објекта Domain Config за домен који је тренутно у употреби, осим ако није намера да се тај домен онемогући.
Ово има исто понашање као уклањање домена из /auth/my-account/configure-domains.
Такође имајте на уму да уклањање домена из My Domains корисничког интерфејса уклониће било коју одговарајућу конфигурацију за тај домен која је можда додата преко тог интерфејса.
За прилагођавање е-поште
Линк за отписивање у подножју е-поруке и функција једнокликовног отписивања коју нуди много клијената за електронску пошту могу се конфигурисати преко овог API-ја дефинисањем footerUnsubscribeURL и emailHeaders, редом.
За DKIM
Након дефинисања ваших DKIM DNS записа, једноставно ажурирајте DomainConfig са вашом DKIM конфигурацијом користећи дефинисану структуру.
GET /api/v1/domain-configs 
Овај API омогућава преузимање свих објеката DomainConfig за тенанта.



GET /api/v1/domain-configs/:domain 
Pojedinačni DomainConfigs se mogu dohvatiti po odgovarajućoj domain.



POST /api/v1/domain-configs 
Ovaj API endpoint omogućava kreiranje konfiguracija domena.
Dodavanje konfiguracije za domen ovlašćuje taj domen za FastComments nalog.
Uobič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ćava ažuriranje konfiguracije domena tako što se navode samo domen i atribut koji se ažurira.



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



DELETE /api/v1/domain-configs/:domain 
Ova ruta omogućava uklanjanje pojedinačnog DomainConfig po id-u.
- Napomena: Uklanjanjem
DomainConfigautorizacija te domene za korištenje FastComments će biti opozvana. - Napomena: Ponovnim dodavanjem domene preko UI-ja objekt će biti ponovo kreiran (sa samo poljem
domainpopunjenim).



Структура конфигурације питања 
FastComments пружа начин за конструисање питања и агрегирање њихових резултата. Пример питања (у даљем тексту названо QuestionConfig) може бити оцена у звездицама, клизач или NPS питање (одређено помоћу type).
Подаци о питањима могу се агрегирати појединачно, заједно, током времена, укупно, по страници итд.
Фрејмворк има све могућности потребне за изградњу клијентских видгета (са вашим сервером испред овог API), административних контролних панела и алата за извјештавање.
Прво морамо дефинисати QuestionConfig. Структура је следећа:

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



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



POST /api/v1/question-configs 
Ова API крајња тачка омогућава креирање QuestionConfig.



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




DELETE /api/v1/question-configs/:id 
Ovaj endpoint omogućava uklanjanje QuestionConfig po id-u.
Ovo će izbrisati sve odgovarajuće rezultate pitanja (ali ne i komentare). Ovo je dio visokog troška kredita.



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

GET /api/v1/question-results 
Овај рутa враћа до 1000 QuestionResults објеката одједном, пагинирано. Трошак је 1 за свакaких 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 
Ovaj endpoint omogućava ažuriranje pojedinačnog QuestionResult.
Sljedeća struktura predstavlja sve vrijednosti koje se mogu promijeniti:




DELETE /api/v1/question-results/:id 
Ova ruta omogućava brisanje QuestionResult prema id-u.



GET /api/v1/question-results-aggregate 
Овдје се врши агрегирање резултата.
Структура одговора агрегирања је следећа:

Ово су параметри упита доступни за агрегирање:

Ево примера захтјева:

Пример одговора:


Напомене о перформансама
- Ако нема података у кешу (cache miss), агрегирање обично траје пет секунди по милиону резултата.
- Иначе, захтјеви су константног времена.
Напомене о кеширању и трошковима
- Када је
forceRecalculateнаведен, цијена је увијек10, умјесто уобичајених2. - Ако кеш истекне и подаци се поново израчунају, цијена је и даље константна
2акоforceRecalculateније наведен. Кеш истиче у зависности од величине скупа података који се агрегира (може варирати између 30 секунди и 5 минута). - Ово је да би се потакло коришћење кеша.
GET /api/v1/question-results-aggregate/combine/comments 
Овдје се врши комбиновање резултата са коментарима. Корисно за креирање, на примјер, графикона "недавни позитивни и негативни коментари" за производ.
Можете претраживати по распону вриједности (укључиво), по једном или више питања, и по почетном датуму (укључиво).
Структура одговора је сљедећа:

Ево параметара упита доступних за агрегирање:

Ево примјера захтјева:

Пример одговора:


Напомене о кеширању и трошковима
- 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. - Ово је да би се подстакло коришћење кеша.
Структура значке корисника 
UserBadge је објекат који представља ознаку додељену кориснику у FastComments систему.
Ознаке могу бити аутоматски додељене корисницима на основу њихове активности (као што су број коментара, време одговора, статус ветерана) или ручно од стране администратора сајта.
Структура објекта UserBadge је следећа:

GET /api/v1/user-badges 
Овај endpoint вам омогућава да дохватите корисничке значке на основу различитих критеријума.
Пример захтева:
Run 
Можете додати различите параметре упита да бисте филтрирали резултате:
userId- Добија значке за одређеног корисникаbadgeId- Добија инстанце одређене значкеtype- Филтрира по типу значке (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, итд. Погледајте структуру UserBadge за пуну листу)displayedOnComments- Филтрира по томе да ли се значка приказује у коментарима (true/false)limit- Максималан број значки за враћање (подразумевано 30, максимум 200)skip- Број значки које треба прескочити (за пагинацију)
Пример одговора:

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


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

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


POST /api/v1/user-badges 
Овај endpoint вам омогућава креирање новог додељивања значке кориснику.
Пример захтева:
Run 
Тело захтева мора садржати следеће параметре:
userId(required) - The ID of the user to assign the badge tobadgeId(required) - The ID of the badge to assigndisplayedOnComments(optional) - Whether the badge should be displayed on the user's comments (defaults to true)
Важне напомене:
- Значка мора постојати и бити омогућена у каталогу значки вашег тенанта
- Значке можете додељивати само корисницима који припадају вашем тенанту или су коментарисали на вашем сајту
Пример одговора:

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





PUT /api/v1/user-badges/:id 
Ovaj endpoint vam omogućava ažuriranje dodjele korisničke značke.
Trenutno, jedino svojstvo koje se može ažurirati je displayedOnComments, koje upravlja time da li se značka prikazuje na korisnikovim komentarima.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori o greškama:



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

Mogući odgovori na greške:



Структура напретка значке корисника 
UserBadgeProgress je objekat koji predstavlja napredak korisnika u sticanju različitih značaka u FastComments sistemu.
Ovo praćenje pomaže odrediti kada korisnici treba da dobiju automatske značke na osnovu svoje aktivnosti i učešća u vašoj zajednici.
Struktura objekta UserBadgeProgress je sledeć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 da dohvatite specifičan zapis napretka korisničke značke po njegovom jedinstvenom ID-u.
Primjer zahtjeva:
Run 
Primjer odgovora:

Mogući odgovori u slučaju greške:


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

Могући одговори у случају грешке:



U zaključku
Nadamo se da ste našu API dokumentaciju smatrali sveobuhvatnom i lako razumljivom. Ako primijetite bilo kakve nedostatke, javite nam ispod.