
Језик 🇷🇸 Српски
API ресурси
Агрегације
Дневници ревизије
Коментари
Шаблони имејлова
Хештегови
Модератори
Број обавештења
Обавештења
Странице
Чекајући webhook догађаји
SSO корисници
Претплате
Дневна употреба тенанта
Тенанти
Пакети тенанта
Корисници тенанта
Корисници
Гласови
Конфигурације домена
Конфигурације питања
Резултати питања
Агрегација резултата питања
Ознаке корисника
Напредак ознака корисника
API платформе FastComments
FastComments обезбеђује API за интеракцију са многим ресурсима. Изградите интеграције са нашом платформом, или чак направите своје клијенте!
У овој документацији наћи ћете све ресурсе које API подржава, са документацијом њихових типова захтева и одговора.
За Enterprise кориснике, сав приступ API-ју се бележи у Audit Log.
Generated SDKs
FastComments сада генерише API Spec из нашег кода (ово још није потпуно, али укључује многе API-је).
Такође сада имамо SDK-ове за популарне језике:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Аутентификација
API се аутентификује прослеђивањем вашег api key као или X-API-KEY заглавља или као API_KEY query параметра. Такође ће вам требати ваш tenantId за позиве API-ја. Он се може преузети са исте странице као и ваш api key.
Напомена о безбедности
Ове руте треба позивати са сервера. НЕ ПОЗИВАЈТЕ их из прегледача. То би открило ваш API key - то ће омогућити пун приступ вашем налогу било коме ко може видети изворни код странице!
Authentication Option One - Headers
- Заглавље:
X-API-KEY - Заглавље:
X-TENANT-ID
Authentication Option Two - Query Parameters
- Параметар упита:
API_KEY - Параметар упита:
tenantId
API ресурси 
Korišćenje resursa
Treba napomenuti da se preuzimanje podataka sa API-ja računa kao potrošnja na vašem nalogu.
Svaki resurs će u svojoj sekciji navesti kolika je ta potrošnja.
Neki resursi su skuplji za posluživanje od drugih. Svaki endpoint ima fiksnu cenu u kreditima 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 Pages, kako biste smanjili zabunu prilikom određivanja koje vrednosti treba proslediti za urlId u Comment API-ju.
Агрегирајте своје податке 
Ovaj API agregira dokumente grupišući ih (ako je naveden groupBy) i primenjujući više operacija. Podržane su različite operacije (npr. sum, countDistinct, avg, itd.).
Cena je varijabilna. Na svakih 500 pregledanih objekata troši se 1 API kredit.
Maksimalna dozvoljena upotreba memorije po API pozivu podrazumevano je 64MB, i podrazumevano možete imati samo jednu agregaciju koja radi u jednom trenutku. Ako pošaljete više agregacija istovremeno, biće stavljene u red i izvršene redosledom slanja. Agregacije koje čekaju biće zadržane najduže 60 sekundi, nakon čega će zahtev isteći (timeout). Pojedinačne agregacije mogu se izvršavati do 5 minuta.
Ako imate upravljane tenante, možete agregirati sve resurse podređenih tenant-a u jednom pozivu tako što ćete proslediti query parametar parentTenantId.
Primeri
Primer: Brojanje jedinstvenih


Primer: Prebrojavanje različitih vrednosti

Odgovor:

Primer: Sabiranje vrednosti više polja

Odgovor:

Primer: Prosečne vrednosti više polja

Odgovor:

Primer: Minimalne/Maksimalne vrednosti više polja

Odgovor:

Primer: Brojanje jedinstvenih vrednosti više polja

Odgovor:

Primer: Kreiranje upita

Odgovor:

Primer: Brojanje komentara na čekanju za pregled

Odgovor:

Primer: Raspodela odobrenih, pregledanih i spam komentara

Odgovor:

Strukture


