ملی پیامک مستندات وب‌سرویس پیامک
ملی پیامک مستندات وب‌سرویس پیامک
ملی پیامک مستندات وب‌سرویس پیامک

فهرست الگوهای خدماتی

آخرین به‌روزرسانی: 16 آبان 1405

آدرس وب سرویس

متد GetBodies

این متد فهرست الگوهای همان حساب را با فیلتر اختیاری عنوان، متن، شناسه و وضعیت دریافت می‌کند.

  • فقط الگوهای واردشده در پنل پیامکی شما و به‌ترتیب تاریخ درج، به‌صورت نزولی برمی‌گردند.
  • اگر مقدار خروجی خالی بود، یعنی هیچ پترنی ثبت نکرده‌اید: MyBase.RetStatus = 1 و Data = [].
  • در هنگام جستجوی شناسه با keyword تطبیق کامل انجام نمی‌شود، پس حتماً BodyID نتیجه را هم بررسی کنید.

پارامتر های ورودی

نام پارامترنوع پارامترتوضیحات
username String اجباری نام کاربری پنل پیامکی شما در سامانه
password String اجباری مقدار API Key شما در سامانه، در بدنۀ JSON
keyword String اختیاری کلیدواژۀ مورد نظر برای جستجو در عنوان، متن و شناسۀ پترن؛ می‌توانید آن را حذف کنید، null یا رشتۀ خالی به‌معنی «بدون فیلتر» ارسال کنید.
status Int اختیاری
وضعیت پترن شما:
1-: همۀ وضعیت‌های قابل نمایش
0: منتظر تأیید (Wait)
1: تأییدشده (Approved)
2: ردشده (Denied)
3: ویرایش‌شده و منتظر تأیید (EditedAndWait)
4: نیاز به ویرایش (NeedToEdit)
5: حذف‌شده (Deleted)؛ در فهرست برنمی‌گردد
6: ردشده توسط مدیر (DeniedByAdmin)

مقدار بازگشتی

نام پارامترنوع پارامترتوضیحات
MyBase Object نتیجۀ عمومی عملیات فهرست؛ خطاها هم داخل همین شیء هستند.
MyBase.Value String در موفقیت مقدار «1» است؛ تعداد رکوردها نیست.
0: نام کاربری یا APIKey صحیح نیست؛ احراز هویت موفق نیست. (RetStatus: 0)
7-: فیلتر status یا نوع keyword نامعتبر است. (RetStatus: 35 / InvalidData)
100-: خطای داخلی. (RetStatus: 9 / InternalError)
108-: کنترل امنیتی نرخ درخواست یا مسدودسازی. (RetStatus: 35 / InvalidData)
109-:  الزام تنظیم IP مجاز برای استفاده از وب‌سرویس (RetStatus: 35 / InvalidData)
110-: استفاده از API Key الزامی است. (RetStatus: 35 / InvalidData)
111-: IP درخواست مجاز نیست. (RetStatus: 35 / InvalidData)
112-: دسترسی به وب‌سرویس در پنل شما غیرفعال است. (RetStatus: 35 / InvalidData)
MyBase.RetStatus Int وضعیت عمومی پاسخ؛ مستقل از Value و BodyStatus:

1: عملیات موفق (Ok).
0: نام کاربری یا APIKey صحیح نیست؛ احراز هویت موفق نیست.
35: InvalidData؛ داده یا محدودیت امنیتی نامعتبر.
9: InternalError؛ خطای داخلی.

MyBase.StrRetStatus String نام انگلیسی وضعیت RetStatus، مانند Ok یا InvalidData؛ متن فارسی خطا نیست.
Data Object[] الگوهای همان کاربر؛ در نبود نتیجه یا خطا، آرایۀ Object خالی است. الگوی حذف‌شده برنمی‌گردد.
Data[].BodyID Int شناسۀ الگو یا پترن.
Data[].Title String عنوان ثبت‌شده برای الگو یا پترن.
Data[].Body String متن ذخیره‌شده همراه جای‌نگهدارهای متغیرها.
Data[].BodyStatus Int وضعیت بررسی الگو؛ مستقل از RetStatus:

0: منتظر تأیید (Wait).
1: تأییدشده (Approved).
2: ردشده (Denied).
3: ویرایش‌شده و منتظر تأیید (EditedAndWait).
4: نیاز به ویرایش (NeedToEdit).
5: حذف‌شده (Deleted)؛ در فهرست برنمی‌گردد.
6: ردشده توسط مدیر (DeniedByAdmin).

