
Језик 🇷🇸 Српски
API ресурси
Агрегације
Аудит логови
Коментари
Шаблони е‑поште
Хеш ознаке
Модератори
Број обавештења
Обавештења
Странице
Текући вебхук догађаји
SSO корисници
Претплате
Дневна употреба станара
Станари
Пакети станара
Корисници станара
Корисници
Гласови
Конфигурације домена
Конфигурације питања
Резултати питања
Агрегација резултата питања
Корисничке значке
Напредак корисничке значке
API-ји за живо коментарисање
FastComments API
FastComments обезбеђује API за рад са бројним ресурсима. Изградите интеграције са нашом платформом, или чак направите сопствене клијенте!
У овој документацији наћи ћете све ресурсе које API подржава, са документацијом о типовима захтева и одговора.
За Enterprise кориснике, сав приступ API-ју се бележи у Audit Log-у.
Генерисани SDK-ови
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 параметра у упиту. Такође ће вам бити потребан ваш tenantId
за позиве API-ја. То можете добити са исте странице као и ваш api key.
Безбедносна напомена
Ове руте су намењене да се позивају са сервера. НЕ ПОЗИВАТЕ их из претраживача. То ће открити ваш API key — ово ће обезбедити пун приступ вашем налогу сваком ко може да види изворни код странице!
Опција аутентикације - Заглавља
- Заглавље:
X-API-KEY - Заглавље:
X-TENANT-ID
Опција аутентикације - Параметри упита
- Параметар упита:
API_KEY - Параметар упита:
tenantId
Читање ваших сопствених уписа
FastComments пружа Active-Active доступност. Захтеви из вашег дата центра се усмеравају на најближу тачку присуства у односу на вашу. Ово је аутоматско, и нормално можете посматрати семантику „čitaj-što-si-napisao“ (read-your-write). Ако желите да будете сигурни да ћете читати своје уписе, можете да закачите (pin) своје захтеве за одређену регију користећи ту регију као њен API host (међутим ово обично није потребно за већину интеграција):
- gdc-oregon.fastcomments.com
- gdc-virginia.fastcomments.com
- gdc-singapore.fastcomments.com
- gdc-falkenstein2.fastcomments.com
- gdc-sao-paulo.fastcomments.com
- eudc-helsinki2.fastcomments.com
- eudc-limburg.fastcomments.com
- eudc-france.fastcomments.com
Имајте на уму да ако то урадите можда ћете желети да дефинишете fallback, јер смо у прошлости застарели entrypoint ноде и користили нова имена за пребацивање.
API ресурси 
Употреба ресурса
Треба напоменути да се преузимање података са API‑ја рачуна као употреба на вашем налогу.
Сваки ресурс ће у свом одељку навести каква је та употреба.
Неки ресурси коштају више за обраду него други. Свака крајња тачка има одређену цену у кредитима по API позиву. За неке крајње тачке, број кредита варира у зависности од опција и величине одговора.
Употребу API‑ја можете проверити на страници Аналитика наплате и она се ажурира сваких неколико минута.
Напомена!
Препоручујемо да прво прочитате документацију о страницама, како би се смањила збрка приликом одређивања које вредности проследити за urlId у Коментар API‑ју.
Агрегирајте ваше податке 
Овај API агрегира документе груписањем (ако је наведен groupBy) и примењивањем више операција. Подржане су различите операције (нпр. sum, countDistinct, avg, итд.).
Трошак је променљив. Сваких 500 скенираних објеката кошта 1 API кредит.
Максимална употреба меморије дозвољена по API позиву подразумевано је 64MB, а подразумевано можете имати само једно агрегирање у исто време. Ако пошаљете више агрегирања истовремено, они ће бити стављени у ред и извршавани редом у којем су послати. Чекајућа агрегирања ће чекати највише 60 секунди, након чега ће захтев истећи. Појединачна агрегирања могу трајати до 5 минута.
Ако имате управљане закупце, можете агрегирати све ресурсе под‑закупца у једном позиву прослеђивањем query параметра parentTenantId.
Примери
Пример: Бројање јединствених


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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

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

Одговор:

Структуре


Следећи ресурси се могу агрегирати:
- AffiliateEvent
- AnonymousVote
- BannedUser
- BatchJob
- BlockedUser
- Comment
- CommentDeleted
- CommentIdToSyncOutbound
- CommentScheduled
- CommentSyncLog
- CustomConfig
- CustomEmailTemplateRenderError
- EmailToSend
- EventLogEntry
- ImportedCommentScheduled
- ModerationGroup
- Moderator
- Page
- PageReact
- PendingVote
- QuestionResult
- SSOUser
- SentEmail
- SpamEvent
- Tenant
- TenantAuditLog
- TenantBadge
- TenantDailyUsage
- TenantInvoiceHistory
- TenantPackage
- User
- UserBadge
- UserBadgeProgress
- UserNotification
- UserSubscription
- UserUsage
- Vote
Структура аудит логова 
А AuditLog је објекат који представља ревидирани догађај за тенанте који имају приступ овој функцији.
Структура објекта 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 нису укључиви.



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

