
Dil 🇹🇷 Türkçe
API Kaynakları
Kimlik Doğrulama
Toplamalar
Denetim Kayıtları
Yorumlar
E-posta Şablonları
Akış Gönderileri
Etiketler
Ben
Moderatörler
Bildirim Sayısı
Bildirimler
Sayfa Tepkileri
Sayfalar
Anketler
Anket Oyları
Bekleyen Webhook Olayları
SSO Kullanıcıları
Abonelikler
Kiracı Günlük Kullanımı
Kiracılar
Kiracı Paketleri
Kiracı Kullanıcıları
Kullanıcılar
Oylar
Alan Adı Yapılandırmaları
Soru Yapılandırmaları
Soru Sonuçları
Soru Sonuçları Toplaması
Kullanıcı Rozetleri
Kullanıcı Rozet İlerlemesi
Canlı Yorum API'leri
FastComments API'si
FastComments, birçok kaynakla etkileşim kurmak için bir API sağlar. Platformumuzla entegrasyonlar oluşturabilir ya da hatta kendi istemcilerinizi geliştirebilirsiniz!
Bu belgede, API tarafından desteklenen tüm kaynakları, istek ve yanıt türleriyle birlikte bulacaksınız.
Kurumsal müşteriler için, tüm API erişimleri Denetim Günlüğü'nde kaydedilir.
Oluşturulan SDK'lar
FastComments artık kodumuzdan bir API Spec oluşturuyor (bu henüz tam değil, ancak birçok API'yi içeriyor).
Ayrıca popüler diller için SDK'larımız da var:
- fastcomments-cpp
- fastcomments-go
- fastcomments-java
- fastcomments-sdk-js
- fastcomments-nim
- fastcomments-php
- fastcomments-php-sso
- fastcomments-python
- fastcomments-ruby
- fastcomments-rust
- fastcomments-swift
Kimlik Doğrulama
API, api anahtarınızı X-API-KEY başlığı ya da API_KEY sorgu parametresi olarak göndererek kimlik doğrulaması yapar. API çağrıları yapmak için ayrıca tenantId'ye de ihtiyacınız olacak. Bu, api anahtarınızla aynı sayfadan alınabilir.
Güvenlik Notu
Bu yollar sunucudan çağrılmak üzere tasarlanmıştır. ÇAĞIRMAYIN bir tarayıcıdan. Bunu yaparsanız API anahtarınız ortaya çıkar - bu, sayfanın kaynak kodunu görebilen herkese hesabınıza tam erişim sağlar!
Kimlik Doğrulama Seçeneği Bir - Başlıklar
- Header:
X-API-KEY - Header:
X-TENANT-ID
Kimlik Doğrulama Seçeneği İki - Sorgu Parametreleri
- Query Param:
API_KEY - Query Param:
tenantId
Kimlik Doğrulama Seçeneği Üç - OAuth Bearer Token
- Header:
Authorization: Bearer fcat_...
Zapier gibi üçüncü taraf uygulamalar ve MCP sunucusunun istemcileri, API anahtarı yerine OAuth aracılığıyla bir token alır. Bu token burada her uç noktada çalışır. Tenant, token tarafından ima edilir, bu yüzden tenantId isteğe bağlıdır, ancak verildiğinde token ile eşleşmelidir. GET istekleri read kapsamına, diğer tüm yöntemler write kapsamına ihtiyaç duyar. İstemci kaydı, PKCE, yenileme ve iptal dahil tam akış OAuth Yetkilendirme altında belgelenmiştir. Keşif https://fastcomments.com/.well-known/oauth-authorization-server adresinde başlar.
Kendi Yazılarınızı Okuma
FastComments, Active-Active kullanılabilirlik sağlar. Veri merkezinizden gelen istekler, size en yakın varlık noktasına yönlendirilir. Bu otomatik bir işlemdir ve genellikle okuma-yazma tutarlılığını gözlemleyebilirsiniz. Kendi yazılarınızı okuduğunuzdan emin olmak istiyorsanız, isteklerinizi belirli bir bölgeye sabitleyebilir ve o bölgeyi API ana bilgisayarı olarak kullanabilirsiniz (ancak çoğu entegrasyon için genellikle gerekmez):
- 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
Bunu yaparsanız, geçmişte giriş noktası düğümlerini kaldırdığımız ve geçiş için yeni adlar kullandığımız için bir yedek tanımlamak isteyebilirsiniz.
API Kaynakları 
Kaynak Kullanımı
API'den veri çekmenin hesabınızdaki kullanım olarak sayıldığını belirtmek gerekir.
Her kaynak, bu kullanımın ne olduğunu kendi bölümünde listeleyecektir.
Bazı kaynakların hizmet maliyeti diğerlerinden daha fazladır. Her uç nokta, API çağrısı başına belirli bir kredi maliyetine sahiptir. Bazı uç noktalar için kredi sayısı, seçenekler ve yanıt boyutlarına göre değişir.
API kullanımı, Billing Analytics sayfasında kontrol edilebilir ve her birkaç dakikada bir güncellenir.
Not!
urlId değerlerini Comment API'sine geçirirken oluşabilecek karışıklığı azaltmak için önce Pages belgelerini okumanızı öneririz.
Webhook'lar
Webhook aboneliklerinin kendi rehberi vardır. POST, GET ve DELETE /api/v1/webhooks, ve GET /api/v1/webhooks/sample-payloads, Managing Subscriptions via API altında belgelenmiştir, ve olay yükleri Webhook Structures altında açıklanmıştır.
OAuth Yetkilendirme 
FastComments bir OAuth 2.1 yetkilendirme sunucusudur. Bir uygulama, bir FastComments hesabına bağlı bir token alabilir ve bu kılavuzdaki her uç noktada API anahtarı yerine kullanabilir. Bu, Zapier uygulaması, MCP sunucusu ve diğer üçüncü taraf entegrasyonların bağlanma şeklidir.
Tokenlar, PKCE ile yetkilendirme kodu akışı üzerinden verilir. İstemci kimlik bilgileri veya örtük izin yoktur.
Keşif
Uç nokta konumları, desteklenen izinler ve kimlik doğrulama yöntemleri standart metaveri URL'sinde yayınlanır:

Açıklanan uç noktalar:

AB bölgesindeki hesaplar, aynı yollarla, https://eu.fastcomments.com adresini sağlayıcı olarak kullanır.
Bir istemci kaydetme
Bir istemcinin akışı başlatmadan önce bir client_id ve kayıtlı bir redirect_uri'ye ihtiyacı vardır. Bunu elde etmenin iki yolu vardır:
- Dinamik İstemci Kaydı. RFC 7591'e göre bir JSON gövdesiyle
POST /oauth/register(redirect_uris,client_name,client_uri,logo_uri,token_endpoint_auth_method). Yanıtclient_idve gizli istemciler içinclient_secretiçerir. Kayıt kimlik doğrulaması gerektirmez ve IP başına oran sınırlıdır. - İstemci ID Metaveri Belgesi. İstemci, kontrol ettiği bir
httpsURL'siniclient_idolarak kullanır. FastComments bu URL'yi alır ve aynı metaveri alanlarını okur. Kayıt çağrısına gerek yoktur.
FastComments kontrol panelinde listelenen ortak uygulamalar, örneğin Zapier, doğrudan FastComments tarafından kaydedilir. Bir pazar yeri listesi oluşturuyorsanız ve bir birinci taraf istemciye ihtiyacınız varsa destek ile iletişime geçin.
Kapsamlar

Hiçbir kapsam talep etmeyen bir istek her iki kapsamı da alır. Kullanıcı, istenen kapsamları onay sayfasında görür. Bu iki kapsam dışındaki bir kapsam talebi invalid_scope hatasıyla başarısız olur.
Adım 1 - Yetkilendirme isteği
Kullanıcının tarayıcısını yetkilendirme uç noktasına yönlendirin. PKCE, S256 yöntemiyle her istemci için gereklidir.


Kullanıcı gerektiğinde FastComments'a giriş yapar ve uygulamanızın adını, bağlanacağı hesabı ve istenen kapsamları gösteren bir onay sayfası görür. Kullanıcının o hesapta API Admin iznine sahip olması gerekir; başka birisi onay formu yerine izin hatası alır. Onaylamak, tarayıcıyı code ve state ile redirect_uri'nize yönlendirir. Reddetmek, error=access_denied ile yönlendirir.
Yetkilendirme kodu 10 dakika geçerlidir ve bir kez takas edilebilir. Aynı kodun ikinci takası, ilk takasın ürettiği tüm tokenları iptal eder.
Adım 2 - Token isteği
Kodu tokenlar için takas edin. Gövde form-encoded'dir. Gizli istemciler client_secret_basic (HTTP Basic) veya client_secret_post (gövdede gizli) ile kimlik doğrular. Genel istemciler sadece client_id gönderir.



Hatalar RFC 6749'e uyar: error ve error_description içeren bir JSON gövdesi, invalid_request, invalid_grant, invalid_scope, invalid_target ve unsupported_grant_type için HTTP 400, invalid_client için HTTP 401, oran sınırlaması olduğunda HTTP 429.
Adım 3 - API'yi Çağırma
Erişim tokenını bir bearer token olarak gönderin. Kiracı token tarafından ima edilir, bu yüzden tenantId isteğe bağlıdır. Verildiğinde tokenla eşleşmelidir, aksi takdirde istek başarısız olur.

GET /api/v1/me kiracıyı, yetkilendiren kullanıcıyı ve verilen kapsamları döndürür; bu, bağlantı testi için doğru çağrıdır. Süresi dolmuş veya iptal edilmiş bir tokenla yapılan istek HTTP 401 alır. Yöntemi, tokenın sahip olmadığı bir kapsam gerektiren bir istek HTTP 403 alır.
Adım 4 - Yenileme


Yanıt, kod takasıyla aynı yapıya sahiptir. Yenileme tokenları döner: her yenileme yeni bir refresh_token döndürür ve eşzamanlı istekler için 30 saniyelik bir gecikme penceresinden sonra eski tokenı iptal eder. 30 saniyeden daha uzun bir sürede dönen bir yenileme tokenı sunulursa bu tekrar olarak değerlendirilir ve tüm izin iptal edilir. FastComments tarafından kaydedilen ortak uygulamalar döndürmeden muaf tutulur ve aynı yenileme tokenını alır; süresi başka 30 gün uzatılır.
Yenileme ayrıca yetkilendiren kullanıcının hâlâ hesapta API Admin iznine sahip olup olmadığını kontrol eder. Eğer yoksa, izin iptal edilir ve yanıt invalid_grant olur.
İptal

Bir yenileme tokenını iptal etmek, aynı izinden verilen tüm erişim tokenlarını iptal eder. Bir erişim tokenını iptal etmek sadece o tokenı iptal eder. Uç nokta, token bulunup bulunmadığına bakılmaksızın boş bir JSON nesnesiyle HTTP 200 döner, RFC 7009'e göre.
Kullanıcılar ayrıca FastComments kontrol panelindeki Bağlı Uygulamalar üzerinden bir bağlantıyı iptal edebilir. O uygulama için tüm tokenlar hemen çalışmaz.
Verilerinizi Toplayın 
Bu API, belgeleri (groupBy sağlanmışsa) gruplayarak ve birden fazla işlem uygulayarak toplar (aggregate eder). Farklı işlemler (ör. sum, countDistinct, avg, vb.) desteklenir.
Maliyet değişkendir. Taranan her 500 nesne 1 API kredisi tutar.
Varsayılan olarak her API çağrısı için izin verilen maksimum bellek kullanımı 64MB'dir ve varsayılan olarak aynı anda yalnızca bir toplama işlemi çalıştırabilirsiniz. Eğer birden fazla toplama işlemini aynı anda gönderirseniz, bunlar sıraya alınır ve gönderildikleri sırayla çalıştırılır. Beklemede olan toplama işlemleri en fazla 60 saniye bekler; bundan sonra istek zaman aşımına uğrar. Bireysel toplama işlemleri en fazla 5 dakika çalışabilir.
Yönetilen kiracılarınız varsa, parentTenantId sorgu parametresini geçirerek tüm alt kiracı kaynaklarını tek bir çağrıda toplayabilirsiniz.
Örnekler
Örnek: Benzersiz Değerleri Sayma


Örnek: Farklı Değerleri Sayma

Yanıt:

Örnek: Birden Fazla Alanın Değerlerini Toplama

Yanıt:

Örnek: Birden Fazla Alanın Ortalama Değerleri

Yanıt:

Örnek: Birden Fazla Alanın Min/Max Değerleri

Yanıt:

Örnek: Birden Fazla Alanın Benzersiz Değerlerini Sayma

Yanıt:

Örnek: Sorgu Oluşturma

Yanıt:

Örnek: İnceleme Bekleyen Yorumları Sayma

Yanıt:

Örnek: Onaylanmış, İncelenmiş ve Spam Yorumların Dağılımı

Yanıt:

Yapılar


Aşağıdaki kaynaklar üzerinde toplama yapılabilir:
- 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
Denetim Kaydı Yapısı 
An AuditLog bir nesnedir ve bu özelliğe erişimi olan kiracılar için denetlenen bir olayı temsil eder.
The structure for the AuditLog object is as follows:

targetId ve targetLabel olayın ne üzerinde gerçekleştirildiğini tanımlar; userId ve username ise kim tarafından gerçekleştirildiğini tanımlar. Güncellemeler için, objectDetails.changes gerçekte neyin değiştiğini gösteren {field: {from, to}} haritasını tutar.
Denetim günlüğü değiştirilemezdir. Ayrıca manuel olarak yazılamaz. FastComments.com yalnızca denetim günlüğüne ne zaman yazılacağına karar verebilir. Bununla birlikte, bu API aracılığıyla denetim günlüğünü okuyabilirsiniz.
Denetim günlüğündeki olaylar iki yıl sonra süresi dolar.
GET /api/v1/audit-logs 
Bu API, skip, limit, before ve after parametreleriyle sağlanan sayfalama kullanır. AuditLog'lar varsayılan olarak 1000 kayıtlık sayfalarda döndürülür, maksimum limit 10000'e kadar, when ve id'ye göre sıralanır. Sayfalar büyüktür çünkü bu uç nokta genellikle geçmişi dökmek için kullanılır, etkileşimli olarak sayfalama yapmak yerine.
Dönen her 100 log için kredi maliyeti 1'dir.
Varsayılan olarak, en yeni öğeler önce olacak bir liste alırsınız. Bu şekilde, skip=0 ile başlayarak sorgulayabilir, tükettiğiniz son kaydı bulana kadar sayfalayabilirsiniz.
Alternatif olarak, en eskiyi önce sıralayabilir ve kayıt kalmayana kadar sayfalayabilirsiniz.
Sıralama, order parametresini ASC veya DESC olarak ayarlayarak yapılabilir. Varsayılan DESC'tir.
Tarih sorgulama, milisaniye cinsinden zaman damgaları olarak before ve after ile mümkündür. before ve after KAPSAMLI DEĞİLDİR ve her biri tek başına kullanılabilir.
Bir kişinin başına ne geldiğini bulma
Her olay, kim tarafından gerçekleştirildiğini (username, userId, ip) ve ayrıca ne üzerinde gerçekleştirildiğini kaydeder. targetLabel, o nesne için insan tarafından okunabilir bir etikettir, örneğin jsmith (jsmith@example.com), ve targetId onun kimliğidir. Bir kişinin adını veya e-posta adresini biliyor ancak kimliğini bilmiyorsanız, etiketteki alt dizeyi büyük/küçük harfe duyarsız eşleştirmek için target kullanın.
Silme işlemleri, olay anındaki etiketi yakalar, böylece temel kayıt silinmiş olsa bile kaldırılan bir kullanıcı veya moderatör hâlâ tanımlanabilir.
Yönetilen kiracılar
Kiracınız diğer kiracıları yönetiyorsa, includeManagedTenants=true ayarlayarak bir yanıt içinde kendi kiracınız ve yönettiği tüm kiracılardan gelen olayları döndürün. Dönen her log'un tenantId değeri, kaynağın hangi kiracıdan geldiğini gösterir.



Yorum Yapısı 
A Comment object represents a comment left by a user.
The relationship between parent and child comments is defined via parentId.
The structure for the Comment object is as follows:

Some of these fields are marked READONLY - these are returned by the API but cannot be set.
Yorum Metni Yapısı
Comments are written in a FastComments flavor of markdown, which is just markdown plus traditional bbcode style tags for images, like [img]path[/img].
Text is stored in two fields. The text the user entered is stored unmodified in the comment field. This is rendered and stored in the commentHTML field.
The allowed HTML tags are b, u, i, strike, pre, span, code, img, a, strong, ul, ol, li, and br.
It's recommended to render the HTML, since it is a very small subset of HTML, building a renderer is pretty straightforward. There are multiple libraries for React Native and Flutter, for instance, to help with this
You may choose to render the un-normalized value of the comment field. An example parser is here..
The example parser could also be adjusted to work with HTML, and transform the HTML tags into expected elements to render for your platform.
Etiketleme
When users are tagged in a comment, the information is stored in a list called mentions. Each object in that list
has the following structure.
Run 
HashTags
When hashtags are used and successfully parsed, the information is stored in a list called hashTags. Each object in that list
has the following structure. Hashtags can also be manually added to the comment hashTags array for querying, if retain is set.
Run 
GET /api/v1/comments 
Bu API, bir kullanıcıya göstermek üzere yorumları almak için kullanılır. Örneğin, otomatik olarak onaylanmamış veya istenmeyen (spam) yorumları filtreler.
Pagination
Sayfalama, performans gereksinimlerine ve kullanım durumuna bağlı olarak iki yoldan biriyle yapılabilir:
- En hızlı: Precalculated Pagination:
- Bu, önceden oluşturulmuş widget ve istemcilerimizi kullandığınızda FastComments'ın nasıl çalıştığıdır.
- “next”e tıklamak yalnızca sayfa sayacını artırır.
- Bunu bir anahtar-değer deposundan alınmış gibi düşünebilirsiniz.
- Bu şekilde,
0'dan başlayan birpageparametresi vedirectionolarak bir sıralama yönü tanımlamanız yeterlidir. - Sayfa boyutları özelleştirme kurallarıyla ayarlanabilir.
- En esnek: Flexible Pagination:
- Bu şekilde özel
limitveskipparametreleri tanımlayabilirsiniz.pagegöndermeyin. directionsıralaması da desteklenir.limit,skipuygulandıktan sonra döndürülecek toplam sayıyı belirtir.- Örnek:
page size = 100vepage = 2ikenskip = 200, limit = 100ayarlayın.
- Örnek:
- Alt yorumlar hâlâ sayfalamada sayılır. Bunu
asTreeseçeneğiyle aşabilirsiniz.limitChildrenveskipChildrenile alt yorumları sayfalayabilirsiniz.maxTreeDepthile döndürülen konu derinliğini sınırlayabilirsiniz.
- Bu şekilde özel
Threads
Precalculated Paginationkullanıldığında, yorumlar sayfa bazında gruplanır ve konu içindeki yorumlar genel sayfayı etkiler.- Bu şekilde, konular istemci tarafında
parentIdtemel alınarak belirlenebilir. - Örneğin, bir üst düzey yorum ve 29 yanıt içeren bir sayfada API'de
page=0ayarlandığında yalnızca üst düzey yorum ve 29 alt yorum alınır.
- Bu şekilde, konular istemci tarafında
Flexible Paginationkullanıldığında birparentIdparametresi tanımlayabilirsiniz.- Bunu
nullolarak ayarlarsanız yalnızca üst düzey yorumları alırsınız. - Ardından konuları görüntülemek için API'yi tekrar çağırıp
parentIdgönderin. - Yaygın bir çözüm, üst düzey yorumlar için bir API çağrısı yapıp ardından her yorumun alt yorumları için paralel API çağrıları yapmaktır.
- Bunu
- NEW As of Feb 2023!
&asTree=truekullanarak ağaç olarak alın.- Bunu
Flexible Pagination as a Treeolarak düşünebilirsiniz. - Yalnızca üst düzey yorumlar sayfalamada sayılır.
parentId=nullayarlayarak ağacı kökten başlatın (parentIdayarlamanız gerekir).- Sayfalama için
skipvelimitayarlayın. asTreedeğerinitrueyapın.- Krediler maliyeti
2xartar, çünkü bu senaryoda arka uç çok daha fazla iş yapmalıdır. maxTreeDepth,limitChildrenveskipChildrendeğerlerini istediğiniz gibi ayarlayın.
- Bunu
Trees Explained
asTree kullanıldığında, sayfalama hakkında mantık yürütmek zor olabilir. İşte kullanışlı bir grafik:
Fetching Comments in The Context of a User
/comments API'si iki bağlamda, farklı kullanım durumları için kullanılabilir:
- Kendi istemcinizi oluşturmak için sıralanmış ve etiketlenmiş yorumları döndürmek.
- Bu durumda bir
contextUserIdsorgu parametresi tanımlayın.
- Bu durumda bir
- Özel entegrasyonlar için yorumları arka uçtan almak.
- Platform,
contextUserIdolmadan buna varsayılan olarak geçer.
- Platform,




Get Comments as a Tree
Yorumları bir ağaç olarak alabilir ve sayfalama yalnızca üst düzey yorumları sayar.

Yalnızca üst düzey yorumları ve doğrudan alt yorumları almak ister misiniz? İşte bir yol:

Ancak UI'nizde her yorumun yanıtları göster düğmesini gösterip göstermeyeceğinizi bilmeniz gerekebilir. Ağaç üzerinden yorum alırken, uygulanabilir olduğunda yorumlara hasChildren özelliği eklenir.
Get Comments as a Tree, Searching by Hash Tag
API'yi kullanarak tüm tenantınızda (tek bir sayfaya veya urlId'ye sınırlı olmadan) hashtag ile arama yapabilirsiniz.
Bu örnekte urlId'yi atlıyoruz ve birden fazla hashtag ile arama yapıyoruz. API yalnızca istenen tüm hashtag'lere sahip yorumları döndürür.

