Skip to main content
#P1775

POST /v2/config


System Configuration & Tenant Init

این متد حیاتی‌ترین اندپوینت برای راه‌اندازی اولیه اپلیکیشن (Bootstrapping) است.
سیستم بر اساس هدر Domain تشخیص می‌دهد که کاربر مربوط به کدام شعبه (Office) است و تنظیمات ظاهری، مالی، حقوقی و ماژول‌های فعال آن شعبه را برمی‌گرداند.




Get Office Configuration

URL: /v2/config
Method: 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 تنظیمات ظاهری شامل:
  • logo/paper_logo/favicon: لینک تصاویر.
  • base_color/theme/style: تنظیمات CSS و رنگ‌بندی.
  • login_text: متن نمایش داده شده در صفحه ورود.
support_online کدهای مربوط به ابزارهای چت آنلاین (مثل Raychat یا Crisp).
details.financial_debt Boolean
آیا شعبه بدهی پرداخت نشده بابت پشتیبانی دارد؟ (بررسی جدول airplus_bills).
details.official قوانین هاردکد شده سیستم برای مرخصی‌ها (Calendar Limit):
  • leave: قوانین مرخصی روزانه/ساعتی.
  • license: قوانین مجوزها.
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'
DB Query (offices)
WHERE json_contains(domain, $baseDomain)
Found?
↙ No
Yes ↘
Return 400
"The office is not defined"
Fetch Details
1. VAT Info
2. Office Configs
3. Check Expired Bills
Return Complete JSON