Нека од ових поља су означена као READONLY - они се враћају од стране API-ја али не могу бити подешена.
Структура текста коментара
Коментари се пишу у FastComments формату markdown-а, који је у основи markdown плус традиционални bbcode стил тагова за слике, као што је [img]path[/img].
Текст се чува у два поља. Текст који је унео корисник се чува непромењен у пољу comment. Ово се рендерује и чува у пољу commentHTML.
Дозвољени HTML тагови су b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
Препоручује се рендеровање HTML-а, јер је у питању веома мали подсет HTML-а, те је израда renderer-а прилично једноставна. На пример, постоји више библиотека за React Native и Flutter које могу помоћи у томе
Можете одабрати да рендерујете ненормализовану вредност поља comment. Пример парсера је овде..
Пример парсера се такође може прилагодити да ради са HTML-ом и трансформише HTML тагове у очекиване елементе за рендеровање на вашој платформи.
Означавање
Када су корисници означени у коментару, информација се чува у листи која се зове mentions. Сваки објекат у тој листи има следећу структуру.
Run 
Хаштагови
Када се хаштагови користе и успешно парсују, информација се чува у листи која се зове hashTags. Сваки објекат у тој листи има следећу структуру. Хаштагови се такође могу ручно додати у hashTags низ коментара за претраживање, ако је retain постављен.
Run 
GET /api/v1/comments 
Овај API се користи за добијање коментара за приказ кориснику. На пример, аутоматски филтрира неодобрене или спам коментаре.
Пагинација
Пагинација се може извршити на један од два начина, у зависности од захтева за перформансама и случаја употребе:
- Најбрже: Precalculated Pagination:
- Ово је начин на који FastComments функционише када користите наше унапред изграђене виџете и клијенте.
- Кликом на „next“ једноставно се повећава број странице.
- Ово можете замислити као преузимање из кључ-врједност складишта.
- На овај начин, једноставно дефинишете параметар
pageкоји почиње од0и смер сортирања каоdirection. - Величине страница се могу прилагодити преко правила прилагођавања.
- Најфлексибилније: Flexible Pagination:
- На овај начин можете дефинисати прилагођене параметре
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 позив за коментаре највишег нивоа, а затим паралелне API позиве да добијете коментаре за децу сваког коментара.
- НОВО Од фебруара 2023! Дохватите као дрво користећи
&asTree=true.- Ово можете замислити као
Flexible Pagination as a Tree. - Само коментари највишег нивоа се рачунају у пагинацији.
- Поставите
parentId=nullда започнете дрво од корена (морате поставитиparentId). - Поставите
skipиlimitза пагинацију. - Поставите
asTreeнаtrue. - Трошак кредита се повећава за
2x, јер наш бекенд мора да уради много више посла у овом сценарију. - Поставите
maxTreeDepth,limitChildrenиskipChildrenпо жељи.
- Ово можете замислити као
Објашњење Дрвених Структура
Када се користи asTree, може бити тешко размотрити пагинацију. Ево практичне графике:
Дохватање Коментара у Контексту Корисника
API /comments може да се користи у два контекста, за различите случајеве употребе:
- За враћање коментара сортираних и означених информацијама за изградњу вашег сопственог клијента.
- У овом случају, дефинишите параметар упита
contextUserId.
- У овом случају, дефинишите параметар упита
- За дохватање коментара из вашег бекенда за прилагођене интеграције.
- Платформа ће подразумевано користити ово без
contextUserId.
- Платформа ће подразумевано користити ово без




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

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

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

Сви Параметри Захтева

Одговор

Корисни Савети
URL ID
Вероватно желите да користите API Comment са параметром urlId. Прво можете позвати API Pages да видите како изгледају доступне urlId вредности.
Анонимне Радње
За анонимно коментарисање вероватно желите да проследите anonUserId приликом дохватања коментара, као и приликом означавања и блокирања.
(!) Ово је потребно за многе продавнице апликација јер корисници морају моћи да означе садржај који су створили други корисници, чак и ако нису пријављени. Не испуњавање ове захтева може довести до уклањања ваше апликације из те продавнице.
Коментари Не Се Враћају
Проверите да ли су ваши коментари одобрени и да нису спам.
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. У супротном, морате да се уверите да корисник са овом е-поштом припада вашем tenant-у, иначе ће захтев пропасти. - Ако је циљани коментар закључан (
isLocked: true), захтев се одбија саcode: 'locked'. Прво откључајте коментар, ажурирајте га, а затим га поново закључајте ако желите.