All Request Params

The Response

Helpful Tips
URL ID
Comment API'sini urlId parametresiyle kullanmak isteyebilirsiniz. Önce Pages API'sini çağırarak size mevcut olan urlId değerlerinin nasıl göründüğünü görebilirsiniz.
Anonymous Actions
Anonim yorumlama için yorumları alırken ve işaretleme ve engelleme işlemleri yaparken anonUserId göndermeniz muhtemeldir.
(!) Bu, birçok uygulama mağazası için gereklidir; kullanıcılar oturum açmasalar bile görebildikleri kullanıcı tarafından oluşturulan içeriği işaretleyebilmelidir. Bunu yapmazsanız uygulamanız ilgili mağazadan kaldırılabilir.
Comments Not Being Returned
Yorumlarınızın onaylandığını ve istenmeyen (spam) olmadığını kontrol edin.
GET /api/v1/comments/:id 
Bu API, bir yorumu id ile almanızı sağlar.



POST /api/v1/comments 
Bu API uç noktası yorum oluşturma yeteneği sağlar.
Yaygın kullanım durumları özel kullanıcı arayüzleri, entegrasyonlar veya içe aktarımlardır.
Notlar:
- Bu API, istenirse yorum widget'ını "canlı" olarak güncelleyebilir (bu,
creditsCost'u1'den2'ye çıkarır). - E-posta sağlanırsa bu API sistemimizde otomatik olarak kullanıcı nesneleri oluşturur.
- Farklı e-postalara sahip iki yorumu, fakat aynı kullanıcı adıyla kaydetmeye çalışmak, ikinci yorum için bir hata ile sonuçlanır.
- Eğer
parentIdbelirtiyorsanız ve bir alt yorumunnotificationSentForParentdeğeri false ise, ebeveyn yorum için bildirimler göndereceğiz. Bu her saat yapılır (gönderilen e-posta sayısını azaltmak için bildirimleri toplu olarak gönderiyoruz). - Kullanıcı oluşturulurken karşılama e-postaları veya yorum doğrulama e-postaları göndermek istiyorsanız, sorgu parametrelerinde
sendEmailsdeğerinitrueolarak ayarlayın. - Bu API aracılığıyla oluşturulan yorumlar yönetici uygulamasının Analytics ve Moderation sayfalarında görünecektir.
- Ayar açık ise, "bad words" yorumcu isimlerinde ve yorum metninde hâlâ maskelenir.
- Bu API ile oluşturulan yorumlar istenirse yine de spam için kontrol edilebilir.
- Özelleştirme Kuralı yönetici sayfası aracılığıyla yapılandırıldıysa, maksimum yorum uzunluğu gibi yapılandırmalar burada uygulanır.
Yorum widget'ında görüntülenecek şekilde göndermek için gereken minimum veriler aşağıdaki gibidir:

Daha gerçekçi bir istek şöyle görünebilir:



