#P1775
POST /v2/config
System Configuration & Tenant Init
این متد حیاتیترین اندپوینت برای راهاندازی اولیه اپلیکیشن (Bootstrapping) است.
سیستم بر اساس هدر Domain تشخیص میدهد که کاربر مربوط به کدام شعبه (Office) است و تنظیمات ظاهری، مالی، حقوقی و ماژولهای فعال آن شعبه را برمیگرداند.
Get Office Configuration
URL:
/v2/configMethod: POST
Controller: V2BaseController@config
Auth: Public (No Auth Middleware Required usually, relies on Domain Header)
Headers (Required)
| Header Name | Description |
|---|---|
| Domain | آدرس دامنهای که اپلیکیشن روی آن اجرا میشود (مثلاً crm.example.com). سیستم www. و پورت (:8080) را به صورت خودکار حذف میکند تا دامنه پایه را پیدا کند. |
Response Structure (JSON)
خروجی شامل چندین بخش اصلی است:
| Key Block | Description |
|---|---|
| office_id | شناسه شعبه + 1000 (جهت Obfuscation). |
| title / brand | عنوانها و نام برند به فارسی و انگلیسی. |
| communicational | اطلاعات تماس (تلفن، موبایل، ایمیل، آدرس، کد پستی و لوکیشن). |
| design | تنظیمات ظاهری شامل:
|
| support_online | کدهای مربوط به ابزارهای چت آنلاین (مثل Raychat یا Crisp). |
| details.financial_debt | Boolean آیا شعبه بدهی پرداخت نشده بابت پشتیبانی دارد؟ (بررسی جدول airplus_bills). |
| details.official | قوانین هاردکد شده سیستم برای مرخصیها (Calendar Limit):
|
| details.config | تنظیمات داینامیک خوانده شده از جدول office_config (بصورت Key-Value). |
Example Response
{
"office_id": 1001,
"title": {
"fa": "آژانس مسافرتی نمونه",
"en": "Sample Travel Agency"
},
"brand": {
"fa": "برند نمونه",
"en": "Sample Brand"
},
"short_domain": "smpl",
"expiration": "2026-01-01",
"communicational": {
"phone": "02188888888",
"mobile": "09120000000",
"email": "info@example.com",
"site": "example.com",
"address": {
"fa": "تهران، خیابان ولیعصر...",
"en": "Tehran, Valiasr St..."
}
},
"design": {
"login_text": "Welcome to Automation",
"logo": "https://liara.../logo.png",
"base_color": "#3b82f6",
"theme": "light"
},
"services": ["flight", "hotel", "train"],
"details": {
"financial_debt": false,
"financial": {
"value_added": 9
},
"official": {
"calendar_limit": {
"leave": {
"1": { "overtime": -60, "substitute": true },
"2": { "overtime": -60, "substitute": false }
}
}
},
"config": {
"allow_negative_stock": "0",
"print_footer_text": "Thanks for your purchase"
}
}
}
Technical Logic Flow
Request Header: Domain
↓
Clean Domain
Remove 'www.' and ':port'
Remove 'www.' and ':port'
↓
DB Query (offices)
WHERE json_contains(domain, $baseDomain)
WHERE json_contains(domain, $baseDomain)
↓
Found?
↙ No
Yes ↘
Return 400
"The office is not defined"
"The office is not defined"
Fetch Details
1. VAT Info
2. Office Configs
3. Check Expired Bills
1. VAT Info
2. Office Configs
3. Check Expired Bills
↓
Return Complete JSON