DELETE /api/v1/comments/:id 
Овај API ендпоинт омогућава брисање коментара.
Напомене:
- Овај API може ажурирати коментарски видгет "live" ако је потребно (ово повећава
creditsCostса1на2). - Овај API ће обрисати све подкоментаре.
- Ако је циљани коментар закључан (
isLocked: true), захтев се одбија саcode: 'locked'. Прво откључајте коментар, затим обришите.



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 
Ова рута пружа могућност ажурирања једног HashTag.



POST /api/v1/hash-tags 
Ова рута пружа могућност додавања једног 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 
Овај API користи пагинацију, обезбеђену параметром упита skip. Модератори се враћају у страницама од по 100, поређани по createdAt и id.
Трошак се заснива на броју враћених модератора, при чему кошта 1 кредит по 10 модератора.



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



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

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



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 
Ова рута враћа један NotificationCount по ID‑у корисника. При SSO‑у, ID корисника је у формату <tenant id>:<user id>.
Ако нема непрочитаних обавештења, неће постојати NotificationCount – тако да ћете добити 404.
Ово се разликује од notifications/count по томе што је много брже, али не дозвољава филтрирање.



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 
Ова рута враћа до 30 Notification објеката сортираних по createdAt, најновије прво.
Можете филтрирати по userId. Са SSO, ID корисника је у формату <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 
Овај API крајњи тачка пружа могућност ажурирања Notification по id.
Ажурирање Notification има следећа ограничења:
- Можете ажурирати само следећа поља:
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 неприметно.



Структура текућег вебхук догађаја 
Објекат 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 
Ова рута враћа објекат који садржи број непотврђених webhook догађаја под параметром count.
Можете филтрирати помоћу истих параметара као и /pending-webhook-events крајња тачка



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



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

Фактурисање SSO корисника
SSO корисници се наплаћују различито у зависности од њихових дозвола (флагова):
- Редовни SSO корисници: Корисници без админ или модераторских дозвола се фактуришу као редовни SSO корисници
- SSO админи: Корисници са
isAccountOwnerилиisAdminAdminфлагом се посебно наплаћују као SSO админи (иста стопа као и редовни админи тенанта) - SSO модератори: Корисници са
isCommentModeratorAdminфлагом се посебно наплаћују као SSO модератори (иста стопа као и редовни модератори)
Важно: Да би се спречило двоструко наплаћивање, систем аутоматски уклања дупликате SSO корисника у односу на редовне кориснике тенанта и модераторе по адреси е-поште. Ако SSO корисник има исту е-пошту као редовни корисник тенанта или модератор, неће бити наплаћен два пута.
Контрола приступа
Корисници могу бити распоређени у групе. За то служи поље groupIds, и оно је опционo.
@Mentions
По подразумевано @mentions користи username за претрагу других sso корисника када се укуца @ карактер. Ако се користи displayName, онда ће резултати који се подударају са username бити игнорисани када постоји подударање за displayName, и резултати претраге за @mention ће користити displayName.
Претплате
Са FastComments, корисници се могу претплатити на страницу кликом на икону звона у коментарском видгету и избором Subscribe.
За редовног корисника шаљемо им обавештења путем е-поште на основу њихових подешавања обавештења.
За SSO кориснике, због уназадне компатибилности, ово је подељено. Корисници ће добијати додатне е-поруке о претплати само ако поставите optedInSubscriptionNotifications на true.
Ознаке
Можете доделити ознаке SSO корисницима користећи својство badgeConfig. Ознаке су визуелни индикатори који се појављују поред имена корисника у коментарима.
badgeIds- Низ ID-јева ознака које треба доделити кориснику. Ово су глобалне ознаке видљиве на свим страницама. Морају бити важећи ID-јеви ознака креирани на вашем FastComments налогу. Ограничено на 30 ознака.pageBadgeIds- Опционални низ ID-јева ознака ограничених на текућу страницу (urlId). Ове ознаке се приказују само на страници на којој су додељене. Различите странице могу имати различите страничне ознаке за истог корисника.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
- badges
isDeleted и isDeletedUser се постављају на true.
При рендеровању, видгет коментара ће за име корисника користити DELETED_USER_PLACEHOLDER (подразумевано: "[deleted]") и DELETED_CONTENT_PLACEHOLDER за сам коментар. Ово се може прилагодити преко корисничког интерфејса за прилагођавање видгета.
Примери



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

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 
Ова рута омогућава додавање једног Tenant.
Креирање Tenant-а има следећа ограничења:
- Потребно је
name. - Потребно је
domainConfiguration. - Следеће вредности не смеју бити наведене приликом креирања
Tenant-а:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
signUpDateне сме бити у будућности.nameне сме бити дужи од200 characters.emailне сме бити дужи од300 characters.emailмора бити јединствен међу свим tenant-има на FastComments.com.- Не можете креирати tenant-е ако надређени tenant нема дефинисан валидан
TenantPackage.- Ако је ваш tenant креиран преко FastComments.com, ово не би требало да буде проблем.
- Не можете креирати више tenant-а него што је дефинисано у
maxWhiteLabeledTenantsу вашем пакету. - Морате навести query параметар
tenantIdкоји је ID вашегparent tenant-а са омогућеним white labeling-ом.
Можемо креирати Tenant само са неколико параметара:



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 
Ова рута враћа један Tenant Package по ID-у.



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



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 
Ова API крајња тачка пружа могућност ажурирања TenantPackage по id.
Ажурирање TenantPackage има следећа ограничења:
- Ако постављате
hasFlexPricingна true, онда су свиflex*параметри потребни у истом захтеву. nameне сме бити дужи од50 characters.- Свака ставка
forWhoTextне сме бити дужа од200 characters. - Свака ставка
featureTaglinesне сме бити дужа од100 characters. TenantPackageмора бити „мањи“ од родитељског tenant-а. На пример, свиmax*параметри морају имати нижe вредности од родитељског tenant-а.- Не можете променити
tenantIdповезан саTenantPackage.



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



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

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 
Ова рута омогућава слање везе за пријаву једном 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мора бити у листи Supported Locales.usernameмора бити јединствен на целом FastComments.com. Ако је ово проблем, предлажемо да уместо тога користите SSO.emailмора бити јединствен на целом FastComments.com. Ако је ово проблем, предлажемо да уместо тога користите SSO.- Не можете ажурирати
tenantIdкорисника.
Можемо креирати TenantUser на следећи начин



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
- badges
isDeleted и 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.
Структура конфигурације домена 
Objekat DomainConfig predstavlja konfiguraciju za domen za tenant.
Struktura objekta DomainConfig je sledeća:


За аутентификацију
Konfiguracija domena se koristi за одређивање којих sajtova mogu da hostuju FastComments widget за ваш налог. Ovo је базичан облик аутентификације, што значи да додавање или уклањање било које конфигурације домена може утицати на доступност ваше FastComments инсталације у продукцији.
Ne uklanjajte ili ažurirajte svojство domain objekta Domain Config za domen koji је тренутно у употреби, осим ако не намеравате да онемогућите тај домен.
Ovo ima isto понашање као уклањање домена са /auth/my-account/configure-domains.
Takođe imajte на уму да уклањање домена из My Domains UI ће ukloniti и било коју одговарајућу конфигурацију за тај домен која је можда додата путем тог UI.
За прилагођавање мејлова
Link za odjavu u podnožju mejla, i функција једноклик одјаве коју нуде многи мејл клијенти, могу се конфигурисати путем овог API-ja дефинисањем footerUnsubscribeURL и emailHeaders, респективно.
За DKIM
Након што дефинишете DKIM DNS записе, једноставно ажурирајте DomainConfig са вашом DKIM конфигурацијом користећи дефинисану структуру.
GET /api/v1/domain-configs 
Овај API омогућава преузимање свих DomainConfig објеката за тенанта.



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



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



PATCH /api/v1/domain-configs/:domain 
Ова крајња тачка 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 
Овде се врши агрегирање резултата.
Структура одговора агрегирања је следећа:

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

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

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


Напомене о перформансама
- За пропуст у кешу, агрегирања обично трају пет секунди по милиону резултата.
- У супротном, захтеви су константног времена.
Напомене о кеширању и трошковима
- Када је
forceRecalculateнаведен, трошак је увек10, уместо уобичајеног2. - Ако кеш истекне и подаци се поново израчунају, трошак је и даље константни
2акоforceRecalculateније наведен. Кеш истиче у зависности од величине скупа података који се агрегира (може варирати између 30 секунди и 5 минута). - Ово је да се подстакне коришћење кеша.
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 
Овај крајњи ендпоинт вам омогућава да преузмете записе о напретку корисничких значки на основу разних критеријума.
Пример захтева:
Run 
Можете додати различите параметре упита да бисте филтрирали резултате:
userId- Добијте напредак за одређеног корисникаlimit- Максималан број записа за повратак (подразумевано 30, максимум 200)skip- Број записа које треба прескочити (за пагинацију)
Пример одговора:

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


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 документација детаљна и лака за разумевање. Ако уочите било какве пропусте, обавестите нас у наставку.