PATCH /api/v1/comments/:id 
Bu API uç noktası tek bir yorumu güncelleme olanağı sağlar.
Notlar:
- İstenirse bu API, yorum widget'ını "live" olarak güncelleyebilir (bu, temel
creditsCostu1'den2'ye yükseltir).- Bu, sayfalar arasında yorumları "live" olarak taşımayı sağlayabilir (
urlIddeğiştirerek). - Sayfalar önceden hesaplandığı ve bunun CPU açısından maliyetli olduğu için taşımalar ek
2kredi ücreti gerektirir.
- Bu, sayfalar arasında yorumları "live" olarak taşımayı sağlayabilir (
- Oluşturma API'sinin aksine, bu API e-posta sağlansa bile sistemimizde otomatik olarak kullanıcı nesneleri oluşturmaz.
- Bu API ile güncellenen yorumlar istenirse hala spam için kontrol edilebilir.
- Maksimum yorum uzunluğu gibi yapılandırmalar, eğer Customization Rule yönetim sayfası üzerinden yapılandırıldıysa burada uygulanır.
- Kullanıcıların yorum metinlerini güncellemelerine izin vermek için istek gövdesinde yalnızca
comment'i belirtebilirsiniz. OluşancommentHTML'i biz oluşturacağız.- Hem
commenthem decommentHTMLtanımlarsanız HTML otomatik olarak oluşturulmaz. - Kullanıcı yeni metnine mentions veya hashtags eklerse, bu yine
POSTAPI'si gibi işlenecektir.
- Hem
- Bir yorumda
commenterEmail'i güncellerken, ayrıcauserId'yi belirtmek en iyisidir. Aksi takdirde, bu e-postaya sahip kullanıcının kiracınıza ait olduğundan emin olmalısınız; aksi halde istek başarısız olur. - Hedef yorum kilitliyse (
isLocked: true), istekcode: 'locked'ile reddedilir. Önce yorumu kilidini açın, güncelleyin, ardından isterseniz tekrar kilitleyin.



DELETE /api/v1/comments/:id 
Bu API uç noktası bir yorumu silme yeteneği sağlar.
Notlar:
- Bu API istenirse yorum bileşenini "canlı" olarak güncelleyebilir (bu
creditsCost'u1'den2'ye çıkarır). - Bu API tüm alt yorumları silecektir.
- Hedef yorum kilitliyse (
isLocked: true), istekcode: 'locked'ile reddedilir. Önce yorumu kilidini açın, sonra silin.



POST /api/v1/comments/:id/flag 
Bu API uç noktası, belirli bir kullanıcı için bir yorumu işaretleme (flag) yeteneği sağlar.
Notes:
- Bu çağrı her zaman bir kullanıcı bağlamında yapılmalıdır. Kullanıcı FastComments.com Kullanıcısı, SSO Kullanıcısı veya Tenant Kullanıcısı olabilir.
- Eğer bir flag-to-hide eşiği ayarlanmışsa, yorum tanımlanan sayıda işaretlendikten sonra canlı olarak otomatik gizlenecektir.
- Otomatik olarak onayı kaldırıldıktan (gizlendikten) sonra - yorum yalnızca bir yönetici veya moderatör tarafından yeniden onaylanabilir. İşaretin kaldırılması yorumu yeniden onaylamaz.

Anonim işaretleme için bir anonUserId belirtmemiz gerekir. Bu, anonim oturumu temsil eden bir kimlik veya rastgele bir UUID olabilir. Bu, bir kullanıcı giriş yapmamış olsa bile yorumları işaretleme ve işaret kaldırmayı desteklememizi sağlar. Bu şekilde, aynı anonUserId ile yorumlar alındığında yorum işaretlenmiş olarak işaretlenebilir.



POST /api/v1/comments/:id/un-flag 
Bu API uç noktası, belirli bir kullanıcı için bir yorumun bayrağını kaldırma yeteneği sağlar.
Notlar:
- Bu çağrı her zaman bir kullanıcı bağlamında yapılmalıdır. Kullanıcı, FastComments.com Kullanıcısı, SSO Kullanıcısı veya Kiracı (Tenant) Kullanıcısı olabilir.
- Bir yorum otomatik olarak onaydan çıkarıldıktan (gizlendikten) sonra — yorum yalnızca bir yönetici veya moderatör tarafından yeniden onaylanabilir. Bayrağın kaldırılması yorumu yeniden onaylamaz.

Anonim bayraklama için bir anonUserId belirtmeliyiz. Bu, anonim oturumu temsil eden bir kimlik olabilir veya rastgele bir UUID olabilir.



POST /api/v1/comments/:id/block 
Bu API uç noktası, belirli bir yorumu yazan kullanıcıyı engelleme yeteneği sağlar. FastComments.com Kullanıcıları, SSO Kullanıcıları ve Tenant Kullanıcıları tarafından yazılan yorumlardan engellemeyi destekler.
Ayrıca, bu işlem gerçekleştirildikten sonra istemcide potansiyel olarak görünür başka hangi yorumların engellenmesi/engeli kaldırılması gerektiğini kontrol etmek için bir commentIdsToCheck gövde parametresini destekler.
Notlar:
- Bu çağrı her zaman bir kullanıcı bağlamında yapılmalıdır. Kullanıcı FastComments.com Kullanıcısı, SSO Kullanıcısı veya Tenant Kullanıcısı olabilir.
- İstek içindeki
userId, engelleme işlemini yapan kullanıcıdır. Örneğin:User A,User B'yi Engellemek istiyor.userId=User AveUser Bnin yazdığı yorum kimliğini gönderin. - Tamamen anonim yorumlar (kullanıcı kimliği yok, e‑posta yok) engellenemez ve bir hata döndürülecektir.

Anonim engelleme için bir anonUserId belirtmeliyiz. Bu, anonim oturumu temsil eden bir kimlik veya rastgele bir UUID olabilir.
Bu, bir kullanıcı oturum açmamış olsa bile aynı anonUserId ile yorumlar alınarak yorumları engellemeyi desteklememizi sağlar.



POST /api/v1/comments/:id/un-block 
Bu API uç noktası, belirli bir yorumu yazmış bir kullanıcının engellemesini kaldırma yeteneği sağlar. FastComments.com Users, SSO Users, and Tenant Users tarafından yazılmış yorumların engellemesini kaldırmayı destekler.
Bu işlem gerçekleştirildikten sonra istemcideki diğer potansiyel olarak görünür yorumların engellenip/engellenmeyeceğini kontrol etmek için commentIdsToCheck gövde parametresini destekler.
Notlar:
- Bu çağrı her zaman bir kullanıcı bağlamında yapılmalıdır. Kullanıcı FastComments.com User, SSO User, veya Tenant User olabilir.
- İstek içindeki
userId, engelleme kaldırma işlemini yapan kullanıcıdır. Örneğin:User AUser B'nin engellemesini kaldırmak istiyor.userId=User AveUser Btarafından yazılan yorumun id'sini gönderin. - Tamamen anonim yorumlar (kullanıcı kimliği yok, e-posta yok) engellenemez ve bir hata döndürülecektir.




E-posta Şablonu Yapısı 
Bir EmailTemplate nesnesi, bir kiracı için özel bir e-posta şablonunun yapılandırmasını temsil eder.
Sistem, kullanılacak e-posta şablonunu şu yolla seçer:
- Türünü belirten tanımlayıcı, buna
emailTemplateIddiyoruz. Bunlar sabittir. domain. İlgili nesnenin (ör. birComment) bağlı olduğu domain için önce bir şablon bulmaya çalışacağız; eşleşme bulunmazsa domain'in null veya*olduğu bir şablon arayacağız.
EmailTemplate nesnesinin yapısı aşağıdaki gibidir:

Notlar
- Geçerli
emailTemplateIddeğerlerini/definitionsuç noktasından alabilirsiniz. /definitionsuç noktası ayrıca varsayılan çevirileri ve test verilerini içerir.- Geçersiz yapı veya test verileri durumunda şablonlar kaydedilemez.
GET /api/v1/email-templates/:id 
Bireysel EmailTemplates, karşılık gelen id ile alınabilir (NOT emailTemplateId).



GET /api/v1/email-templates 
Bu API, page sorgu parametresiyle sağlanan sayfalandırma kullanır. EmailTemplate'ler, createdAt sonra id sırasına göre, her sayfada 100 öğe olacak şekilde döndürülür.



PATCH /api/v1/email-templates/:id 
Bu API uç noktası, yalnızca id'yi ve güncellenecek özellikleri belirterek bir e-posta şablonunu güncelleme olanağı sağlar.
Bir şablon oluştururken uygulanan aynı doğrulamalar da geçerlidir, örneğin:
- Şablonun render olması gerekir. Bu, her güncellemede kontrol edilir.
- Aynı alan adı için çoğaltılmış şablonlara sahip olamazsınız (aksi takdirde biri sessizce yoksayılır).



POST /api/v1/email-templates 
Bu API uç noktası e-posta şablonları oluşturma olanağı sağlar.
Notlar:
- Aynı domain ile aynı
emailTemplateId'ye sahip birden fazla şablon olamaz. - Ancak bir joker şablon (
domain=*) ile aynıemailTemplateIdiçin alan adı özel bir şablon birlikte bulunabilir. domainbelirtmek yalnızca farklı alan adlarınız varsa veya test için belirli şablonlar kullanmak istiyorsanız önemlidir (domainset tolocalhostetc).domainbelirtirseniz, bunun birDomainConfigile eşleşmesi gerekir. Hata durumunda geçerli alan adlarının bir listesi sağlanır.- Şablon sözdizimi EJS'tir ve 500ms zaman aşımı ile render edilir. Render süresi için P99 <5ms'dir, bu nedenle 500ms'ye ulaşıyorsanız bir sorun var demektir.
- Kaydetmek için şablonunuz verilen
testDataile render olmalıdır. Render hataları birleştirilir ve kontrol panelinde raporlanır (yakında API üzerinden de kullanılabilir).
Bir şablon eklemek için gereken minimum veriler aşağıdaki gibidir:

Site başına şablonlar isteyebilirsiniz; bu durumda domain tanımlarsınız:



POST /api/v1/email-templates/render 
Bu API uç noktası e-posta şablonlarını önizleme olanağı sağlar.



DELETE /api/v1/email-templates/:id 
Bu rota, bir EmailTemplate'in id ile kaldırılmasını sağlar.



Akış Gönderisi Yapısı 
A FeedPost nesnesi, FastComments akışındaki bir gönderiyi temsil eder. Bir akış, kendi yorum dizileriyle birlikte gönderilerin bir akışı olup, Feed widget'ı tarafından render edilir. Her gönderinin bir yazarı, isteğe bağlı zengin içeriği, medyası ve bağlantıları vardır ve bir akışın filtrelenebilmesi için etiketlenebilir.
FeedPost nesnesinin yapısı aşağıdaki gibidir:

Notlar:
- Bu alanların bazıları
READONLYolarak işaretlenmiştir - bunlar API tarafından döndürülür ancak ayarlanamaz. - Bir gönderideki yorumlar,
urlId'sipost:ve ardından gönderinin_id'si gelen normal yorumlardır. Bu değeri Yorum API'si ile kullanarak bir gönderide yorum okuyabilir veya oluşturabilirsiniz.
GET /api/v1/feed-posts 
Bir akıştaki gönderileri, en yenilerden başlayarak alır. Sayfalama imleç tabanlıdır: bir sonraki sayfayı almak için aldığınız son gönderinin _id değerini afterId olarak gönderin.
Dönen her on gönderi için bir kredi, minimum bir kredi olmak üzere maliyetlidir.



POST /api/v1/feed-posts 
Bu yol tek bir FeedPost oluşturur. Her gönderinin bir yazarı vardır, bu yüzden fromUserId gereklidir ve hesabınızdaki mevcut bir FastComments veya SSO kullanıcısının kimliği olmalıdır.



PATCH /api/v1/feed-posts/:id 
Bu rota tek bir FeedPost günceller. Değiştirmek istediğiniz alanları yalnızca gönderin.



Etiket Yapısı 
Bir HashTag nesnesi, bir kullanıcı tarafından bırakılabilecek bir etiketi temsil eder. HashTags harici bir içeriğe bağlamak veya ilişkili yorumları birbirine bağlamak için kullanılabilir.
HashTag nesnesinin yapısı aşağıdaki gibidir:

Notlar:
- Bazı API uç noktalarında hashtag'in URL içinde kullanıldığını göreceksiniz. Değerleri URI ile kodlamayı unutmayın. Örneğin,
#yerine%23olarak temsil edilmelidir. - Bu alanların bazıları
READONLYolarak işaretlenmiştir - bunlar API tarafından döndürülür ancak ayarlanamaz.
GET /api/v1/hash-tags 
Bu API, page sorgu parametresi ile sağlanan sayfalama kullanır. HashTag'ler tage göre sıralanmış şekilde, 100 öğelik sayfalar halinde döndürülür.



PATCH /api/v1/hash-tags/:tag 
Bu rota tek bir HashTag'ı güncelleme olanağı sağlar.



POST /api/v1/hash-tags 
Bu rota tek bir HashTag ekleme yeteneği sağlar.



POST /api/v1/hash-tags/bulk 
Bu yol aynı anda en fazla 100 HashTag nesnesi ekleme yeteneği sağlar.



DELETE /api/v1/hash-tags/:tag 
Bu rota, sağlanan etiket ile bir HashTag kullanıcısının kaldırılmasını sağlar.
Otomatik HashTag oluşturma devre dışı bırakılmadığı sürece, kullanıcılar yorum yaparken hashtag'i sağlayarak hashtag'leri yeniden oluşturabilir.



GET /api/v1/me 
İsteği yapan kimlik bilgilerini tanımlar: ait olduğu kiracı ve OAuth erişim belirteçleri için uygulamayı yetkilendiren kullanıcı. Entegrasyonlar bunu bir bağlantıyı test etmek ve etiketlemek için kullanır.
Bir API anahtarıyla yanıt yalnızca kiracıyı tanımlar. Bir OAuth taşıyıcı belirteciyle ayrıca yetkilendiren kullanıcı ve verilen kapsamlar da taşınır.


Moderatör Yapısı 
Bir Moderator object represents configuration for a moderator.
There are three types of moderators:
isCommentModeratorAdminbayrağına sahip yönetici kullanıcılar.isCommentModeratorAdminbayrağına sahip SSO kullanıcıları.- Moderatör olarak davet edilen normal yorumcular veya FastComments.com kullanıcıları.
The Moderator structure is used to represent the Moderation State of use case 3.
If you want to invite a user to be a moderator, via the API, use the Moderator API by creating a Moderator and inviting them.
If the user does not have a FastComments.com account, the invite email will help them get setup. If they already have an account, they will
be given moderation access to your tenant and the Moderator object's userId will be updated to point to their user. You will not have API
access to their user, as in this case it belongs to themselves and managed by FastComments.com.
If you require complete management of the user's account, we recommend either using SSO, or adding them as a Tenant Kullanıcısı and
then adding a Moderator object to track their stats.
The Moderator structure can be used as a stat tracking mechanism for use cases 1 and 2. After creating the user, add a Moderator
object with their userId defined and their stats will be tracked on the Yorum Moderatörleri Sayfası.
The structure for the Moderator object is as follows:

GET /api/v1/moderators/:id 
Bu rota belirtilen id'ye sahip tek bir moderatörü döndürür.



GET /api/v1/moderators 
Bu API, skip sorgu parametresi tarafından sağlanan sayfalandırmayı kullanır. Moderators, createdAt ve id'ye göre sıralanmış olarak 100lük sayfalar halinde döndürülür.
Maliyet, döndürülen moderatör sayısına göre belirlenir; döndürülen moderatörler için maliyet 1 credit per 10'dur.



PATCH /api/v1/moderators/:id 
Bu API uç noktası, bir Moderator'ı id ile güncelleme olanağı sağlar.
Bir Moderator'ın güncellenmesi aşağıdaki kısıtlamalara tabidir:
- Bir
Moderatorgüncellenirken, aşağıdaki değerler sağlanamaz:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Bir
userIdbelirtildiğinde, o kullanıcı mevcut olmalıdır. - Bir
userIdbelirtildiğinde, sorgu parametrelerinde belirtilen aynıtenantId'e ait olmalıdırlar. - Aynı tenant içinde iki moderator aynı
emailile eklenemez. - Bir
Moderatorile ilişkilitenantId'yi değiştiremezsiniz.



POST /api/v1/moderators 
Bu rota tek bir Moderator ekleme yeteneği sağlar.
Bir Moderator oluşturmanın aşağıdaki kısıtlamaları vardır:
- Bir
nameveemailher zaman sağlanmalıdır. BiruserIdisteğe bağlıdır. - Aşağıdaki değerler
Moderatoroluşturulurken sağlanamaz:acceptedInvitemarkReviewedCountdeletedCountmarkedSpamCountapprovedCounteditedCountbannedCountverificationIdcreatedAt
- Bir
userIdbelirtildiğinde, o kullanıcı mevcut olmalıdır. - Bir
userIdbelirtildiğinde, sorgu parametrelerinde belirtilen aynıtenantId'ye ait olmalıdır. - Aynı tenant içindeki iki moderatör aynı
emailile eklenemez.
Sadece e-postasını bildiğimiz bir kullanıcı için bir Moderator oluşturabiliriz:

Veya moderasyon istatistiklerini takip etmek için tenant'ımıza ait bir kullanıcı için bir Moderator oluşturabiliriz:



POST /api/v1/moderators/:id/send-invite 
Bu rota tek bir Moderator davet etme imkânı sağlar.
Bir Moderator'a davet e-postası göndermek için aşağıdaki kısıtlamalar vardır:
Moderatorzaten mevcut olmalıdır.fromName100 characters'den uzun olamaz.
Notlar:
- Sağlanan e-postaya sahip bir kullanıcı zaten varsa, kiracınızın yorumlarını yönetmesi için davet edilir.
- Sağlanan e-postaya sahip bir kullanıcı yoksa, davet bağlantısı onları hesap oluşturmaya yönlendirecektir.
- Davet
30 dayssonra sona erecektir.
Sadece e-postasını bildiğimiz bir kullanıcı için bir Moderator oluşturabiliriz:

Bu, Bob at TenantName is inviting you to be a moderator... gibi bir e-posta gönderecektir.


DELETE /api/v1/moderators/:id 
Bu rota, bir Moderator'ın id ile kaldırılmasını sağlar.



Bildirim Sayısı Yapısı 
A NotificationCount object represents the unread notification count and metadata for a user.
If there are no unread notifications, there will be no NotificationCount for the user.
NotificationCount objects are created automatically and cannot be created via the API. They also expire after one year.
You can clear a user's unread notification count by deleting their NotificationCount.
The structure for the NotificationCount object is as follows:

GET /api/v1/notification-count/:user_id 
Bu rota kullanıcı kimliğine göre tek bir NotificationCount döndürür. SSO ile, kullanıcı kimliği <tenant id>:<user id> formatındadır.
Okunmamış bildirim yoksa bir NotificationCount olmayacaktır - bu nedenle 404 alırsınız.
Bu, notifications/count'den farklıdır: çok daha hızlıdır, ancak filtrelemeye izin vermez.



DELETE /api/v1/notification-count/:user_id 
Bu rota, kullanıcı kimliğine göre tek bir NotificationCount'ı siler. SSO ile, kullanıcı kimliği <tenant id>:<user id> biçimindedir.
Bu, kullanıcının okunmamış bildirim sayısını temizler (yorum widget'ındaki kırmızı zil solacak ve sayı kaybolacaktır).



Bildirim Yapısı 
A Notification object represents a notification for a user.
Notification objects are created automatically and cannot be created via the API. They also expire after one year.
Notifications cannot be deleted. They can however be updated to set viewed to false, and you can query by viewed.
A user may also opt out of notifications for a specific comment by setting optedOut in the notification to true. You can opt in again by setting it to false.
There are different notification types - check relatedObjectType and type.
The ways notifications are created is quite flexible and can be triggered by many scenarios (see NotificationType).
As of today, the existence of a Notification does not actually imply an email is or should be sent. Rather, the notifications
are used for the notification feed and related integrations.
The structure for the Notification object is as follows:

GET /api/v1/notifications 
Bu rota en yeni önce olacak şekilde createdAt'e göre sıralanmış en fazla 30 Notification nesnesi döndürür.
userId ile filtreleyebilirsiniz. SSO ile, kullanıcı kimliği <tenant id>:<user id> formatındadır.



GET /api/v1/notifications/count 
Bu rota, bildirim sayısını count parametresi altında içeren bir nesne döndürür.
Bu, /notification-count/'den daha yavaştır ve kredi maliyeti iki katıdır, ancak daha fazla boyuta göre filtrelemeye izin verir.
/notifications uç noktasındaki userId gibi aynı parametrelere göre filtreleyebilirsiniz. SSO ile kullanıcı kimliği <tenant id>:<user id> formatındadır.




PATCH /api/v1/notifications/:id 
Bu API uç noktası bir Notification'ı id ile güncelleme yeteneği sağlar.
Bir Notification'ın güncellenmesi aşağıdaki kısıtlamalara tabidir:
- Sadece aşağıdaki alanları güncelleyebilirsiniz:
viewedoptedOut



Sayfa Tepkileri Genel API 
Page Reacts, kullanıcılarınızın bir sayfayı beğenmesini veya kendi reaksiyon görselleri setinizle ona tepki vermesini sağlar. Page Reacts widget ve Floating Likes widget'ı bu uç noktalara dayanır ve kendi beğen düğmenizi oluşturmak için bunları kendiniz de çağırabilirsiniz.
Diğer kılavuz bölümlerinin aksine, Page Reacts uç noktaları herkese açıktır. Kullanıcıların tarayıcılarından çağrılır, API anahtarı gerektirmez ve API kredisi harcamaz. Her reaksiyon, isteği yapan kullanıcıya aittir, bu yüzden bir kullanıcı yalnızca kendi beğenilerini ekleyebilir veya kaldırabilir.
İki set uç nokta vardır:
/page-reacts/v1/likes/:tenantId- bir sayfa başına kullanıcı başına tek bir "beğeni". Beğen düğmesi için bunları kullanın./page-reacts/v2/:tenantId- bir sayfa başına birden fazla reaksiyon, her biri sizin seçtiğiniz kısa biridile tanımlanır (örneğinheartveyalaugh).
Her ikisi de PublicApi kapsamında SDK'larımızda mevcuttur; örneğin JavaScript SDK içinde getV1PageLikes, createV1PageReact ve deleteV1PageReact.
Kullanıcıyı Tanımlama
Reaksiyonlar, isteği yapan kullanıcıya bağlanır:
- SSO kullanıcıları: yorum widget'ına verdiğiniz aynı SSO nesnesinin URI kodlu JSON'u olan
ssosorgu parametresini gönderin. Bkz. SSO. - Anonim kullanıcılar:
ssoparametresi ve FastComments oturumu yoksa, sunucu tarayıcıya FastComments oturum çerezi içinde saklanan anonim bir kimlik atar. Çerezlerin istekler arasında korunması içincredentials: 'include'ile istek gönderin. Üçüncü taraf çerezlerini engelleyen tarayıcılar anonim kimliği tutmayacaktır; bu yüzden her kullanıcının güvenilir bir şekilde tanınması gerektiğinde SSO kullanın.
urlId
urlId, sayfayı tanımlar; yorumlar için olduğu gibi aynı şekilde çalışır. Beğeniler ve yorumların aynı sayfada sayılması için yorum widget'ına verdiğiniz aynı urlId'yi kullanın. URI kodlamayı unutmayın.

GET /page-reacts/v1/likes/:tenantId 
Bir sayfadaki beğeni sayısını ve mevcut kullanıcının sayfayı beğenip beğenmediğini döndürür. Henüz var olmayan sayfalar likeCount değeri 0 olarak döner.



POST /page-reacts/v1/likes/:tenantId 
Mevcut kullanıcı olarak bir sayfayı beğenir. Her kullanıcı bir sayfayı bir kez beğenebilir: tekrar beğenmek already-liked kodu ile başarılı olur ve sayıyı değiştirmez.
Sayfa henüz yoksa oluşturulur. Sayfanın başlığını ayarlamak veya güncellemek için title parametresini gönderin.



DELETE /page-reacts/v1/likes/:tenantId 
Mevcut kullanıcının bir sayfadaki beğenisini kaldırır. Kullanıcı sayfayı beğenmemişse, istek not-liked kodu ile başarılı olur ve sayım değişmez.



GET /page-reacts/v2/:tenantId 
Sayfa üzerindeki her reaksiyonun sayısını ve mevcut kullanıcının eklediği reaksiyonları döndürür.



GET /page-reacts/v2/:tenantId/list 
Sayfaya bir reaksiyon ekleyen kullanıcıların adlarını alfabetik olarak sıralar. En fazla 100 reaksiyon aranır ve anonim kullanıcılar dahil edilmez.



POST /page-reacts/v2/:tenantId 
Mevcut kullanıcı olarak bir sayfaya bir reaksiyon ekler. Bir kullanıcı her reaksiyon kimliğini bir kez ekleyebilir: tekrar eklemek already-reacted kodu ile başarılı olur ve sayıyı değiştirmez. Bir kullanıcı aynı sayfaya birkaç farklı reaksiyon ekleyebilir.
Reaksiyon kimlikleri sizin tarafınızdan seçilir ve en fazla 36 karakter olabilir. Sayfa henüz yoksa oluşturulur. Sayfanın başlığını ayarlamak veya güncellemek için title parametresini gönderin.



DELETE /page-reacts/v2/:tenantId 
Mevcut kullanıcının bir sayfadaki tepkilerinden birini kaldırır. Kullanıcı bu tepkiyi eklememişse, istek no-react kodu ile başarılı olur ve sayım değişmez.



Sayfa Yapısı 
Bir Page nesnesi, birçok yorumun ait olabileceği sayfayı temsil eder. Bu ilişki şu şekilde tanımlanır
urlId.
Bir Page, sayfa başlığı, yorum sayısı ve urlId gibi bilgileri saklar.
Page nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/pages 
Şu anda yalnızca hesabınıza bağlı tüm sayfaları (veya /by-url-id ile tek bir sayfayı) alabilirsiniz. Daha ayrıntılı arama isterseniz, bize ulaşın.



Yararlı İpucu
Comment API'si bir urlId gerektirir. Hangi urlId değerlerinin size sunulduğunu görmek için önce Pages API'sini çağırabilirsiniz.
GET /api/v1/pages/by-url-id 
Bireysel sayfalar ilgili urlId ile getirilebilir. Bu, sayfa başlıklarını veya yorum sayılarını aramak için faydalı olabilir.



Yararlı İpucu
urlId gibi değerleri URI Encode (URI Kodlama) yapmayı unutmayın.
PATCH /api/v1/pages/:id 
Bu rota tek bir Page'i güncelleme yeteneği sağlar. İlgili yorumlar da güncellenecektir.



Not
Sayfa nesnesindeki bazı parametreler otomatik olarak güncellenir. Bunlar sayaçlar (counts) ve title öznitelikleridir. Sayaçlar API aracılığıyla güncellenemez
çünkü bunlar hesaplanan değerlerdir. Sayfanın title alanı API ile ayarlanabilir, ancak yorum bileşeni aynı urlId'ye sahip ve farklı bir sayfa başlığı olan bir sayfada kullanılırsa üzerine yazılır.
POST /api/v1/pages 
This API endpoint provides the ability to create pages.
A common use cases is access control.
Notes:
- If you've commented on a comment thread, or called the API to create a
Comment, you've already created aPageobject! You can try fetching it via the/by-url-idPageroute, passing in the sameurlIdpassed to the comment widget. - The
Pagestructure contains some calculated values. Currently, these arecommentCountandrootCommentCount. They are populated automatically and cannot be set by the API. Attempting to do so will cause the API to return an error.



DELETE /api/v1/pages/:id 
Bu rota, id ile tek bir sayfanın silinmesini sağlar.
Aynı urlId'ye sahip bir sayfanın yorum widget'ı ile etkileşimde bulunmanın Page'i sorunsuzca yeniden oluşturacağını unutmayın.



Anket Yapısı 
A Poll bir yorumla ilişkilendirilir, kendi başına ayrı bir nesne değildir. Yorumla birlikte oluşturulur (POST /api/v1/comments bakınız), ya da daha sonra mevcut bir yoruma PUT /api/v1/polls/:commentId ile eklenir.
Oy sayıları anketin kendisinde tutulur, bu yüzden bir anketi okuduğunuzda sonuçları toplamanıza gerek kalmaz. Bu sayıları oluşturan bireysel oylar PollVote nesneleridir.
Her seçenek, anket oluşturulduğunda oluşturulan bir id'ye sahiptir. Bu id, oy vermek, bir seçeneğin etiketini değiştirmek ve anketi seçenekler eklenip çıkarıldığında PUT ettiğinizde bir seçeneği (ve oylarını) tutmak için kullanılır. Bir seçeneğe referans vermenin tek güvenli yolu budur - listenin konumuna asla başvurmayın.

Sınırlamalar
- Bir soru zorunludur ve en fazla 200 karakter olabilir.
- Bir anketin 2 ile 10 arasında seçeneği olabilir.
- Bir seçenek etiketi zorunludur, en fazla 100 karakter olabilir ve anket içinde (büyük/küçük harf duyarsız) benzersiz olmalıdır.
closesAtanket oluşturulduğunda gelecekte olmalıdır. Bir anketi hemen kapatmak için, geçmiş bir tarih ilePATCHyapın.
Site Ayarları
Anketler, Özelleştir Widget altında değiştirebileceğiniz site yapılandırmanıza uyar:
- Bir anket oluşturulmadan önce anketlerin etkinleştirilmiş olması gerekir, aksi takdirde API
polls-disabledyanıtını verir. - Oy verme, oturum açmış kullanıcılarla sınırlı olabilir; bu durumda yalnızca bir
anonUserIdile gönderilen oy,poll-login-requiredhatasıyla reddedilir.
GET /api/v1/polls/:commentId 
Bir yoruma eklenmiş anketi, mevcut oy sayılarıyla birlikte okur.
Anketler, yorum API'leri tarafından yorumun kendisinde de döndürülür, bu yüzden yalnızca sonuçları istiyor ve tüm yorumu istemiyorsanız bunu kullanın.



Anketi olmayan bir yorum, silinmiş bir yorum ve var olmayan bir yorum kimliği hepsi aynı şekilde yanıt verir, poll-not-found ile.
PUT /api/v1/polls/:commentId 
Mevcut bir yoruma anket ekler veya zaten sahip olduğu anketin tam durumunu ayarlar.
Gövde, tam anketi içerir ve gönderdiğiniz seçenekler, o sırayla anketin seçenekleri olur. Her seçenek, id'siyle eşleştirilir:
- Mevcut bir seçeneğin
id'siyle gönderilen bir seçenek, o seçeneği ve oylarını korur. Etiketi ve konumu, gönderdiğiniz şekilde güncellenir. idolmadan gönderilen bir seçenek eklenir ve oyları yoktur.- Bıraktığınız mevcut bir seçenek, üzerindeki oylarla birlikte kaldırılır.
totalVotesaynı miktarda azalır.
Bu yüzden bir seçenek eklemek için, mevcut seçenekleri id'leriyle birlikte yeni seçeneği id'siz gönderin. Bir seçeneği kaldırmak için, listeden onu çıkartarak gönderin. Seçenek id'leri, GET /api/v1/polls/:commentId isteğiyle dönen ankette bulunur.
Hiç id göndermemek, tüm seçenekleri değiştirir ve ankete daha önce verilen tüm oyları siler. Anketin oyları varsa, bu replaceVotes=true gerektirir; aksi takdirde API replace-votes-required yanıtını verir.
Diğer alanlar da değiştirilir: closesAt, privacy veya requireVoteToSeeResults bırakılırsa, varsayılan değerine sıfırlanır. Tek bir alanı değiştirmek ve diğerlerini olduğu gibi bırakmak için PATCH /api/v1/polls/:commentId kullanın.



Diğer Notlar
polliçinde olmayan biridya da aynıidiki kez verilirse,poll-invalidhatası oluşur. Anketi olmayan bir yorumda henüz seçenek id'leri yoktur, bu yüzden gönderilen her seçenekid'yi boş bırakmalıdır.- Anket gizliliği oylar alındıktan sonra daraltılabilir ancak genişletilemez.
- Bu API site ayarlarınızı uygular. Site veya sayfa için anketler etkinleştirilmemişse,
polls-disabledhatası döner. - Kilitli bir yorumun anketi değiştirilemez ve
lockedhatası verir. - Bağlı widget'lar canlı olarak güncellenir, böylece izleyiciler yeni anketi sayfayı yeniden yüklemeden görür.
PATCH /api/v1/polls/:commentId 
Bir anketi oylarını etkilemeden düzenler. Bunu sorudaki veya bir seçenekteki yazım hatasını düzeltmek, anketi kapatmak veya yeniden açmak, ya da kimin oy kullandığını görebileceğini değiştirmek için kullanın.
Seçenekler id'leriyle adreslenir ve bir PATCH adını verdiğiniz seçeneklerin etiketlerini değiştirir. Seçenek eklemek, kaldırmak veya yeniden sıralamak için,
tam seçenek listesini PUT /api/v1/polls/:commentId adresine gönderin: id'leriyle gönderdiğiniz seçenekler oylarını da korur.
Her alan isteğe bağlıdır, ancak en az bir tanesi sağlanmalıdır.




Diğer Notlar
- Ankette bulunmayan bir seçenek kimliği adlandırmak, sessizce hiçbir şey yapmaktan ziyade
poll-invalidhatası verir. - Etiketler, değiştirmediğiniz seçenekleri de sayarak, anket içinde benzersiz kalmalıdır.
- Anket oluştururken farklı olarak, burada
closesAtgeçmişte olabilir – bu, bir anketi hemen kapatmanın yoludur. - Anket gizliliği oylar alındıktan sonra daraltılabilir ancak genişletilemez.
- Kilitli bir yorumun anketi değiştirilemez ve
lockedhatası verir.
DELETE /api/v1/polls/:commentId 
Bir anketi, üzerindeki tüm oylarla birlikte yorumundan kaldırır. Yorum kendisi olduğu gibi bırakılır.
Yorumu silmek, anketini ve oylarını da kaldırır, bu yüzden bu yalnızca yorumu tutmak istediğinizde gerekir.



Anket Oy Yapısı 
A PollVote bir kişinin ankete verdiği cevaptır. Anketin kendisinde gösterilen sayımlar bu verilerle senkronizedir, bu yüzden toplamları değil, kim neye oy verdiğini bilmek istediğinizde bu verilere ihtiyacınız olur.
Bir seçmenin bir ankette en fazla bir oyu vardır. Tekrar oy vermek, ikinci bir oy eklemek yerine mevcut oyunu yeni seçeneğe taşır ve updatedAt bu olayın ne zaman gerçekleştiğini kaydeder.
voterId seçmen oturum açtığında userId'dir, aksi takdirde anonUserId'dir.

Gizlilik
Anketin privacy ayarı, yorum widget'ında olduğu gibi bu API'ye de aynı şekilde uygulanır:
- Anonymous (varsayılan): kimsenin birinin nasıl oy verdiğini göremez, bu yüzden oylar okunamaz.
GET /api/v1/poll-votesveGET /api/v1/poll-votes/:idpoll-anonymousile yanıt verir. Anketin sayımları hâlâGET /api/v1/polls/:commentIdüzerinden erişilebilir. - Admins and moderators: API anahtarınız sitenizin yöneticisine aittir, bu yüzden oyları okuyabilir.
- Everyone: oylar okunabilir.
Anket gizliliği oylar alındıktan sonra daraltılabilir ancak genişletilemez.
GET /api/v1/poll-votes 
Bir anketin sayımlarının arkasındaki bireysel oyları listeler, en eski oylardan başlayarak. Döndürülen her 100 oy için bir kredi.
Bir anket bir yoruma aittir, bu yüzden oylar bir seferde bir anket olarak okunur ve commentId gereklidir. voterId ile bir kişinin nasıl oy kullandığını kontrol ederek, ya da optionId ile belirli bir seçeneği seçen herkesi listeleyerek daha da daraltabilirsiniz.
Her çağrıda en fazla 1000 oy döndürülür. Daha fazlasını sayfalamak için skip kullanın.
Anketin privacy ayarı dikkate alınır: anonim bir anketteki oylar okunamaz ve istek poll-anonymous hatasıyla başarısız olur. Ayrıntılar için PollVote yapısına bakın.



Seçenek Başına Oyları Sayma
Sonuçları elde etmek için bunları toplamanıza gerek yok - anket kendi sayımlarını taşır. Bunun yerine anketi GET /api/v1/polls/:commentId ile okuyun ve kimin oy kullandığını bilmeniz gerektiğinde bu API'yi kullanın.
Bir Sayfadaki Tüm Anketler
Sayfa genelinde bir oy listesi yoktur. Tüm bir sayfayı raporlamak için yorumlarını GET /api/v1/comments ile alın; bu, her yorumun anketini ve sayımlarını döndürür ve ardından ilgilendiğiniz anketlerin oylarını okuyabilirsiniz.
GET /api/v1/poll-votes/:id 
Kimliğiyle tek bir anket oyunu okunur.
Anonim bir anketteki oy okunamaz ve istek poll-anonymous hatasıyla başarısız olur. Anketin privacy ayarının nasıl uygulandığını görmek için PollVote yapısına bakın.



POST /api/v1/poll-votes 
Bir ankette oy kaydeder.
Bir seçmenin bir ankette en fazla bir oyu vardır. Aynı seçmen için bu isteği tekrar çağırmak, ikinci bir oy eklemek yerine oyunu yeni seçeneğe taşır ve zaten seçtikleri seçeneğe oy vermek hiçbir şey yapmaz.
Yanıt ankete dahildir, böylece ikinci bir istek yapmadan güncellenmiş sayımları alırsınız.




Anonim Oylar
userId yerine anonUserId ayarlayarak oturum açmamış bir kişi için oy kaydedin. Bu kimlik herhangi bir kullanıcıyla eşleşmek zorunda değildir - sadece oturumu tanımlar, böylece aynı kişi iki kez sayılmaz.
Anonim oylama sitenizde etkinleştirilmiş olmalıdır. Oylama yalnızca oturum açmış kullanıcılarla sınırlıysa, sadece anonUserId içeren bir oy poll-login-required hatasıyla başarısız olur.
Anonim oylar ayrıca anket başına IP başına oran sınırlamasına tabidir, böylece bir kişinin oturumunu temizleyerek bir anketi doldurması engellenir. Sınırlamanın sizin sunucunuza değil, son kullanıcının ip'sine uygulanması için son kullanıcının ip'sini gönderin.
Diğer Notlar
userIdsitenizde mevcut bir kullanıcı olmalıdır. Başka bir siteye ait bir kullanıcı için oylar reddedilir.- Kapalı bir ankette oylama
poll-closedhatasıyla başarısız olur. - Bu API, anketteki sayımları günceller ve bağlı widget'lara canlı olarak gönderir.
DELETE /api/v1/poll-votes/:id 
Bir oyu geri alır. Oylamanın yapıldığı seçenek sayısını geri verir ve oy veren tekrar oy kullanabilir.



Diğer Notlar
- Aynı oy iki kez silindiğinde, ikinci seferde
not-foundyanıtı döner ve sayımlar değişmeden kalır. - Oy verildikten sonra anket değiştirildiyse, oy kaldırılır ancak sayım değişmez, çünkü yeni anket sıfırdan başlar.
Bekleyen Webhook Olayı Yapısı 
A PendingWebhookEvent object represents a queued webhook event that is pending.
PendingWebhookEvent objects are created automatically and cannot be manually created via the API. They also expire after one year.
They can be deleted which removes the task from the queue.
There are different event types - check eventType (OutboundSyncEventType) and type (OutboundSyncType).
A common use case for this API is to implement custom monitoring. You may want to call the /count endpoint periodically
to poll the outstanding count for given filters.
The structure for the PendingWebhookEvent object is as follows:

GET /api/v1/pending-webhook-events 
Bu rota, pendingWebhookEvents parametresi altında bekleyen webhook olaylarının bir listesini döndürür.
Bu API, skip parametresiyle sağlanan sayfalama kullanır. PendingWebhookEvents 100 öğe halinde sayfalanmış şekilde döndürülür, createdAt alanına göre en yeniler ilk sırada olacak şekilde sıralanır.



GET /api/v1/pending-webhook-events/count 
Bu rota, bekleyen webhook olaylarının sayısını count parametresi altında içeren bir nesne döndürür.
Aynı parametrelere göre /pending-webhook-events uç noktasıyla filtreleyebilirsiniz.



DELETE /api/v1/pending-webhook-events/:id 
Bu rota tek bir PendingWebhookEvent öğesinin silinmesine olanak tanır.
Toplu silme yapmanız gerekiyorsa, GET API'sini sayfalandırma ile çağırın ve ardından bu API'yi art arda çağırın.



SSO Kullanıcı Yapısı 
FastComments kullanımı kolay bir SSO çözümü sağlar. HMAC tabanlı entegrasyon ile bir kullanıcının bilgilerini güncellemek, kullanıcının güncellenmiş payload ile sayfayı yüklemesini sağlamak kadar basittir.
Bununla birlikte, uygulamanızın tutarlılığını artırmak için bir kullanıcıyı bu akışın dışında yönetmek isteyebilirsiniz.
SSO User API, SSOUsers adını verdiğimiz nesneleri CRUD yapmanın bir yolunu sağlar. Bu nesneler normal Users'dan farklıdır ve tür güvenliği için ayrı tutulur.
The structure for the SSOUser object is as follows:

Billing for SSO Users
SSO kullanıcıları izin bayraklarına göre farklı şekilde faturalandırılır:
- Regular SSO Users: Yönetici veya moderatör izni olmayan kullanıcılar normal SSO kullanıcıları olarak faturalandırılır
- SSO Admins:
isAccountOwnerveyaisAdminAdminbayraklarına sahip kullanıcılar ayrı olarak SSO Admin olarak faturalandırılır (normal kiracı yöneticileri ile aynı oran) - SSO Moderators:
isCommentModeratorAdminbayrağına sahip kullanıcılar ayrı olarak SSO Moderatör olarak faturalandırılır (normal moderatörlerle aynı oran)
Important: Çifte faturalandırmayı önlemek için sistem, SSO kullanıcılarını e-posta adresine göre normal kiracı kullanıcıları ve moderatörlerle otomatik olarak deduplikasyon yapar. Bir SSO kullanıcısının e-postası bir normal kiracı kullanıcısı veya moderatör ile aynıysa, iki kez faturalandırılmazlar.
Access Control
Kullanıcılar gruplara ayrılabilir. Bunun için groupIds alanı vardır ve isteğe bağlıdır.
@Mentions
Varsayılan olarak @mentions, @ karakteri yazıldığında diğer sso kullanıcılarını aramak için username'i kullanır. Eğer displayName kullanılırsa, displayName için bir eşleşme olduğunda username ile eşleşen sonuçlar göz ardı edilir ve @mention arama sonuçları displayName'i kullanır.
Subscriptions
FastComments ile kullanıcılar, yorum bileşenindeki zil simgesine tıklayıp Abone Ol'a tıklayarak bir sayfaya abone olabilirler.
Normal bir kullanıcı ile bildirim ayarlarına göre onlara bildirim e-postaları göndeririz.
SSO Kullanıcıları ile geriye dönük uyumluluk için bunu böleriz. Kullanıcılar yalnızca optedInSubscriptionNotifications'ı true olarak ayarlarsanız ek abonelik bildirim e-postaları gönderilecektir.
Badges
SSO kullanıcılara badgeConfig özelliğini kullanarak rozet atayabilirsiniz. Rozetler, yorumlarda kullanıcının adı yanında görünen görsel göstergelerdir.
badgeIds- Kullanıcıya atamak için rozet ID'lerinden oluşan dizi. Bunlar tüm sayfalarda görünen genel rozetlerdir. FastComments hesabınızda oluşturulmuş geçerli rozet ID'leri olmalıdır. 30 rozet ile sınırlıdır.pageBadgeIds- Geçerli sayfaya (urlId) özgü isteğe bağlı rozet ID'leri dizisi. Bu rozetler yalnızca atandıkları sayfada gösterilir. Farklı sayfalar aynı kullanıcı için farklı sayfa-özel rozetlere sahip olabilir.override- Eğer true ise, mevcut görüntülenen tüm rozetler sağlananlarla değiştirilecektir. Genel ve sayfa-özel rozetler bağımsız olarak geçersiz kılınır — genel rozetleri geçersiz kılmak sayfa-özel rozetleri etkilemez ve tersi de geçerlidir. Eğer false veya atlanırsa, sağlanan rozetler mevcut rozetlere eklenir.update- Eğer true ise, kullanıcı giriş yaptığında rozet görüntüleme özellikleri kiracı yapılandırmasından güncellenecektir.
GET /api/v1/sso-users 
Bu rota SSO Kullanıcılarını 100'erlik sayfalarda döndürür. Sayfalandırma skip parametresi ile sağlanır. Kullanıcılar signUpDate ve id alanlarına göre sıralanır.



GET /api/v1/sso-users/by-id/:id 
Bu rota, bir SSO kullanıcısını id'sine göre döndürür.



GET /api/v1/sso-users/by-email/:email 
Bu rota e-posta adresine göre tek bir SSO kullanıcısı döndürür.



PATCH /api/v1/sso-users/:id 
Bu rota, tek bir SSO kullanıcısını güncelleme olanağı sağlar.



POST /api/v1/sso-users 
Bu rota tek bir SSO kullanıcısının oluşturulmasını sağlar.
Aynı ID'ye sahip iki kullanıcı oluşturmaya çalışmak hata ile sonuçlanır.

Bu örnekte erişim kontrolü için groupIds belirtiyoruz, ancak bu isteğe bağlıdır.


Entegrasyon Notu
API tarafından gönderilen veriler, farklı bir SSO User HMAC yükü göndererek kolayca geçersiz kılınabilir. Örneğin, kullanıcı adını API üzerinden ayarlarsanız, ancak sayfa yüklemesi sırasında SSO akışıyla farklı bir kullanıcı adı gönderirseniz, kullanıcı adlarını otomatik olarak güncelleyeceğiz.
Bu akışta kullanıcı parametrelerini, bunları açıkça belirtmediğiniz veya null olarak ayarlamadığınız (undefined değil) sürece güncellemeyeceğiz.
PUT /api/v1/sso-users/:id 
Bu rota tek bir SSO kullanıcısını güncelleme yeteneği sağlar.

Bu örnekte erişim kontrolü için groupIds belirtiyoruz, ancak bu isteğe bağlıdır.


DELETE /api/v1/sso-users/:id 
Bu rota, tek bir SSO kullanıcısını id'si ile kaldırmayı sağlar.
Bu kullanıcının payload'ını içeren yorum bileşenini yeniden yüklemenin kullanıcıyı sorunsuz şekilde yeniden oluşturacağını unutmayın.
Kullanıcının yorumlarını silmek deleteComments sorgu parametresi aracılığıyla mümkündür. Bunun true olması durumunda:
- Kullanıcının tüm yorumları canlı olarak silinecektir.
- Tüm child (şimdi yetim) yorumlar, her bir yorumun ilişkili olduğu sayfa yapılandırmasına göre silinecek veya anonimleştirilecektir. Örneğin thread deletion modu "anonymize" ise yanıtlar kalacak ve kullanıcının yorumları anonimleştirilecektir. Bu yalnızca
commentDeleteModeRemove(varsayılan değer) olduğunda geçerlidir. creditsCostdeğeri2olur.
Anonimleştirilmiş Yorumlar
Kullanıcının yorumlarını koruyabilir ancak commentDeleteMode=1 olarak ayarlayarak bunları anonimleştirebilirsiniz.
Kullanıcının yorumları anonimleştirildiyse aşağıdaki değerler null olarak ayarlanır:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted ve isDeletedUser true olarak ayarlanır.
Render sırasında yorum bileşeni, kullanıcının adı için DELETED_USER_PLACEHOLDER (varsayılan: "[deleted]") ve yorum için DELETED_CONTENT_PLACEHOLDER kullanır. Bunlar Widget Özelleştirme UI'si aracılığıyla özelleştirilebilir.
Örnekler



Abonelik Yapısı 
A Subscription object represents a subscription for a user.
Subscription objects are created when a user clicks the notification bell in the comment widget and clicks "Bu sayfaya abone ol".
Subscriptions can also be created via the API.
Having a Subscription object causes Notification objects to be generated, and emails sent, when new comments are left on the root of the associated page
that the Subscription is for. Sending of emails depends on the type of user. For regular users this depends on optedInNotifications. For SSO Users this depends on optedInSubscriptionNotifications. Note that some applications may not have the concept of a web-accessible page, in which case simply set urlId to
the id of the item you are subscribing to (same value for urlId you would pass to the comment widget).
The structure for the Subscription object is as follows:

GET /api/v1/subscriptions/:id 
Bu rota, createdAt'e göre sıralanmış, en yeni ilk olacak şekilde en fazla 30 Subscription nesnesi döndürür.
userId ile filtreleyebilirsiniz. SSO ile, kullanıcı kimliği <tenant id>:<user id> formatındadır.



POST /api/v1/subscriptions 
This API endpoint provides the ability to create a Subscription. Note that a user may only have one subscription per page, as more is redundant, and trying
to create more than one subscription for the same user for the same page will result in an error.
Creating a subscription will result in Notification objects being created when a new comment is left on the root of the subscribed urlId (when comment parentId is null).



DELETE /api/v1/subscriptions/:id 
Bu rota bir Subscription nesnesini id ile siler.



Kiracı Günlük Kullanım Yapısı 
Bir TenantDailyUsage nesnesi, belirli bir gün için bir kiracının kullanımını temsil eder. Eğer belirli bir kiracı için belirli bir
günde hiçbir etkinlik yoksa, o gün için bir TenantDailyUsage nesnesi olmayacaktır.
The TenantDailyUsage object is not real time and may be minutes behind actual usage.
The structure for the TenantDailyUsage object is as follows:

GET /api/v1/tenant-daily-usage 
Bu rota, bir tenant'ın kullanımını yıl, ay ve güne göre aramaya olanak tanır. En fazla 365 nesne döndürülebilir ve maliyet 10 nesne için 1 API kredisi.
Yanıt nesneleri oluşturuldukları tarihe göre sıralanır (en eski önce).



Kiracı Yapısı 
Tenant, FastComments.com müşterisini tanımlar. Bunlar API aracılığıyla white-label erişimine sahip kiracılar tarafından oluşturulabilir. White-label kiracılar
başka white-label kiracılar oluşturamaz (sadece bir düzey iç içe izin verilir).
Tenant nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/tenants/:id 
Bu rota id ile tek bir Tenant döndürür.



GET /api/v1/tenants 
Bu API, tenant'ınız tarafından yönetilen tenants listesini döndürür.
Sayfalama skip sorgu parametresi ile sağlanır. Tenants, 100 öğelik sayfalar halinde, signUpDate ve id'ye göre sıralanarak döndürülür.
Maliyet, döndürülen tenants sayısına göre belirlenir; döndürülen her 10 tenants için 1 credit per 10 ücretlendirilir.

Tenant nesneleri üzerinde meta parametreleri tanımlayabilir ve eşleşen tenants için sorgu yapabilirsiniz. Örneğin, someKey anahtarı ve some-value meta değeri için, bu anahtar/değer çiftini içeren bir JSON nesnesi oluşturup filtrelemek için bunu URI kodlayarak sorgu parametresi olarak kullanabiliriz:



POST /api/v1/tenants 
Bu rota tek bir Tenant ekleme yeteneği sağlar.
Bir Tenant oluşturmanın aşağıdaki kısıtlamaları vardır:
- A
nameis required. domainConfigurationis required.- The following values may not be provided when creating a
Tenant:hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmount
- The
signUpDatemay not be in the future. - The
namemay not be longer than200 characters. - The
emailmay not be longer than300 characters. - The
emailmust be unique across all of FastComments.com tenants. - You may not create tenants if the parent tenant does not have a valid
TenantPackagedefined.- If your tenant was created via FastComments.com, this shouldn't be an issue.
- You may not create more tenants than defined under
maxWhiteLabeledTenantsin your package. - You must specify the
tenantIdquery param which is the id of yourparent tenantwith white labeling enabled.
Sadece birkaç parametre ile bir Tenant oluşturabiliriz:



PATCH /api/v1/tenants/:id 
This API endpoint provides the ability to update a Tenant by id.
Updating a Tenant has the following restrictions:
- The following values may not be updated:
hasFlexPricinglastBillingIssueReminderDateflexLastBilledAmountmanagedByTenantId
- The
signUpDatemay not be in the future. - The
namemay not be longer than200 characters. - The
emailmay not be longer than300 characters. - The
emailmust be unique across all of FastComments.com tenants. - When setting
billingInfoValidtotrue,billingInfomust be provided in the same request. - You may not update the
packageIdassociated with your own tenant. - You may not update the
paymentFrequencyassociated with your own tenant.



DELETE /api/v1/tenants/:id 
Bu rota, bir Tenant ve ilgili tüm verilerin (kullanıcılar, yorumlar, vb.) id ile kaldırılmasını sağlar.
Aşağıdaki kısıtlamalar tenant kaldırma işlemi ile ilgilidir:
- Tenant sizin kendi tenant'ınız olmalı veya sizin yönettiğiniz beyaz etiketli bir tenant olmalıdır.
suresorgu parametresitrueolarak ayarlanmış olmalıdır.



Kiracı Paketi Yapısı 
TenantPackage, bir Tenant için mevcut paket bilgilerini tanımlar. Bir tenant'ın birden çok paketi olabilir, ancak aynı anda yalnızca biri kullanımda olabilir.
Bir Tenant, packageId geçerli bir TenantPackage'ı işaret edene kadar herhangi bir ürün için kullanılamaz.
İki tür TenantPackage nesnesi vardır:
- Sabit fiyatlı paketler -
hasFlexPricingfalse olduğunda. - Esnek fiyatlandırma -
hasFlexPricingtrue olduğunda.
Her iki durumda da paketi kullanan hesap üzerinde limitler tanımlanır, ancak Flex ile tenant'a baz bir ücret artı kullandıkları miktar flex* parametreleri ile tanımlanan şekilde faturalandırılır.
Bir tenant'ın birden fazla tenant paketi olabilir ve paketi kendileri Fatura Bilgileri Sayfası. üzerinden değiştirme yetkisi olabilir.
Faturalamayı tenantlar için kendiniz yönetecekseniz, limitlerini tanımlamak için yine de her tenant için bir paket tanımlamanız gerekir. Tenant üzerinde billingHandledExternally'i true olarak ayarlamanız yeterlidir; böylece kendi fatura bilgilerini veya aktif paketlerini değiştiremeyeceklerdir.
Üst tenant'tan daha yüksek limitlere sahip paketler oluşturamazsınız.
TenantPackage nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/tenant-packages/:id 
Bu rota, id ile tek bir Tenant Package döndürür.



GET /api/v1/tenant-packages 
Bu API, skip sorgu parametresiyle sağlanan sayfalandırmayı kullanır. TenantPackages, createdAt ve id'ye göre sıralanmış olarak, 100 öğelik sayfalar halinde döndürülür.
Maliyet, döndürülen tenant paketlerinin sayısına göre hesaplanır; döndürülen tenant paketleri için maliyet 1 credit per 10'dur.



POST /api/v1/tenant-packages 
Bu rota tek bir TenantPackage ekleme yeteneği sağlar.
Bir TenantPackage oluşturmanın aşağıdaki kısıtlamaları vardır:
- Aşağıdaki parametreler gereklidir:
nametenantIdmonthlyCostUSD- Boş (null) olabilir.yearlyCostUSD- Boş (null) olabilir.maxMonthlyPageLoadsmaxMonthlyAPICreditsmaxMonthlyCommentsmaxConcurrentUsersmaxTenantUsersmaxSSOUsersmaxModeratorsmaxDomainshasDebrandingforWhoTextfeatureTaglineshasFlexPricing- Eğer true ise, tümflex*parametreleri gereklidir.
name50 characters'den daha uzun olamaz.- Her
forWhoTextöğesi200 characters'den daha uzun olamaz. - Her
featureTaglinesöğesi100 characters'den daha uzun olamaz. TenantPackage, üst kiracıdan daha "küçük" olmalıdır. Örneğin, tümmax*parametrelerinin üst kiracıdan daha düşük değerlere sahip olması gerekir.- Bir beyaz etiketli kiracı en fazla beş pakete sahip olabilir.
- Sadece beyaz etiketleme erişimine sahip kiracılar bir
TenantPackageoluşturabilir. - Kendi kiracınıza paket ekleyemezsiniz. :)
Bir TenantPackage şu şekilde oluşturulabilir:



PATCH /api/v1/tenant-packages/:id 
This API endpoint provides the ability to update a TenantPackage by id.
Updating a TenantPackage has the following restrictions:
- If you are setting
hasFlexPricingto true, then allflex*parameters are required in that same request. - The
namemay not be longer than50 characters. - Each
forWhoTextitem may not be longer than200 characters. - Each
featureTaglinesitem may not be longer than100 characters. - The
TenantPackagemust be "smaller" than the parent tenant. For example, all of themax*parameters must have lower values than the parent tenant. - You may not change the
tenantIdassociated with aTenantPackage.



DELETE /api/v1/tenant-packages/:id 
Bu rota bir TenantPackage'ı id ile kaldırmayı sağlar.
Kullanımda olan bir TenantPackage'ı kaldıramazsınız (bir tenant'ın packageId pakete işaret ediyor). Önce Tenant'ı güncelleyin.



