FastComments.com

API-ji za živo komentiranje

FastComments API

FastComments ponuja API za interakcijo s številnimi viri. Zgradite integracije z našo platformo ali celo ustvarite svoje odjemalce!

V tej dokumentaciji boste našli vse podprte vire API-ja, dokumentirane z njihovimi tipi zahtevkov in odgovorov.

Za podjetniške stranke je ves dostop do API-ja zabeležen v revizijskem dnevniku.

Generirani SDK-ji

FastComments zdaj generira API specifikacijo iz naše kode (to še ni popolno, vendar vključuje številne API-je).

Imamo tudi SDK-je za priljubljene jezike:

Avtentikacija

API je avtenticiran z posredovanjem vašega api ključa kot glave X-API-KEY ali kot poizvedbeni parameter API_KEY. Prav tako boste potrebovali vaš tenantId za izvajanje API klicev. Ta je mogoče pridobiti na isti strani kot vaš api ključ.

Varnostno opombo

Ti naslovi so namenjeni klicanju s strežnika. NE jih kličite iz brskalnika. To bo razkrilo vaš API ključ – kar bo omogočilo popoln dostop do vašega računa vsakomur, ki lahko vidi izvorno kodo strani!

Možnost avtentikacije ena – Glave

  • Header: X-API-KEY
  • Header: X-TENANT-ID

Možnost avtentikacije dva – Poizvedbeni parametri

  • Query Param: API_KEY
  • Query Param: tenantId

Možnost avtentikacije tri – OAuth Bearer žeton

  • Header: Authorization: Bearer fcat_...

Aplikacije tretjih oseb, kot sta Zapier in odjemalci MCP strežnika, pridobijo žeton prek OAuth namesto API ključa. Ta žeton deluje na vseh končnih točkah tukaj. Najemnik je iz žetona izpeljan, zato je tenantId neobvezen, vendar se mora ujemati z žetonom, če je podan. GET zahteve potrebujejo obseg read, vsaka druga metoda pa obseg write. Celoten potek, vključno z registracijo odjemalca, PKCE, osveževanjem in preklicem, je dokumentiran pod OAuth Authorization. Odkrivanje se začne na https://fastcomments.com/.well-known/oauth-authorization-server.

Branje lastnih zapisov

FastComments zagotavlja Active-Active razpoložljivost. Zahteve iz vašega podatkovnega centra se usmerijo na najbližjo točko prisotnosti do vas. To je samodejno in običajno lahko opazujete semantiko branja po pisanju. Če želite biti prepričani, da preberete svoje zapise, lahko svoje zahteve pripnete na določeno regijo tako, da uporabite to regijo kot svoj API gostitelj (vendar to običajno ni potrebno za večino integracij):

  • 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

Upoštevajte, da če to storite, boste morda želeli določiti nadomestno možnost, saj smo v preteklosti opustili vstopne vozlišča in uporabljamo nova imena za preklop.

Struktura revizijskega dnevnika Internal Link

An AuditLog je objekt, ki predstavlja revizijski dogodek za najemnike, ki imajo dostop do te funkcije.

Struktura objekta AuditLog je naslednja:

Struktura AuditLog
Copy Copy
1
2interface AuditLog {
3 id: string;
4 /** Kdo je izvedel dogodek. **/
5 userId?: string;
6 username?: string;
7 resourceName: string;
8 crudType: 'c' | 'r' | 'u' | 'd' | 'login';
9 from: string;
10 url?: string;
11 ip?: string;
12 /** Brskalnik, ki je izvedel dogodek, ko je prišel iz enega. **/
13 ua?: string;
14 /** Zgoščena vrednost seje, iz katere je prišel dogodek, za povezovanje dejanj ene osebe. Nikoli sama seja. **/
15 sIdHashed?: string;
16 when: string;
17 description?: string;
18 serverStartDate: string;
19 /** ID objekta, na katerem je bil dogodek izveden, v nasprotju s tem, kdo ga je izvedel. **/
20 targetId?: string;
21 /** Človeško berljiva oznaka za ta objekt, npr. "jsmith (jsmith@example.com)". **/
22 targetLabel?: string;
23 objectDetails?: object;
24}
25

targetId in targetLabel opisujeta, na čem je bil dogodek izveden; userId in username opisujeta, kdo ga je izvedel. Za posodobitve objectDetails.changes vsebuje {field: {from, to}} zemljevid tega, kaj se je dejansko spremenilo.

Revizijski dnevnik je nepreminljiv. Prav tako ga ni mogoče ročno zapisati. FastComments.com lahko sam odloči, kdaj zapisati v revizijski dnevnik. Vendar ga lahko preberete prek tega API-ja.

Dogodki v revizijskem dnevniku potečejo po dveh letih.

Struktura paketnih opravil Internal Link

A BatchJob je dolgotrajna naloga, kot je uvoz, izvoz ali migracija strani. Naloge se postavijo v čakalno vrsto, nato se jih prevzame in izvede v ozadju.

processedCount in totalCount prikazujeta napredek. Njuna enota je odvisna od type:

  • migrate-pages: končane migracije, od zahtevanih migracij.
  • undo-page-migration: obnovljeni zapisi. totalCount ne obstaja.
  • import, export in druge naloge: obdelane vrstice.

Struktura objekta BatchJob je naslednja:

Struktura BatchJob
Copy Copy
1
2interface BatchJob {
3 id: string
4 /** Na primer migrate-pages, undo-page-migration, migrate-domains, import, export, users-export ali copy-comments. **/
5 type: string
6 status: 'requested' | 'running' | 'success' | 'failed'
7 createdAt: string
8 completedAt?: string
9 processedCount: number
10 /** Skupno delo, ko je znano vnaprej. **/
11 totalCount?: number
12 /** migrate-pages: en vnos na končano migracijo, v vrstnem redu zahteve. **/
13 pageMigrationResults?: Array<PageMigrationSuccess | PageMigrationFailure>
14 /**
15 * migrate-pages: nastavi se, ko je naloga končana (uspešna ali neuspešna). Posredujte v POST /api/v1/pages/migrations/:undoId/undo v roku 90 dni.
16 * undo-page-migration: migracija, ki se razveljavi.
17 **/
18 undoId?: string
19 /** undo-page-migration: nastavi se, ko je naloga končana. **/
20 pageMigrationUndoResult?: PageMigrationUndoResult
21}
22
23interface PageMigrationSuccess {
24 from: string
25 to: string
26 type: 'urlId' | 'domain'
27 status: 'success'
28 commentsMigrated: number
29}
30
31interface PageMigrationFailure {
32 from: string
33 to: string
34 type: 'urlId' | 'domain'
35 status: 'failed'
36 code: string
37 // (no comment to translate)
38 reason: string // (no comment to translate)
39}
40
41interface PageMigrationUndoResult {
42 /** Zapisi, ki so vrnjeni na svoje vrednosti pred migracijo. **/
43 restored: number
44 /** Zapisi, ki so ostali nespremenjeni, ker so se po migraciji spremenili ali več ne obstajajo. **/
45 skipped: number
46 /** Zapisi, ki so bili izbrisani med združevanjem strani. Ti jih ni mogoče povrniti. **/
47 notRestorable: number
48}
49