Sledeći resursi mogu biti agregirani:
- 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 
Овај API користи пагинацију, обезбеђену параметрима skip, before и after. AuditLogs се враћају у страницама по 1000, сортиране по when и id.
Повлачење сваке 1000 ставке кошта 10 кредита.
Подразумевано ћете добити листу са најновијим ставкама прво. На тај начин можете почети са skip=0, пагинирајући док не пронађете последњи запис који сте обрадили.
Алтернативно, можете сортирати од најстаријих прво и пагинирати док не буде више записа.
Сортирање се врши постављањем параметра order на ASC или DESC. Подразумевана вредност је ASC.
Претраживање по датуму је могуће помоћу before и after као временских ознака у милисекундама. before и after нису укључиви.



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

Нека од ових поља су означена као READONLY - она се враћају од стране API-ја али не могу бити подешавана.
Struktura teksta komentara
Коментари су написани у 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. Пример парсера је овде..
Пример парсера се такође може прилагодити да ради са HTML-ом и трансформише HTML тагове у очекиване елементе за рендеровање на вашој платформи.
Obeležavanje
Када су корисници означени у коментару, информација се чува у листи која се зове mentions. Сваки објекат у тој листи
има следећу структуру.
Run 
Haštagovi
Када се хештегови користе и успешно парсирају, информација се чува у листи која се зове hashTags. Сваки објекат у тој листи
има следећу структуру. Хештегови се такође могу ручно додати у низ hashTags коментара за упите, ако је retain постављен.
Run 
GET /api/v1/comments 
Овај API се користи за добијање коментара који ће бити приказани кориснику. На пример, аутоматски филтрира неприхваћене или спам коментаре.
Пагинација
Пагинација се може извести на један од два начина, у зависности од захтева за перформансама и случаја употребе:
- Најбрже: Прерачуната пагинација:
- Ово је начин на који FastComments ради када користите наше унапред направљене видгете и клијенте.
- Клик на "next" једноставно увећава број странице.
- Можете ово сматрати као да је дохваћено из key-value продавнице.
- На овај начин, једноставно дефинишете параметар
pageкоји почиње од0и смер сортирања каоdirection. - Величине страница се могу прилагодити преко правила прилагођавања.
- Најфлексибилније: Флексибилна пагинација:
- На овај начин можете дефинисати прилагођене параметре
limitиskip. Не пролазитеpage. - Смер сортирања
directionје такође подржан. limitје укупни број који ће бити враћен након што се примениskip.- Пример: подесите
skip = 200, limit = 100када јеpage size = 100иpage = 2.
- Пример: подесите
- Дечији коментари и даље улазе у пагинацију. Ово можете заобићи коришћењем опције
asTree.- Можете пагинирати децу преко
limitChildrenиskipChildren. - Можете ограничити дубину тредова који се враћају преко
maxTreeDepth.
- Можете пагинирати децу преко
- На овај начин можете дефинисати прилагођене параметре
Теме
- Када користите
Precalculated Pagination, коментари су груписани по страници и коментари у тредовима утичу на укупну страницу.- На овај начин, тредови се могу одредити на клијенту на основу
parentId. - На пример, на страници са једним коментаром највишег нивоа и 29 одговора, и подешавањем
page=0у API-ју — добићете само коментар највишег нивоа и 29 деце. - Пример слике који илуструје више страна.
- На овај начин, тредови се могу одредити на клијенту на основу
- Када користите
Flexible Pagination, можете дефинисати параметарparentId.- Поставите га на null да бисте добили само коментаре највишег нивоа.
- Затим, да бисте видели тредове, позовите API поново и проследите
parentId. - Уобичајено решење је да направите позив API-ју за коментаре највишег нивоа и онда паралелне позиве да бисте добили коментаре за децу сваког коментара.
- НОВО: од фебруара 2023.! Добијте као стабло користећи
&asTree=true.- Ово можете сматрати као
Flexible Pagination as a Tree. - Само коментари највишег нивоа се рачунају у пагинацији.
- Поставите
parentId=nullда бисте започели стабло од корена (мора се подеситиparentId). - Поставите
skipиlimitза пагинацију. - Поставите
asTreeнаtrue. - Трошак кредита се повећава за
2x, јер наш бекенд мора много више да ради у овом сценарију. - Поставите
maxTreeDepth,limitChildren, иskipChildrenпо потреби.
- Ово можете сматрати као
Објашњење стабала
Када користите asTree, може бити тешко разумети пагинацију. Ево корисне графике:
Преузимање коментара у контексту корисника
API /comments се може користити у два контекста, за различите случајеве употребе:
- За враћање коментара сортираних и означених информацијама за израду сопственог клијента.
- У овом случају дефинишите query параметар
contextUserId.
- У овом случају дефинишите query параметар
- За преузимање коментара са вашег бекенда за прилагођене интеграције.
- Платформа ће подразумевано користити ово без
contextUserId.
- Платформа ће подразумевано користити ово без