Kiracı Kullanıcı Yapısı 
The TenantUser defines a User which is managed by a specific tenant. Their account is in complete control of the tenant
they are associated with, and their account can be updated or deleted via the UI or API.
Tenant users can be administrators with all permissions and access to the Tenant, or they can be limited to specific permissions to
moderate comments, access API keys, etc.
The structure for the TenantUser object is as follows:

GET /api/v1/tenant-users/:id 
Bu rota id ile tek bir TenantUser döndürür.



GET /api/v1/tenant-users 
Bu API, sayfalama için skip sorgu parametresi ile çalışır. TenantUsers, 100 öğe sayfaları halinde döndürülür; signUpDate, username ve id'ye göre sıralanır.
Maliyet döndürülen tenant users sayısına göre belirlenir; döndürülen her 10 tenant users için 1 credit per 10 ücret alınır.



POST /api/v1/tenant-users 
Bu rota tek bir TenantUser ekleme olanağı sağlar.
Bir TenantUser oluşturmanın aşağıdaki kısıtlamaları vardır:
usernamegereklidir.emailgereklidir.signUpDategelecekte olamaz.localeşu listede olmalıdır: Desteklenen Yereller.usernameFastComments.com genelinde benzersiz olmalıdır. Bu bir sorun ise, bunun yerine SSO kullanmanızı öneririz.emailFastComments.com genelinde benzersiz olmalıdır. Bu bir sorun ise, bunun yerine SSO kullanmanızı öneririz.- Paketinizde
maxTenantUsersaltında tanımlanan sayıda tenant kullanıcıdan daha fazlasını oluşturamazsınız.
TenantUser şu şekilde oluşturabiliriz