Data[].Description String توضیحات متنی کارشناس ملی پیامک در هنگام بررسی پترن؛ ممکن است خالی باشد.
Data[].InsertDate DateTime تاریخ درج پترن به قالب ISO 8601
$payload = [
    'username' => "YOUR_USERNAME",
    'password' => "YOUR_API_KEY",
    'keyword' => "سفارش",
    'status' => -1,
];
$ch = curl_init('https://rest.payamak-panel.com/api/ShareService/GetBodies');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ['Content-Type: application/json; charset=utf-8', 'Accept: application/json'],
    CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_THROW_ON_ERROR),
]);
$response = curl_exec($ch);
if ($response === false) { throw new RuntimeException(curl_error($ch)); }
curl_close($ch);
print_r(json_decode($response, true, 512, JSON_THROW_ON_ERROR));
در حال حاضر این متد از SOAP پشتیبانی نمی‌کند.
const response = await fetch("https://rest.payamak-panel.com/api/ShareService/GetBodies", {
  method: "POST",
  headers: { "Content-Type": "application/json; charset=utf-8", "Accept": "application/json" },
  body: JSON.stringify({
  "username": "YOUR_USERNAME",
  "password": "YOUR_API_KEY",
  "keyword": "سفارش",
  "status": -1
}),
});
const result = await response.json();
console.log(result);
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var json = """
{
  "username": "YOUR_USERNAME",
  "password": "YOUR_API_KEY",
  "keyword": "سفارش",
  "status": -1
}
""";
var request = HttpRequest.newBuilder(URI.create("https://rest.payamak-panel.com/api/ShareService/GetBodies"))
    .header("Content-Type", "application/json; charset=utf-8")
    .header("Accept", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(json))
    .build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
using System;
using System.Net.Http;
using System.Net.Http.Json;

using var client = new HttpClient();
client.DefaultRequestHeaders.Accept.ParseAdd("application/json");
var payload = new
{
    username = "YOUR_USERNAME",
    password = "YOUR_API_KEY",
    keyword = "سفارش",
    status = -1
};
using var response = await client.PostAsJsonAsync("https://rest.payamak-panel.com/api/ShareService/GetBodies", payload);
Console.WriteLine(await response.Content.ReadAsStringAsync());
import requests

payload = {
  "username": "YOUR_USERNAME",
  "password": "YOUR_API_KEY",
  "keyword": "سفارش",
  "status": -1
}
response = requests.post(
    "https://rest.payamak-panel.com/api/ShareService/GetBodies",
    json=payload,
    headers={"Accept": "application/json"},
    timeout=30,
)
print(response.json())
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;

var json = """
{
  "username": "YOUR_USERNAME",
  "password": "YOUR_API_KEY",
  "keyword": "سفارش",
  "status": -1
}
""";
var request = HttpRequest.newBuilder(URI.create("https://rest.payamak-panel.com/api/ShareService/GetBodies"))
    .header("Content-Type", "application/json; charset=utf-8")
    .header("Accept", "application/json")
    .POST(HttpRequest.BodyPublishers.ofString(json))
    .build();
var response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
package main

import (
    "bytes"
    "fmt"
    "io"
    "net/http"
)

func main() {
    payload := []byte(`{
  "username": "YOUR_USERNAME",
  "password": "YOUR_API_KEY",
  "keyword": "سفارش",
  "status": -1
}`)
    request, err := http.NewRequest(http.MethodPost, "https://rest.payamak-panel.com/api/ShareService/GetBodies", bytes.NewReader(payload))
    if err != nil { panic(err) }
    request.Header.Set("Content-Type", "application/json; charset=utf-8")
    request.Header.Set("Accept", "application/json")
    response, err := http.DefaultClient.Do(request)
    if err != nil { panic(err) }
    defer response.Body.Close()
    body, err := io.ReadAll(response.Body)
    if err != nil { panic(err) }
    fmt.Println(string(body))
}
// نمونۀ پاسخ موفق
{
  "MyBase": {
    "Value": "1",
    "RetStatus": 1,
    "StrRetStatus": "Ok"
  },
  "Data": [
    {
      "BodyID": 12345,
      "Title": "تایید سفارش",
      "Body": "مشتری گرامی، سفارش شما با کد {0} ثبت شد.\nفروشگاه نمونه",
      "BodyStatus": 4,
      "Description": "نام کسب‌وکار را در متن اصلاح کنید.",
      "InsertDate": "2026-11-02T10:20:00"
    }
  ]
}

// نمونۀ فهرست خالی موفق
{
  "MyBase": {
    "Value": "1",
    "RetStatus": 1,
    "StrRetStatus": "Ok"
  },
  "Data": []
}

// نمونۀ خطای اختصاصی متد
{
  "MyBase": {
    "Value": "-7",
    "RetStatus": 35,
    "StrRetStatus": "InvalidData"
  },
  "Data": []
}