Poskusi

Če se strežnik, ki izvaja nalogo migracije strani, ponovno zažene, se naloga vrne v čakalno vrsto in se nadaljuje po zadnji končani migraciji. Naloga se poskusi največ 3‑krat, po čemer je njen status failed.

Struktura komentarja Internal Link

Objekt Comment predstavlja komentar, ki ga je pustil uporabnik.

Razmerje med starševskimi in otroškimi komentarji je določeno prek parentId.

Struktura objekta Comment je naslednja:

Struktura komentarja
Copy Copy
1
2interface Comment {
3 /** SAMO ZA BRANJE: Nastavite na true, če je sistem za zaznavanje neželene pošte označil komentar kot spam. **/
4 aiDeterminedSpam?: boolean
5 /** Ali je komentar odobren za prikaz. Pri shranjevanju komentarja nastavite na true, drugače bo skrit. **/
6 approved?: boolean
7 /** Avatar uporabnika. **/
8 avatarSrc?: string
9 /** Otroški komentarji. Ni vedno napolnjeno v vseh scenarijih. Uporablja se, ko je preko API nastavljen asTree na true. **/
10 children: Comment[]
11 /** Izvirni komentar avtorja. **/
12 comment: string
13 /** SAMO ZA BRANJE: Komentar avtorja pretvorjen v HTML. **/
14 commentHTML?: string
15 /** E-pošta avtorja. Obvezno, če so anonimni komentarji onemogočeni. **/
16 commenterEmail?: string
17 /** Povezava avtorja (na primer njihov blog). **/
18 commenterLink?: string
19 /** Ime avtorja komentarja. Vedno obvezno. Če ni na voljo, nastavite nekaj, na primer "Anonimno". **/
20 commenterName: string
21 /** Datum, ko je bil komentar oddan, v UTC epohi. **/
22 date: number
23 /** Prikazna oznaka za komentar - na primer "Admin", "Moderator", ali nekaj kot "VIP User". **/
24 displayLabel?: string
25 /** Domena, na kateri je bil komentar objavljen. **/
26 domain?: string
27 /** SAMO ZA BRANJE: Številokrat, ko je bil komentar prijavljen. **/
28 flagCount?: number
29 /** Hashtagi, zapisani v komentarju, ki so bili uspešno razčlenjeni. Lahko tudi ročno dodate hashtage za poizvedovanje, vendar se ti ne bodo samodejno prikazali v besedilu komentarja. **/
30 hashTags?: CommentHashTag[]
31 /** SAMO ZA BRANJE: Ali komentar vsebuje slike? **/
32 hasImages?: boolean
33 /** SAMO ZA BRANJE: Ali komentar vsebuje povezave? **/
34 hasLinks?: boolean
35 /** SAMO ZA BRANJE: Unikatni id komentarja. **/
36 id: string
37 /** Samo ob ustvarjanju! Za shranjevanje se zabeleži kot hash. **/
38 ip?: string
39 /** SAMO ZA BRANJE: Ali je trenutni uporabnik blokiral uporabnika, ki je napisal ta komentar? **/
40 isBlocked?: boolean
41 /** SAMO ZA BRANJE: Ali je komentar napisal administrator? Samodejno nastavljeno na podlagi userId. **/
42 isByAdmin?: boolean
43 /** SAMO ZA BRANJE: Ali je komentar napisal moderator? Samodejno nastavljeno na podlagi userId. **/
44 isByModerator?: boolean
45 /** Nastavite na true, če je bil komentar mehko izbrisan (zaradi druge konfiguracije je bilo treba pustiti nadomestni zapis). **/
46 isDeleted?: boolean
47 /** Nastavite na true, če je bil račun uporabnika izbrisan in je bilo treba komentar obdržati. **/
48 isDeletedUser?: boolean
49 /** SAMO ZA BRANJE: Ali ga je trenutno prijavljeni uporabnik (contextUserId) označil? **/
50 isFlagged?: boolean
51 /** Ali je komentar pripet? **/
52 isPinned?: boolean
53 /** Ali je komentar zaklenjen? Če je true, nihče (tudi moderatorji) nanj ne more odgovoriti, urejati ali izbrisati, dokler ni odklenjen. **/
54 isLocked?: boolean
55 /** Ali je komentar spam? **/
56 isSpam?: boolean
57 /** SAMO ZA BRANJE: Ali je komentar ocenjen negativno za trenutnega uporabnika (contextUserId)? **/
58 isVotedDown?: boolean
59 /** SAMO ZA BRANJE: Ali je komentar ocenjen pozitivno za trenutnega uporabnika (contextUserId)? **/
60 isVotedUp?: boolean
61 /** Lokalizacija (locale), v kateri je komentar. Če ni navedena, bo izpeljana iz HTTP glave Accept-Language. **/
62 locale?: 'de_de' | 'en_us' | 'es_es' | 'fr_fr' | 'it_it' | 'ja_jp' | 'ko_kr' | 'pl_pl' | 'pt_br' | 'ru_ru' | 'tr_tr' | 'zh_cn' | 'zh_tw'
63 /** SAMO ZA BRANJE: @omembe, zapisane v komentarju, ki so bile uspešno razčlenjene. **/
64 mentions?: CommentUserMention[]
65 /** Dodatni metapodatki, povezani s komentarjem. **/
66 meta?: Record<string, string | number | boolean>
67 /** Neobvezni seznam id-jev skupin moderiranja, povezanih s tem komentarjem. **/
68 moderationGroupIds?: string[]|null
69 /** SAMO ZA BRANJE: ID objekta glasovanja, ki ustreza glasu trenutnega uporabnika (contextUserId) za ta komentar. **/
70 myVoteId?: string
71 /** Ali so bila za ta komentar poslana obvestila avtorjem komentarjev. Če želite preprečiti pošiljanje obvestil pri uvozih, nastavite to na true. **/
72 notificationSentForParent?: boolean
73 /** Ali so bila za ta komentar poslana obvestila uporabnikom najemnika (tenant). Če želite preprečiti pošiljanje obvestil pri uvozih, nastavite to na true. **/
74 notificationSentForParentTenant?: boolean
75 /** Naslov strani, na kateri je bil ta komentar. **/
76 pageTitle?: string
77 /** Če odgovarjamo na komentar, je to ID komentarja, na katerega odgovarjamo. **/
78 parentId?: string|null
79 /** Ali je komentar označen kot pregledan. **/
80 reviewed: boolean
81 /** ID najemnika (tenant), kateremu komentar pripada. **/
82 tenantId: string
83 /** Uporabnik, ki je napisal komentar. Ustvari se samodejno ob shranjevanju komentarja z imenom/e-pošto. **/
84 userId?: string|null
85 /** URL lokacije, kjer je komentar viden, na primer objava na blogu. **/
86 url: string
87 /** "Očiščena" različica urlId, ki ste ga poslali. Pri shranjevanju določite to polje, ob vračanju komentarja pa bo to polje "očiščeno" in vaša izvirna vrednost premaknjena v "urlIdRaw". **/
88 urlId: string
89 /** SAMO ZA BRANJE: Izvirni urlId, ki ste ga poslali. **/
90 urlIdRaw?: string
91 /** Ali sta uporabnik in ta komentar preverjena? **/
92 verified: boolean
93 /** Število pozitivnih glasov. **/
94 votesUp?: number
95 /** Število negativnih glasov. **/
96 votesDown?: number
97 /** "Karma" komentarja (= pozitivni glasovi - negativni glasovi). **/
98 votes?: number
99}
100