POST /api/v1/tenant-users/:id/send-login-link 
Bu rota tek bir TenantUser'a giriş bağlantısı gönderebilme imkanı sağlar.
Kullanıcıları toplu oluştururken ve onlara FastComments.com'a nasıl giriş yapacaklarını anlatmak zorunda olmadığınız durumlarda faydalıdır. Bu, onlara giriş yapmak için süresi dolan bir "sihirli bağlantı" gönderecektir; süresi 30 days sonra sona erer.
Bir TenantUser'a giriş bağlantısı göndermek için aşağıdaki kısıtlamalar geçerlidir:
TenantUserzaten mevcut olmalıdır.TenantUser'ın ait olduğuTenant'ı yönetme erişiminiz olmalıdır.
Bir TenantUser'a giriş bağlantısı şu şekilde gönderilebilir:

Bu, şu şekilde bir e-posta gönderecektir: Bob at TenantName is inviting you to be a moderator...


PATCH /api/v1/tenant-users/:id 
This route provides the ability to update a single TenantUser.
Updating a TenantUser has the following restrictions:
- The
signUpDatemay not be in the future. - The
localemust be in the list of Supported Locales. - The
usernamemust be unique across all of FastComments.com. If this is an issue, we suggest using SSO instead. - The
emailmust be unique across all of FastComments.com. If this is an issue, we suggest using SSO instead. - You cannot update the
tenantIdof a user.
We can create a TenantUser as follows



