3.2 KiB
Shayegan webservice notes (PDF + Sample_Shygun Postman)
Do not store real credentials in this file or in Git.
Known for boursecu (operator, 2026-10-05)
Store panel (app.boursemes.com) is the Laravel API, not Shayegan:
- Shop domain:
app.boursemes.com node_server:https://app.boursemes.com/server- Listed LAN IP on that panel:
192.168.70.189— different from Shayegan host; do not use as WsServer unless confirmed.
Shayegan webservice hosts (operator):
- Public/static (Mashhad office):
2.180.4.172 - Internal LAN:
192.168.109.222 - Port:
2030 - Candidate
shayegan_base_url(no/apisuffix):- From internet / remote app server:
http://2.180.4.172:2030 - From same LAN as حسابگر:
http://192.168.109.222:2030 - If 404, retry with
/WsServerappended (Postman samples).
- From internet / remote app server:
SQL Config for Shayegan Put/Get (inside JSON Config, not HTTP host):
Server:P-SERVERDataBaseName:CYPRSD04DBUserName:sa- Password: set only in DB
settings.shayegan_db_password(never commit).
Still useful from operator: Auth*, ItemNumber, STNumber, bank account, amount/weight scales, metal wallet mode.
Base URL (PDF)
http://{host}[:port]{optionalBasePath}/api/{Endpoint}
PDF example: http://192.168.1.1/api/Document/Put
Postman often inserts /WsServer or /WsServer-3.13 before /api.
Operator port hint: 2030. SQL Server name is not the HTTP host.
Request shape
Every call body includes Config.
Get calls also include Domain (+ RowStart/RowCount query).
Put calls include PutObject array at the same level as Config (raw HTTP / Postman). PDF C# wrapper is named Put.
Config fields
Server, AllowRowSecurity, Level, DBUserName, DBPassword, DataBaseName, AuthUser, AuthPassword, Language
Auth: Shayegan cloud / Hesabgar / none (empty Auth*).
Endpoints used
| Op | Method path |
|---|---|
| Health (read) | POST .../api/Account/Get?RowStart=0&RowCount=1 |
| Trade | POST .../api/Invoice/Put |
| Rial ledger | POST .../api/Document/Put |
| Customer account | POST .../api/Account/Put — MoinNumber (e.g. 12101), AccountName, UpdateKind: 3; response Number = تفصیلی stored as moshtari_code. |
Put response (check even on HTTP 200)
{
"Result": [{ "ErrorMessage": "", "Number": "6572", "GuId": "..." }],
"ErrorMessage": "",
"TokenString": ""
}
Treat non-empty top-level or per-row ErrorMessage as failure.
InvTyp (company)
1 تولید | 2 فروش | 3 خرید | 4 حواله | 5 رسید انبار | 6 برگشت فروش | 7 برگشت خرید | 8/9 تعدیل | 10 انتقال انبار | 11/12 سفارش | 13 پیشفاکتور
Customer buy copper → company فروش → InvTyp=2
Customer sell copper → company خرید → InvTyp=3
Document body (PDF)
Prefer AmountBed / AmountBes (also RialBed / RialBes exist).
Header: DocDescription, DocDate (yyyyMMdd), DocReference, GuId.
Invoice required (PDF)
AccountNumber, InvTyp, InvDate; line: item + STNumber + Quan + Price.
Ignore Postman keys with trailing spaces — PDF field names are authoritative.