Nekatera od teh polj so označena kot READONLY - vrne jih API, vendar jih ni mogoče nastaviti.

Struktura besedila komentarja

Komentarji so napisani v FastComments različici markdowna, ki je navaden markdown plus tradicionalne oznake v stilu bbcode za slike, na primer [img]path[/img].

Besedilo se shranjuje v dveh poljih. Besedilo, ki ga je vnesel uporabnik, se shrani nespremenjeno v polju comment. To se izriše in shrani v polju commentHTML.

Dovoljene HTML oznake so b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.

Priporočamo, da prikažete HTML, saj gre za zelo majhen podnabor HTML, zato je izdelava rendererja precej enostavna. Na primer, za to obstaja več knjižnic za React Native in Flutter.

Lahko se odločite prikazati ne-normalizirano vrednost polja comment. Primer parserja je tukaj..

Primer parserja je mogoče prilagoditi tudi za delo z HTML in pretvorbo HTML oznak v pričakovane elemente za prikaz na vaši platformi.

Označevanje

Ko so uporabniki označeni v komentarju, se informacije shranijo v seznam z imenom mentions. Vsak objekt v tem seznamu ima naslednjo strukturo.

Objekt omemb komentarja
Copy CopyRun External Link
1
2interface CommentUserMention {
3 /** ID uporabnika. Pri SSO uporabnikih bo temu predhodil vaš tenant id. **/
4 id: string
5 /** Končno besedilo @omenjevalne oznake, vključno z znakom @. **/
6 tag: string
7 /** Izvirno besedilo @omenjevalne oznake, vključno z znakom @. **/
8 rawTag: string
9 /** Kakšne vrste uporabnik je bil označen. user = račun na FastComments.com. sso = SSO uporabnik. **/
10 type: 'user'|'sso'
11 /** Če se uporabnik odjavi od obvestil, bo to kljub temu nastavljeno na true. **/
12 sent: boolean
13}
14

Hashtagi

Ko so hashtagi uporabljeni in uspešno razčlenjeni, se informacije shranijo v seznam z imenom hashTags. Vsak objekt v tem seznamu ima naslednjo strukturo. Hashtage je mogoče tudi ročno dodati v polje hashTags komentarja za poizvedovanje, če je retain nastavljen.

Objekt hashtagov komentarja
Copy CopyRun External Link
1
2interface CommentHashTag {
3 /** ID hashtaga. **/
4 id: string
5 /** Končno besedilo #hashtag oznake, vključno z znakom #. **/
6 tag: string
7 /** Če je hashtag povezan z lastnim URL-jem, bo to definirano. **/
8 url?: string
9 /** Če naj hashtag obdržimo, tudi če ne obstaja v besedilu komentarja, ko je komentar posodobljen. Uporabno za označevanje komentarjev brez spreminjanja besedila komentarja. **/
10 retain?: boolean
11}
12

Struktura e-poštne predloge Internal Link

Objekt EmailTemplate predstavlja konfiguracijo za prilagojen e-poštni predlog za najemnika.

Sistem bo izbral e-poštni predlog na podlagi:

  • Njegovega identifikatorja vrste, imenovanega emailTemplateId. To so konstante.
  • domain. Najprej bomo poskusili najti predlog za domeno, s katero je povezan ustrezni objekt (na primer Comment), in če ujemanja ne najdemo, bomo poiskali predlog, kjer je domain null ali *.

Struktura objekta EmailTemplate je naslednja:

Struktura e-poštnega predloga
Copy Copy
1
2interface EmailTemplate {
3 id: string
4 tenantId: string
5 emailTemplateId: string
6 displayName: string
7 /** SAMO ZA BRANJE **/
8 createdAt: string
9 /** SAMO ZA BRANJE **/
10 updatedAt: string
11 /** SAMO ZA BRANJE **/
12 updatedByUserId: string
13 /** Domena, s katero naj bo predlog povezan. **/
14 domain?: string | '*' | null
15 /** Vsebina e-poštnega predloga v sintaksi EJS. **/
16 ejs: string
17 /** Preslikava prepisanih prevodnih ključev na vrednosti za vsako podprto lokalizacijo. **/
18 translationOverridesByLocale: Record<string, Record<string, string>>
19 /** Objekt, ki predstavlja kontekst za izris predloga. **/
20 testData: object
21}
22

Opombe

  • Veljavne vrednosti emailTemplateId lahko pridobite prek končne točke /definitions.
  • Končna točka /definitions vsebuje tudi privzete prevode in testne podatke.
  • Predlogi se ne bodo shranili, če je struktura ali testni podatki neveljavni.

Struktura objave v viru Internal Link

A FeedPost objekt predstavlja objavo v FastComments viru. Vir je tok objav s svojimi komentarji, prikazan z gradnikom Feed. Vsaka objava ima avtorja, izbirno bogato vsebino, medije in povezave ter jo je mogoče označiti, da se lahko vir filtrira.

Struktura objekta FeedPost je naslednja:

Struktura FeedPost
Copy Copy
1
2interface FeedPost {
3 /** READONLY **/
4 _id: string
5 /** READONLY **/
6 tenantId: string
7 title?: string
8 /** ID FastComments ali SSO uporabnika, ki je napisal objavo. **/
9 fromUserId?: string
10 /** Izpolnjeno iz uporabnika, ko ni nastavljeno. **/
11 fromUserDisplayName?: string | null
12 /** READONLY. Izpolnjeno iz uporabnika. **/
13 fromUserAvatar?: string | null
14 /** Uporabljeno za filtriranje vira. **/
15 tags?: string[]
16 /** Utež za razvrščanje v viru. Višje vrednosti se razvrstijo najprej. **/
17 weight?: number
18 /** Pari ključ/vrednost v prosti obliki za lastno uporabo. **/
19 meta?: Record<string, string>
20 /** Sanitiziran HTML. **/
21 contentHTML?: string
22 media?: FeedPostMediaItem[]
23 links?: FeedPostLink[]
24 /** READONLY **/
25 createdAt: string
26 /** READONLY. Vrsta reakcije za štetje. **/
27 reacts?: Record<string, number>
28 /** READONLY **/
29 commentCount?: number | null
30}
31
32interface FeedPostMediaItem {
33 title?: string
34 /** Kam se medijski element poveže ob kliku. **/
35 linkUrl?: string
36 /** En vnos na vsako izvedbo. Gradnik izbere najboljšo možnost. **/
37 sizes: FeedPostMediaItemAsset[]
38}
39
40interface FeedPostMediaItemAsset {
41 w: number
42 h: number
43 src: string
44}
45
46interface FeedPostLink {
47 /** Besedilo povezave, npr. "Prijavite se zdaj". **/
48 text?: string
49 /** Naslov, prikazan s povezavo. **/
50 title?: string
51 /** Opis, prikazan s povezavo. **/
52 description?: string
53 url?: string
54}
55
  • Nekatera od teh polj so označena z READONLY – ta so vrnjena s strani API, vendar jih ni mogoče nastaviti.
  • Komentarji na objavi so običajni komentarji, katerih urlId je post: sledi ID objave _id. To vrednost uporabite z API-jem za komentarje, da preberete ali ustvarite komentarje na objavi.

Struktura hashtagov Internal Link

Objekt HashTag predstavlja oznako, ki jo lahko pusti uporabnik. HashTags lahko uporabite za povezavo do zunanje vsebine ali za povezovanje povezanih komentarjev.

Struktura objekta HashTag je naslednja:

Struktura HashTag
Copy Copy
1
2interface HashTag {
3 /** Should start with the "#" or desired character. **/
4 tag: string
5 /** An optional URL that the hashtag can point to. Instead of filtering comments by hashtag, the UI will redirect to this upon click. **/
6 url?: string
7 /** READONLY **/
8 createdAt: string
9}
10

Opombe:

  • V nekaterih API končnih točkah boste videli, da je hashtag uporabljen v URL-ju. Ne pozabite na URI-kodirane vrednosti. Na primer, # je treba namesto tega predstaviti kot %23.
  • Nekatera od teh polj so označena kot READONLY - API jih vrne, vendar jih ni mogoče nastaviti.

Struktura števila obvestil Internal Link

Objekt NotificationCount predstavlja število neprebranih obvestil in metapodatke za uporabnika.

Če ni neprebranih obvestil, za uporabnika ne bo NotificationCount.

Objekti NotificationCount se ustvarijo samodejno in jih ni mogoče ustvariti prek API-ja. Prav tako potečejo po enem letu.

Število neprebranih obvestil uporabnika lahko počistite z izbrisom njihovega NotificationCount.

Struktura objekta NotificationCount je naslednja:

Struktura NotificationCount
Copy Copy
1
2interface NotificationCount {
3 id: string // ID uporabnika
4 count: number
5 createdAt: string // niz datuma
6 expireAt: string // niz datuma
7}
8

Struktura obvestila Internal Link

Objekt Notification predstavlja obvestilo za uporabnika.

Objekti Notification se ustvarijo samodejno in jih ni mogoče ustvariti prek API-ja. Prav tako potečejo po enem letu. Obvestil ni mogoče izbrisati. Lahko pa se posodobijo, tako da nastavite viewed na false, in lahko poizvedujete po viewed.

Uporabnik se lahko tudi odjavi od obvestil za določen komentar tako, da v obvestilu nastavi optedOut na true. Ponovno se lahko prijavite tako, da nastavite optedOut na false.

Obstajajo različne vrste obvestil - preverite relatedObjectType in type.

Načini ustvarjanja obvestil so precej prilagodljivi in jih lahko sprožijo številni scenariji (glejte NotificationType).

Trenutno prisotnost Notification ne pomeni nujno, da je bilo ali bi moralo biti poslano e-poštno sporočilo. Namesto tega se obvestila uporabljajo za feed obvestil in sorodne integracije.

Struktura za objekt Notification je naslednja:

Struktura obvestila
Copy Copy
1
2enum NotificationObjectType {
3 Comment = 0,
4 Profile = 1,
5 Tenant = 2
6}
7
8enum NotificationType {
9 /** Če vam je nekdo odgovoril. **/
10 RepliedToMe = 0,
11 /** Če je nekdo odgovoril kjerkoli v niti (tudi otroci otrok) niti, kjer ste komentirali. **/
12 RepliedTransientChild = 1,
13 /** Če je bil vaš komentar podprt z glasom gor (up-voted). **/
14 VotedMyComment = 2,
15 /** Če je na korenu strani, na katero ste naročeni, objavljen nov komentar. **/
16 SubscriptionReplyRoot = 3,
17 /** Če je nekdo komentiral vaš profil. **/
18 CommentedOnProfile = 4,
19 /** Če imate zasebno sporočilo (DM). **/
20 DirectMessage = 5,
21 /** TrialLimits je namenjen samo uporabnikom najemnika. **/
22 TrialLimits = 6,
23 /** Če ste bili omenjeni z @. **/
24 Mentioned = 7
25}
26
27interface Notification {
28 id: string
29 tenantId: string
30 /** Pri SSO je uporabniški id v formatu `<tenant id>:<user id>`. **/
31 userId?: string
32 /** Pri delu s SSO vas zanima samo `userId`. **/
33 anonUserId?: string
34 /** urlId je skoraj vedno določen. To je opcijsko samo za obvestila na ravni najemnika, ki so redka. **/
35 urlId?: string
36 /** URL je predpomnjen za hitro navigacijo do vira obvestila. **/
37 url?: string
38 /** Naslov strani je predpomnjen za hitro branje vira obvestila. **/
39 pageTitle?: string
40 relatedObjectType: NotificationObjectType
41 /** Na primer, id komentarja. **/
42 relatedObjectId: string
43 viewed: boolean
44 createdAt: string // niz datuma
45 type: NotificationType
46 fromCommentId?: string
47 fromVoteId?: string
48 /** fromUserName and fromUserAvatarSrc so tukaj predpomnjena za hitro prikazovanje obvestila. Posodobita se, ko se uporabnik posodobi. **/
49 fromUserName: string
50 fromUserId: string
51 fromUserAvatarSrc?: string
52 /** Nastavite to na true, da prenehate prejemati obvestila za ta objekt. **/
53 optedOut?: boolean
54}
55

Struktura strani Internal Link

Objekt Page predstavlja stran, kateremu lahko pripada več komentarjev. Ta povezava je določena z urlId.

Objekt Page hrani informacije, kot so naslov strani, število komentarjev in urlId.

Struktura objekta Page je naslednja:

Struktura strani
Copy Copy
1
2interface Page {
3 id: string
4 urlId: string
5 url: string
6 title?: string
7 createdAt: string
8 commentCount: number
9 rootCommentCount: number
10 /** Nastavitev na null pomeni, da lahko stran vidijo vsi SSO uporabniki. Prazen seznam pomeni, da je zaprt za vse uporabnike. **/
11 accessibleByGroupIds?: string[] | null
12 /** Je ta stran zaprta za nove komentarje? **/
13 isClosed?: boolean
14}
15

Struktura ankete Internal Link

Poll je pripet komentarju, namesto da bi bil samostojen objekt. Ustvari se skupaj s komentarjem (glej POST /api/v1/comments) ali pa se kasneje doda obstoječemu komentarju z PUT /api/v1/polls/:commentId.

Števci glasov se hranijo na sami anketi, zato branje ankete da rezultate brez seštevanja. Posamezni glasovi za temi števci so objekti PollVote.

Vsaka možnost ima id, ki se generira ob ustvarjanju ankete. Ta id uporabite za oddajo glasu, za preimenovanje možnosti in za ohranitev možnosti (in njenih glasov), ko anketo PUT-ate z dodanimi ali odstranjenimi možnostmi. To je edini varen način sklicevanja na možnost - nikoli njen položaj na seznamu.

Struktura ankete
Copy Copy
1
2interface CommentPollOption {
3 id: string
4 label: string
5 votes: number
6}
7
8interface CommentPoll {
9 question: string
10 options: CommentPollOption[]
11 totalVotes: number
12 /** Ko je nastavljeno in v preteklosti, je anketa zaprta in ne sprejema več glasov. **/
13 closesAt?: string | null
14 /** 0 anonimno (privzeto), 1 administratorji in moderatorji, 2 vsi. Odsotnost pomeni anonimno. **/
15 privacy?: 0 | 1 | 2 | null
16 /** Ko je true, so števci skriti vsem, ki še niso glasovali. Odsotnost pomeni false. **/
17 requireVoteToSeeResults?: boolean | null
18}
19

Omejitve

  • Vprašanje je obvezno in ima največ 200 znakov.
  • Anketa ima od 2 do 10 možnosti.
  • Oznaka možnosti je obvezna, ima največ 100 znakov in mora biti znotraj ankete edinstvena (ne glede na velikost črk).
  • closesAt mora biti v prihodnosti ob ustvarjanju ankete. Za takojšnje zaprtje ankete jo PATCH-ajte z datumom v preteklosti.

Nastavitve strani

Ankete upoštevajo konfiguracijo vaše strani, ki jo lahko spremenite pod Customize Widget:

  • Ankete morajo biti omogočene, preden lahko ustvarite anketo, sicer API odgovori z polls-disabled.
  • Glasovanje je lahko omejeno na prijavljene uporabnike, v tem primeru je glas, poslan samo z anonUserId, zavrnjen z poll-login-required.

Struktura glasovanja v anketi Internal Link

A PollVote je odgovor ene osebe na anketo. Števci, prikazani na sami anketi, so usklajeni s temi, zato jih potrebujete le, ko želite vedeti kdo je glasoval za kaj, namesto skupnih rezultatov.

Glasovalec ima največ en glas na anketo. Ponovno glasovanje premakne njihov obstoječi glas na novo možnost namesto, da bi dodal drugi glas, in updatedAt beleži, kdaj se je to zgodilo.

voterId je userId, ko je bil glasovalec prijavljen, sicer je anonUserId.

Struktura PollVote
Copy Copy
1
2interface PollVote {
3 id: string
4 tenantId: string
5 commentId: string
6 urlId: string
7 /** userId, ko je bil glasovalec prijavljen, sicer anonUserId. **/
8 voterId: string
9 optionId: string
10 createdAt: string
11 /** Kdaj je glasovalec zadnjič premaknil svoj glas na drugo možnost. **/
12 updatedAt?: string
13}
14

Privacy

Nastavitev privacy ankete velja za ta API na enak način kot v pripomočku za komentarje:

  • Anonymous (privzeto): nihče ne more videti, kako je kdo glasoval, zato glasov ni mogoče prebrati. GET /api/v1/poll-votes in GET /api/v1/poll-votes/:id odgovarjata z poll-anonymous. Števci ankete so še vedno na voljo prek GET /api/v1/polls/:commentId.
  • Admins and moderators: vaš API ključ pripada skrbniku vašega spletnega mesta, zato lahko bere glasove.
  • Everyone: glasove je mogoče prebrati.

Zasebnost ankete je mogoče zožiti, vendar ne razširiti, ko ima glasove.

Struktura čakajočih webhook dogodkov Internal Link

Objekt PendingWebhookEvent predstavlja webhook dogodek v čakalni vrsti.

Objekti PendingWebhookEvent se ustvarijo samodejno in jih ni mogoče ročno ustvariti prek API. Potečejo tudi po enem letu. Lahko jih izbrišete, kar odstrani nalogo iz vrste.

Obstajajo različne vrste dogodkov - preverite eventType (OutboundSyncEventType) in type (OutboundSyncType).

Pogost primer uporabe tega API-ja je implementacija prilagojenega nadzora. Morda boste želeli občasno klicati /count končno točko za poizvedovanje o številu nerešenih primerov za določene filtre.

Struktura objekta PendingWebhookEvent je naslednja:

Struktura PendingWebhookEvent
Copy Copy
1
2enum OutboundSyncEventType {
3 Create: 0,
4 Delete: 1,
5 Update: 2
6}
7
8enum OutboundSyncType {
9 /** Naloga sinhronizacije specifična za WordPress. **/
10 WP: 0,
11 Webhook: 1
12}
13
14interface PendingWebhookEvent {
15 id: string
16 /** ID komentarja, povezanega z dogodkom. **/
17 commentId: string
18 /** Objekt komentarja za dogodek ob času dogodka. Začeli smo jih dodajati novembra 2023. **/
19 comment: Comment
20 /** Zunanji ID, ki je lahko povezan s komentarjem. **/
21 externalId: string | null
22 createdAt: Date
23 tenantId: string
24 attemptCount: number
25 /** Nastavljeno pred prvim poskusom in po vsaki napaki. **/
26 nextAttemptAt: Date
27 /** Ali gre za dogodek ustvarjanja, brisanja ali posodobitve... **/
28 eventType: OutboundSyncEventType
29 /** Vrsta sinhronizacije, ki jo je treba izvesti (WordPress, klic API, itd.). **/
30 type: OutboundSyncType
31 /** Domena, ki se je ujemala s komentarjem. To domeno uporabimo za izbiro API ključa. **/
32 domain: string
33 /** Zadnja nastala napaka. Ta tip ni tipiziran in je "dump" tega, kar se je zgodilo. Običajno vsebuje objekt s statusCode, body, in mapo headers. **/
34 lastError: object | null
35}
36

Struktura SSO uporabnika Internal Link

FastComments ponuja preprosto rešitev SSO za uporabo. Posodobitev informacij o uporabniku s HMAC-based integracijo je tako preprosta, da uporabnik naloži stran s posodobljenim payloadom.

Vendar je lahko zaželeno upravljati uporabnika zunaj tega toka, da izboljšate doslednost vaše aplikacije.

SSO User API omogoča CRUD operacije nad objekti, ki jih imenujemo SSOUsers. Ti objekti so drugačni od običajnih Users in so ločeni zaradi varnosti tipov.

Struktura objekta SSOUser je naslednja:

Struktura SSOUser
Copy Copy
1
2interface SSOUser {
3 id: string
4 username: string
5 email?: string
6 websiteUrl?: string
7 signUpDate: number
8 createdFromUrlId?: string
9 loginCount?: number
10 avatarSrc?: string
11 optedInNotifications?: boolean
12 optedInSubscriptionNotifications?: boolean
13 displayLabel?: string
14 displayName?: string
15 isAccountOwner?: boolean // Admin permission - SSO users with this flag are billed as SSO Admins (separate from regular SSO users)
16 isAdminAdmin?: boolean // Admin permission - SSO users with this flag are billed as SSO Admins (separate from regular SSO users)
17 isCommentModeratorAdmin?: boolean // Moderator permission - SSO users with this flag are billed as SSO Moderators (separate from regular SSO users)
18 /** If null, Access Control will not be applied to the user. If an empty list, this user will not be able to see any pages or @mention other users. **/
19 groupIds?: string[] | null
20 createdFromSimpleSSO?: boolean
21 /** Don't let other users see this user's activity, including comments, on their profile. Default is true to provide secure profiles by default. **/
22 isProfileActivityPrivate?: boolean
23 /** Don't let other users leave comments on the user's profile, or see existing profile comments. Default false. **/
24 isProfileCommentsPrivate?: boolean
25 /** Don't let other users send direct messages to this user. Default false. **/
26 isProfileDMDisabled?: boolean
27 karma?: number
28 /** Optional configuration for user badges. **/
29 badgeConfig?: {
30 /** Array of badge IDs to assign to the user. Limited to 30 badges. Order is respected. These are global badges visible on all pages. **/
31 badgeIds: string[]
32 /** Array of badge IDs scoped to the current page (urlId). These badges are only displayed on the page where they were assigned. **/
33 pageBadgeIds?: string[]
34 /** If true, replaces all existing displayed badges with the provided ones. Global and page-scoped badges are overridden independently. If false, adds to existing badges. **/
35 override?: boolean
36 /** If true, updates badge display properties from tenant configuration. **/
37 update?: boolean
38 }
39}
40

Obračavanje SSO uporabnikov

SSO uporabniki se obračunavajo različno glede na njihove zastavice dovoljenj:

  • Običajni SSO uporabniki: Uporabniki brez admin ali moderator dovoljenj se obračunajo kot običajni SSO uporabniki
  • SSO Admini: Uporabniki z zastavicama isAccountOwner ali isAdminAdmin se obračunajo ločeno kot SSO Admini (ista cena kot običajni admini najemnika)
  • SSO Moderatorji: Uporabniki z zastavico isCommentModeratorAdmin se obračunajo ločeno kot SSO Moderatorji (ista cena kot običajni moderatorji)

Pomembno: Za preprečevanje dvojnega obračunavanja sistem samodejno odstrani dvojnike SSO uporabnikov glede na običajne uporabnike in moderatorje najemnika po e-poštnem naslovu. Če ima SSO uporabnik isti e-poštni naslov kot običajni uporabnik ali moderator najemnika, ne bo obračunan dvakrat.

Nadzor dostopa

Uporabnike je mogoče razdeliti v skupine. Za to je namenjeno polje groupIds, ki je neobvezno.

@Omembe

Privzeto @mentions uporabijo username za iskanje drugih sso uporabnikov, ko je vnesen znak @. Če je uporabljen displayName, bodo rezultati, ki se ujemajo z username, prezrti, ko obstaja ujemanje za displayName, rezultati iskanja @mention pa bodo uporabili displayName.

Naročnine

S FastComments se uporabniki lahko naročijo na stran s klikom na ikono zvončka v pripomočku za komentarje in klikom na Naroči se.

Pri običajnem uporabniku jim pošiljamo obvestilne e-pošte na podlagi njihovih nastavitev obvestil.

Pri SSO uporabnikih smo to razdelili zaradi združljivosti za nazaj. Uporabniki bodo prejeli te dodatne obvestilne e-pošte o naročnini samo, če nastavite optedInSubscriptionNotifications na true.

Značke

SSO uporabnikom lahko dodelite značke z lastnostjo badgeConfig. Značke so vizualni kazalniki, ki se prikažejo poleg imena uporabnika v komentarjih.

  • badgeIds - Polje ID-jev značk za dodelitev uporabniku. To so globalne značke, vidne na vseh straneh. Morajo biti veljavni ID-ji značk, ustvarjenih v vašem FastComments računu. Omejeno na 30 značk.
  • pageBadgeIds - Neobvezno polje ID-jev značk, obseženih na trenutno stran (urlId). Te značke so prikazane samo na strani, kjer so bile dodeljene. Različne strani lahko imajo različne značke obsežene na stran za istega uporabnika.
  • override - Če je true, bodo vse obstoječe prikazane značke zamenjane s podanimi. Globalne in na stran obsežene značke so preglasene neodvisno — preglaševanje globalnih značk ne vpliva na značke obsežene na stran in obratno. Če je false ali izpuščeno, bodo podane značke dodane obstoječim značkam.
  • update - Če je true, bodo lastnosti prikaza značk posodobljene iz konfiguracije najemnika vsakič, ko se uporabnik prijavi.

Struktura naročnine Internal Link

Objekt Subscription predstavlja naročnino za uporabnika.

Subscription objekti se ustvarijo, ko uporabnik klikne zvonček za obvestila v pripomočku za komentarje in izbere "Naroči se na to stran".

Naročnine je mogoče ustvariti tudi prek API-ja.

Prisotnost objekta Subscription povzroči ustvarjanje objektov Notification in pošiljanje e-poštnih sporočil, ko so na korenu povezane strani za katero je Subscription, objavljeni novi komentarji. Pošiljanje e-pošte je odvisno od tipa uporabnika. Pri običajnih uporabnikih to določa optedInNotifications. Pri SSO uporabnikih to določa optedInSubscriptionNotifications. Upoštevajte, da nekateri programi morda nimajo koncepta spletno dostopne strani, v tem primeru preprosto nastavite urlId na id elementa, na katerega se naročate (isto vrednost za urlId, ki bi jo posredovali v pripomoček za komentarje).

Struktura objekta Subscription je naslednja:

Struktura objekta Subscription
Copy Copy
1
2interface Subscription {
3 id: string
4 tenantId: string
5 /** Pri SSO je uporabniški id v formatu `<tenant id>:<user id>`. **/
6 userId: string
7 anonUserId?: string
8 urlId: string
9 url?: string
10 pageTitle?: string
11 createdAt: string // niz datuma
12}
13

Struktura dnevne uporabe najemnika Internal Link

Objekt TenantDailyUsage predstavlja porabo za najemnika na določen dan. Če ni bilo dejavnosti za določenega najemnika na določen dan, ta dan ne bo imel objekta TenantDailyUsage.

Objekt TenantDailyUsage ni v realnem času in je lahko za dejansko porabo zamaknjen za nekaj minut.

