{
    "info": {
        "name": "Dialing Customer API",
        "description": "API مشتری دیالینگ (JWT)\nBase URL: https://my.dialing.ir/api/v1\n\nفقط مشتریان فعال که وب‌سرویس حسابشان روشن باشد می‌توانند توکن بگیرند و از وب‌سرویس استفاده کنند.\n\n1) درخواست Get Token را اجرا کنید.\n2) access_token را در متغیر Collection قرار دهید یا از Tests اسکریپت خودکار استفاده کنید.",
        "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    },
    "variable": [
        {
            "key": "base_url",
            "value": "https://my.dialing.ir/api/v1"
        },
        {
            "key": "access_token",
            "value": ""
        },
        {
            "key": "username",
            "value": "09121234567"
        },
        {
            "key": "password",
            "value": "your-password"
        },
        {
            "key": "extension_id",
            "value": "282"
        },
        {
            "key": "from_mobile",
            "value": "09121111111"
        },
        {
            "key": "mobile",
            "value": "09121234567"
        },
        {
            "key": "line_number",
            "value": "02191000000"
        },
        {
            "key": "duration",
            "value": "300"
        },
        {
            "key": "report_id",
            "value": "150001"
        },
        {
            "key": "sound_id",
            "value": "12"
        }
    ],
    "item": [
        {
            "name": "1. Auth",
            "item": [
                {
                    "name": "Get Token",
                    "event": [
                        {
                            "listen": "test",
                            "script": {
                                "type": "text/javascript",
                                "exec": [
                                    "pm.test('Token issued', function () {",
                                    "    pm.response.to.have.status(200);",
                                    "    var json = pm.response.json();",
                                    "    pm.expect(json.ok).to.eql(true);",
                                    "    if (json.data && json.data.access_token) {",
                                    "        pm.collectionVariables.set('access_token', json.data.access_token);",
                                    "    }",
                                    "});"
                                ]
                            }
                        }
                    ],
                    "request": {
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json",
                                "type": "text"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"username\": \"{{username}}\",\n  \"password\": \"{{password}}\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "url": "{{base_url}}/auth/token",
                        "description": "دریافت JWT با موبایل و رمز عبور پنل مشتری. فقط حساب فعال با وب‌سرویس روشن توکن می‌گیرد؛ در غیر این صورت 403 با account_inactive یا api_disabled برمی‌گردد."
                    }
                }
            ]
        },
        {
            "name": "2. Extensions",
            "item": [
                {
                    "name": "List Extensions",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/extensions",
                        "description": "لیست داخلی‌ها با سرور، پورت و رمز"
                    }
                }
            ]
        },
        {
            "name": "3. Servers",
            "item": [
                {
                    "name": "List Servers",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/servers",
                        "description": "نام، آدرس و PJSIP Port سرورهای تخصیص‌یافته به مشتری"
                    }
                }
            ]
        },
        {
            "name": "4. Outbound Numbers",
            "item": [
                {
                    "name": "List Outbound Numbers",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/outbound",
                        "description": "فقط لیست شماره‌های خروجی"
                    }
                }
            ]
        },
        {
            "name": "5. Directory (Direct Dial)",
            "item": [
                {
                    "name": "List Directory",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/directory",
                        "description": "دفترچه مخاطبین برای Direct Dial (نام و شماره)"
                    }
                }
            ]
        },
        {
            "name": "6. Safe Call",
            "item": [
                {
                    "name": "روش ۱ — داخلی به موبایل",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json",
                                "type": "text"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"extension_id\": {{extension_id}},\n  \"mobile\": \"{{mobile}}\",\n  \"line_number\": \"{{line_number}}\",\n  \"duration\": {{duration}}\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "url": "{{base_url}}/calls/safe",
                        "description": "روش ۱: ابتدا داخلی زنگ می‌خورد و سپس تماس با موبایل مقصد از سرخط برقرار می‌شود. داخلی و سرخط باید روی یک سرور باشند. extension_id و from_mobile را با هم ارسال نکنید. extension_id باید شمارهٔ داخلی موجود در فیلد extension خروجی /extensions باشد، نه فیلد id. duration اختیاری و حداکثر مدت مکالمه بر حسب ثانیه است؛ باید عدد صحیح بزرگ‌تر از صفر باشد. برای مثال 300 یعنی ۳۰۰ ثانیه (۵ دقیقه). در صورت حذف، تماس نامحدود است."
                    }
                },
                {
                    "name": "روش ۲ — موبایل به موبایل",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json",
                                "type": "text"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"from_mobile\": \"{{from_mobile}}\",\n  \"mobile\": \"{{mobile}}\",\n  \"line_number\": \"{{line_number}}\",\n  \"duration\": {{duration}}\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "url": "{{base_url}}/calls/safe",
                        "description": "روش ۲: هر دو طرف موبایل هستند. ابتدا from_mobile زنگ می‌خورد و سپس تماس با mobile از سرخط برقرار می‌شود. extension_id را در این روش ارسال نکنید. شماره‌ها باید 09xxxxxxxxx و با هم متفاوت باشند. duration اختیاری و حداکثر مدت مکالمه بر حسب ثانیه است؛ باید عدد صحیح بزرگ‌تر از صفر باشد. برای مثال 300 یعنی ۳۰۰ ثانیه (۵ دقیقه). در صورت حذف، تماس نامحدود است."
                    }
                }
            ]
        },
        {
            "name": "7. Reports",
            "item": [
                {
                    "name": "Reports by Date",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/reports?from_date=2026-07-01&to_date=2026-07-14&limit=50",
                        "description": "گزارش تماس بر اساس بازه تاریخ. تاریخ میلادی YYYY-MM-DD یا شمسی YYYY/MM/DD. حداکثر limit برابر ۲۰۰ است (پیش‌فرض ۵۰)."
                    }
                },
                {
                    "name": "Reports by ID",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/reports?from_id=150000&limit=50",
                        "description": "گزارش تماس از شماره گزارش به بعد (صعودی)"
                    }
                }
            ]
        },
        {
            "name": "8. Download Report Recording",
            "item": [
                {
                    "name": "Download Recording (by report)",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [],
                        "url": "{{base_url}}/reports/{{report_id}}/recording",
                        "description": "دانلود فایل WAV گزارش تماس (نه JSON)\nنیاز به هدر Authorization: Bearer {{access_token}}\nمسیر جایگزین: {{base_url}}/reports/recording/{{report_id}}"
                    }
                }
            ]
        },
        {
            "name": "9. Recordings List",
            "item": [
                {
                    "name": "List Recordings by Date",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/recordings?from_date=2026-07-01&to_date=2026-07-14&limit=50",
                        "description": "لیست فایل‌های صوتی بر اساس بازه تاریخ (فقط تماس‌های ضبط‌شده). نتایج نزولی (جدیدترین اول). حداکثر limit برابر ۲۰۰ است (پیش‌فرض ۵۰)."
                    }
                },
                {
                    "name": "List Recordings by ID",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/recordings?from_id=150000&limit=50",
                        "description": "لیست فایل‌های صوتی از شماره گزارش به بعد — مناسب همگام‌سازی دوره‌ای"
                    }
                }
            ]
        },
        {
            "name": "10. Download Recording (short url)",
            "item": [
                {
                    "name": "Download Recording (short url)",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [],
                        "url": "{{base_url}}/recordings/{{report_id}}",
                        "description": "دانلود فایل WAV با آدرس کوتاه؛ همان خروجی reports/{id}/recording است.\nنیاز به هدر Authorization: Bearer {{access_token}}"
                    }
                }
            ]
        },
        {
            "name": "11. Sounds",
            "item": [
                {
                    "name": "List Sounds",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "GET",
                        "header": [
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "url": "{{base_url}}/sounds",
                        "description": "لیست فایل‌های صوتی آپلودی مشتری. مقدار id همان sound_id برای تماس و پخش فایل است."
                    }
                }
            ]
        },
        {
            "name": "12. Call & Play Sound File",
            "item": [
                {
                    "name": "Call & Play Sound File",
                    "request": {
                        "auth": {
                            "type": "bearer",
                            "bearer": [
                                {
                                    "key": "token",
                                    "value": "{{access_token}}",
                                    "type": "string"
                                }
                            ]
                        },
                        "method": "POST",
                        "header": [
                            {
                                "key": "Content-Type",
                                "value": "application/json",
                                "type": "text"
                            },
                            {
                                "key": "Accept",
                                "value": "application/json",
                                "type": "text"
                            }
                        ],
                        "body": {
                            "mode": "raw",
                            "raw": "{\n  \"sound_id\": {{sound_id}},\n  \"mobile\": \"{{mobile}}\",\n  \"line_number\": \"{{line_number}}\"\n}",
                            "options": {
                                "raw": {
                                    "language": "json"
                                }
                            }
                        },
                        "url": "{{base_url}}/calls/play_file",
                        "description": "تماس با شماره مقصد از سرخط و پخش فایل صوتی مشتری. sound_id از خروجی /sounds و line_number از خروجی /outbound گرفته می‌شود. حداکثر ۱۰ درخواست در دقیقه."
                    }
                }
            ]
        }
    ]
}