DELETE /api/v1/tenant-users/:id 
Bu rota bir TenantUser'ı id ile kaldırmayı sağlar.
Kullanıcının yorumlarının silinmesi deleteComments sorgu parametresi ile mümkündür. Bunun true olması durumunda:
- Kullanıcının tüm yorumları canlı olarak silinecektir.
- Tüm child (şimdi öksüz) yorumlar, her yorumun ilişkili sayfa yapılandırmasına göre silinecek veya anonimleştirilecektir. Örneğin konu silme modu "anonymize" ise yanıtlar kalır ve kullanıcının yorumları anonimleştirilir. Bu yalnızca
commentDeleteModeRemoveolduğunda (varsayılan değer) geçerlidir. creditsCostdeğeri2olur.
Anonymized Comments
Kullanıcının yorumlarını saklayabilir fakat commentDeleteMode=1 ayarlayarak bunları yalnızca anonimleştirebilirsiniz.
Kullanıcının yorumları anonimleştirildiğinde aşağıdaki değerler null olarak ayarlanır:
- commenterName
- commenterEmail
- avatarSrc
- userId
- anonUserId
- mentions
- badges
isDeleted ve isDeletedUser true olarak ayarlanır.
Render edilirken, yorum widget'ı kullanıcının adı için DELETED_USER_PLACEHOLDER (varsayılan: "[deleted]") ve yorum için DELETED_CONTENT_PLACEHOLDER kullanır. Bunlar Widget Özelleştirme UI'sı aracılığıyla özelleştirilebilir.
Examples