Struktura objekta TenantDailyUsage je naslednja:

Struktura objekta TenantDailyUsage
Copy Copy
1
2export interface TenantDailyUsage {
3 yearNumber: number
4 monthNumber: number
5 dayNumber: number
6 commentFetchCount?: number
7 commentCreateCount?: number
8 conversationCreateCount?: number
9 voteCount?: number
10 accountCreatedCount?: number
11 userMentionSearch?: number
12 hashTagSearch?: number
13 gifSearchTrending?: number
14 gifSearch?: number
15 apiCreditsUsed?: number
16 createdAt: string
17 billed: boolean
18 /** Prezrto pri obračunu. **/
19 ignored: boolean
20}
21

Struktura najemnika Internal Link

Tenant predstavlja stranko FastComments.com. Ustvarijo jih lahko preko API-ja najemniki z dostopom za white-labeling. Najemniki z white-labelingom ne morejo ustvarjati drugih najemnikov z white-labelingom (dovoljena je le ena raven gnezdenja).

Struktura objekta Tenant je naslednja:

Struktura objekta `Tenant`
Copy Copy
1
2export enum SiteType {
3 Unknown = 0,
4 WordPress = 1
5}
6
7/** To je mogoče tudi upravljati preko DomainConfig API-ja. **/
8export interface TenantDomainConfig {
9 domain: string
10 emailFromName?: string
11 emailFromEmail?: string
12 createdAt?: string,
13 siteType?: FastCommentsSiteType, // verjetno želite Unknown
14 logoSrc?: string, // neobdelana pot do slike
15 logoSrc100px?: string, // spremenjeno za sličice
16 footerUnsubscribeURL?: string,
17 emailHeaders?: Record<string, string>,
18 disableUnsubscribeLinks?: boolean,
19 dkim?: {
20 domainName: string,
21 keySelector: string,
22 privateKey: string
23 }
24}
25
26export interface TenantBillingInfo {
27 name: string
28 address: string
29 city: string
30 state: string
31 zip: string
32 country: string
33}
34
35export enum TenantPaymentFrequency {
36 Monthly = 0,
37 Annually = 1
38}
39
40export interface Tenant {
41 id: string
42 name: string
43 email?: string
44 signUpDate: number; // number zaradi "legacy" razlogov
45 packageId?: string | null
46 paymentFrequency?: TenantPaymentFrequency
47 billingInfoValid?: boolean
48 billingHandledExternally?: boolean
49 createdBy?: string
50 isSetup?: boolean
51 domainConfiguration: FastCommentsAPITenantDomainConfig[]
52 billingInfo?: FastCommentsAPITenantBillingInfo
53 stripeCustomerId?: string
54 stripeSubscriptionId?: string
55 stripePlanId?: string
56 enableProfanityFilter?: boolean
57 enableSpamFilter?: boolean
58 lastBillingIssueReminderDate?: string
59 removeUnverifiedComments?: boolean
60 unverifiedCommentsTTLms?: number
61 commentsRequireApproval?: boolean
62 autoApproveCommentOnVerification?: boolean
63 sendProfaneToSpam?: boolean
64 /** @readonly - Izračunano glede na packageId. **/
65 hasFlexPricing?: boolean
66 /** @readonly **/
67 flexLastBilledAmount?: number
68 /** @readonly - Izračunano glede na packageId. **/
69 hasAuditing?: boolean
70 /** Z najemnikom lahko shranite par ključ-vrednost, ki ga lahko uporabite za poizvedovanje. Ključi ne smejo vsebovati "." ali "$", niti biti daljši od 100 znakov. Vrednosti ne smejo biti daljše od 2k znakov. **/
71 meta?: Record<string, string | null>
72}
73

Struktura uporabnika Internal Link

User je objekt, ki predstavlja najpogostejši skupni imenovalec vseh uporabnikov.

Upoštevajte, da imamo pri FastComments več različnih primerov uporabe uporabnikov:

  • Secure SSO
  • Simple SSO
  • Uporabniki najemnika (na primer: skrbniki)
  • Komentatorji

Ta API je namenjen Komentatorjem in uporabnikom, ustvarjenim z Simple SSO. Praktično vsak uporabnik, ustvarjen prek vaše strani, je dostopen preko tega API-ja. Uporabniki najemnika so prav tako dostopni na ta način, vendar boste več informacij dobili pri interakciji z API-jem /tenant-users/.

Za Secure SSO uporabite API /sso-users/.

Te vrste uporabnikov ne morete posodobiti. Ustvarili so svoj račun preko vaše strani, zato nudimo osnovni dostop samo za branje, vendar ne morete narediti sprememb. Če želite imeti takšen potek, morate nastaviti Secure SSO.

Struktura objekta User je naslednja:

Struktura uporabnika
Copy Copy
1
2export interface User {
3 /** To je tudi id, uporabljen kot userId na objektih komentarjev. **/
4 id: string
5 username: string
6 /** Na primer, povezava do bloga komentatorja. **/
7 websiteUrl?: string
8 email: string
9 signUpDate: number
10 createdFromUrlId: string
11 createdFromTenantId: string
12 avatarSrc?: string
13 locale: FastCommentsLocale
14 displayLabel?: string
15 karma?: number
16}
17

Struktura glasovanja Internal Link

Objekt Vote predstavlja glas, ki ga je oddal uporabnik.

Razmerje med komentarji in glasovi je določeno preko commentId.

Struktura za objekt Vote je naslednja:

Struktura glasovanja
Copy Copy
1
2interface Vote {
3 id: string
4 urlId: string
5 commentId: string
6 userId: string
7 direction: 1 | -1
8 createdAt: string
9}
10

Struktura konfiguracije vprašanja Internal Link

FastComments nudi način za sestavljanje vprašanj in združevanje njihovih rezultatov. Primer vprašanja (v nadaljevanju imenovan QuestionConfig) je lahko ocena z zvezdicami, drsnik ali NPS vprašanje (določeno z type).

Podatke o vprašanjih je mogoče združevati posamično, skupaj, skozi čas, na splošno, po strani itd.

Okvir ima vse zmogljivosti, potrebne za izdelavo odjemalskih vtičnikov (z vašim strežnikom pred tem API-jem), nadzornih plošč za skrbnike in orodij za poročanje.

Najprej moramo definirati QuestionConfig. Struktura je naslednja:

Struktura QuestionConfig
Copy Copy
1
2type QuestionConfigType = 'nps' | 'slider' | 'star' | 'thumbs';
3
4interface QuestionConfig {
5 id: string
6 tenantId: string
7 name: string
8 question: string
9 helpText?: string
10 createdAt: string
11 createdBy: string
12 /** SAMO ZA BRANJE - poveča se za vsak nov odgovor. **/
13 usedCount: number
14 /** Niz datuma, kdaj je bila konfiguracija nazadnje uporabljena (ko je bil oddan rezultat). **/
15 lastUsed?: string
16 type: QuestionConfigType
17 numStars?: number
18 min?: number
19 max?: number
20 defaultValue?: number
21 labelNegative?: string
22 labelPositive?: string
23 subQuestionIds?: string[]
24 alwaysShowSubQuestions?: boolean
25 reportingOrder: number
26}
27

