# قالب پاسخ
پاسخ همهی وبسرویسهای زرینهاب — موفق یا ناموفق — دقیقاً یک ساختار دارد:
{
"meta": {
"trackId": "9b126e9a-184c-4cb0-a47e-62b9a3b7176f",
"status": "kyc-v5-0",
"isSuccess": true,
"code": 0,
"message": "عملیات با موفقیت انجام شد",
"errorMessage": null,
"errorType": null,
"errors": []
},
"data": { }
}
# فیلدهای meta
| نام | نوع | توضیحات |
|---|---|---|
| trackId | string (UUID) | شناسه یکتای درخواست؛ در هدر X-Track-Id هم برگردانده میشود |
| status | string | ترکیب نام گروه سرویس و کد وضعیت، به شکل {slug}-{code}؛ مثلاً kyc-v5-0 |
| isSuccess | bool | ملاک اصلی موفقیت درخواست |
| code | int | کد وضعیت عددی؛ فهرست کامل در فهرست خطاها |
| message | string | null | پیام موفقیت؛ در پاسخهای ناموفق null است |
| errorMessage | string | null | پیام خطای قابل نمایش به کاربر؛ در پاسخهای موفق null است |
| errorType | string | null | نام نوع خطا، مثل BadRequest یا UnAuthorized |
| errors | array | فهرست خطاهای جزئی؛ در پاسخ موفق آرایهی خالی است |
هر عضو آرایهی errors سه فیلد دارد:
| نام | نوع | توضیحات |
|---|---|---|
| property | string | null | نام فیلدی که خطا به آن مربوط است |
| message | string | شرح خطا (فارسی) |
| attemptedValue | any | null | مقداری که ارسال کردهاید |
# فیلد data
data بدنهی اصلی پاسخ سرویس است و ساختار آن برای هر سرویس متفاوت است. در پاسخهای ناموفق مقدار آن null است.
نام فیلدهای data همیشه camelCase است: nationalCode، mobileNumber، iban، cardNumber.
# نمونهی پاسخ ناموفق
{
"meta": {
"trackId": "9b126e9a-184c-4cb0-a47e-62b9a3b7176f",
"status": "kyc-v5-2",
"isSuccess": false,
"code": 2,
"message": null,
"errorMessage": "پارامتر های ارسالی معتبر نیستند",
"errorType": "BadRequest",
"errors": [
{
"property": "nationalCode",
"message": "کد ملی باید ۱۰ رقم باشد",
"attemptedValue": "12345"
}
]
},
"data": null
}
# الگوی پیشنهادی بررسی پاسخ
- کد وضعیت HTTP را بررسی کنید (
200یعنی درخواست پردازش شده است). meta.isSuccessرا بخوانید؛ فقط در صورتtrueسراغdataبروید.- در غیر این صورت
meta.codeرا برای تصمیمگیری برنامهنویسی وmeta.errorMessageرا برای نمایش به کاربر استفاده کنید. meta.trackIdرا همراه هر لاگ یا تیکت پشتیبانی ذخیره کنید.
مهم
هرگز روی متن errorMessage شرطگذاری نکنید؛ متن پیامها ممکن است تغییر کند. منطق برنامهی خود را روی meta.code بنویسید.