Kullanıcı Yapısı 
User tüm kullanıcı türlerinin en yaygın ortak paydasını temsil eden bir nesnedir.
Unutmayın ki FastComments'ta kullanıcılar için birçok farklı kullanım durumu bulunur:
- Secure SSO
- Simple SSO
- Tenant Users (Örneğin: Yöneticiler)
- Commenters
Bu API Commenters ve Simple SSO aracılığıyla oluşturulan kullanıcılar içindir. Temelde, siteniz üzerinden oluşturulan herhangi bir kullanıcıya bu API aracılığıyla erişilebilir. Tenant Users da bu şekilde alınabilir, ancak /tenant-users/ API'si ile etkileşime girerek daha fazla bilgi edinebilirsiniz.
Secure SSO için lütfen /sso-users/ API'sini kullanın.
Bu tür kullanıcıları güncelleyemezsiniz. Hesaplarını siteniz aracılığıyla oluşturmuşlardır, bu yüzden temel bazı salt okunur erişim sağlıyoruz, ancak değişiklik yapamazsınız. Bu tür bir akışa sahip olmak istiyorsanız - Secure SSO'yu kurmanız gerekir.
User nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/users/:id 
Bu rota id ile tek bir Kullanıcı döndürür.



Oy Yapısı 
Bir Vote nesnesi, bir kullanıcı tarafından bırakılan bir oyu temsil eder.
Yorumlar ile oy arasındaki ilişki commentId aracılığıyla tanımlanır.
Vote nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/votes 
Oylar urlId ile alınmalıdır.
Oy Türleri
Üç tür oy vardır:
- Kimliği doğrulanmış oylar, ilgili yoruma uygulanır. Bunları bu API aracılığıyla oluşturabilirsiniz.
- Kimliği doğrulanmış oylar, doğrulama için beklemede olan ve bu nedenle henüz yoruma uygulanmamış olanlar. Bunlar bir kullanıcı FastComments.com oy vermek için giriş yap mekanizmasını kullandığında oluşturulur.
- Anonim oylar, ilgili yoruma uygulanır. Bunlar anonim yorumla birlikte oluşturulur.
Bunlar karışıklığı azaltmak için API'de ayrı listeler halinde döndürülür.



Anonim Oylar Notları
Bu API aracılığıyla oluşturulan anonim oyların appliedAuthorizedVotes listesinde görüneceğini unutmayın. API anahtarıyla API aracılığıyla oluşturuldukları için yetkili olarak kabul edilirler.
appliedAnonymousVotes yapısı e-posta, API anahtarı vb. olmadan oluşturulan oylar içindir.
GET /api/v1/votes/for-user 
Belirli bir urlId üzerinde bir kullanıcı tarafından bırakılan oyları getirmeyi sağlar. Herhangi bir FastComments.com veya SSO User olabilecek bir userId alır.
Bu, bir kullanıcının bir yoruma oy verip vermediğini göstermek istiyorsanız yararlıdır. Yorumları getirirken, aynı urlId ile kullanıcı için aynı anda bu API'yi çağırmanız yeterlidir.
Eğer anonim oy kullanıyorsanız bunun yerine anonUserId göndermek isteyeceksiniz.


Anonim oyların appliedAuthorizedVotes listesinde görüneceğini unutmayın. API anahtarı ile API üzerinden oluşturuldukları için yetkili kabul edilirler.


POST /api/v1/votes 
Bu rota tek bir yetkili Vote ekleme yeteneği sağlar. Oylar up (+1) veya down (-1) olabilir.




