#P1749
GET /v2/core/application_interface
O. List Application Interfaces (Core)
این اندپوینت برای دریافت لیست رابطهای نرمافزاری (Application Interfaces) استفاده میشود. خروجی این سرویس لیستی از شعب (Offices) است که تنظیمات و دسترسیهای مربوطه (مانند APIهای ایرلاینها، دسترسی همکاران و...) به عنوان زیرمجموعه آنها گروهبندی شدهاند. همچنین امکان دریافت مانده حساب کیف پول هر شعبه نیز به صورت اختیاری وجود دارد.
Request Overview
URL:
/v2/core/application_interfaceMethod: GET
Controller: CoreController@listApplicationInterface
Middleware: authWithJwt
Access Control
- نیاز به توکن احراز هویت (JWT) دارد.
- دادهها بر اساس رکوردهای موجود در جداول
application_interfaceوofficesتجمیع میشوند.
Query Parameters (Filters)
| Field | Type | Description |
|---|---|---|
| branch | integer | (اختیاری) شناسه شعبه. در صورت ارسال، خروجی فقط شامل همین شعبه و تنظیمات مربوط به آن خواهد بود. |
| service | string | (اختیاری) نام سرویس (مثلاً nira). فقط رابطهای مربوط به این سرویس بازگردانده میشوند. |
| type | string | (اختیاری) نوع رابط (مثلاً api). |
| status | integer | (اختیاری) وضعیت فعال/غیرفعال بودن رابط (1 یا 0). |
| balance | boolean | (اختیاری) اگر مقدار true یا 1 ارسال شود، سیستم مانده حساب کیف پول (Wallet) هر شعبه را محاسبه و در خروجی قرار میدهد. |
Logic Details
فرآیند پردازش دادهها شامل مراحل زیر است:
- دریافت و فیلتر رابطها: ابتدا دادهها از جدول
application_interfaceبر اساس فیلترهای ورودی (branch, service, type, status) دریافت میشوند. - غنیسازی دادهها (Data Mapping):
- اگر
object_typeبرابر باcolleagueباشد، اطلاعات همکار (نام، سریال، آفیس) از مدلColleagueاستخراج و جایگزین فیلدobjectمیشود. - فیلدهای رشتهای ساده (service, type, object_type) به ساختار استاندارد آرایهای
{id, title}تبدیل میشوند.
- اگر
- گروهبندی: دادههای پردازش شده بر اساس شناسه شعبه (
branch) گروهبندی میشوند. - تجمیع با شعب (Offices):
- لیست شعب از جدول
officesدریافت میشود (اگر فیلترbranchباشد، فقط همان شعبه). - برای هر شعبه، رابطهای مربوطه از مرحله قبل در فیلد
itemsقرار میگیرند.
- لیست شعب از جدول
- محاسبه مانده (Balance):
- اگر پارامتر
balance=trueباشد، متدAccountingController::getBalanceWalletفراخوانی میشود. - این متد مجموع
creditوdebitرا از جدولwalletبرای آن شعبه (با شرطoperator_type='erp') محاسبه میکند. - وضعیت حساب (diagnosis) به صورت
creditor(بستانکار)،debtor(بدهکار) یاneutralتعیین میشود.
- اگر پارامتر
Response Structure
نمونه پاسخ موفق (JSON)
{
"items": [
{
"id": 1,
"title_fa": "دفتر مرکزی",
"title_en": "Headquarters",
"brand_fa": "برند نمونه",
"items": [
{
"id": 105,
"branch": 1,
"service": { "id": "nira", "title": "nira" },
"type": { "id": "api", "title": "api" },
"object_type": { "id": "colleague", "title": "colleague" },
"object": {
"id": 50,
"first_name": "Ali",
"last_name": "Rezaei",
"serial": "12345"
},
"status": 1
}
],
"balance": {
"credit": 1000000,
"debit": 200000,
"balance": 800000,
"diagnosis": "creditor"
}
}
],
"meta": {
"timestamp": 1733745000
}
}
Flowchart
Start Request (GET)
↓
Fetch application_interface (Apply Filters)
↓
Map Data Loop:
1. Expand 'colleague' object
2. Format fields to {id, title}
1. Expand 'colleague' object
2. Format fields to {id, title}
↓
Group Data by 'branch'
↓
Fetch Offices (DB)
↓
Need Balance?
↙ (Yes)
Calc Wallet (Credit - Debit)
↘ (No)
Skip
↓
Return Merged JSON