Добијање коментара као стабло
Могуће је добити коментаре враћене као стабло, при чему пагинација рачуна само коментаре највишег нивоа.

Желите да добијете само коментаре највишег нивоа и непосредну децу? Ево једног начина:

Међутим, у вашем UI-у можда ћете морати да знате да ли да прикажете дугме „пкажи одговоре“ на
сваком коментару. Када се коментари дохватају као стабло, постоји својство hasChildren које је
додато коментарима када је применљиво.
Добијање коментара као стабло, претраживање по хештегу
Могуће је претраживати по хештегу користећи API, преко целог вашег tenant-а (није ограничено на једну страницу или urlId).
У овом примеру, ми изостављамо urlId, и претражујемо по више хештегова. API ће вратити само коментаре који имају све тражене хештегове.

Сви параметри захтева

Одговор

Корисни савети
URL ID
Вероватно ћете желети да користите Comment API са параметром urlId. Можете позвати Pages API прво, да видите како изгледају вредности urlId које су вам доступне.
Анонимне радње
За анонимно коментарисање вероватно ћете желети да проследите anonUserId када дохватате коментаре, и када извршавате означавање (flagging) и блокирање.
(!) Ово је захтевано за многе продавнице апликација јер корисници морају моћи да означавају садржај који су креирали други корисници и који могу видети, чак и ако нису пријављени. Ако то не учините, ваша апликација може бити уклоњена из те продавнице.
Коментари се не враћају
Проверите да ли су ваши коментари одобрени и да нису означени као спам.
GET /api/v1/comments/:id 
Овај API омогућава преузимање једног коментара по id.



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

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



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



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



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

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



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

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



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

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



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




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

Напомене
- Можете добити важеће вредности
emailTemplateIdса ендпоинта/definitions. - Ендпоинт
/definitionsтакође укључује подразумеване преводе и тест податке. - Шаблони неће бити сачувани ако имају неважећу структуру или неважеће тест податке.
GET /api/v1/email-templates/:id 
Појединачни EmailTemplates могу се преузети помоћу одговарајућег id (НЕ emailTemplateId).



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



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



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

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



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



DELETE /api/v1/email-templates/:id 
Ова рута омогућава уклањање појединачног EmailTemplate по id-у.



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

Напомене:
- На неким API endpoint-има ћете видети да се хештег користи у URL-у. Запамтите да вредности треба URI-кодирати. На пример,
#би требало да буде представљено као%23. - Нека од ових поља су означена као
READONLY- она су враћена од стране API-ја али их није могуће подесити.
GET /api/v1/hash-tags 
Овај API користи пагинацију, коју обезбеђује параметар упита page. HashTags се враћају страницама по 100, сортирани по tag.



PATCH /api/v1/hash-tags/:tag 
Ova ruta omogućava ažuriranje jedne HashTag.



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



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



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



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

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



GET /api/v1/moderators 
Ovaj API koristi paginaciju, koja je obezbeđena skip query parametrom. Moderatori se vraćaju u stranicama po 100, sortirani po createdAt i id.
Cena se zasniva na broju vraćenih moderatora, i iznosi 1 credit per 10 vraćenih moderatora.



PATCH /api/v1/moderators/:id 
Ова крајња тачка API-ја омогућава ажурирање Moderator по id.
Ажурирање Moderator има следећа ограничења:
- Следеће вредности не смеју бити прослеђене приликом ажурирања
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Када је наведено
userId, тај корисник мора постојати. - Када је наведено
userId, они морају припадати истомtenantIdнаведеном у параметрима упита. - Два модератора у истом tenant-у не могу бити додата са истим
email. - Не можете променити
tenantIdповезан саModerator-ом.