Struktura rezultata vprašanja Internal Link

Da shranite rezultate za vprašanja, ustvarite QuestionResult. Nato lahko združite rezultate vprašanj in jih povežete s komentarji za namene poročanja.

Struktura QuestionResult
Copy Copy
1
2interface QuestionResultMeta {
3 name: string
4 values: string[]
5}
6
7interface QuestionResult {
8 id: string
9 tenantId: string
10 urlId: string
11 anonUserId?: string
12 userId?: string
13 createdAt?: string
14 value: number
15 commentId?: string
16 questionId: string
17 meta?: QuestionResultMeta[]
18}
19

Struktura značke uporabnika Internal Link

UserBadge je objekt, ki predstavlja značko dodeljeno uporabniku v sistemu FastComments.

Značke se lahko dodelijo uporabnikom samodejno, glede na njihovo dejavnost (na primer število komentarjev, čas odgovora, status veterana) ali ročno s strani skrbnikov spletnega mesta.

Struktura objekta UserBadge je naslednja:

Struktura objekta UserBadge
Copy Copy
1
2export interface UserBadge {
3 /** Enolični identifikator te dodelitve značke uporabnika */
4 id: string
5 /** ID uporabnika, kateremu je ta značka dodeljena */
6 userId: string
7 /** ID definicije značke iz kataloga značk najemnika */
8 badgeId: string
9 /** ID najemnika, ki je ustvaril/dodelil to značko */
10 fromTenantId: string
11 /** Kdaj je bila ta značka ustvarjena (milisekunde od Unixove epohe) */
12 createdAt?: number
13 /** Kdaj je uporabnik prejel to značko (milisekunde od Unixove epohe) */
14 receivedAt?: number
15 /**
16 * Vrsta značke:
17 * 0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, 3=CommentsPinned,
18 * 4=Veteran, 5=NightOwl, 6=FastReplyTime, 7=ModeratorCommentsDeleted,
19 * 8=ModeratorCommentsApproved, 9=ModeratorCommentsUnapproved, 10=ModeratorCommentsReviewed,
20 * 11=ModeratorCommentsMarkedSpam, 12=ModeratorCommentsMarkedNotSpam, 13=RepliedToSpecificPage,
21 * 14=Manual
22 */
23 type: number
24 /** Za značke, ki temeljijo na pragu, vrednost praga */
25 threshold?: number
26 /** Ime/označba značke */
27 name?: string
28 /** Podroben opis značke */
29 description?: string
30 /** Besedilo, prikazano na znački */
31 displayLabel?: string
32 /** URL do slike, prikazane na znački */
33 displaySrc?: string
34 /** Barva ozadja značke (heksadecimalna koda) */
35 backgroundColor?: string
36 /** Barva obrobe značke (heksadecimalna koda) */
37 borderColor?: string
38 /** Barva besedila značke (heksadecimalna koda) */
39 textColor?: string
40 /** Dodatni CSS razred za stiliziranje */
41 cssClass?: string
42 /** Za veteranske značke, časovni prag v milisekundah */
43 veteranUserThresholdMillis?: number
44 /** Ali je ta značka prikazana na uporabnikovih komentarjih */
45 displayedOnComments: boolean
46 /** Vrstni red prikaza značke */
47 order?: number
48 /** Če je nastavljeno, je ta značka prikazana samo na strani z ustreznim urlId. Null za globalne značke. */
49 urlId?: string | null
50}
51

Struktura napredka značke uporabnika Internal Link

UserBadgeProgress je objekt, ki predstavlja napredek uporabnika pri pridobivanju različnih značk v sistemu FastComments.

To sledenje pomaga določiti, kdaj naj uporabniki prejmejo samodejne značke glede na njihovo dejavnost in sodelovanje v vaši skupnosti.

Struktura objekta UserBadgeProgress je naslednja:

Struktura UserBadgeProgress
Copy Copy
1
2export interface UserBadgeProgress {
3 /** Enolični identifikator tega zapisa o napredku */
4 id: string
5 /** ID najemnika, kateremu pripada ta zapis o napredku */
6 tenantId: string
7 /** ID uporabnika, katerega ta zapis o napredku spremlja */
8 userId: string
9 /** ID prvega komentarja uporabnika v sistemu */
10 firstCommentId?: string
11 /** Datum prvega komentarja uporabnika (milisekunde od epohe) */
12 firstCommentDate?: number
13 /** Samodejno izračunan faktor zaupanja na podlagi dejavnosti uporabnika */
14 autoTrustFactor?: number
15 /** Ročno nastavljen faktor zaupanja s strani skrbnikov */
16 manualTrustFactor?: number
17 /** Podroben objekt napredka z različnimi metrikami, ključi ustrezajo BadgeType enum */
18 progress: {
19 /** 0: CommentCount - Število komentarjev, ki jih je uporabnik napisal */
20 '0'?: number
21 /** 1: CommentUpVotes - Število všečkov, ki jih je uporabnik prejel */
22 '1'?: number
23 /** 2: CommentReplies - Število odgovorov, ki jih je uporabnik napisal */
24 '2'?: number
25 /** 3: CommentsPinned - Število pripetih komentarjev, ki jih ima uporabnik */
26 '3'?: number
27 /** 4: Veteran - Starost uporabniškega računa */
28 '4'?: number
29 /** 5: NightOwl - Število objav uporabnika med nočnimi urami */
30 '5'?: number
31 /** 6: FastReplyTime - Povprečni čas odgovora v milisekundah */
32 '6'?: number
33 /** 7: ModeratorCommentsDeleted - Za moderatorjske značke, število izbrisanih komentarjev */
34 '7'?: number
35 /** 8: ModeratorCommentsApproved - Za moderatorjske značke, število odobrenih komentarjev */
36 '8'?: number
37 /** 9: ModeratorCommentsUnapproved - Za moderatorjske značke, število neodobrenih komentarjev */
38 '9'?: number
39 /** 10: ModeratorCommentsReviewed - Za moderatorjske značke, število pregledanih komentarjev */
40 '10'?: number
41 /** 11: ModeratorCommentsMarkedSpam - Za moderatorjske značke, število komentarjev označenih kot spam */
42 '11'?: number
43 /** 12: ModeratorCommentsMarkedNotSpam - Za moderatorjske značke, število komentarjev označenih kot ne-spam */
44 '12'?: number
45 /** 13: RepliedToSpecificPage - Za vsako stran, število odgovorov */
46 '13'?: Record<string, number>
47 }
48}
49

Zaključek

Upamo, da se vam je naša dokumentacija API zdela izčrpna in enostavna za razumevanje. Če opazite kakšne vrzeli, nam jih sporočite spodaj.