API
نقطهٔ پایانی خصوصی وجود ندارد. حتی برای خودِ رابط کاربری.
بیشتر محصولات دو API دارند: یکی مستندشده که به شما پیشنهاد میشود، و دیگری جالبتر که صفحههای خودشان استفاده میکنند. دومی همیشه بهتر است و هرگز به شما اجازهٔ نزدیک شدن به آن داده نمیشود. اینجا فقط یکی وجود دارد و رابط کاربری مثل هر چیز دیگری کلاینت آن است — که برای ما یک محدودیت است و دلیل اینکه هر چه میخواهید بسازید ممکن است.
هزینهٔ واقعی این قاعده
یعنی گاهی یک صفحه باید منتظر بماند تا API درست شود، بهجای اینکه دور آن را بزند و یک فیلد راحت را بردارد. روزی که صفحهای به چیزی نیاز دارد که API عمومی نمیدهد، همان روز API اشتباه است و راهحل، خودِ API است.
سودش این است که سه کلاینت بسیار متفاوت تقریباً هیچ هزینهٔ اضافهای ندارند. سرور MCP یک کلاینت است. یک کاشی dash-b یک کلاینت است. اسکریپت خودتان یک کلاینت است. هیچکدام شهروند درجهدویی که دور سطحی طراحیشده برای دیگری کار میکند نیست، چون سطح دیگری برای درجهدو ماندن وجود ندارد.
مستند، و آزمودهشده
OpenAPI در /docs تولید میشود و هر مسیر آزمونی دارد که همان مثالِ مستندات است. مستنداتی که جدا از کد نوشته میشود ظرف یک ماه از کد فاصله میگیرد؛ مستنداتی که در صورت اشتباه، بیلد را شکست میدهد، نمیگیرد.
ورود به سیستم
حساب castomo شما، از طریق جریان کد مجوز با PKCE — همان حسابی که برای dash-b و بقیهٔ خانواده استفاده میکنید. صفحهای که سرور اختصاصی ندارد این جریان را کاملاً خوب اجرا میکند؛ این همان چیزی است که این جریان برایش طراحی شده. برای کارهای ماشینبهماشین، یک کلید API با محدودهٔ پروژه.
- 1افراد
/v1/contacts·/lists·/segments·/tags·/imports - 2محتوا
/v1/creatives، با اعتبارسنجی، پیشنمایش و رندر برای هر هدف - 3اتوماسیون
/v1/funnels·/funnels/:id/versions·/runs·/simulate - 4پخش
/v1/campaigns، با مخاطب، مادیسازی، زمانبندی و ارسال بهعنوان گامهای مجزا - 5رویدادهای ورودی
/v1/events— رویدادهای برنامهٔ خودتان، بهعنوان تریگر - 6تحویل
/sender-identities·/domains·/apps·/webhooks - 7اعداد
/v1/reports/*، و/track/*روی میزبان پیگیری
OpenAPI در /docs/mcp روی همان فرایند
قراردادها
همان شکل هر سرویس دیگر castomo
که بیشتر از آنچه به نظر میرسد اهمیت دارد. اگر یکی از اینها را از قبل فراخوانی میکنید، از قبل میدانید این یکی چگونه پاسخ میدهد، شکست میخورد و صفحهبندی میکند.
یک پاکت خطا
هر شکست شکل یکسانی دارد، یک کد پایدار و پیامی برای انسان. هیچ مسیری روش خاص خودش برای ناراضی بودن نمیسازد.
صفحهبندی با نشانگر (cursor)
نه آفست. فهرستی که هنگام پیمایش تغییر میکند، بیصدا ردیفی را از قلم نمیاندازد یا تکرار نمیکند — کاری که صفحهبندی آفستی آرام و مداوم انجام میدهد.
کلیدهای ایدمپوتنسی
روی هر مسیر تغییردهنده. درخواستی را که مطمئن نیستید رسیده، دوباره بفرستید و همان پاسخ را بگیرید، نه یک مخاطب دوم، یک کمپین دوم یا یک ارسال دوم.
محدود به یک پروژه
یک توکن به یک مستأجر و یک پروژه اشاره میکند، هر دو. امنیت سطح ردیف در خود پایگاه داده اعمال میشود، نه با یادآوریِ افزودن یک شرط.
وبهوکهای خروجی
امضاشده، با backoff دوباره تلاششده، و حداقل یکبار تحویلدادهشده — پس نقطهٔ پایانی شما هم باید ایدمپوتنت باشد. رویدادها همان واژگانی هستند که گزارشها استفاده میکنند.
حذف و برونسپاری داده
یک مخاطب را میتوان از طریق API برونسپاری یا حذف کرد، و حذف از طریق مسیر داخلی خود خانواده به هر سرویس همخانوادهای که نسخهای از آن را دارد میرسد.

هر کاری که رابط کاربری میکند، یک POST هم میکند.
رویدادها بخش جالب ماجرا هستند
هر چیز دیگری در این صفحه لولهکشی معمولیای است که انتظارش را دارید. POST /v1/events مسیری است که کارکرد محصول را عوض میکند.
برنامهٔ شما از قبل چیزهایی را میداند که هیچ ابزار بازاریابیای نمیتواند ببیند: چه کسی ثبتنام اولیه را تمام کرد، چه کسی همکاری را دعوت کرد، چه کسی به سقف مجاز رسید، چه کسی یک بعدازظهر یکشنبه دادههایش را برونسپاری کرد. آنها را با توکن خودتان بهعنوان رویداد ارسال کنید، و هر کدام به یک تریگر، یک شرط و یک سگمنت تبدیل میشود.
بقیه از مدل مخاطب پیروی میکند. رویدادها فقط اضافه میشوند، هرگز ویرایش نمیشوند؛ آنها همان گزارشی هستند که کل محصول به آن آویخته است. یک قیف که روی رویدادی که خودتان تعریف کردهاید فعال میشود، یک یکپارچهسازی نیست — همان سازوکاری است که message_opened استفاده میکند، فقط با نامی متفاوت در آن.
- 1شما آن را ارسال میکنید
POST /v1/events— یک نام، یک مخاطب، یک payload و یک کلید idempotency. - 2ثبت میشودبه گزارش مخاطب اضافه میشود. هیچ چیز دیگری لازم نیست از وجودش باخبر باشد.
- 3یک قیف آغاز میشودهر قیفی که ورودیاش نام آن رویداد را داشته باشد، برای هر مخاطبی که طبق مشخصات ورودی واجد شرایط باشد.
- 4قیفهای دیگر بر اساس آن انشعاب میگیرند«آیا این رویداد در ۱۴ روز گذشته رخ داده است» یک شرط معمولی سگمنت است.
- اطلاعاتو اجراها را پایان میدهدیک گره هدف که همان رویداد را نام ببرد، دنباله را در همان لحظهای که شخص آن کار را انجام میدهد متوقف میکند.
واژگان شماتوکن شما
مرزهایی که پیش از ساختن بهتر است بدانید
ClickSomo سه شناسه دربارهٔ شما ذخیره میکند — یک tenant، یک پروژه و یک کاربر، بهصورت شناسههای مبهم — و هیچ چیز دیگری. بدون رمز عبور، بدون پروفایل، بدون کارت، بدون فاکتور. محدودیتهای طرح بهصورت عدد میرسند: چند مخاطب، چند ارسال، چند تولید. واژگان پرداخت از این مرز در هیچ جهتی عبور نمیکند.
مخاطبان شما متعلق به خودتان هستند. شما مسئول داده هستید؛ ما پردازشگر. هیچ مسیری وجود ندارد که محصول دیگری از خانواده بتواند فهرست مخاطبان شما را بخواند یا بنویسد، و هیچ مسیر ورودیای برای این کار وجود ندارد.
اگر این محصول را جدی ارزیابی میکنید: پیش از خواندن هر بخش دیگری از این وبسایت، /docs را بخوانید. API توصیف صادقانهٔ آنچه محصول انجام میدهد است، و هر ادعای این صفحات به مسیری یا نوع گرهای نگاشت میشود که آنجا میتوانید پیدا کنید. وقتی شِما تغییر کند، این صفحات هم تغییر میکنند.