Add AST JSON files for NotificationMobileController and manifest.json; create SmsServiceLookupOnlyTest for SMS service functionality
This commit is contained in:
+17
-21
@@ -4,6 +4,11 @@
|
||||
> **Provider:** همیشه `kavenegar` (پیشفرض و تنها گزینه فعال).
|
||||
> All send operations are dispatched **asynchronously** via Symfony Messenger → Redis queue.
|
||||
|
||||
> **سیاست lookup-only (مهم):** همهی پیامکها فقط از طریق الگوی تأییدشدهی کاوهنگار
|
||||
> (`verify/lookup.json`) ارسال میشوند. ارسال متن آزاد با `sms/send.json` **غیرفعال** است
|
||||
> (در ایران برای پیام خدماتی فیلتر میشود). هر پیامی که الگو/کد VerifyLookup نداشته باشد
|
||||
> ارسال **نمیشود**؛ در `SmsLog` با `success=false` ثبت و در لاگ برنامه خطا میخورد.
|
||||
|
||||
## Configuration
|
||||
|
||||
- **کلید API کاوهنگار فقط از متغیر محیطی `KAVENEGAR_API_KEY` خوانده میشود** — نه از دیتابیس و نه از پنل. در پنل ادمین فقط وضعیت read-only «تنظیمشده/نشده» نمایش داده میشود.
|
||||
@@ -14,32 +19,22 @@
|
||||
|
||||
---
|
||||
|
||||
## POST `/api/v1/sms/send`
|
||||
## POST `/api/v1/sms/send` — ⛔ غیرفعال (Deprecated)
|
||||
|
||||
Send a direct SMS message (free text).
|
||||
ارسال متن آزاد **دیگر مجاز نیست** (سیاست lookup-only). این endpoint اکنون همیشه `422`
|
||||
برمیگرداند و هیچ پیامکی ارسال نمیکند. برای ارسال دستی از
|
||||
[`POST /api/v1/sms/send-template`](#post-apiv1smssend-template) با یک تمپلیت تأییدشده
|
||||
که کد VerifyLookup کاوهنگار دارد استفاده کنید.
|
||||
|
||||
**Permission:** `ROLE_ADMIN`
|
||||
|
||||
### Request Body (`application/json`)
|
||||
### Response `422` (همیشه)
|
||||
```json
|
||||
{
|
||||
"mobile": "09123456789",
|
||||
"message": "سلام، پیام آزمایشی",
|
||||
"provider": "kavenegar"
|
||||
}
|
||||
```
|
||||
|
||||
| Field | Type | Required | Description |
|
||||
|-------|------|----------|-------------|
|
||||
| `mobile` | string | ✅ | Recipient mobile (`09XXXXXXXXX`) |
|
||||
| `message` | string | ✅ | Message text |
|
||||
| `provider` | string | ❌ | نادیده گرفته میشود؛ همیشه `kavenegar` استفاده میشود |
|
||||
|
||||
### Response `200`
|
||||
```json
|
||||
{
|
||||
"success": true,
|
||||
"data": { "message": "پیامک با موفقیت ارسال شد" }
|
||||
"success": false,
|
||||
"errors": [
|
||||
{ "code": "ERR_VALIDATION_001", "message": "ارسال متن آزاد مجاز نیست؛ از تمپلیت تأییدشده (VerifyLookup) استفاده کنید" }
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
@@ -48,7 +43,7 @@ Send a direct SMS message (free text).
|
||||
|------|------|-------------|
|
||||
| `ERR_AUTH_001` | 401 | Missing token |
|
||||
| `ERR_AUTH_006` | 403 | Not admin |
|
||||
| `ERR_VALIDATION_001` | 422 | Invalid mobile format |
|
||||
| `ERR_VALIDATION_001` | 422 | ارسال متن آزاد غیرفعال است (همیشه) |
|
||||
|
||||
---
|
||||
|
||||
@@ -93,6 +88,7 @@ Send an SMS using an approved template.
|
||||
| `ERR_AUTH_006` | 403 | Not admin |
|
||||
| `ERR_NOT_FOUND_001` | 404 | Template not found |
|
||||
| `ERR_VALIDATION_001` | 422 | Template not approved |
|
||||
| `ERR_VALIDATION_001` | 422 | تمپلیت کد VerifyLookup کاوهنگار ندارد و قابل ارسال نیست (`provider_code` خالی) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
Reference in New Issue
Block a user