486 lines
9.7 KiB
Markdown
486 lines
9.7 KiB
Markdown
# مستند API اشتراک قیمت ها
|
||
|
||
این API برای دریافت خروجی JSON از قیمت ها و داده های بازار استفاده می شود.
|
||
همه endpoint های نسخه اشتراکی با `/api/v1` شروع می شوند و فقط خواندنی هستند.
|
||
|
||
## اطلاعات اصلی
|
||
|
||
Base URL:
|
||
|
||
```txt
|
||
https://YOUR-DOMAIN.com
|
||
```
|
||
|
||
Header احراز هویت:
|
||
|
||
```http
|
||
Authorization: Bearer YOUR_API_TOKEN
|
||
```
|
||
|
||
توکن در بک اند از متغیر محیطی زیر خوانده می شود:
|
||
|
||
```txt
|
||
API_TOKEN
|
||
```
|
||
|
||
اگر توکن ارسال نشود یا اشتباه باشد، پاسخ `401` برمی گردد.
|
||
اگر توکن روی سرور تنظیم نشده باشد، پاسخ `503` برمی گردد.
|
||
|
||
## دریافت همه قیمت ها در یک درخواست
|
||
|
||
```http
|
||
GET /api/v1/prices/latest
|
||
```
|
||
|
||
این endpoint همه دیتاست های اصلی را در یک JSON واحد برمی گرداند.
|
||
|
||
نمونه درخواست JavaScript:
|
||
|
||
```js
|
||
const API = "https://YOUR-DOMAIN.com";
|
||
const TOKEN = "YOUR_API_TOKEN";
|
||
|
||
const response = await fetch(`${API}/api/v1/prices/latest`, {
|
||
headers: {
|
||
Authorization: `Bearer ${TOKEN}`,
|
||
},
|
||
});
|
||
|
||
if (!response.ok) {
|
||
throw new Error(`API error: ${response.status}`);
|
||
}
|
||
|
||
const data = await response.json();
|
||
console.log(data.generated_at);
|
||
console.log(data.datasets.metals);
|
||
console.log(data.datasets.currency);
|
||
```
|
||
|
||
ساختار کلی پاسخ:
|
||
|
||
```json
|
||
{
|
||
"generated_at": "2026-07-04T09:30:00Z",
|
||
"datasets": {
|
||
"metals": [],
|
||
"live_commodities": [],
|
||
"currency": [],
|
||
"gold": [],
|
||
"coin": [],
|
||
"commodity": [],
|
||
"steel_stocks": [],
|
||
"crypto": {},
|
||
"world_economy": []
|
||
}
|
||
}
|
||
```
|
||
|
||
## فهرست کامل محصولات فلزی
|
||
|
||
برای دیدن همه گروه ها، دسته ها و نام محصولات:
|
||
|
||
```http
|
||
GET /api/v1/metals/tree
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
{
|
||
"Minor Metals": {
|
||
"Lithium": [
|
||
"Lithium Carbonate 99.5%min China",
|
||
"Lithium Hydroxide 56.5%min China"
|
||
],
|
||
"Cobalt": [
|
||
"Cobalt Metal 99.8%min China"
|
||
]
|
||
},
|
||
"Carbon Steel": {
|
||
"Rebar": [
|
||
"Rebar HRB400 20mm China"
|
||
]
|
||
}
|
||
}
|
||
```
|
||
|
||
تعداد فعلی محصولات فلزی در دیتابیس اصلی: **674 محصول**.
|
||
|
||
## آخرین قیمت همه محصولات فلزی
|
||
|
||
```http
|
||
GET /api/v1/metals/latest
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"group": "Minor Metals",
|
||
"category": "Lithium",
|
||
"title": "Lithium Carbonate 99.5%min China",
|
||
"date": "2026-07-04",
|
||
"low": 72000,
|
||
"mid": 73500,
|
||
"high": 75000,
|
||
"prev_mid": 73000,
|
||
"pct": 0.68
|
||
}
|
||
]
|
||
```
|
||
|
||
توضیح فیلدها:
|
||
|
||
| فیلد | توضیح |
|
||
|---|---|
|
||
| `group` | گروه اصلی محصول |
|
||
| `category` | دسته محصول |
|
||
| `title` | نام کامل محصول |
|
||
| `date` | تاریخ آخرین قیمت |
|
||
| `low` | کمترین قیمت |
|
||
| `mid` | قیمت میانی |
|
||
| `high` | بیشترین قیمت |
|
||
| `prev_mid` | قیمت میانی قبلی |
|
||
| `pct` | درصد تغییر نسبت به قیمت قبلی |
|
||
|
||
## تاریخچه قیمت یک محصول
|
||
|
||
```http
|
||
GET /api/v1/metals/history?title=PRODUCT_TITLE&days=365
|
||
```
|
||
|
||
پارامترها:
|
||
|
||
| پارامتر | توضیح |
|
||
|---|---|
|
||
| `title` | نام دقیق محصول |
|
||
| `days` | تعداد روزهای تاریخچه. اگر `0` باشد، همه تاریخچه برمی گردد |
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"date": "2026-07-01",
|
||
"low": 71000,
|
||
"mid": 72500,
|
||
"high": 74000
|
||
},
|
||
{
|
||
"date": "2026-07-02",
|
||
"low": 72000,
|
||
"mid": 73500,
|
||
"high": 75000
|
||
}
|
||
]
|
||
```
|
||
|
||
## جستجوی محصول فلزی
|
||
|
||
```http
|
||
GET /api/v1/metals/search?q=lithium
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"title": "Lithium Carbonate 99.5%min China",
|
||
"group": "Minor Metals",
|
||
"category": "Lithium"
|
||
}
|
||
]
|
||
```
|
||
|
||
## TGJU: ارز، طلا و سکه
|
||
|
||
داده های TGJU در سه endpoint جدا ارائه می شوند:
|
||
|
||
```http
|
||
GET /api/v1/currency
|
||
GET /api/v1/gold
|
||
GET /api/v1/coin
|
||
```
|
||
|
||
همین داده ها داخل endpoint کلی هم وجود دارند:
|
||
|
||
```js
|
||
data.datasets.currency
|
||
data.datasets.gold
|
||
data.datasets.coin
|
||
```
|
||
|
||
نمونه پاسخ ارز:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "دلار",
|
||
"price": 610000,
|
||
"change_val": "1,200 (0.2%)",
|
||
"pct": 0.2,
|
||
"dir": "up",
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
نمونه پاسخ طلا:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "طلای 18 عیار",
|
||
"price": 7200000,
|
||
"change_val": "25,000 (0.35%)",
|
||
"pct": 0.35,
|
||
"dir": "up",
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
نمونه پاسخ سکه:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"name": "سکه امامی",
|
||
"price": 850000000,
|
||
"change_val": "-1,500,000 (0.18%)",
|
||
"pct": -0.18,
|
||
"dir": "down",
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
توضیح فیلدهای TGJU:
|
||
|
||
| فیلد | توضیح |
|
||
|---|---|
|
||
| `name` | نام آیتم |
|
||
| `price` | قیمت عددی |
|
||
| `change_val` | متن تغییر قیمت طبق منبع |
|
||
| `pct` | درصد تغییر |
|
||
| `dir` | جهت تغییر: `up` یا `down` |
|
||
| `fetched_at` | زمان دریافت داده |
|
||
|
||
## CoinGecko: کریپتو
|
||
|
||
```http
|
||
GET /api/v1/crypto
|
||
```
|
||
|
||
داخل endpoint کلی:
|
||
|
||
```js
|
||
data.datasets.crypto
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
{
|
||
"coins": [
|
||
{
|
||
"id": "bitcoin",
|
||
"symbol": "BTC",
|
||
"name": "Bitcoin",
|
||
"image": "https://...",
|
||
"rank": 1,
|
||
"price": 65000,
|
||
"pct_1h": 0.1,
|
||
"pct_24h": 1.2,
|
||
"pct_7d": -3.4,
|
||
"market_cap": 1280000000000,
|
||
"volume_24h": 32000000000,
|
||
"high_24h": 66000,
|
||
"low_24h": 64000,
|
||
"circ_supply": 19600000,
|
||
"ath": 69000,
|
||
"sparkline": [64200, 64500, 65000],
|
||
"dir": "up"
|
||
}
|
||
],
|
||
"global": {
|
||
"market_cap_usd": 2500000000000,
|
||
"volume_usd": 90000000000,
|
||
"btc_dominance": 51.2,
|
||
"eth_dominance": 17.4,
|
||
"market_cap_change_24h": 1.1,
|
||
"active": 12000
|
||
},
|
||
"trending": [
|
||
{
|
||
"id": "example",
|
||
"symbol": "EXM",
|
||
"name": "Example Coin",
|
||
"rank": 120,
|
||
"thumb": "https://...",
|
||
"price": 1.23,
|
||
"pct_24h": 4.5
|
||
}
|
||
],
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
```
|
||
|
||
## CompaniesMarketCap: سهام شرکت های فولادی
|
||
|
||
```http
|
||
GET /api/v1/steel-stocks
|
||
```
|
||
|
||
داخل endpoint کلی:
|
||
|
||
```js
|
||
data.datasets.steel_stocks
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"code": "NUE",
|
||
"rank": 1,
|
||
"name": "Nucor",
|
||
"market_cap": 38.5,
|
||
"price": 156.2,
|
||
"today_pct": 1.4,
|
||
"dir": "up",
|
||
"country": "United States",
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
توضیح:
|
||
|
||
| فیلد | توضیح |
|
||
|---|---|
|
||
| `code` | نماد شرکت |
|
||
| `rank` | رتبه شرکت در لیست منبع |
|
||
| `name` | نام شرکت |
|
||
| `market_cap` | ارزش بازار، بر حسب میلیارد دلار |
|
||
| `price` | قیمت سهم |
|
||
| `today_pct` | درصد تغییر امروز |
|
||
| `dir` | جهت تغییر |
|
||
| `country` | کشور شرکت |
|
||
| `fetched_at` | زمان دریافت داده |
|
||
|
||
## Yahoo Finance: کامودیتی های جهانی
|
||
|
||
```http
|
||
GET /api/v1/commodity
|
||
```
|
||
|
||
داخل endpoint کلی:
|
||
|
||
```js
|
||
data.datasets.commodity
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"symbol": "GC=F",
|
||
"name": "Gold",
|
||
"price": 2350.5,
|
||
"change": 8.2,
|
||
"pct": 0.35,
|
||
"currency": "USD",
|
||
"up": true
|
||
}
|
||
]
|
||
```
|
||
|
||
## Trading Economics: اقتصاد جهان
|
||
|
||
```http
|
||
GET /api/v1/world-economy
|
||
```
|
||
|
||
داخل endpoint کلی:
|
||
|
||
```js
|
||
data.datasets.world_economy
|
||
```
|
||
|
||
نمونه پاسخ:
|
||
|
||
```json
|
||
[
|
||
{
|
||
"country": "United States",
|
||
"gdp": 27360,
|
||
"gdp_growth": 1.4,
|
||
"interest_rate": 5.5,
|
||
"inflation_rate": 3.2,
|
||
"jobless_rate": 4.0,
|
||
"gov_budget": -6.3,
|
||
"debt_gdp": 122.3,
|
||
"current_account": -3.0,
|
||
"population": 335,
|
||
"fetched_at": "2026-07-04T09:30:00Z"
|
||
}
|
||
]
|
||
```
|
||
|
||
## کشف endpoint ها
|
||
|
||
برای گرفتن لیست endpoint های موجود:
|
||
|
||
```http
|
||
GET /api/v1/datasets
|
||
```
|
||
|
||
## نمونه کامل برای دوست شما
|
||
|
||
```js
|
||
const API = "https://YOUR-DOMAIN.com";
|
||
const TOKEN = "YOUR_API_TOKEN";
|
||
|
||
async function getJson(path) {
|
||
const res = await fetch(`${API}${path}`, {
|
||
headers: {
|
||
Authorization: `Bearer ${TOKEN}`,
|
||
},
|
||
});
|
||
|
||
if (!res.ok) {
|
||
throw new Error(`API request failed: ${res.status}`);
|
||
}
|
||
|
||
return res.json();
|
||
}
|
||
|
||
const catalog = await getJson("/api/v1/metals/tree");
|
||
const latestMetals = await getJson("/api/v1/metals/latest");
|
||
const allPrices = await getJson("/api/v1/prices/latest");
|
||
|
||
console.log("Catalog:", catalog);
|
||
console.log("Latest metals:", latestMetals);
|
||
console.log("TGJU currency:", allPrices.datasets.currency);
|
||
console.log("Crypto:", allPrices.datasets.crypto);
|
||
```
|
||
|
||
## خلاصه دیتاست ها
|
||
|
||
| کلید در JSON | منبع | توضیح |
|
||
|---|---|---|
|
||
| `metals` | دیتابیس داخلی فلزات | 674 محصول فلزی و فولادی |
|
||
| `currency` | TGJU | ارز |
|
||
| `gold` | TGJU | طلا |
|
||
| `coin` | TGJU | سکه |
|
||
| `commodity` | Yahoo Finance | کامودیتی های جهانی مثل نفت، طلا، مس و غیره |
|
||
| `steel_stocks` | CompaniesMarketCap | شرکت های فولادی برتر جهان |
|
||
| `crypto` | CoinGecko | کریپتو، مارکت جهانی و ترندها |
|
||
| `world_economy` | Trading Economics | شاخص های اقتصاد کلان کشورها |
|
||
|