POST /api/v1/moderators 
Ovaj endpoint omogućava dodavanje jednog Moderator.
Kreiranje Moderator objekta ima sledeća ograničenja:
- Uvek je potrebno navesti
nameiemail.userIdje opciono. - Sledeće vrednosti ne smeju biti prosleđene prilikom kreiranja
Moderator:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Kada je
userIdnaveden, taj korisnik mora postojati. - Kada je
userIdnaveden, mora pripadati istomtenantIdkoji je naveden u parametrima upita. - Dva moderatora u istom tenantu ne mogu biti dodata sa istim
email.
Možemo kreirati Moderator za korisnika 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 
Ова рута омогућава уклањање Moderator по id.



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

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



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



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

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



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




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



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

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



Корисан савет
API Comment захтева urlId. Можете прво позвати Pages API да бисте видели како изгледају вредности urlId које су вам доступне.
GET /api/v1/pages/by-url-id 
Појединачне странице могу бити преузете по њиховом одговарајућем urlId-у. Ово може бити корисно за преглед наслова страница или броја коментара.



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



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



DELETE /api/v1/pages/:id 
Ова рута омогућава уклањање једне странице по id-у.
Имајте на уму да ће интеракција са видгетом за коментаре на страници са истим urlId-ом једноставно поново креирати Page неприметно.



Структура чекајућег webhook догађаја 
Објекат PendingWebhookEvent представља webhook догађај који је стављен у ред и налази се на чекању.
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 
Ova ruta vraća objekat koji sadrži broj webhook događaja na čekanju u parametru count.
Možete filtrirati pomoću istih parametara kao za endpoint /pending-webhook-events



DELETE /api/v1/pending-webhook-events/:id 
Ова рута омогућава брисање појединачног PendingWebhookEvent.
Ако вам је потребно масовно брисање, позовите GET API са пагинацијом, а затим овај API позивајте секвенцијално.



Структура SSO корисника 
FastComments пружа једноставно за коришћење SSO решење. Ажурирање података корисника помоћу интеграције засноване на HMAC-у је једноставно као да корисник учита страницу са ажурираним пакетом података.
Међутим, можда ћете желети да управљате корисником ван тог тока, ради побољшања конзистентности ваше апликације.
SSO User API нуди начин за CRUD операције над објектима које називамо SSOUsers. Ови објекти се разликују од редовних Users и држе се одвојено ради типске сигурности.
Структура SSOUser објекта је следећа:

Наплата за SSO кориснике
SSO корисници се наплаћују различито у зависности од њихових дозвола:
- Редовни SSO корисници: Корисници без админ или модераторских дозвола се наплаћују као редовни SSO корисници
- SSO администратори: Корисници са
isAccountOwnerилиisAdminAdminфлаговима се наплаћују посебно као SSO администратори (иста цена као редовни администратори закупца) - SSO модератори: Корисници са
isCommentModeratorAdminфлагом се наплаћују посебно као SSO модератори (иста цена као редовни модератори)
Важно: Да би се спречило двоструко наплаћивање, систем аутоматски уклања дупликате SSO корисника у односу на редовне tenant кориснике и модераторе по email адреси. Ако SSO корисник има исту email адресу као редовни tenant корисник или модератор, неће бити наплаћени два пута.
Контрола приступа
Корисници се могу груписати у групе. За то служи поље groupIds, и оно је опционo.
@Спомињања
По подразумевaњу, @mentions користе username за претрагу других SSO корисника када се укуца карактер @. Ако је коришћено displayName, резултати који се поклапају са username ће бити занемарени када постоји поклапање за displayName, и резултати претраге за @mention ће користити displayName.
Претплате
У FastComments-у, корисници се могу претплатити на страницу кликом на икону звона у видгету за коментаре и одабиром 'Претплати се'.
Код редовног корисника, шаљемо им мејлове са обавештењима у складу са њиховим подешавањима обавештења.
Код SSO корисника, то је подељено ради назадне компатибилности. Корисници ће добијати додатне мејлове обавештења о претплати само ако поставите optedInSubscriptionNotifications на true.
Значке
Можете доделити значке SSO корисницима користећи својство badgeConfig. Значке су визуелни индикатори који се појављују поред имена корисника у коментарима.
badgeIds- Низ ИД-ова значки које се додељују кориснику. То морају бити валидни ИД-ови значки креирани на вашем FastComments налогу. Ограничено на 30 значки.override- Ако је true, све постојеће значке приказане у коментарима ће бити замењене наведеним. Ако је false или изостављено, наведене значке ће бити додате постојећим значкама.update- Ако је true, приказне особине значки биће ажуриране из конфигурације закупца сваки пут када се корисник пријави.
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 
Ова рута враћа једног SSO корисника на основу њиховог имејла.



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



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

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


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

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


