API
REST API نسخهدار برای همهی اجزای پایهی زمان و زمانبندی.
POST /v1/dates/resolve
POST /v1/business-days/add
POST /v1/deadlines
POST /v1/schedules/previewزیرساخت زمان · بومی ایران · برای توسعهدهندگان
تقویم شمسی، میلادی و قمری، تعطیلات و روزهای کاری، زمانبندی و رزرو، تکرار، سررسید، یادآور و اجرای زماندار؛ همه در یک موتور.
از راه API، SDK، CLI، MCP، وبهوک یا ویجتهای آماده به آن وصل شوید تا هیچ تیمی منطق تاریخ و زمان را از صفر ننویسد.
بدون کارت بانکی · دسترسی زودهنگام · کلید محیط تست بهمحض راهاندازی
دکتر امینی، تهران
۱۰:۰۰ انتخاب شد
روی زبانهها بزنید یا عبارت را خودتان بنویسید.
از یک تبدیل تاریخ ساده تا گردشکارهای زماندار در مقیاس واقعی.
چرا به ما بسپارید؟
هر تیمی که برای کاربران ایرانی نرمافزار میسازد، زود با این پرسشهای تکراری روبهرو میشود:
چندی بعد، آن «تابع کوچک تاریخ» به زیرسیستمی پیچیده تبدیل شده که مدام نگهداری میخواهد.
قبل
بعد
زیرساخت زمان
ما فقط تاریخ شمسی برنمیگردانیم. لایهی زیرساخت زمان هستیم و همهی اجزای پایهی زمان را در یک مدل گرد میآوریم.
زندهامروز۹ مهر ۱۴۰۵
زندهنخستین روز کاری پیش روشنبه ۱۱ مهر ۱۴۰۵
زندهاجرای بعدی «هر روز کاری، ساعت ۱۸»۱۴۰۵/۰۷/۰۹، ساعت ۱۸:۰۰
روی هر قابلیت بزنید تا نمونهی زندهاش را ببینید.
یک مدل زمانی و چند رابط؛ بیآنکه منطق زمان در هر محصول از نو نوشته شود.
رابطها
REST API نسخهدار برای همهی اجزای پایهی زمان و زمانبندی.
POST /v1/dates/resolve
POST /v1/business-days/add
POST /v1/deadlines
POST /v1/schedules/previewکتابخانههای نوعدار برای TypeScript و Python؛ زبانهای دیگر هم در راهاند.
const slots = await taghvim.availability.find({
resourceId: "doctor_1",
duration: "PT30M"
})توسعه، آزمون و کارهای روزمره، همه از خط فرمان.
taghvim date resolve "سه روز کاری بعد"
taghvim availability find
taghvim sandbox clock advance 3dابزارهای زمان و زمانبندی برای عاملهای هوشمند، با اختیار و دامنهی دسترسی مشخص.
taghvim_find_availability
taghvim_create_reservation
taghvim_create_deadline
taghvim_create_scheduleاجزای آمادهی راستبهچپ با تقویم شمسی، برای جاسازی مستقیم در محصول.
رویدادهای زمانی را به سامانهی خودتان برسانید؛ امضاشده، با تلاش دوباره و قابل بازپخش.
{
"id": "evtlog_…",
"type": "taghvim.event.reservation.confirmed.v1"
}ویجتها
اگر نمیخواهید رابط کاربری را از صفر بسازید، ویجتهای ما را در محصولتان جاسازی کنید. اگر کنترل کامل میخواهید، همین قابلیتها از راه API و SDK هم در دسترساند.
موتور تقویم
موتور تقویم پایهی همهچیز است، نه فقط ابزاری برای قالببندی تاریخ.
نتیجه
۱۴۰۵/۰۷/۱۹، ساعت ۱۰:۰۰
یکشنبه ۱۹ مهر ۱۴۰۵
2026-10-11T10:00:00+03:30[Asia/Tehran]
تبدیل تاریخ میان شمسی، میلادی و قمری (با ارقام فارسی یا لاتین) کار خود موتور تقویم است. موتور هنوز زبان طبیعی فارسی را کامل نمیفهمد؛ این آزمایشگاه فقط این الگوها را روی آن میسازد: «N روز (کاری) بعد/قبل از …»، «امروز/فردا/پسفردا/دیروز» و «ساعت HH:MM». هر عبارت دیگری را صادقانه «نامفهوم» اعلام میکند.
روزهای کاری
وقتی پای قرارداد، پرداخت، SLA، تسویه، حقوق یا مقررات در میان است، شمردن روز کاری دیگر یک تابع کمکی ساده نیست.
روز کاریجمعهتعطیل رسمیسررسید
POST /v1/business-days/add
{
"date": "1405-07-15",
"days": 30
}سپتامبر تا اکتبر ۲۰۲۶۲۶ روز کاری، بدون تعطیل رسمی
| ش | ی | د | س | چ | پ | ج |
|---|---|---|---|---|---|---|
| ۱ | ۲ | ۳ | ||||
| ۴ | ۵ | ۶ | ۷ | ۸ | ۹ | ۱۰ |
| ۱۱ | ۱۲ | ۱۳ | ۱۴ | ۱۵ | ۱۶ | ۱۷ |
| ۱۸ | ۱۹ | ۲۰ | ۲۱ | ۲۲ | ۲۳ | ۲۴ |
| ۲۵ | ۲۶ | ۲۷ | ۲۸ | ۲۹ | ۳۰ |
تعطیل رسمیتعطیلی قمری (پیشبینی)جمعهامروز
دریافت تعطیلات ۱۴۰۵ (فایل ICS) در این ماه تعطیلی رسمی یا مناسبتی ثبت نشده است.موتور زمانبندی
برای ما «منبع» هر چیزی است که بشود وقتش را تخصیص داد: یک نفر، اتاق، خودرو، دستگاه، سرویس یا عامل هوشمند.
آخرین روز کاری هر ماه، ساعت ۰۹:۰۰
شش نوبت بعدی
POST /v1/schedules/preview
{
"rule": "last-business",
"from": "1405-07-09",
"count": 6
}موتور سررسید
سررسید را میشود از یک تاریخ ثابت، یک رویداد، شمار روزهای کاری، سیاست سازمان یا حتی یک سند ورودی حساب کرد.
گردشکارها
هر قدم نسبت به قدمی دیگر تعریف میشود: چند روز کاری پس از تأیید، یا ده روز تقویمی پس از آن. تاریخ شروع، فاصلهها یا قاعدهی تعطیلی را تغییر دهید و «اجرا» را بزنید تا موتور تقویم همهی قدمها را دوباره بچیند.
POST /v1/workflow-runs/preview
{
"start": "1405-11-12",
"roll": "following",
"steps": [
{
"id": "approve",
"offset": 0,
"unit": "business"
},
{
"id": "due",
"offset": 10,
"unit": "calendar",
"relative_to": "approve"
},
{
"id": "remind",
"offset": -2,
"unit": "business",
"relative_to": "due"
},
{
"id": "settle",
"offset": 1,
"unit": "business",
"relative_to": "due"
}
]
}زمانبندی عاملها و MCP
عامل هوشمند نباید کارهای زمانبندیشدهی پنهان و بینظارت داشته باشد. برنامه، اختیارات، سقف مصرف و سابقهی اجرای هر عامل باید دیدنی و قابل نظارت باشد.
خودکارسازی با عاملها بدون زمانبندی قابل نظارت، زیرساخت عملیاتی نیست.
دادهی نمایشی؛ اجرای بعدی را موتور روز کاری حساب میکند.
یکی از درخواستها را انتخاب کنید تا فراخوانی ابزارها را ببینید.
رویدادها و وبهوکها
ما رویدادمحوریم: هر اتفاق مهم یک رویداد میسازد و میتواند به یک وبهوک برسد.
نمونه؛ زمانها به وقت تهران، از همین لحظه
خط پردازش رویدادها
رویدادها از فرم، API یا وبهوک ورودی میرسند؛ موتور تقویم منطقهی زمانی، تعطیلات و روز کاری را بررسی میکند و بعد اعلان، وبهوک یا رویداد تقویم ساخته میشود. یک رویداد بفرستید و مسیرش را دنبال کنید.
گزارش اجرا
نمونه: تصمیمهای زمانی را موتور تقویم میگیرد؛ بار و تأخیر نمایشیاند.
مرکز اعلانها
یادآورها، سررسیدها و تحویل وبهوکها، با تاریخهایی که موتور تقویم حساب میکند. هر دکمه یک اعلان واقعی روی همین صفحه میسازد.
اعلانها واقعیاند؛ متن و شمارهها نمونهاند.
پیشنمایش روی گوشی
جستوجو، شواهد و رسیدها
برای هر عملیات مهم رسید، سابقهی رویدادها و شواهد نگه میداریم؛ بهویژه برای گردشکارهای حساس یا مشمول مقررات.
سررسیدهای فعال قراردادها در این هفته
فیلترها
سابقهی رویدادهای یک رزرو
taghvim.event.reservation.held.v1taghvim.event.reservation.confirmed.v1taghvim.event.receipt.issued.v1taghvim.event.reminder.scheduled.v1taghvim.event.webhook.delivered.v1usr_123booking-v3doctor_1evtlog_7f3a…rcpt_92c1…یکپارچهسازی
ما یک مدل مرجع نگه میداریم و هر یکپارچهسازی را از منطق اصلی جدا میکنیم.
خروجی یکطرفه؛ فایل تعطیلات ۱۴۰۵ همین حالا با موتور تقویم ساخته شده و دریافتشدنی است.
اتصالدهندهها، بستههای تقویم، گردشکارها و ویجتهای بیشتر از بازارچه نصب میشوند؛ اما برای شروع به بازارچه نیازی نیست.
یکبار بسازید
POST /v1/business-days/add
{ "date": "1405-07-09", "days": 3 }همه یک پاسخ میگیرند: دوشنبه ۱۳ مهر ۱۴۰۵
API، MCP و ویجت سه محصول جدا نیستند؛ سه رابط روی یک موتورند. برای همین رفتار و معنای هر عملیات همهجا یکسان است.
شروع برای توسعهدهندگان
Project: my-app
Environment: sandbox
Locale: fa-IR
Timezone: Asia/Tehranexport TAGHVIM_API_KEY=tgv_test_...curl https://api.taghvim.dev/v1/dates/resolve \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text":"سه روز کاری بعد",
"locale":"fa-IR"
}'{
"status": "resolved",
"jalali": "1405-07-13",
"business_day": true
}پاسخ نمونه؛ تاریخ آن را موتور تقویم از امروز حساب میکند.
import { Taghvim } from "@taghvim/sdk"; const taghvim = new Taghvim({ apiKey: process.env.TAGHVIM_API_KEY }); // 30 business days after today, Iranian bank calendarconst due = await taghvim.businessDays.add({ date: "1405-07-09", days: 30,});console.log(due.result.jalali);API عمومی در مرحلهی دسترسی زودهنگام است؛ کلید محیط تست برای فهرست انتظار صادر میشود.
مرجع تعاملی API
هر عملیات را باز کنید، پارامترها و ساختار بدنه را ببینید و امتحانش کنید. عملیاتهای تقویم همینجا در مرورگر اجرا میشوند و برای بقیه، کلید API خودتان را وارد میکنید. نمونهکد curl، جاوااسکریپت و پایتون از همین مشخصات ساخته میشود.
نشانی سرویس: https://api.taghvim.dev · احراز هویت: Authorization: Bearer tgv_test_…
/v1/healthسلامت سرویسبدون کلیدHealthinternal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/health"const res = await fetch("https://api.taghvim.dev/v1/health", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/health",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/readinessآمادگی سرویسبدون کلیدReadinessinternal_errorخطای پیشبینینشدهای رخ داد.Readinessوضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/readiness"const res = await fetch("https://api.taghvim.dev/v1/readiness", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/readiness",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/versionsنسخههابدون کلیدVersionsinternal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/versions"const res = await fetch("https://api.taghvim.dev/v1/versions", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/versions",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/openapi.jsonهمین سند OpenAPIبدون کلیدinternal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/openapi.json"const res = await fetch("https://api.taghvim.dev/openapi.json", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/openapi.json",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/calendars/systemsتقویمهای پشتیبانیشدهاجرا در مرورگرCalendarSystemskey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"systems": [
{
"id": "jalali",
"name": "Solar Hijri (Jalali)",
"name_fa": "هجری شمسی",
"year_range": [
1300,
1499
]
},
{
"id": "gregorian",
"name": "Gregorian",
"name_fa": "میلادی",
"year_range": [
1921,
2121
]
},
{
"id": "hijri",
"name": "Hijri (Umm al-Qura)",
"name_fa": "هجری قمری (امالقری)",
"year_range": [
1343,
1500
],
"note": "Lunar holidays are predicted until officially announced."
}
],
"business_day_profile": {
"id": "bank",
"weekend": [
5
],
"description_fa": "تقویم بانکی ایران: جمعه و تعطیلات رسمی، روز غیرکاری هستند."
},
"timezone": "Asia/Tehran",
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/calendars/systems" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/calendars/systems", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/calendars/systems",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/dates/convertتبدیل تاریخاجرا در مرورگریک تاریخ شمسی، میلادی یا قمری را میگیرد و همان روز را در هر سه تقویم، همراه با وضعیت روز کاری، برمیگرداند.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
date | DateInput | الزامی | |
calendar_system | object | اختیاری | مقدارها: jalali، gregorian، hijri |
ConvertResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"input": {
"text": "1405-07-15",
"calendar_system": "jalali"
},
"date": {
"iso": "2026-10-07",
"jalali": "1405-07-15",
"hijri": "1448-04-26",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۱۵ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"leap_year": false,
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/dates/convert" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"1405-07-15"}'const res = await fetch("https://api.taghvim.dev/v1/dates/convert", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"date": "1405-07-15"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/dates/convert",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"date": "1405-07-15"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/dates/resolveخواندن تاریخ از متن فارسیاجرا در مرورگرتاریخ صریح (مانند «۱۵ مهر ۱۴۰۵») یا عبارت نسبی فارسی (مانند «سه روز کاری بعد از ۱۵ مهر ساعت ۱۰»، «فردا» یا «۵ روز قبل») را با روزهای کاری تقویم بانکی به تاریخ دقیق تبدیل میکند و مراحل و فرضها را نشان میدهد. عبارتی را که بدون حدس قابل خواندن نباشد، رد میکند.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
text | string | الزامی | |
locale | object | اختیاری | پیشفرض: "fa-IR" |
timezone | object | اختیاری | پیشفرض: "Asia/Tehran" |
calendar_system | object | اختیاری | پیشفرض: "jalali" |
reference_instant | string | اختیاری | |
ambiguity_policy | AmbiguityPolicy | اختیاری | مقدارها: assume_and_report، return_candidates، reject |
ResolveResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.unresolved_expressionاین عبارت بدون حدسزدن به تاریخ تبدیل نشد.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"resolution_id": "resolv_01M3VB29M0922GR6818486HQXP",
"status": "ambiguous",
"normalized_expression": {
"type": "business_day_offset",
"anchor": {
"kind": "explicit_date",
"calendar_system": "jalali"
},
"offset_business_days": 3,
"local_time": "10:00:00"
},
"resolved": {
"instant": "2026-10-11T06:30:00.000Z",
"timezone": "Asia/Tehran",
"jalali": "1405-07-19 10:00",
"gregorian": "2026-10-11 10:00"
},
"confidence": 0.9,
"jalali": "1405-07-19",
"iso": "2026-10-11",
"time": "10:00",
"timezone": "Asia/Tehran",
"date": {
"iso": "2026-10-11",
"jalali": "1405-07-19",
"hijri": "1448-04-30",
"weekday": 7,
"weekday_fa": "یکشنبه",
"jalali_text_fa": "۱۹ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"business_day": true,
"depends_on_predicted_holiday": false,
"assumptions": [
{
"kind": "year",
"value": "1405"
}
],
"candidates": [
{
"jalali": "1405-07-19",
"iso": "2026-10-11",
"time": "10:00",
"resolved": {
"instant": "2026-10-11T06:30:00.000Z",
"timezone": "Asia/Tehran",
"jalali": "1405-07-19 10:00",
"gregorian": "2026-10-11 10:00"
},
"assumptions": [
{
"kind": "year",
"value": "1405"
}
],
"business_day": true
},
{
"jalali": "1406-07-19",
"iso": "2027-10-11",
"time": "10:00",
"resolved": {
"instant": "2027-10-11T06:30:00.000Z",
"timezone": "Asia/Tehran",
"jalali": "1406-07-19 10:00",
"gregorian": "2027-10-11 10:00"
},
"assumptions": [
{
"kind": "year",
"value": "1406"
}
],
"business_day": true
}
],
"ambiguity_policy": "return_candidates",
"reference_instant": "2026-09-29T20:00:00.000Z",
"steps": [
{
"step": "متن ورودی",
"value": "سه روز کاری بعد از 15 مهر ساعت 10"
},
{
"step": "ساعت",
"value": "۱۰:۰۰"
},
{
"step": "تعداد روز",
"value": "۳"
},
{
"step": "نوع روز",
"value": "روز کاری"
},
{
"step": "جهت",
"value": "بعد"
},
{
"step": "مبنا",
"value": "شمسی"
},
{
"step": "تقویم کاری",
"value": "بانکی"
},
{
"step": "فرض",
"value": "سال ۱۴۰۵ (سال جاری)"
},
{
"step": "تاریخ شمسی",
"value": "۱۹ مهر ۱۴۰۵"
},
{
"step": "روز هفته",
"value": "یکشنبه"
}
],
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/dates/resolve" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"سه روز کاری بعد از ۱۵ مهر ساعت ۱۰","locale":"fa-IR","calendar_system":"jalali","timezone":"Asia/Tehran","reference_instant":"2026-09-29T20:00:00Z","ambiguity_policy":"return_candidates"}'const res = await fetch("https://api.taghvim.dev/v1/dates/resolve", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"text": "سه روز کاری بعد از ۱۵ مهر ساعت ۱۰",
"locale": "fa-IR",
"calendar_system": "jalali",
"timezone": "Asia/Tehran",
"reference_instant": "2026-09-29T20:00:00Z",
"ambiguity_policy": "return_candidates"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/dates/resolve",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"text": "سه روز کاری بعد از ۱۵ مهر ساعت ۱۰", "locale": "fa-IR", "calendar_system": "jalali", "timezone": "Asia/Tehran", "reference_instant": "2026-09-29T20:00:00Z", "ambiguity_policy": "return_candidates"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/addافزودن روز کاریاجرا در مرورگرچند روز کاری به یک تاریخ اضافه یا از آن کم میکند؛ جمعهها و تعطیلات رسمی شمرده نمیشوند.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
date | DateInput | الزامی | |
days | integer | الزامی | بازه: -۳۶۵۰…۳۶۵۰ |
BusinessDaysAddResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"from": {
"iso": "2026-10-07",
"jalali": "1405-07-15",
"hijri": "1448-04-26",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۱۵ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"days": 30,
"result": {
"iso": "2026-11-11",
"jalali": "1405-08-20",
"hijri": "1448-06-01",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۲۰ آبان ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"calendar_days": 35,
"depends_on_predicted_holiday": false,
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/business-days/add" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"1405-07-15","days":30}'const res = await fetch("https://api.taghvim.dev/v1/business-days/add", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"date": "1405-07-15",
"days": 30
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/business-days/add",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"date": "1405-07-15", "days": 30},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/diffشمارش روزهای کاری میان دو تاریخاجرا در مرورگرروزهای کاری و روزهای تعطیل میان دو تاریخ را میشمارد (روز آغاز شمرده نمیشود، روز پایان شمرده میشود).
| نام | نوع | الزام | توضیح |
|---|---|---|---|
from | DateInput | الزامی | |
to | DateInput | الزامی |
BusinessDaysDiffResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"from": {
"iso": "2026-10-07",
"jalali": "1405-07-15"
},
"to": {
"iso": "2026-11-06",
"jalali": "1405-08-15"
},
"calendar_days": 30,
"business_days": 25,
"days_off": [
{
"jalali": "1405-07-17",
"iso": "2026-10-09",
"reason": "weekend",
"titles": []
},
{
"jalali": "1405-07-24",
"iso": "2026-10-16",
"reason": "weekend",
"titles": []
},
{
"jalali": "1405-08-01",
"iso": "2026-10-23",
"reason": "weekend",
"titles": []
},
{
"jalali": "1405-08-08",
"iso": "2026-10-30",
"reason": "weekend",
"titles": []
},
{
"jalali": "1405-08-15",
"iso": "2026-11-06",
"reason": "weekend",
"titles": []
}
],
"depends_on_predicted_holiday": false,
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/business-days/diff" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"from":"1405-07-15","to":"1405-08-15"}'const res = await fetch("https://api.taghvim.dev/v1/business-days/diff", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"from": "1405-07-15",
"to": "1405-08-15"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/business-days/diff",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"from": "1405-07-15", "to": "1405-08-15"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/is-business-dayآیا این روز کاری است؟اجرا در مرورگر| نام | نوع | الزام | توضیح |
|---|---|---|---|
date | DateInput | الزامی |
BusinessDayStatusinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"date": {
"iso": "2026-10-07",
"jalali": "1405-07-15",
"hijri": "1448-04-26",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۱۵ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"business_day": true,
"reason": null,
"predicted": false,
"previous_business_day": {
"iso": "2026-10-06",
"jalali": "1405-07-14"
},
"next_business_day": {
"iso": "2026-10-08",
"jalali": "1405-07-16"
},
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/business-days/is-business-day" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"date":"1405-07-15"}'const res = await fetch("https://api.taghvim.dev/v1/business-days/is-business-day", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"date": "1405-07-15"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/business-days/is-business-day",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"date": "1405-07-15"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/checkآیا این روز کاری است؟ (با پارامتر)اجرا در مرورگر| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
date | پرسوجو | DateInput | الزامی |
BusinessDayStatusvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"date": {
"iso": "2026-10-07",
"jalali": "1405-07-15",
"hijri": "1448-04-26",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۱۵ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"business_day": true,
"reason": null,
"predicted": false,
"previous_business_day": {
"iso": "2026-10-06",
"jalali": "1405-07-14"
},
"next_business_day": {
"iso": "2026-10-08",
"jalali": "1405-07-16"
},
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/business-days/check?date=1405-07-15" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/business-days/check?date=1405-07-15", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/business-days/check",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"date": "1405-07-15"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/nextروز کاری بعدیاجرا در مرورگر| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
date | پرسوجو | DateInput | الزامی |
AdjacentBusinessDayvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"from": {
"iso": "2027-02-10",
"jalali": "1405-11-21"
},
"direction": "next",
"result": {
"iso": "2027-02-13",
"jalali": "1405-11-24",
"hijri": "1448-09-06",
"weekday": 6,
"weekday_fa": "شنبه",
"jalali_text_fa": "۲۴ بهمن ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"calendar_days": 3,
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/business-days/next?date=1405-11-21" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/business-days/next?date=1405-11-21", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/business-days/next",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"date": "1405-11-21"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/business-days/previousروز کاری قبلیاجرا در مرورگر| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
date | پرسوجو | DateInput | الزامی |
AdjacentBusinessDayvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"from": {
"iso": "2027-02-13",
"jalali": "1405-11-24"
},
"direction": "previous",
"result": {
"iso": "2027-02-10",
"jalali": "1405-11-21",
"hijri": "1448-09-03",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۲۱ بهمن ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"calendar_days": -3,
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/business-days/previous?date=1405-11-24" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/business-days/previous?date=1405-11-24", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/business-days/previous",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"date": "1405-11-24"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/holidaysتعطیلات رسمی یک سال یا ماه شمسیاجرا در مرورگرتعطیلات قمری تا اعلام رسمی «پیشبینی» هستند و ممکن است یک روز جابهجا شوند.
| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
year | پرسوجو | integer | الزامی | |
month | پرسوجو | integer | اختیاری |
HolidayListvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"year": 1405,
"month": 11,
"count": 2,
"holidays": [
{
"jalali": "1405-11-04",
"iso": "2027-01-24",
"title": "ولادت حضرت قائم",
"kind": "lunar",
"status": "predicted"
},
{
"jalali": "1405-11-22",
"iso": "2027-02-11",
"title": "پیروزی انقلاب اسلامی",
"kind": "solar",
"status": "official"
}
],
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/holidays?year=1405&month=11" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/holidays?year=1405&month=11", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/holidays",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"year": 1405, "month": 11},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/holidays/{date}تعطیلات یک روزاجرا در مرورگر| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
date | مسیر | DateInput | الزامی |
HolidayDayvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"date": {
"iso": "2027-02-11",
"jalali": "1405-11-22",
"hijri": "1448-09-04",
"weekday": 4,
"weekday_fa": "پنجشنبه",
"jalali_text_fa": "۲۲ بهمن ۱۴۰۵",
"business_day": false,
"holidays": [
"پیروزی انقلاب اسلامی"
],
"predicted_holiday": false
},
"holiday": true,
"holidays": [
{
"jalali": "1405-11-22",
"iso": "2027-02-11",
"title": "پیروزی انقلاب اسلامی",
"kind": "solar",
"status": "official"
}
],
"calendar_data_version": "iran-2026.10.01"
}curl "https://api.taghvim.dev/v1/holidays/1405-11-22" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/holidays/1405-11-22", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/holidays/1405-11-22",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/deadlinesساختن سررسیداجرا در مرورگرسررسیدی بر پایهی تاریخ مبنا، تعداد روز (کاری یا تقویمی) و قاعدهی جابهجایی در روز تعطیل میسازد و نگه میدارد.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
anchor | DateInput | الزامی | |
days | integer | الزامی | بازه: ۰…۳۶۵۰ |
type | object | اختیاری | مقدارها: business، calendar؛ پیشفرض: "business" |
roll | Roll | اختیاری | مقدارها: following، modified_following، preceding، modified_preceding، nearest، none |
title | string | اختیاری | |
subject_ref | string | اختیاری |
Deadlineinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۱ Taghvim-Request-Id: req_example
{
"id": "ddl_01M3VB29M043WZCTAH2HQEB8YJ",
"status": "active",
"title": null,
"subject_ref": null,
"anchor": {
"iso": "2026-10-07",
"jalali": "1405-07-15",
"hijri": "1448-04-26",
"weekday": 3,
"weekday_fa": "چهارشنبه",
"jalali_text_fa": "۱۵ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"rule": {
"days": 10,
"type": "business",
"roll": "following"
},
"due": {
"iso": "2026-10-19",
"jalali": "1405-07-27",
"hijri": "1448-05-08",
"weekday": 1,
"weekday_fa": "دوشنبه",
"jalali_text_fa": "۲۷ مهر ۱۴۰۵",
"business_day": true,
"holidays": [],
"predicted_holiday": false
},
"moved_days": 0,
"depends_on_predicted_holiday": false,
"created_at": {
"iso": "2026-10-01T09:00:00.000Z",
"local": "2026-10-01T12:30:00+03:30",
"jalali": "1405-07-09 12:30:00",
"timezone": "Asia/Tehran"
},
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/deadlines" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"anchor":"1405-07-15","days":10,"type":"business"}'const res = await fetch("https://api.taghvim.dev/v1/deadlines", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"anchor": "1405-07-15",
"days": 10,
"type": "business"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/deadlines",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"anchor": "1405-07-15", "days": 10, "type": "business"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/deadlines/{id}دریافت سررسیداجرا در مرورگر| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Deadlinevalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/deadlines/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/deadlines/{id}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/deadlines/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/sla/dueمهلت بر حسب ساعت کاریاجرا در مرورگرپایان یک مهلت را با شمردن فقط ساعتهای کاری حساب میکند؛ روزهای تعطیل و ساعتهای بیرون از وقت اداری شمرده نمیشوند.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
start | DateInput | الزامی | |
time | string | اختیاری | پیشفرض: "09:00" |
hours | number | الزامی | بازه: ……۲۰۰۰ |
open | string | اختیاری | پیشفرض: "08:00" |
close | string | اختیاری | پیشفرض: "16:00" |
thursday_close | string | null | اختیاری |
SlaResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.invalid_timeساعت واردشده معتبر نیست.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"start": {
"iso": "2026-10-07T11:30:00.000Z",
"local": "2026-10-07T15:00:00+03:30",
"jalali": "1405-07-15 15:00:00",
"timezone": "Asia/Tehran"
},
"hours": 24,
"due": {
"iso": "2026-10-12T06:30:00.000Z",
"local": "2026-10-12T10:00:00+03:30",
"jalali": "1405-07-20 10:00:00",
"timezone": "Asia/Tehran"
},
"calendar_days": 5,
"timezone": "Asia/Tehran",
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/sla/due" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"start":"1405-07-15","time":"15:00","hours":24,"open":"08:00","close":"16:00","thursday_close":"13:00"}'const res = await fetch("https://api.taghvim.dev/v1/sla/due", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"start": "1405-07-15",
"time": "15:00",
"hours": 24,
"open": "08:00",
"close": "16:00",
"thursday_close": "13:00"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/sla/due",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"start": "1405-07-15", "time": "15:00", "hours": 24, "open": "08:00", "close": "16:00", "thursday_close": "13:00"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/reminders/previewپیشنمایش یادآورهااجرا در مرورگرزمان یادآورها را پیش از سررسید حساب میکند؛ یادآوری که به روز تعطیل بخورد به روز کاری قبل میرود.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
due | DateInput | الزامی | |
time | string | اختیاری | پیشفرض: "09:00" |
offsets | object[] | الزامی | |
offsets[].n | integer | الزامی | بازه: ۰…۳۶۵ |
offsets[].unit | object | الزامی | مقدارها: business، calendar |
RemindersResponseinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.invalid_timeساعت واردشده معتبر نیست.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"due": {
"iso": "2026-11-11",
"jalali": "1405-08-20"
},
"reminders": [
{
"offset": {
"n": 7,
"unit": "calendar"
},
"at": {
"iso": "2026-11-04T05:30:00.000Z",
"local": "2026-11-04T09:00:00+03:30",
"jalali": "1405-08-13 09:00:00",
"timezone": "Asia/Tehran"
},
"moved_days": 0,
"depends_on_predicted_holiday": false
},
{
"offset": {
"n": 3,
"unit": "business"
},
"at": {
"iso": "2026-11-08T05:30:00.000Z",
"local": "2026-11-08T09:00:00+03:30",
"jalali": "1405-08-17 09:00:00",
"timezone": "Asia/Tehran"
},
"moved_days": 0,
"depends_on_predicted_holiday": false
},
{
"offset": {
"n": 0,
"unit": "calendar"
},
"at": {
"iso": "2026-11-11T05:30:00.000Z",
"local": "2026-11-11T09:00:00+03:30",
"jalali": "1405-08-20 09:00:00",
"timezone": "Asia/Tehran"
},
"moved_days": 0,
"depends_on_predicted_holiday": false
}
],
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/reminders/preview" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"due":"1405-08-20","time":"09:00","offsets":[{"n":7,"unit":"calendar"},{"n":3,"unit":"business"},{"n":0,"unit":"calendar"}]}'const res = await fetch("https://api.taghvim.dev/v1/reminders/preview", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"due": "1405-08-20",
"time": "09:00",
"offsets": [
{
"n": 7,
"unit": "calendar"
},
{
"n": 3,
"unit": "business"
},
{
"n": 0,
"unit": "calendar"
}
]
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/reminders/preview",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"due": "1405-08-20", "time": "09:00", "offsets": [{"n": 7, "unit": "calendar"}, {"n": 3, "unit": "business"}, {"n": 0, "unit": "calendar"}]},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/schedules/previewنوبتهای بعدی یک قاعدهی تکراراجرا در مرورگرنوبتهای بعدی یک قاعدهی تکرار را حساب میکند؛ مثلاً «آخرین روز کاری هر ماه».
| نام | نوع | الزام | توضیح |
|---|---|---|---|
rule | object | الزامی | مقدارها: last-business، first-business، day-of-month، weekly، every-business |
from | DateInput | الزامی | |
count | integer | اختیاری | پیشفرض: 6؛ بازه: ۱…۲۴ |
day | integer | اختیاری | بازه: ۱…۳۱ |
weekday | integer | اختیاری | بازه: ۱…۷ |
roll | object | اختیاری | مقدارها: following، preceding، skip؛ پیشفرض: "following" |
SchedulePreviewinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.invalid_dateتاریخ واردشده تاریخ شمسی، میلادی یا قمری معتبری نیست.quota_exceededسهمیهی ماهانهی عملیات پلن شما تمام شده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: ۲۰۰ Taghvim-Request-Id: req_example
{
"rule": "last-business",
"rule_fa": "آخرین روز کاری هر ماه",
"from": {
"iso": "2026-09-23",
"jalali": "1405-07-01"
},
"occurrences": [
{
"jalali": "1405-07-30",
"iso": "2026-10-22",
"scheduled_iso": "2026-10-22",
"moved_days": 0,
"depends_on_predicted_holiday": false
},
{
"jalali": "1405-08-30",
"iso": "2026-11-21",
"scheduled_iso": "2026-11-21",
"moved_days": 0,
"depends_on_predicted_holiday": false
},
{
"jalali": "1405-09-30",
"iso": "2026-12-21",
"scheduled_iso": "2026-12-21",
"moved_days": 0,
"depends_on_predicted_holiday": false
},
{
"jalali": "1405-10-30",
"iso": "2027-01-20",
"scheduled_iso": "2027-01-20",
"moved_days": 0,
"depends_on_predicted_holiday": false
}
],
"calendar_data_version": "iran-2026.10.01"
}curl -X POST "https://api.taghvim.dev/v1/schedules/preview" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Content-Type: application/json" \
-d '{"rule":"last-business","from":"1405-07-01","count":4}'const res = await fetch("https://api.taghvim.dev/v1/schedules/preview", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
"rule": "last-business",
"from": "1405-07-01",
"count": 4
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/schedules/preview",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
json={"rule": "last-business", "from": "1405-07-01", "count": 4},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/tenantsساختن حساب و نخستین کلید API (ویژهی اپراتور)نیازمند توکن اپراتور| نام | نوع | الزام | توضیح |
|---|---|---|---|
name | string | الزامی | |
billing_email | string | اختیاری | |
environment | Environment | اختیاری | مقدارها: live، test |
TenantCreatedinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.unauthorizedبرای این درخواست کلید API معتبر لازم است.forbiddenاین اعتبارنامه اجازهی انجام این کار را ندارد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.internal_errorخطای پیشبینینشدهای رخ داد.این عملیات ویژهی اپراتور سرویس است و توکن اپراتور لازم دارد.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/tenants" \
-H "Authorization: Bearer $TAGHVIM_OPERATOR_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"Acme Clinic","billing_email":"billing@example.com","environment":"test"}'const res = await fetch("https://api.taghvim.dev/v1/tenants", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_OPERATOR_TOKEN}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Acme Clinic",
"billing_email": "billing@example.com",
"environment": "test"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/tenants",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_OPERATOR_TOKEN']}", "Idempotency-Key": str(uuid.uuid4())},
json={"name": "Acme Clinic", "billing_email": "billing@example.com", "environment": "test"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/meحساب و کلیدی که این درخواست را فرستاده استنیازمند کلید APIMekey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/me" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/me", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/me",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/keysساختن کلید APIنیازمند کلید API| نام | نوع | الزام | توضیح |
|---|---|---|---|
name | string | اختیاری | |
environment | Environment | اختیاری | مقدارها: live، test |
ApiKeyWithSecretinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/keys" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"name":"server","environment":"live"}'const res = await fetch("https://api.taghvim.dev/v1/keys", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "server",
"environment": "live"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/keys",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"name": "server", "environment": "live"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/keysفهرست کلیدهای APIنیازمند کلید APIApiKeyListkey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/keys" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/keys", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/keys",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/keys/{id}باطل کردن کلید APIنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
ApiKeyvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X DELETE "https://api.taghvim.dev/v1/keys/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/keys/{id}", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.delete(
"https://api.taghvim.dev/v1/keys/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/usageمصرف در یک دورهنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
period | پرسوجو | string | اختیاری |
Usagevalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/usage?period=1405-07" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/usage?period=1405-07", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/usage",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"period": "1405-07"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/usage/exportخروجی صورتحساب یک دورهنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
period | پرسوجو | string | اختیاری | |
format | پرسوجو | object | اختیاری |
UsageExportvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/usage/export?period=1405-07&format=json" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/usage/export?period=1405-07&format=json", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/usage/export",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
params={"period": "1405-07", "format": "json"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/plansپلنها و قیمتهانیازمند کلید APIPlanListkey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/plans" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/plans", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/plans",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/subscriptionاشتراک فعلینیازمند کلید APISubscriptionkey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/subscription" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/subscription", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/subscription",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/admin/billing-exportخروجی صورتحساب همهی حسابها (ویژهی اپراتور)نیازمند توکن اپراتور| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
period | پرسوجو | string | اختیاری |
BillingExportvalidation_failedدرخواست با قرارداد API همخوان نیست.unauthorizedبرای این درخواست کلید API معتبر لازم است.forbiddenاین اعتبارنامه اجازهی انجام این کار را ندارد.out_of_rangeمقدار واردشده بیرون از بازهی پشتیبانیشده است.internal_errorخطای پیشبینینشدهای رخ داد.این عملیات ویژهی اپراتور سرویس است و توکن اپراتور لازم دارد.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/admin/billing-export?period=1405-07" \
-H "Authorization: Bearer $TAGHVIM_OPERATOR_TOKEN"const res = await fetch("https://api.taghvim.dev/v1/admin/billing-export?period=1405-07", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_OPERATOR_TOKEN}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/admin/billing-export",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_OPERATOR_TOKEN']}"},
params={"period": "1405-07"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/payment-intentsساختن درخواست پرداخت برای خرید پلننیازمند کلید APIبرای پلن انتخابشده درخواست پرداخت میسازد و نشانی صفحهی پرداخت را برمیگرداند. تا پیش از راهاندازی پرداخت آنلاین، پاسخ خطای payments_not_configured است.
| نام | نوع | الزام | توضیح |
|---|---|---|---|
plan_id | string | الزامی | |
mobile_number | string | اختیاری |
PaymentIntentidempotency_key_requiredاین عملیات به سرآیند Idempotency-Key نیاز دارد.invalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.plan_unchangedحساب شما هماکنون روی همین پلن یا پلن بالاتری است.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.plan_not_purchasableاین پلن را نمیتوان بهصورت آنلاین خرید.internal_errorخطای پیشبینینشدهای رخ داد.payment_provider_errorدرگاه پرداخت خطا برگرداند.payments_not_configuredپرداخت آنلاین هنوز راهاندازی نشده است.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/payment-intents" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"plan_id":"plan_builder"}'const res = await fetch("https://api.taghvim.dev/v1/payment-intents", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"plan_id": "plan_builder"
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/payment-intents",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"plan_id": "plan_builder"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/payment-intents/{id}وضعیت درخواست پرداختنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
PaymentIntentvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/payment-intents/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/payment-intents/{id}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/payment-intents/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/payment-intents/{id}/verifyتأیید پرداخت از درگاهنیازمند کلید APIاگر بازگشت از درگاه گم شده باشد، این عملیات وضعیت پرداخت را از درگاه میپرسد و در صورت تأیید، پلن را ارتقا میدهد.
| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
PaymentIntentvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.payment_amount_mismatchمبلغ تأییدشده با مبلغ درخواست پرداخت یکسان نیست.payment_intent_stateوضعیت درخواست پرداخت اجازهی این کار را نمیدهد.internal_errorخطای پیشبینینشدهای رخ داد.payment_provider_errorدرگاه پرداخت خطا برگرداند.payments_not_configuredپرداخت آنلاین هنوز راهاندازی نشده است.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/payment-intents/{id}/verify" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/payment-intents/{id}/verify", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/payment-intents/{id}/verify",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/payment-intents/{id}/cancelلغو درخواست پرداختنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
PaymentIntentvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.payment_intent_stateوضعیت درخواست پرداخت اجازهی این کار را نمیدهد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/payment-intents/{id}/cancel" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/payment-intents/{id}/cancel", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/payment-intents/{id}/cancel",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/billing/callback/vandarبازگشت پرداختکننده از درگاهبدون کلیدپرداختکننده پس از پرداخت به این نشانی برمیگردد. این بازگشت فقط یک نشانه است: پرداخت تنها پس از تأیید مستقیم از درگاه و برابری مبلغ، موفق ثبت میشود.
| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
token | پرسوجو | string | الزامی | |
payment_status | پرسوجو | string | اختیاری |
validation_failedدرخواست با قرارداد API همخوان نیست.internal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/billing/callback/vandar"const res = await fetch("https://api.taghvim.dev/v1/billing/callback/vandar", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/billing/callback/vandar",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/receipts/{id}دریافت رسیدنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Receiptvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/receipts/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/receipts/{id}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/receipts/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/event-logگزارش رویدادهای حسابنیازمند کلید APIرویدادهای ثبتشدهی حساب، تازهترین در ابتدا. شناسهی هر رویداد با evtlog_ آغاز میشود؛ evt_ برای رویدادهای تقویم کنار گذاشته شده است.
| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
type | پرسوجو | EventType | اختیاری | |
limit | پرسوجو | integer | اختیاری |
EventListvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/event-log" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/event-log", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/event-log",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/event-log/{id}یک رویداد از گزارش رویدادهانیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Eventvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/event-log/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/event-log/{id}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/event-log/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/event-typesانواع رویدادبدون کلیدEventTypeListinternal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/event-types"const res = await fetch("https://api.taghvim.dev/v1/event-types", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/event-types",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooksساختن نشانی وبهوکنیازمند کلید API| نام | نوع | الزام | توضیح |
|---|---|---|---|
url | string | الزامی | |
event_types | EventType[] | الزامی | |
description | string | اختیاری |
WebhookWithSecretinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.webhook_limit_reachedبه سقف تعداد نشانیهای وبهوک رسیدهاید.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.webhook_url_rejectedنشانی وبهوک باید یک نشانی عمومی HTTPS باشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/webhooks" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/webhooks/taghvim","event_types":["taghvim.event.payment.intent.verified.v1"]}'const res = await fetch("https://api.taghvim.dev/v1/webhooks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
"Content-Type": "application/json",
},
body: JSON.stringify({
"url": "https://example.com/webhooks/taghvim",
"event_types": [
"taghvim.event.payment.intent.verified.v1"
]
}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/webhooks",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
json={"url": "https://example.com/webhooks/taghvim", "event_types": ["taghvim.event.payment.intent.verified.v1"]},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooksفهرست نشانیهای وبهوکنیازمند کلید APIWebhookListkey_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/webhooks" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/webhooks", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/webhooks",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooks/{id}دریافت نشانی وبهوکنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Webhookvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/webhooks/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/webhooks/{id}", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/webhooks/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooks/{id}غیرفعال کردن نشانی وبهوکنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Webhookvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X DELETE "https://api.taghvim.dev/v1/webhooks/{id}" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/webhooks/{id}", {
method: "DELETE",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.delete(
"https://api.taghvim.dev/v1/webhooks/{id}",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooks/{id}/rotate-secretتعویض کلید امضانیازمند کلید APIکلید تازه میسازد؛ کلید قبلی تا پایان دورهی همپوشانی هم امضا میکند.
| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
WebhookWithSecretvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/webhooks/{id}/rotate-secret" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/webhooks/{id}/rotate-secret", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/webhooks/{id}/rotate-secret",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooks/{id}/deliveriesگزارش تحویلهای یک وبهوکنیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
DeliveryListvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/webhooks/{id}/deliveries" \
-H "Authorization: Bearer $TAGHVIM_API_KEY"const res = await fetch("https://api.taghvim.dev/v1/webhooks/{id}/deliveries", {
method: "GET",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/webhooks/{id}/deliveries",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}"},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/webhooks/{id}/testارسال تحویل آزمایشینیازمند کلید API| نام | جایگاه | نوع | الزام | توضیح |
|---|---|---|---|---|
id | مسیر | string | الزامی |
Eventvalidation_failedدرخواست با قرارداد API همخوان نیست.key_revokedاین کلید API باطل شده است.unauthorizedبرای این درخواست کلید API معتبر لازم است.entitlement_requiredپلن فعلی شما این قابلیت را ندارد.not_foundمنبع خواستهشده پیدا نشد.idempotency_conflictاین Idempotency-Key پیشتر با درخواست دیگری به کار رفته است.idempotency_in_progressدرخواستی با همین Idempotency-Key هنوز در حال پردازش است.internal_errorخطای پیشبینینشدهای رخ داد.فراخوانی واقعی روی حساب شما اجرا میشود و در مصرف شما به حساب میآید.
وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/webhooks/{id}/test" \
-H "Authorization: Bearer $TAGHVIM_API_KEY" \
-H "Idempotency-Key: $(uuidgen)"const res = await fetch("https://api.taghvim.dev/v1/webhooks/{id}/test", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.TAGHVIM_API_KEY}`,
"Idempotency-Key": crypto.randomUUID(),
},
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, uuid, requests
res = requests.post(
"https://api.taghvim.dev/v1/webhooks/{id}/test",
headers={"Authorization": f"Bearer {os.environ['TAGHVIM_API_KEY']}", "Idempotency-Key": str(uuid.uuid4())},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/connectors/payment/standardاستاندارد اتصال پرداختبدون کلیدPaymentConnectorStandardinternal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl "https://api.taghvim.dev/v1/connectors/payment/standard"const res = await fetch("https://api.taghvim.dev/v1/connectors/payment/standard", {
method: "GET",
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.get(
"https://api.taghvim.dev/v1/connectors/payment/standard",
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())/v1/connectors/payment/manifests/validateبررسی مانیفست آداپتوربدون کلیدManifestValidationinvalid_jsonبدنهی درخواست JSON معتبر نیست.validation_failedدرخواست با قرارداد API همخوان نیست.payload_too_largeحجم بدنهی درخواست بیش از حد مجاز است.unsupported_media_typeبدنهی درخواست را با نوع application/json بفرستید.internal_errorخطای پیشبینینشدهای رخ داد.وضعیت: —
پاسخ پس از ارسال اینجا نمایش داده میشود.curl -X POST "https://api.taghvim.dev/v1/connectors/payment/manifests/validate" \
-H "Content-Type: application/json" \
-d '{}'const res = await fetch("https://api.taghvim.dev/v1/connectors/payment/manifests/validate", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({}),
});
console.log(res.status, res.headers.get("Taghvim-Request-Id"), await res.json());import os, requests
res = requests.post(
"https://api.taghvim.dev/v1/connectors/payment/manifests/validate",
json={},
)
print(res.status_code, res.headers.get("Taghvim-Request-Id"), res.json())عملیاتی پیدا نشد.
این مشخصات همان قرارداد رسمی api.taghvim.dev است. عملیاتهای تقویم را کد خود موتور در مرورگر شما اجرا میکند و تا «فراخوانی واقعی» را نزنید، هیچ درخواستی از این صفحه بیرون نمیرود.
محیط تست زمانی
با ساعت آزمایشی، ساعت محیط تست را نگه دارید، تنظیم کنید یا جلو ببرید و ببینید سررسیدها، یادآورها، برنامهها و گردشکارها در آینده چه میکنند.
فضای کاری نمونه: ۴ یادآور، ۲ برنامه و ۱ سررسید؛ روزهای کاری از موتور تقویم.
آزمودن یک یادآور یکماهه نباید یک ماه طول بکشد.
کاربردها
تقویم، رزرو و گردشکارهای زماندار را به محصولتان اضافه کنید، بیآنکه تیم بکاند زیرسیستم زمان بسازد.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
روز کاری، ساعت قطع، بازههای تسویه، فرایندهای تکرارشونده و سررسیدهای عملیاتی را یکدست و مرجع کنید.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
پزشک، اتاق، تجهیزات و نوبت بیماران را با یک مدل منبع زمانبندی کنید.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
شیفتها، روزهای کاری، مهلت بستن حقوق، بازههای مرخصی و گردشکارهای زماندار.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
سررسیدها را همراه با منشأ، شواهد و سیاست مدیریت کنید.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
ظرفیت زمانی راننده و خودرو، نوبت بارگیری و بازهی تحویل.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
برنامهی زمانی عاملها، اجرای تکرارشونده، سقف مصرف و رسید اجرا.
تاریخهای پیش رو، به حساب موتور تقویمموتور تقویم
هر نقش، یک نما
یک نقش را انتخاب کنید تا ببینید از کدام رابط استفاده میکند، چه میبیند و چه به دست میآورد.
POST /v1/business-days/addکارشمنطق تاریخ را نمینویسد؛ فراخوانیاش میکند.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجهیک فراخوانی، بهجای یک کتابخانهی تاریخ و فایل دستی تعطیلات.
کارشقاعدهها را بیآنکه منتظر انتشار تازه بماند تغییر میدهد.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجهقابلیت تازه، بیآنکه منطق زمان از نو نوشته شود.
کارشسررسید، تسویه و بستن دوره را با یک تعریف از روز کاری میبیند.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجهعددهایی که میان همهی تیمها یکی است و میشود حسابرسیشان کرد.
کارشحقوق، شیفت و مرخصی را با تعطیلات رسمی هماهنگ میکند.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجههیچ پرداختی برای روز تعطیل برنامهریزی نمیشود.
کارشمهلت پاسخ را به ساعت کاری میشمارد، نه به ساعت دیواری.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجهمهلتهایی که با تعطیلات و پایان وقت اداری درست جلو میروند.
taghvim_create_scheduleکارشفقط از راه ابزارهای MCP و در حد اختیارش زمانبندی میکند.
عملیاتهای API
از چه چیزهایی استفاده میکند
نتیجههر اجرا رسید دارد و هیچ کار پنهانی در میان نیست.
سازمانی
مزایا
مزیت ۱: زمان مهندسی
بهجای نگهداری اینها:
فقط یک سکو را به محصولتان وصل میکنید.
مزیت ۲: یکدستی
دیگر هیچکدام از اینها جداگانه حساب نمیکند:
مزیت ۳: عرضهی سریعتر
مزیت ۴: ریسک عملیاتی کمتر
مزیت ۵: آماده برای عاملها
بازگشت سرمایه
قرار نیست ما در هر حالتی از کد داخلی ارزانتر باشیم. قرار است هزینهی ساخت، نگهداری، یکدستی و ریسک زیرساخت زمان را دیدنی و قابل مقایسه کنیم.
همهی عددها از ورودیهای خود شما حساب میشوند؛ هزینهی خرابیها و رخدادها در این مدل نیامده است.
کارهای عقبافتاده
اطمینانپذیری
مقایسه
| قابلیت | کتابخانهی تاریخ شمسی | نرمافزار نوبتدهی | زیرساخت زمان ما |
|---|---|---|---|
| شمسی و میلادی | دارد | گاهی | دارد |
| تعطیلات | محدود | گاهی | دارد |
| روزهای کاری | محدود | محدود | دارد |
| زمانبندی منابع | — | دارد | دارد |
| API رزرو | — | وابسته به محصول | دارد |
| سررسیدها | — | — | دارد |
| تکرار | در حد کتابخانه | دارد | دارد |
| زمانبندی عاملها | — | — | دارد |
| MCP | — | — | دارد |
| ویجتها | — | دارد | دارد |
| وبهوک و رویداد | — | گاهی | دارد |
| ساعت آزمایشی | — | — | دارد |
| ساختن محصول خودتان روی آن | محدود | محدود | بله |
ما جای محصول شما را نمیگیریم؛ زیرساختی هستیم که محصول شما روی آن ساخته میشود.
قیمتگذاری
بدون کارت بانکی
برای توسعهدهندگان مستقل و محصولات کوچکِ در حال اجرا.
با ما تماس بگیرید
با ما تماس بگیرید
با ما تماس بگیرید
با ما تماس بگیرید
شروع رایگان است؛ برای پلنهای بالاتر و سازمانی با ما تماس بگیرید.
برای توسعهدهندگان
POST /v1/reservationsawait taghvim.reservations.create({...})taghvim.reservations.create(...)taghvim reservation createtaghvim_create_reservation<taghvim-booking></taghvim-booking>رابط عوض میشود؛ قرارداد عوض نمیشود.
داشبورد
ten_acmeدادهی نمایشی۱٫۲۸ از ۲ میلیون عملیات
taghvim.event.reservation.confirmed.v1taghvim.event.schedule.triggered.v1taghvim.event.deadline.created.v1تقویم گوگل ✓وبهوکها ✓
taghvim.event.reservation.confirmed.v1۲۰۰taghvim.event.deadline.overdue.v1۲۰۰taghvim.event.schedule.triggered.v1۵۰۳، سپس ۲۰۰taghvim.event.notification.delivered.v1۲۰۰نمای محصول
این نماها نمونهاند، اما تاریخهایشان را همین موتور تقویم حساب میکند: انتخابگر تاریخ درون یک اپلیکیشن بانکی، یادآوری که به ایمیل و گوشی میرسد، و همان درخواستها از خط فرمان و SDK.
بانک نمونهنمونه
انجام انتقال
سلام خانم رضایی،
قرارداد نمونهی ۱۲۴۰ روز دوشنبه ۱۳ مهر ۱۴۰۵ سررسید میشود. این یادآور ۳ روز کاری پیش از سررسید فرستاده شده است.
قرارداد ۱۲۴۰: ۱۳ مهر ۱۴۰۵
جستوجو
«رزروهای لغوشدهی هفتهی گذشته برای اتاق ۳»
rsv_8f21اتاق ۳لغوشده۱۴۰۵/۰۷/۰۳، ساعت ۱۰:۰۰rsv_8f37اتاق ۳لغوشده۱۴۰۵/۰۷/۰۵، ساعت ۱۴:۳۰rsv_9a04اتاق ۳لغوشده۱۴۰۵/۰۷/۰۷، ساعت ۰۹:۰۰«سررسیدهای فعال قراردادها در این هفته»
dl_4410قرارداد ۱۲۴۰فعال۱۴۰۵/۰۷/۱۱، ساعت ۲۳:۵۹dl_4418قرارداد ۹۸۲فعال۱۴۰۵/۰۷/۱۲، ساعت ۲۳:۵۹dl_4431قرارداد ۱۳۰۵فعال۱۴۰۵/۰۷/۱۴، ساعت ۲۳:۵۹«اجراهای ناموفق عاملها در ماه جاری»
run_7c12عامل وصولناموفق۱۴۰۵/۰۷/۰۶، ساعت ۰۹:۰۰run_7d40عامل تطبیقناموفق۱۴۰۵/۰۷/۰۸، ساعت ۱۸:۰۰بازارچه
تقویم شمسی و تعطیلات رسمی با منشأ داده، و پروفایلهای بانکی، دولتی و بازار.
منابع، نوبتهای آزاد، رزرو موقت و رزرو، با جلوگیری از تداخل.
سررسید به روز کاری، مهلت به ساعت کاری و یادآورهایی که در تعطیلی جابهجا میشوند.
ابزارهای MCP، سیاست، سقف مصرف و رسید اجرا برای عاملهای هوشمند.
SDK، خط فرمان، محیط تست و ساعت آزمایشی.
روی هر بسته بزنید تا محتوایش را ببینید.
بازارچه برای گسترش زیستبوم است، نه شرطی برای اینکه از روز اول بتوانید از ما استفاده کنید.
سناریوهای نمونه
اینها سناریوهای فرضیاند، نه نظر یا تجربهی مشتری واقعی.
پرسشها
نه. ما زیرساختی هستیم برای ساختن قابلیتهای زمان و زمانبندی درون محصولهای دیگر.
نه. اولویت طراحی ما ایران است، اما مدل زمانی ما شمسی، میلادی و قمری را پوشش میدهد.
نه. ویجت یک رابط اختیاری است. میتوانید فقط از API، SDK یا MCP استفاده کنید و رابط کاربری را خودتان بسازید.
عامل هوشمند با ابزارهای نسخهدار و سیاستمحور ما میتواند دسترسپذیری را بررسی کند، رزرو بسازد یا سررسید و برنامهی زمانی تعریف کند.
اتصالدهندهها دادهی مرجع ما را با سرویسهای بیرونی همگام میکنند. وضعیت و قابلیت دقیق هر اتصالدهنده در مستندات همان اتصالدهنده میآید.
ما زیرساختی هستیم که میشود محصولی مثل آنها را رویش ساخت؛ خودمان لزوماً نرمافزار نوبتدهی آماده برای کسبوکارها نیستیم.
با بستههای تقویم نسخهدار، همراه با منشأ داده و امکان بازنویسی برای هر سازمان.
عملیاتهای مهمی که چیزی را تغییر میدهند در برابر تکرار ایمناند؛ تلاش دوباره به عملیات تکراری نمیرسد.
بله؛ محیط تست زمانی و ساعت آزمایشی برای نگه داشتن و جلو بردن زمان ساخته شدهاند.
بله؛ چندمستأجری، جداسازی فضاهای کاری، سیاستها، حسابرسی و رسیدها، و تقویمها و اتصالدهندههای سفارشی بخشی از مسیر سازمانیاند.
با API تقویم شروع کنید. وقتی محصولتان بزرگ شد، همین زیرساخت در زمانبندی، رزرو، سررسید، گردشکار و عاملهای هوشمند همراهتان است.
بدون کارت بانکی · دسترسی زودهنگام · آزمایشگاه همین حالا روی این صفحه
شمارهی پیگیری: