پایه/api/v1

قراردادها

آدرس پایه، احراز هویت تحلیلگر و شریک (X-API-Key)، زبان خروجی و فرمت خطا (code و error_code).

راهنمای مشترک برای فراخوانی تحلیلگر نماد و تحلیلگر پرتفوی، به‌علاوه قرارداد محصولات دادهٔ شریک (کدال، صندوق‌ها، کالاها و گزارش‌ها).


Base URL

نمونه
https://api.codal724.ir/api/v1

در محیط توسعه:

نمونه
http://localhost:8000/api/v1

Authentication

APIAuth
تحلیلگر نمادعمومی — بدون توکن
تحلیلگر پرتفویالزامی — Authorization: Bearer <access_token>

توکن دسترسی از طریق OTP موبایل صادر می‌شود (POST /auth/otp/send → POST /auth/otp/verify).


Localization

پارامتر locale در query:

ValueOutput
faفارسی (پیش‌فرض)
enEnglish

Error format

نمونه
{
  "code": "not_found",
  "message": "Resource not found"
}
HTTPTypical code
401unauthorized
404not_found
422bad_request
429rate_limited

Rate limits

محدودیت نرخ تحلیلگر بر اساس پلن اشتراک اعمال می‌شود. برای افزایش سقف با api@codal724.ir تماس بگیرید.


Partner data APIs

محصولات دادهٔ شریک جدا از تحلیلگر نماد/پرتفوی هستند. مسیرهای عمومی /api/v1/codal و /api/v1/funds رایگان می‌مانند — کلید شریک را برای صورتحساب به آن‌ها نفرستید.

جزئیات ساخت کلید، کیف پول و مصرف در «دسترسی من» (/api-docs/my-access) است: POST/GET /external/keys، POST /external/keys/{id}/revoke، GET /external/wallet، POST/GET /external/payments، GET /external/usage-logs، GET /external/health.

Partner authentication

APIAuth
GET /external/codal/dataX-API-Key: cdl-724-… یا Authorization: Bearer cdl-724-…
GET /external/funds/dataهمان کلید API
GET /external/timeseries/dataهمان کلید API
GET /external/reports/dataهمان کلید API
کلیدها، کیف پول، مصرف، وب‌هوک، سلامتJWT کاربر Authorization: Bearer <access_token> (OTP)، همان حساب اپ

هر کلید فعال به همهٔ جداول پشتیبانی‌شدهٔ کدال، صندوق‌ها، سری زمانی و گزارش‌ها دسترسی دارد. مقدار ذخیره‌شدهٔ scopes فقط اطلاعات قدیمی است و دسترسی را محدود نمی‌کند.

Partner error format

مسیرهای شریک از error_code استفاده می‌کنند (نه code). FastAPI اغلب به شکل { "detail": { … } } می‌پیچد.

نمونه
{ "error_code": "insufficient_credits", "message": "…" }
error_codeHTTPWhen
invalid_api_key401Missing / unknown key
revoked_api_key401Key revoked
insufficient_credits402Wallet too low
key_credit_limit_exceeded402Key spend cap hit
rate_limit_exceeded429Per-key minute/hour limit
rate_limit_unavailable503Redis limiter down
invalid_table400Unknown table_name
validation_error400Bad query params

Partner rate limits

محدودیت به‌ازای هر کلید + سرویس اعمال می‌شود (نه محدودکنندهٔ اشتراک تحلیلگر). روی 429: هدر Retry-After و error_code: rate_limit_exceeded.

پیش‌فرض محیط: ۶۰ درخواست در دقیقه و ۲۰۰۰ در ساعت برای codal، funds، reports و timeseries.

صورتحساب: base_irr + rows_returned × per_row_irr (پیش‌فرض محیط: پایه ۱۰۰۰، به‌ازای هر ردیف ۱۰ ریال). درخواست‌های ناموفق با cost_irr: 0 ثبت می‌شوند.

هدرهای موفقیت (هر چهار محصول داده):

HeaderMeaning
X-Request-IdCorrelate with usage logs
X-Credits-ChargedIRR charged
X-Wallet-BalanceRemaining wallet
X-RateLimit-Limit-MinutePer-key minute limit for this service
X-RateLimit-Remaining-MinuteRemaining this minute
X-RateLimit-Limit-HourPer-key hour limit
X-RateLimit-Remaining-HourRemaining this hour