DELETE /api/v1/sso-users/:id 
Ова рута омогућава уклањање једног SSO корисника по његовом id-у.
Имајте у виду да поновно учитавање видгета коментара са payload-ом за овог корисника једноставно ће поново креирати корисника без прекида.
Брисање корисникових коментара је могуће помоћу deleteComments query параметра. Имајте у виду да ако је ово 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 за сам коментар. Ово се може прилагодити преко корисничког интерфејса за прилагођавање видгета.
Примери



Структура претплате 
Objekat Subscription predstavlja pretplatu za korisnika.
Subscription objekti se kreiraju kada korisnik klikne na zvonce za obaveštenja u widgetu za komentare i klikne "Subscribe to this page".
Pretplate se takođe mogu kreirati putem API-ja.
Imanje objekta Subscription uzrokuje kreiranje objekata Notification i slanje emailova kada se ostave novi komentari na korenu povezane stranice za koju je ta 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 koncept web-pristupačne stranice, u kom slučaju jednostavno postavite urlId na id stavke na koju se pretplaćujete (ista vrednost za urlId koju biste prosledili widgetu za komentare).
Struktura za objekat Subscription je sledeća:

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



POST /api/v1/subscriptions 
Овај API крајња тачка омогућава креирање Subscription. Напомена: корисник може имати само једну претплату по страници, јер је више сувишно, и покушај
да креира више од једне претплате за истог корисника на истој страници резултираће грешком.
Креирање претплате ће резултовати креирањем објеката Notification када се остави нови коментар на корену претплаћеног urlId (када је parentId коментара null).



DELETE /api/v1/subscriptions/:id 
Ова рута брише један Subscription објекат по id.



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

GET /api/v1/tenant-daily-usage 
Ова рута омогућава претрагу коришћења tenant-а по години, месецу и дану. Може се вратити до 365 објеката, а трошак је 1 API кредит на сваких 10 објеката.
Објекти одговора су сортирани по датуму када су креирани (најстарији први).



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

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



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

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



POST /api/v1/tenants 
Ovaj ruta omogućava dodavanje jednog Tenant.
Kreiranje Tenant ima sledeća ograničenja:
nameje obavezno.domainConfigurationje obavezno.- Sledeće vrednosti ne smeju biti prosleđene prilikom kreiranja
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDatene sme da bude u budućnosti.namene sme biti duže od200 characters.emailne sme biti duži od300 characters.emailmora biti jedinstven za sve FastComments.com tenante.- Ne možete kreirati tenante ako roditeljski tenant nema definisan validan
TenantPackage.- Ako je vaš tenant kreiran putem FastComments.com, ovo ne bi trebalo da predstavlja problem.
- Ne možete kreirati više tenant-a nego što je definisano u
maxWhiteLabeledTenantsu vašem paketu. - Morate navesti query 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 
Ова рута омогућава уклањање Tenant и свих повезаних података (корисника, коментара итд.) по id.
Постоје следећа ограничења приликом уклањања tenant-ова:
- Tenant мора бити ваш, или white labeled tenant којим управљате.
- Параметар упита
sureмора бити подешен наtrue.



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

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



GET /api/v1/tenant-packages 
Ovaj API koristi paginaciju, koja se obezbeđuje parametrom upita skip. TenantPackages se vraćaju u stranicama po 100, poredane po createdAt i id.
Cena se zasniva na broju vraćenih tenant paketa, koštajući 1 credit per 10 vraćenih tenant paketa.



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



PATCH /api/v1/tenant-packages/:id 
Ovaj API endpoint omogućava ažuriranje TenantPackage pomoću id.
Ažuriranje TenantPackage ima sledeća ograničenja:
- Ako postavite
hasFlexPricingna true, onda su sviflex*parametri obavezni u istom zahtevu. namene može biti duži od50 characters.- Svaka stavka
forWhoTextne može biti duža od200 characters. - Svaka stavka
featureTaglinesne može biti duža od100 characters. TenantPackagemora biti "manji" od nadređenog tenanta. Na primer, svimax*parametri moraju imati niže vrednosti od nadređenog tenanta.- Ne možete promeniti
tenantIdpovezan saTenantPackage.



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



Структура корисника тенанта 
TenantUser definiše User koji je upravljan od strane određenog Tenant. Njihov nalog se u potpunosti nalazi pod kontrolom Tenant sa kojim su povezani, i njihov nalog može biti ažuriran ili izbrisan putem UI ili API.
Tenant korisnici mogu biti administratori sa svim dozvolama i pristupom Tenant, ili mogu biti ograničeni na određene dozvole za moderisanje komentara, pristup API ključevima itd.
Struktura za TenantUser objekat je sledeća:

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



GET /api/v1/tenant-users 
Овај API користи пагинацију, обезбеђену преко skip query параметра. TenantUsers се враћају у страницама по 100, сортирани по signUpDate, username и id.
Трошак зависи од броја враћених TenantUsers: 1 credit per 10 враћених 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 
This route provides the ability to send a login link to a single TenantUser.
Useful when batch creating users and not having to instruct them on how to login to FastComments.com. This will just send them a "magic link" to login that
expires after 30 days.
The following restrictions exist to send a login link to a TenantUser:
- The
TenantUsermust already exist. - You must have access to manage the
TenanttheTenantUserbelongs to.
We can send a login link to a TenantUser as follows:

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


PATCH /api/v1/tenant-users/:id 
Ovaj endpoint pruža mogućnost ažuriranja jednog TenantUser.
Ažuriranje TenantUser ima sledeća ograničenja:
signUpDatene sme biti u budućnosti.localemora biti na listi Podržani lokaliteti.usernamemora biti jedinstveno na celom FastComments.com. Ako je to problem, preporučujemo korišćenje SSO umesto toga.emailmora biti jedinstven na celom FastComments.com. Ako je to problem, preporučujemo korišćenje SSO umesto toga.- Ne možete ažurirati
tenantIdkorisnika.
Možemo ažurirati TenantUser na sledeći način



DELETE /api/v1/tenant-users/:id 
Ова рута омогућава уклањање TenantUser по id.
Брисање корисникових коментара је могуће помоћу query параметра deleteComments. Имајте на уму да ако је ово тачно:
- Сви корисникови коментари биће одмах обрисани.
- Сви 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 за коментар. Ово се може прилагодити преко UI за прилагођавање виџета.
Примери