Anonim Oy Oluşturma
Anonim oylar, sorgu parametrelerinde userId yerine anonUserId ayarlanarak oluşturulabilir.
Bu id herhangi bir kullanıcı nesnesiyle eşleşmek zorunda değildir (dolayısıyla anonim). Bu, yalnızca oturum için bir tanımlayıcıdır, böylece aynı oturum içinde oyları tekrar alabilir ve bir yorumun oylandığını kontrol edebilirsiniz.
Eğer FastComments'ın sahip olduğu gibi "anonim oturumlar" gibi bir şeye sahip değilseniz - bunu basitçe rastgele bir ID'ye, örneğin bir UUID'ye ayarlayabilirsiniz (ancak alan tasarrufu için daha küçük tanımlayıcıları tercih ediyoruz).
Diğer Notlar
- Bu API, tenant düzeyindeki ayarlara uyar. Örneğin, belirli bir sayfa için oylamayı devre dışı bırakırsanız ve API aracılığıyla bir oy oluşturmaya çalışırsanız,
voting-disabledhata kodu ile başarısız olur. - Bu API varsayılan olarak canlıdır.
- Bu API, ilgili
Comment'invotesalanını güncelleyecektir.
DELETE /api/v1/votes/:id 
Bu rota tek bir Vote'u silme imkanı sağlar.



Notlar:
- Bu API, kiracı düzeyindeki ayarlara uyar. Örneğin, belirli bir sayfa için oylamayı devre dışı bırakırsanız ve API üzerinden bir oy oluşturmaya çalışırsanız,
voting-disabledhata kodu ile başarısız olur. - Bu API varsayılan olarak canlıdır.
- Bu API, ilgili
Comment'invotesdeğerini güncelleyecektir.
Alan Adı Yapılandırma Yapısı 
A DomainConfig object represents configuration for a domain for a tenant.
The structure for the DomainConfig object is as follows:


Kimlik Doğrulama
Domain Configuration is used to determine which sites can host the FastComments widget for your account. This is a basic form of authentication, meaning adding or removing any Domain Configurations can impact the availability of your FastComments installation in production.
Don't remove or update the domain property of a Domain Config for a domain that is currently in use unless disabling that domain is intended.
This has the same behavior as removing a domain from /auth/my-account/configure-domains.
Also note that removing a domain from the My Domains UI will remove any corresponding configuration for that domain that may have been added via this UI.
E-posta Özelleştirmesi İçin
The unsubscribe link in the email footer, and the one-click-unsubscribe feature offered by many email clients, can be configured via this API by defining footerUnsubscribeURL and emailHeaders, respectively.
DKIM İçin
After defining your DKIM DNS records, simply update the DomainConfig with your DKIM configuration using the defined structure.
GET /api/v1/domain-configs 
Bu API, bir kiracı için tüm DomainConfig nesnelerini getirme yeteneği sağlar.



GET /api/v1/domain-configs/:domain 
Bireysel DomainConfig'ler, karşılık gelen domain ile alınabilir.



POST /api/v1/domain-configs 
Bu API uç noktası alan adı yapılandırmaları oluşturma yeteneği sağlar.
Bir alan adı için yapılandırma eklemek, o alan adını FastComments hesabı için yetkilendirir.
Bu API'nin yaygın kullanım durumları başlangıç kurulumu, birçok alan adı eklenmesi gerektiğinde veya e-posta gönderimi için özel yapılandırmadır.



PATCH /api/v1/domain-configs/:domain 
Bu API uç noktası, yalnızca alan adını ve güncellenecek özniteliği belirterek bir alan yapılandırmasını güncelleme yeteneği sağlar.



PUT /api/v1/domain-configs/:domain 
Bu API uç noktası bir alan yapılandırmasını değiştirme yeteneği sağlar.



DELETE /api/v1/domain-configs/:domain 
Bu rota, tek bir DomainConfig'in id'sine göre kaldırılmasını sağlar.
- Not: Bir
DomainConfig'in kaldırılması, o alan adının FastComments kullanma yetkisini kaldırır. - Not: UI üzerinden bir alan adını yeniden eklemek nesneyi yeniden oluşturur (yalnızca
domainalanı doldurulmuş olarak).



Soru Yapılandırma Yapısı 
FastComments, soru oluşturma ve bunların sonuçlarını toplama yolu sağlar. Bir soru örneği (bundan sonra QuestionConfig olarak anılacaktır)
yıldız derecelendirmesi, bir kaydırıcı veya bir NPS sorusu olabilir (type ile belirlenir).
Soru verileri ayrı ayrı, birlikte, zaman içinde, genel olarak, sayfaya göre vb. şekilde toplanabilir.
Bu çerçeve, istemci tarafı widget'ları (bu API'nin önünde sunucunuzla), yönetici panolarını ve raporlama araçlarını oluşturmak için gereken tüm yeteneklere sahiptir.
İlk olarak bir QuestionConfig tanımlamamız gerekiyor. Yapısı şu şekildedir:

GET /api/v1/question-configs 
Bu rota sayfalandırılmış şekilde tek seferde en fazla 100 QuestionConfig nesnesi döndürür. Maliyet 100 nesne başına 1'dir. Bunlar
soru metnine göre artan sırada sıralanırlar (question alanı).



GET /api/v1/question-configs/:id 
Bu rota verilen id ile tek bir QuestionConfig döndürür.



POST /api/v1/question-configs 
Bu API uç noktası bir QuestionConfig oluşturma yeteneği sağlar.



PATCH /api/v1/question-configs/:id 
Bu rota tek bir QuestionConfig'i güncelleme olanağı sağlar.
Aşağıdaki yapı değiştirilebilecek tüm değerleri temsil eder:




DELETE /api/v1/question-configs/:id 
Bu rota, bir QuestionConfig'ı id ile kaldırmayı sağlar.
Bu, ilgili tüm soru sonuçlarını silecektir (ancak yorumları silmez). Bu, yüksek kredi maliyetinin bir parçasıdır.



Soru Sonucu Yapısı 
Sorular için sonuçları kaydetmek amacıyla bir QuestionResult oluşturursunuz. Ardından soru sonuçlarını toplu hâlde işleyebilir ve raporlama amaçları için yorumlara bağlayabilirsiniz.

GET /api/v1/question-results 
Bu rota sayfalandırılmış olarak aynı anda en fazla 1000 QuestionResults nesnesi döndürür. Ücret her 100 nesne için 1'dir. Onlar
createdAt'e göre artan sırada sıralanırlar. Çeşitli parametrelere göre filtreleyebilirsiniz.



GET /api/v1/question-results/:id 
Bu rota, id'sine göre tek bir QuestionResult döndürür.



POST /api/v1/question-results 
Bu API uç noktası bir QuestionResult oluşturma yeteneği sağlar.



PATCH /api/v1/question-results/:id 
Bu rota tek bir QuestionResult'ı güncelleme yeteneği sağlar.
Aşağıdaki yapı, değiştirilebilecek tüm değerleri temsil eder:




DELETE /api/v1/question-results/:id 
Bu rota, id ile bir QuestionResult'ın kaldırılmasını sağlar.



GET /api/v1/question-results-aggregate 
Burası sonuçların toplandığı yerdir.
Agregasyon yanıt yapısı aşağıdaki gibidir:

Here are the query parameters available for aggregation:

Here's an example request:

Example response:


Performans Notları
- Önbellek bulunamadığında, agregasyonlar genellikle her milyon sonuç için beş saniye sürer.
- Aksi takdirde, istekler sabit zamanlıdır.
Önbellekleme ve Maliyet Notları
forceRecalculatebelirtildiğinde maliyet her zaman10olur, normal2yerine.- Önbellek süresi dolup veriler yeniden hesaplanırsa,
forceRecalculatebelirtilmemişse maliyet yine sabit2'dir. Önbellek, toplanan veri kümesinin boyutuna göre sona erer (30 saniye ile 5 dakika arasında değişebilir). - Bu, önbelleğin kullanılmasını teşvik etmek içindir.
GET /api/v1/question-results-aggregate/combine/comments 
Bu, sonuçların yorumlarla birleştirildiği yerdir. Örneğin bir ürün için "son olumlu ve olumsuz yorumlar" grafiği oluşturmak için faydalıdır.
Değer aralığı (dahil), bir veya daha fazla soru ve bir başlangıç tarihi (dahil) ile arama yapabilirsiniz.
Yanıt yapısı şu şekildedir:

Toplama için kullanılabilen sorgu parametreleri şunlardır:

İşte bir örnek istek:

Örnek yanıt:


Önbellekleme ve Maliyet Notları
forceRecalculatebelirtildiğinde maliyet normal2yerine her zaman10olur.- Önbellek süresi dolup veriler yeniden hesaplanırsa,
forceRecalculatebelirtilmemişse maliyet yine sabit2olur. - Bu, önbelleğin kullanılmasını teşvik etmek içindir.
Kullanıcı Rozet Yapısı 
UserBadge, FastComments sisteminde bir kullanıcıya atanan rozeti temsil eden bir nesnedir.
Rozetler, kullanıcı etkinliğine (örneğin yorum sayısı, yanıt süresi, veteran durumu) göre otomatik olarak veya site yöneticileri tarafından manuel olarak kullanıcılara atanabilir.
UserBadge nesnesinin yapısı aşağıdaki gibidir:

GET /api/v1/user-badges 
Bu uç nokta, çeşitli kriterlere göre kullanıcı rozetlerini getirmenize olanak tanır.
Örnek İstek:
Run 
Sonuçları filtrelemek için çeşitli sorgu parametreleri ekleyebilirsiniz:
userId- Belirli bir kullanıcı için rozetleri alınbadgeId- Belirli bir rozete ait örnekleri alıntype- Rozet türüne göre filtreleyin (0=CommentCount, 1=CommentUpVotes, 2=CommentReplies, vb. Tam liste için UserBadge yapısına bakın)displayedOnComments- Rozetin yorumlarda görüntülenip görüntülenmediğine göre filtreleyin (true/false)limit- Döndürülecek maksimum rozet sayısı (varsayılan 30, maksimum 200)skip- Atlanacak rozet sayısı (sayfalama için)
Örnek Yanıt:

Olası Hata Yanıtları:


GET /api/v1/user-badges/:id 
Bu uç nokta, benzersiz bir ID ile belirli bir kullanıcı rozetini getirmenize olanak tanır.
Örnek İstek:
Run 
Örnek Yanıt:

Olası Hata Yanıtları:


POST /api/v1/user-badges 
Bu uç nokta, yeni bir kullanıcı rozet ataması oluşturmanıza olanak tanır.
Örnek İstek:
Run 
İstek gövdesi aşağıdaki parametreleri içermelidir:
userId(required) - Rozeti atayacağınız kullanıcının kimliğibadgeId(required) - Atanacak rozetin kimliğidisplayedOnComments(optional) - Rozetin kullanıcının yorumlarında gösterilip gösterilmeyeceği (varsayılan true)
Önemli Notlar:
- Rozet, tenant'ınızın rozet kataloğunda mevcut olmalı ve etkinleştirilmiş olmalıdır
- Rozetleri yalnızca tenant'ınıza ait olan veya sitenizde yorum yapmış kullanıcılara atayabilirsiniz
Örnek Yanıt:

Olası Hata Yanıtları:





PUT /api/v1/user-badges/:id 
Bu uç nokta, bir kullanıcı rozeti atamasını güncellemenize olanak tanır.
Şu anda yalnızca güncellenebilen özellik displayedOnComments'tir; bu özellik rozetin kullanıcının yorumlarında gösterilip gösterilmeyeceğini kontrol eder.
Örnek İstek:
Run 
Örnek Yanıt:

Olası Hata Yanıtları:



DELETE /api/v1/user-badges/:id 
Bu uç nokta bir kullanıcı rozet atamasını silmenize olanak tanır.
Örnek İstek:
Run 
Örnek Yanıt:

Olası Hata Yanıtları:



Kullanıcı Rozet İlerleme Yapısı 
UserBadgeProgress is an object that represents a user's progress toward earning various badges in the FastComments system.
This tracking helps determine when users should receive automatic badges based on their activity and participation in your community.
The structure for the UserBadgeProgress object is as follows:

GET /api/v1/user-badge-progress 
Bu uç nokta, çeşitli kriterlere göre kullanıcı rozet ilerleme kayıtlarını getirmenizi sağlar.
Example Request:
Run 
You can add various query parameters to filter the results:
userId- Belirli bir kullanıcı için ilerlemeyi getirirlimit- Döndürülecek maksimum kayıt sayısı (varsayılan 30, maks 200)skip- Atlanacak kayıt sayısı (sayfalama için)
Example Response:

Possible Error Responses:


GET /api/v1/user-badge-progress/:id 
Bu uç nokta, benzersiz kimliğiyle belirli bir kullanıcı rozet ilerleme kaydını almanıza olanak tanır.
Example Request:
Run 
Example Response:

Possible Error Responses:


GET /api/v1/user-badge-progress/user/:userId 
Bu uç nokta, bir kullanıcının user ID'sine göre rozet ilerleme kaydını almanıza olanak tanır.
Example Request:
Run 
Example Response:

Possible Error Responses:



Sonuç olarak
API belgelerimizin kapsamlı ve anlaşılması kolay olduğunu umuyoruz. Herhangi bir eksiklik bulursanız, lütfen aşağıdan bize bildirin.