Структура корисника 
User је објекат који представља најчешћи именитељ свих корисника.
Имајте на уму да у FastComments имамо низ различитих случајева употребе за кориснике:
- Secure SSO
- Simple SSO
- Tenant Users (На пример: 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 
Ова рута враћа једног корисника по ID.



Структура гласа 
Објекат Vote представља глас који је оставио корисник.
Однос између коментара и гласа дефинисан је преко commentId.
Структура објекта Vote је следећа:

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



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


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


POST /api/v1/votes 
Ова рута омогућава додавање једног овлашћеног Vote. Гласови могу бити up (+1) или down (-1).




Крeирање анонимних гласова
Анонимни гласови се могу креирати постављањем anonUserId у query параметрима уместо userId.
Овај id не мора да одговара објекту корисника нигде (отуда анониман). Он је једноставно идентификатор за сесију, тако да можете поново преузети гласове у истој сесији, да бисте проверавали да ли је коментар гласан.
Ако немате такву ствар као „анонимне сесије“ као што FastComments има — можете једноставно поставити ово на случајни ID, као што је UUID (иако ценимо мање идентификаторе ради уштеде простора).
Друге напомене
- Овај API поштује поставке на нивоу tenant-а. На пример, ако онемогућите гласање за одређену страницу, и покушате да креирате глас преко API-ја, то ће не успети са кодом грешке
voting-disabled. - Овај API је подразумевано live.
- Овај API ће ажурирати
votesодговарајућегComment.
DELETE /api/v1/votes/:id 
Ова рута омогућава брисање појединачног Vote.



Напомене:
- Овај API поштује подешавања на нивоу tenant-а. На пример, ако онемогућите гласање за одређену страницу, и покушате да преко API-ја креирате глас, то ће пропасти са кодом грешке
voting-disabled. - Овај API је по подразумеву активан.
- Овај API ће ажурирати
votesодговарајућегComment.
Структура конфигурације домена 
A DomainConfig object represents configuration for a domain for a tenant.
The structure for the DomainConfig object is as follows:


За аутентификацију
Конфигурација домена се користи да одреди који сајтови могу угостити 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 mogu se dohvatiti pomoću odgovarajućeg domain.



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



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



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



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



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

GET /api/v1/question-configs 
Ova ruta vraća do 100 QuestionConfig objekata odjednom, paginirano. Trošak је 1 за svaka 100 objekata. Sortirani su по тексту питања узлазно (question field).



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



POST /api/v1/question-configs 
Овај API ендпоинт омогућава креирање 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 
Ова API крајња тачка омогућава креирање QuestionResult.



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




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



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

Evo parametara upita dostupnih za agregaciju:

Evo primera zahteva:

Primer odgovora:


Napomene o performansama
- Kod promašaja keša (cache miss) agregacije obično traju oko pet sekundi po milionu rezultata.
- U suprotnom, zahtevi su konstantnog vremena.
Napomene o keširanju i troškovima
- Kada je navedeno
forceRecalculate, trošak je uvek10, umesto uobičajenih2. - Ako keš istekne i podaci se ponovo izračunaju, trošak je i dalje konstantan
2akoforceRecalculatenije naveden. Keš ističe na osnovu veličine agregiranog skupa podataka (može varirati između 30 sekundi i 5 minuta). - Ovo služi kao podsticaj za korišćenje keša.
GET /api/v1/question-results-aggregate/combine/comments 
Овде се врши комбиновање резултата са коментарима. Корисно за прављење "недавни позитивни и негативни коментари" графика за производ, на пример.
Можете претраживати по опсегу вредности (укључиво), за једно или више питања, и по почетном датуму (укључиво).
Структура одговора је следећа:

Here are the query parameters available for aggregation:

Here's an example request:

Example response:


Напомене о кеширању и трошковима
- Када је
forceRecalculateназначено, трошак је увек10, уместо уобичајених2. - Ако кеш истекне и подаци се поново израчунају, трошак је и даље константан
2акоforceRecalculateније назначено. - Ово је да подстакне коришћење кеша.
Структура ознаке корисника 
UserBadge је објекат који представља значку додељену кориснику у FastComments систему.
Значке могу бити додељене корисницима аутоматски на основу њихове активности (као што су број коментара, време одговора, статус ветерана) или ручно од стране администратора сајта.
Структура за UserBadge објекат је следећа:

GET /api/v1/user-badges 
Овај крајњи пункт вам омогућава да преузмете значке корисника на основу различитих критеријума.
Пример захтева:
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-у.
Example Request:
Run 
Example Response:

Possible Error Responses:


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

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





PUT /api/v1/user-badges/:id 
Овај endpoint вам омогућава да ажурирате додељивање корисничке ознаке.
Тренутно, једино својство које се може ажурирати је displayedOnComments, које контролише да ли се ознака приказује на коментарима корисника.
Example Request:
Run 
Example Response:

Possible Error Responses:



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

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



Структура напретка ознака корисника 
UserBadgeProgress је објекат који представља напредак корисника ка стицању различитих значки у систему FastComments.
Ово праћење помаже у одређивању када корисници треба да добију аутоматске значке на основу своје активности и учешћа у вашој заједници.
Структура UserBadgeProgress објекта је следећа:

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

Mogući odgovori sa greškom:


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

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


GET /api/v1/user-badge-progress/user/:userId 
Ovaj endpoint вам омогућава да дохватите запис о напретку корисничке значке помоћу њиховог User ID.
Example Request:
Run 
Example Response:

Possible Error Responses:



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